雷锋网 AI 研习社按,本文作家 Lonely.wm和学生的爸爸在他家做爱,而且是当着孩子面前做爱,太刺激了,孩子完全不看我们,可能是年龄还小什么都不懂吧🤣 #同城 #文爱 #自慰,该文首发于知乎专栏智能单位,雷锋网 AI 研习社获其授权转载。
媒介
熟女人妻网Deepfake 等于前一阵很火的换脸 App,从时候的角度而言,这是深度图像生成模子的一次荒谬到手的期骗,这两年诚然显表露了许多图像生成模子方面的论文,但多量是能算是 Demo,莫得几许的实用价值,除非在特定界限(比如医学上),哪怕是英伟达的神作:渐进生成高清东说念主脸 PGGAN 好像亦然学术真理大于实用价值。其实东说念主们一直都在追求更通用的生成时候,我想 Deepfake 算是一例,就让咱们由此起程,望望能否从中得到些灵感。
一、基本框架
咱们先望望 Deepfake 到底是个何方清白,其旨趣一句话可以空洞:用监督学习施行一个神经集会将张三的污蔑处理过的脸复原成原始脸,况兼渴望这个集会具备将肆意东说念主脸复原成张三的脸的才略。
说了半天这好像是一个自编码模子嘛~,没错,原始版块的 deepfake 等于这样的,公式如下:
这里的 XW 是经过污蔑处理过的图片,用过 Deepfake 的童鞋可能会有东说念主忽视质疑,「要让代码跑起来好像必须要有两个东说念主的东说念主脸数据吧」。没错,之是以要同期用两个东说念主的数据并不是说算法只可将 A 与 B 互换,而是为提升踏实性,因为 Encoder 集会是分享的,Deocder 集会是分开的,上公式:
为了便捷连合我照搬容颜二(加了 Gan 的版块)上的讲明图片:
<img src="https://static.leiphone.com/uploads/new/article/pic/201803/1f5b1fd795b6f5107b0a5643aaa33379.jpg" data-caption="" data-size="normal" data-rawwidth="926" data-rawheight="767" class="origin_image zh-lightbox-thumb" width="926" data-original="https://pic4.zhimg.com/v2-d5a3bfce3cb0b692e70fef236e435e8d_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201803/1f5b1fd795b6f5107b0a5643aaa33379.jpg"/>荒谬扎眼:原版是莫得 Mask 的~
版块二我不筹谋讨论,仅先容一下,简而言之等于增多了 Adversarial Loss和Perceptual Loss,后者是用施行好的 VGGFace 集会(该集会不作念施行)的参数作念一个语义的比对。
<img src="https://static.leiphone.com/uploads/new/article/pic/201803/e58865ce39fd8b7743ba23a4a954ac61.jpg" data-caption="" data-size="normal" data-rawwidth="680" data-rawheight="767" class="origin_image zh-lightbox-thumb" width="680" data-original="https://pic3.zhimg.com/v2-01159adb95bf72a78f8815fdbeeab165_r.jpg" _src="https://static.leiphone.com/uploads/new/article/pic/201803/e58865ce39fd8b7743ba23a4a954ac61.jpg"/>二、时候细节
Deepfake 的总共过程包括三步,一是索取数据,二是施行,三是调养。其中第一和第三步都需要用到数据预处理,另外第三步还用到了图片交融时候。是以我在时候上主要分三个方面来说明:图像预处理、集会模子、图像交融。
1. 图像预处理
从大图(或视频)中识别,并抠出东说念主脸图像,原版用的是 dlib 中的东说念主脸识别库(这个识别模块可替换),这个库不仅能定位东说念主脸,而且还可以给出东说念主脸的 36 个关节点坐标,字据这些坐标能缱绻东说念主脸的角度,最终抠出来的东说念主脸是摆正后的东说念主脸。
2. 集会模子
Encoder: 64x64x3->8x8x512x = input_x = conv(128)(x)x = conv(256)(x)x = conv(512)(x)x = conv(1024)(x)x = Dense(ENCODER_DIM)(Flatten()(x))x = Dense(4 * 4 * 1024)(x)x = Reshape((4, 4, 1024))(x)x = upscale(512)(x)Decoder:8x8x512->64x64x3x = input_x = upscale(256)(x)x = upscale(128)(x)x = upscale(64)(x)x = Conv2D(3, kernel_size=5, padding='same', activation='sigmoid')(x)
总共集会并不复杂,无非等于卷积加全蛊惑,编码->解码,然则仔细不绝后发现作家其实是匠心独运的,为什么我不急着说,咱们先望望 con 和 upscale 的里面放胆:
def conv(filters): def block(x): x = Conv2D(filters, kernel_size=5, strides=2, padding='same')(x) x = LeakyReLU(0.1)(x) return x return blockdef upscale(filters): def block(x): x = Conv2D(filters * 4, kernel_size=3, padding='same')(x) x = LeakyReLU(0.1)(x) x = PixelShuffler()(x) return x return block
conv 是中规中矩的卷积加 relu 激活函数,upscale 中有个函数叫 PixelShuffler,这个函数很特真理,其功能是将 filter 的大小变为正本的 1/4,让后让高 h、宽 w 各变为正本的两倍,这也等于为什么前边的卷积层的 filter 要乘以 4 的原因。
经过测试对比,比如拿掉 upscale 换成步长为 2 的反卷积,或者浅薄 resize 为正本的两倍,色尼姑亚洲实验的放胆都大打扣头,放胆是集会只可自编码,而得不到需要的东说念主脸。诚然作家莫得说这样想象是援用那篇论文的念念想,笔者也未读到过径直讨论这个问题的论文,然则有一篇论文可以佐证:Deep Image Prior,包括 Encoder 中的全蛊惑层都是东说念主为打乱图像的空间依赖性,增多学习的难度,从而使集会能够愈加充分地连合图像。是以 Encoder 中的全蛊惑层和 PixelShuffler 都是必不可少的。经笔者测试,在不加 Gan 的情况下,去掉这两个要素,集会必定失败。
3. 图像交融
图像交融放在时候难点分析中讨论。
三、难点分析
1. 明晰度问题
原版的东说念主脸像素是 64*64,显明偏低,但要提妙手脸明晰度,并不可仅靠提升图片的分辨率,还应该在施行秩序和死亡函数荆棘功夫。家喻户晓,浅薄的 L1Loss 是罕有学上的均值性的,会导致审定。贬责决策个东说念主比拟倾向在 L1Loss 的基础上加入 GAN,因为强监督下的 GAN 具有折柳更轻飘区别的才略,许多论文都提到这小数,比如较早的一篇超分辨率的著述。然则 GAN 也有许多问题,这个背面讨论。还有一个念念路等于用 PixelCNN 来改善细节的,但经扩充,这种秩序不仅生成速率慢(诚然速率可以通过加入缓存机制,一定进度上优化),而且在质料上也不如 GAN。
2. 东说念主脸识别问题
由于第一个法子是对东说念主脸作念预处理,算法必须当先能识别出东说念主脸,然后才智处理它,而 dlib 中的东说念主脸检测算法,必须是「全脸」,若是脸的角度比拟偏就无法识别,也就无法「换脸」。是以容颜二就用了 MTCNN 当作识别引擎。
3. 东说念主脸调养放胆问题
原版的算法东说念主脸调养的放胆,笔者觉得还不够好,比如由 A->B 的调养,B 的质料和原图 A 是有一定关系的,这很容易连合,因为算法自身的原因,由 XW->X 中无论 X 怎样污蔑总会有一个猖狂。是以导致由好意思女 A 生成好意思女 B 的放胆要远远优于由丑男 A 生成好意思女 B。这个问题的贬责笔者觉得最容易意想的也曾 Gan,访佛 Cycle-Gan 这样框架可以进行无监督的语义调养。另外原版的算法仅截取了东说念主脸的中间部分,下巴还有额头都莫得在施行图片之内,因此还有较大的提起飞间。
4. 图片交融问题
由于生成出来的是一个正方形,怎样与原图交融等于一个问题了,原始容颜有许多种交融秩序,包括径直掩饰,遮罩掩饰,还有等于泊松克隆「Seamless cloning」,从放胆上而言,遮罩掩饰的放胆与泊松克隆最佳,二者各有千秋,遮罩掩饰角落比拟生硬,泊松克隆很轻柔,其单图放胆要优于遮罩掩饰,然则由于泊松克隆会使图片发生些许位移,因此在视频合成中会产生一定的抖动。图片交融问题的校正念念路,笔者觉得也曾要从生成图片自身入部下手,容颜二引入了遮罩,是一个荒谬可以的念念路,亦然一个比拟容易意想的念念路,等于最毕生成的是一个 RAGB 的带通后度的图片。
笔者还尝试过许多秩序,其中放胆比拟好的是,在引入 Gan 的同期加入荒谬小的自我复原的 L1Loss,让图片「和而不同」。经测试,这种秩序能够使图片的角落和原图基本交融,然则这种秩序也有瑕疵,那等于像脸型不不异这样的比拟大的改变,集会就不肯意去尝试了,集会更趋向于小修小补,仅改变五官的特征。
5. 视频抖动问题
视频抖动是一个很关节的问题。主要源自两点,第小数是东说念主脸识别中断的问题,比如 1 秒钟视频的连气儿 30 帧的图片中间转眼有几帧由于角度或是明晰度的问题而无法识别产生了中断。第二点是算法自身精准度问题会导致东说念主脸的大小发生变化。这是由算法自身带来的,因为老是让 XW->X,而 XW 是被污蔑过的,当 XW 是被拉大时,算法要由大复原小,当 XW 被消弱时,要由小复原大。也等于说团结张东说念主脸图片,让他合成大于我方的或小于我方的脸都是有兴味的,另外当东说念主脸角度变化较大时,这种抖动就会更显明。视频抖动现在尚未有很好的贬责决策,惟有逼迫提升算法的精准度,同期提妙手脸识别和东说念主脸调养的精准度。
四、对于Gan校正版的Deepfake
在原始版块上加入 Gan,容颜二是这样作念的,笔者也进行过较久了的不绝。
Gan 的优点是能比拟快进行格调调养,相通参数下 Gan 施行两万次就生成比拟明晰指标东说念主脸,而原始算法大要需要五万次以上,Gan 生成的东说念主脸较明晰,而且能减少对原图的依赖等,同期加入 Gan 之后,可以减少对特定集会模子的依赖,总共可以去掉原汇蚁合的 FC 和 Shuffer。
Gan 的短处也很超过,其施行难以把控,这是家喻户晓的。Gan 会带来许多不可控的因子。比如一个东说念主的肤色偏白,则生成的东说念主脸也会变白,而健忘要与原图的肤色保握一致,比如有的东说念主有流海,施行数据中大部分都是有刘海的图片,则 Gan 也会觉得这个东说念主必须是有刘海的,而不讨论原图是否有刘海。即使加入了 Condition,Gan 这种「主不雅臆断」和「先入之见」的特色也无法得到打消,一言以蔽之,加入 Gan 以后频频会「过施行」。 这种情况在笔者之前作念的字体生成容颜中也出现过,比如在由黑体字合成宋体字时,Gan 频频会先入之宗旨为「忄」的那一长竖加上一钩(像「刂」不异的钩)。另外 Gan 有一个最大的瑕疵等于他会过分趋近施行集的样本,而不讨论脸色身分,比如原图的东说念主是在大笑,然则施行皆集很少有这类图片,因此生成的图片也许仅仅在浅笑。我不禁理意想了 Nvidia 的那篇论文,莫得条目的 Gan 诚然可以生成高清的图片,然则没法东说念主为限制立地因子 z,无法指定具体要生成生成什么样的脸,而有条目的 Gan 样本又过于推进。Gan 的这一大短处会使生成的视频中东说念主物脸色很刻板,而且画面抖动的情况也更剧烈,即使加入了强监督的 L1Loss,GAN 也曾会有上述瑕疵。总之在原版的基础上加入 Gan 还需要进一格式不绝,2017 年 Gan 的论文许多,但莫得几许令东说念主目下一亮的东西,Google 甚者发了一篇论文说,这样多校正的版块与原版的离别并不显赫,经测试,笔者得到的论断是 Gan 困最难的场地是抖动较大,合成视频时放胆不太好,也许是 Gan 力量太强的原故。
五、放胆语
单纯从时候的层面上来看,Deepfake 是一个很可以的期骗,笔者更渴望它能用在大说念上,能在电影制作,录制回忆片,记载片中发扬作用,真是地复原历史东说念主物的原貌,这可能是无法仅由演员和化妆师作念到的,笔者也渴望在 2018 年,基于图像的生成模子能显表露更多可以落地的期骗。
雷峰网版权著述,未经授权掩饰转载。笃定见转载应知。
和学生的爸爸在他家做爱,而且是当着孩子面前做爱,太刺激了,孩子完全不看我们,可能是年龄还小什么都不懂吧🤣 #同城 #文爱 #自慰
下一篇:没有了