深度神经网络下的风格迁移模型

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
斯坦福大学李飞飞团队的风格迁移模型是一种基于深度学习的图像处理技术,可以将一张图像的风格转移到另一张图像上。该模型最初由Gatys等人提出,后来被李飞飞团队进一步优化和改进。该模型在图像处理领域具有广泛的应用,例如艺术风格转换、视频风格迁移等。
深度神经网络下的风格迁移模型_第1张图片

原图

10种模型可以在这里下载:
深度神经网络下的风格迁移模型资源-CSDN文库
处理代码:http://blog.csdn.net/uruseibest

    '风格序号
    Dim styleindex As Integer = 0
    '风格迁移
    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
        '需要测试的图像文件
        Dim m As New Mat("C:\learnEmgucv\tower.jpg", ImreadModes.Color)

        Dim hm As Single = m.Height
        Dim wm As Single = m.Width
        '10种风格迁移
        Dim styles(9) As String
        styles(0) = "C:\learnEmgucv\styletransfer\eccv16\starry_night.t7"
        styles(1) = "C:\learnEmgucv\styletransfer\eccv16\composition_vii.t7"
        styles(2) = "C:\learnEmgucv\styletransfer\eccv16\la_muse.t7"
        styles(3) = "C:\learnEmgucv\styletransfer\eccv16\the_wave.t7"
        styles(4) = "C:\learnEmgucv\styletransfer\instance_norm\candy.t7"
        styles(5) = "C:\learnEmgucv\styletransfer\instance_norm\feathers.t7"
        styles(6) = "C:\learnEmgucv\styletransfer\instance_norm\la_muse.t7"
        styles(7) = "C:\learnEmgucv\styletransfer\instance_norm\mosaic.t7"
        styles(8) = "C:\learnEmgucv\styletransfer\instance_norm\the_scream.t7"
        styles(9) = "C:\learnEmgucv\styletransfer\instance_norm\udnie.t7"
       'https://blog.csdn.net/uruseibest
        Dim net As Dnn.Net
        net = DnnInvoke.ReadNet(styles(styleindex))

        Dim blob As Mat
        blob = DnnInvoke.BlobFromImage(m, 1.0, New Drawing.Size(wm, hm), New MCvScalar(0, 0, 0), False, False)

        net.SetInput(blob)

        Dim mout As New Mat
        mout = net.Forward()

        '返回一个四维数组
        Dim fout(,,,) As Single
        fout = mout.GetData()
        '返回维度:
        '第1维:图像数量,这里是1  https://blog.csdn.net/uruseibest
        '第2维:通道数量   '3
        '第3维:高度    '
        '第4维:宽度    '
        '在实际中需要将第2维、第3维、第4维提取出来组成一个图像

        Dim channels As Integer = fout.GetLength(1)
        Dim height As Integer = fout.GetLength(2)
        Dim width As Integer = fout.GetLength(3)

        Dim vm As New VectorOfMat
        For i As Integer = 0 To channels - 1
            '取出每个通道
            Dim matr As New Matrix(Of Integer)(New Size(width, height))
            For j As Integer = 0 To height - 1
                For k As Integer = 0 To width - 1
                    matr(j, k) = CInt(fout(0, i, j, k))
                Next
            Next
            '将每个通道图像加入到VectorOfMat,总共3个通道
            vm.Push(matr.Mat)
        Next
        'https://blog.csdn.net/uruseibest
        Dim outputmat As New Mat
        '合并通道
        CvInvoke.Merge(vm, outputmat)

        ImageBox1.Image = outputmat

        If styleindex = 9 Then styleindex = 0 Else styleindex += 1
End Sub

处理后的图片:http://blog.csdn.net/uruseibest

深度神经网络下的风格迁移模型_第2张图片深度神经网络下的风格迁移模型_第3张图片深度神经网络下的风格迁移模型_第4张图片深度神经网络下的风格迁移模型_第5张图片深度神经网络下的风格迁移模型_第6张图片深度神经网络下的风格迁移模型_第7张图片深度神经网络下的风格迁移模型_第8张图片深度神经网络下的风格迁移模型_第9张图片深度神经网络下的风格迁移模型_第10张图片深度神经网络下的风格迁移模型_第11张图片

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看vb.net 教程 目录

你可能感兴趣的:(EmguCV,人工智能,emgucv,vb.net,风格迁移)