基于CycleGAN的风格转换技术应用于人脸图像口罩佩戴任务的研究 | ![]() |
2019年底开始的新冠疫情渐渐的改变了人们的生活, 出行时佩戴口罩已经成为了人们的一种生活习惯和社会共识。而口罩的佩戴使得传统的人脸检测技术在很多情况下都是无效的: 如社区进出控制、人脸访问控制、人脸出勤、火车站人脸安全检查等。因此, 提高现有人脸检测技术对佩戴口罩人脸的检测性能十分迫切。对佩戴口罩人群的检测任务来说, 数据集的质量是影响检测精确度的关键因素之一。现有公开的口罩人脸检测数据集大多都是利用python爬虫工具获得互联网上人物图像后, 再分为佩带口罩人脸图像和不佩戴口罩人脸图像两部分。对口罩人脸检测数据集来说, 采集一个人在同一环境、时间、地点下佩戴口罩的图像和不戴口罩的图像较为困难。
风格转换技术的出现为提高数据集质量提供了技术支持。2015年Gatys[1]等首次将深度卷积神经网络应用于图像风格转换。其利用非参的方法, 通过采样源图像的纹理像素来进行图像的风格转换, 不再局限于提取底层特征, 而能够准确提取全局特征, 在进行图像风格转换时有更好的表现。但是它需要将源域X的单张图像和目标域Y的目标风格图像进行匹配, 有很强的局限性。2017年, Isola等[2]受到条件生成对抗网络CGAN的启发, 提出了Pix2Pix[3]。Pix2Pix网络模型需要提供成对的图像数据集, 即数据集中的条件X和真实图像Y需要一一对应。其原理是输入噪声Z后, 生成器G根据条件X的要求来产生真实图像Y类似的Y'。条件X和图像Y在语义信息上必须有较高的关联。所以此网络模型没有摆脱CGAN的局限性, 仍需要大量成对的图像才能实现。Kim等[4]提出的DiscoGAN、Zhang等[5]提出的DualGAN和Zhu等[6]提出的Cyc1eGAN都是无监督图像风格转换的生成对抗网络, 这些方法对数据集有更少的限制条件。其中CycleGAN网络模型无需使用完全匹配的图像数据集, 即源域X和目标域Y并不需要一一对应的关系, 且两个域中的样本数量也无需一致。因此CycleGAN网络模型可以选择非一一匹配的两类图像数据集作为训练集来实现图像风格转换的任务, 这样的优点使得该网络模型没有很强的数据限制性, 在实际的项目得到了广泛应用。目前, CycleGAN已经在例如医学领域[7]、妆容迁移[8]、人脸生成[9]、故障检测[10]等领域得到了实际应用。
1 CycleGAN网络模型原理分析 1.1 生成对抗网络(GAN)原理生成对抗网络GAN[11] (Generative Adversarial Network)是一种无监督的深度学习模型, 该网络模型主要由生成器G和判别器D两部分组成, 通过两部分之间的相互博弈使网络模型进行无监督的自主学习。
生成器主要用于学习真实图像的分布, 经过学习后能够根据输入的随机噪音产生一个“假图像”, 再利用这些生成出来的“假图像”去欺骗判别器。而判别器在对真实图像和生成的“假图像”进行学习后, 需要对后续输入“假图像”给出一个评分, 学习如何去区分真实图像和判别器生成的“假图像”。经过多次训练后最终两个网络达到纳什均衡效果: 生成的“假图像”十分接近真实图像的分布, 判别器识别不出“假图像”。因为这种博弈的原理, 生成对抗网络GAN能够很好的学习数据的分布, 并能够产生出“以假乱真”的假图像。对于生成对抗网络GAN网络来说, 其损失函数公式如下:
$ \min\limits_G \max\limits_D V(D, G)=E_{x \sim P_{\operatorname{data}(x)}}[\log D(x)]+E_{z \sim P_z(z)}[\log (1-D(G(z)))], $ | (1) |
式中, Pdata(x)是真实图像的分布; Pz(z)是噪音分布; Ex~Pdata(x)代表真实图像; Ez~Pz(z)为假图像; D(x)是判别器对真实图像的评分; D(G(z))是判别器对假图像的评分。
1.2 CycleGAN网络模型原理CycleGAN网络模型采用生成对抗网络GAN的思想, 因此CycleGAN网络模型与其他风格转换网络模型相比具有极高的稳定性和极快的收敛速度等特点。本文正是采用CycleGAN网络模型来进行人脸图像口罩佩戴任务的实现。
CycleGAN网络模型是一个环形的结构, 其结构如图 1所示。CycleGAN网络模型有两个生成器: G、F, 两个判别器: DX、DY。以生成器G和判别器DY为例来分析其工作原理: CycleGAN网络模型中的生成器G的输入不再是GAN网络中输入的随机噪声z, 而是源域X中的样本x, 生成器G的目的是将其生成的样本G(x)与目标域Y中的样本风格尽量相同, 对判别器DY来说, 输入有两种: 目标域Y中的样本y和生成器G生成的样本G(x), 判别器DY的作用是识别出y和G(x), 并给y打一个较高的分, 给G(x)打一个较低的分。整个过程的对抗性损失函数表达如下:
$ L_{G A N}\left(G, D_Y, X, Y\right)=E_{y \sim P_{\text {data }(y)}}\left[\log D_Y(y)\right]+E_{x \sim P_{\text {data }(x)}}\left[\log \left(1-D_Y(G(x))\right], \right. $ | (2) |
![]() |
图 1 CycleGAN网络模型结构 |
式中, Pdata(y)指目标域Y的分布; Pdata(x)指源域X的分布; DY(y)是判别器DY对样本y的评分; DY(G(x))是判别器DY对生成器G所产生的假图像G(x)的评分。
生成器F和判别器DX之间工作的原理和上述相同。
虽然上面所描述的对抗性损失函数能够实现生成器G从源域X到目标域Y、生成器F从目标域Y到源域X分布的学习, 但却无法确保从x得到G(x)时样本的内容不变, 因为不施加另外的约束的话, G(x)在学习过程中会逐渐变得的目标域Y分布一模一样。为此, CycleGAN网络模型中加入循环一致性损失作为约束条件, 使得G生成的G(x)在内容上仍然能和x保持一致。循环一致性的原理是从源域X得到伪造样本G(x)以后, 再次将伪造样本送入生成器F重构源域样本F(G(x)), 同时约束重构源域样本F(G(x))=x, 即x→G(x)→F(G(x))≈x。同样地, 对于每个目标域Y中的样本y, G和F也应该满足反向循环一致性: y→F(y)→G(F(y))≈y。这就叫做循环一致性损失, 循环一致性损失公式如下:
$ L_{c y c}(G, F)=E_{x \sim P_{\text {data }(x)}}\left[\|F(G(x))-x\|_1\right]+E_{y \sim P_{\text {data }(y)}}\left[\|G(F(y))-y\|_1\right] \text {, } $ | (3) |
式中, “||···||1”符号表示L1距离。
该循环一致性损失约束了生成的图像要尽力的去保留源域X原本内容的同时去贴近目标域Y的风格, 使得生成的图像不会丢失了源域X中的内容。
CycleGAN网络模型的损失函数就是两个对抗性损失和循环一致性损失的和:
$ L\left(G, F, D_X, D_Y\right)=L_{G A N}\left(G, D_Y, X, Y\right)+L_{G A N}\left(F, D_X, Y, X\right)+\lambda L_{c y c}(G, F), $ | (4) |
式中, λ为对抗性损失和循环一致性损失的权重比。
2 CBAM注意力机制模块原理分析CBAM[12] (Convolutional Block Attention Modul)注意力机制模块将通道注意力机制和空间注意力机制相结合, 能够在网络模型中起到提取出输入图像中更为积极有效的特征的作用。在ResNet[13]和MobileNets[14]等经典结构上添加CBAM注意力机制模块并进行可视化对比分析后, 发现有CBAM注意力机制模块的加入, 模型能够更关注识别目标物体。因此将CBAM注意力机制模块加入CycleGAN网络模型当中来尝试能否改进CycleGAN网络模型执行人脸图像口罩佩戴任务的性能。
图 2是CBAM注意力机制模块的整体结构。CBAM包含通道注意力模块CAM(Channel Attention Module)和空间注意力模块SAM(Spatial Attention Module)两个子模块。其总体思路是将一个通道注意力模块CAM加在卷积层输出后进行加权操作, 然后再经过一个空间注意力模块SAM, 最终再进行加权得到结果。
![]() |
图 2 CBAM注意力机制模块结构 |
2.1 通道注意力模块CAM原理分析
通道注意力模块CAM结构如图 3所示, 其对输入的特征图的空间维度通过全局平均池化(GAP)和全局最大池化(GMP)进行压缩, 将特征图从C×H×W变为C×1×1的大小。然后各自通过共享全连接层模块, 在这个模块中, 网络会先将通道数压缩为原本的1/r倍(r为减少倍率), 并通过扩张操作恢复到原通道数, 再通过一层ReLU激活函数得到两个输出结果。然后将两个输出结果进行逐元素相加, 通过sigmoid激活操作得到通道注意力机制的输出结果, 最后将这个输出结果乘原图, 恢复成C×H×W的尺寸。
![]() |
图 3 通道注意力模块CAM |
通道注意力机制的公式为:
$ M_c(F)=\sigma(\operatorname{MLP}(\operatorname{AvgPool}(F))+\operatorname{MLP}(\operatorname{MaxPool}(F)))=\sigma\left(W_1\left(W_0\left(F_{\text {avg }}^c\right)\right)+W_1\left(W_0\left(F_{\max }^c\right)\right)\right), $ | (5) |
式中, F为输入特征图; MLP为共享全连接层; AvgPool为平均池化操作; MaxPool为最大池化操作; σ为sigmoid激活操作; C为特征图通道数; Favgc为平均池化特征; Fmaxc为最大池化特征; W0, W1为全连接层权重。
2.2 空间注意力模块SAM原理分析空间注意力模块SAM结构如图 4所示, 将通道注意力机制模块输出的特征图作为本模块的输入特征图。首先做一个基于通道轴的平均池化(AP)和最大池化(MP)操作得到两个1×H×W的特征图, 然后将这两个特征图进行拼接。再经过一个7×7卷积操作, 降维为1个通道的特征图, 再将得到的特征图通过sigmoid激活函数得到最终的空间注意特征图, 最后将这个输出结果乘原图, 恢复成C×H×W的尺寸。
![]() |
图 4 空间注意力模块SAM |
空间注意力机制的公式为:
$ M_s(F)=\sigma\left(f^{7 \times 7}([\operatorname{AvgPool}(F) ; \operatorname{MaxPool}(F)])\right)=\sigma\left(f^{7 \times 7}\left(\left[F_{\mathrm{avg}}^s ; F_{\text {max }}^s\right]\right)\right), $ | (6) |
式中, F为输入特征图; σ为sigmoid操作,; f7×7表示滤波器大小为7×7的卷积运算; Favgs为平均池化特征; Fmaxs为为最大池化特征。
3 人脸图像口罩佩戴任务的实现 3.1 数据集来源实验所用数据集采用武汉大学发布的真实口罩人脸识别数据集Real-World Masked Face Dataset[15](RMFD)数据集中的真实口罩人脸识别数据集(AMFD)中的图像。该数据集利用python爬虫工具从网络爬取人脸图像, 经过整理、清洗和标注后, 含525人的5 000张口罩人脸、9万正常人脸。
3.2 训练网络模型实验采用的计算机平台详细配置信息如下: CPU: i7-12700;内存: 32G DDR4;显卡: 英伟达GeForce GTX3080Ti。开发语言为python 3.7, 开发IDE为Anaconda中的Spyder, 实验开发框架为PyTorch。除此之外, 因为计算量较大, 本实验使用了GPU来加速计算, 安装了cuda11.5、PyTorch-gpu 1.11、torchvision0.12, 还安装了dlib、opencv3.4、numpy1.21等相关工具包。
整个实验过程的流程图如图 5所示。
![]() |
图 5 实验过程流程图 |
分别选取AMFD中佩戴口罩的人脸图像和不佩戴口罩的人脸图像各500张作为训练集、各200张作为测试集。为防止网络模型在学习图像特征时发生干扰没有选取佩戴眼镜的人物图像作为本次的训练或测试图像。实验先利用原本的CycleGAN网络模型在选取出的训练集上进行训练, 再进行对加入CBAM注意力机制模块改进后的CycleGAN网络模型的训练。其中CBAM注意力机制模块加在CycleGAN网络模型的判别器中, 在通道注意力机制模块CAM操作中, 通道数压缩倍数选为16倍。CycleGAN网络模型和改进后的CycleGAN网络模型都训练200次epoch。
3.3 评测数据参考文献[16-17]中的评测指标, 决定利用SSIM[18] (structural similarity index)值来评测模型生成性能。SSIM值与MSE和PSNR衡量绝对误差不同, SSIM是感知模型, 即更符合人眼的直观感受。SSIM主要考察图像的三个关键特征: 亮度、对比度、结构。取值的范围为-1到1。它的公式基于样本x和y之间的亮度、对比度和结构的比较衡量。
对测试集进行测试过程中产生的200对F(G(x))(生成的虚假佩戴口罩人脸图像再生成回的不佩戴口罩人脸图像)与真实图像x(不佩戴口罩)、200对G(F(y))(生成的虚假不佩戴口罩人脸图像再生成回的佩戴口罩人脸图像)与真实图像y(佩戴口罩)各自进行SSIM值计算后再进行求平均操作后得到表 1。
表 1 测试过程SSIM平均值 |
![]() |
可见在加入CBAM注意力机制后, 在不改变CycleGAN网络模型中循环一致性损失的条件下, 原CycleGAN网络模型的生成器G和生成器F的性能都得到了提升, 生成器G所生成图像的SSIM值提高了接近5%, 生成器F所生成图像的SSIM值提高了3%左右。
3.4 测试模型从数据集中未经过训练和测试的图像中随机选取一张不戴口罩的人脸图像进行测试, 为了更直观的比较不同网络模型佩戴口罩的效果, 将人脸佩戴口罩的部位截取出来进行对比如图 6。
![]() |
图 6 数据集测试图片 |
由图 6(b)可见, 仅利用CycleGAN网络进行人脸图像口罩佩戴任务时口罩下人物的鼻子和嘴部较为明显, 且人脸边缘位置口罩佩戴的效果较差, 而加入CBAM注意力机制后(c), 鼻子和嘴部佩戴口罩的效果得到一定程度的改善且在边缘处的佩戴效果明显得到提升。
为了进一步测试模型, 利用相机尽可能地在相同条件下采集了一个不戴口罩人脸图像(a)和带口罩人脸图像(b)模型中测试, 效果如图 7。
![]() |
图 7 实际人物测试图片 |
再将图 7中带口罩人脸(b)与CycleGAN(c)、加入CBAM的CycleGAN(d)的带口罩人脸图像进行SSIM值的计算得到表 2。
表 2 实际测试SSIM值 |
![]() |
由表 2可见加入CBAM注意力机制模块的CycleGAN网络模型生成出的佩戴口罩人脸图像的SSIM提高了5.54%, 且对从图 7(c)、(d)明显可见实现实际人脸图像口罩佩戴任务时加入CBAM注意力机制模块的CycleGAN网络模型实现的佩戴效果更好。
4 结论在建立口罩人脸检测数据集的过程中, 采集同一个人佩戴口罩的图像和不戴口罩的图像并建立相应的配对数据集是受到许多条件限制的, 可以通过CycleGAN网络模型进行图像风格转换来解决这一问题。本文首先利用原始CycleGAN网络模型进行人脸图像口罩佩戴任务的训练, 然后将CBAM注意力机制模块引入CycleGAN网络模型的判别器之中再进行训练, CBAM注意力机制模块的加入使得CycleGAN网络模型在训练过程中能更好的对图像的特征进行学习。并在测试过程中通过SSIM值对测试过程中两个模型的数据进行比较, 最后实际拍摄人脸图像输入到两个模型中并比较产生的两张佩戴口罩的人脸图像, 证明了加入CBAM注意力机制模块后CycleGAN网络模型在进行人脸口罩佩戴任务时性能得到了提升。
[1] |
GATYS L A, ECKER A S, BETHGE M. A neural algorithm of artistic style[J]. Journal of Vision, 2016, 16(12): 326. DOI:10.1167/16.12.326 |
[2] |
MIRZA M, OSINDERO S. Conditional generative adversarial nets[J]. Computer Science, 2014(27): 2672-2680. |
[3] |
ISOLA P, ZHU J Y, ZHOU T H, et al. Image-to-image translation with conditional adversarial networks[C]//2017 IEEE. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, Honolulu, America: IEEE, 2017.
|
[4] |
KIM T, CHA M, KIM H, et al. Learning to discover cross-domain relations with generative adversarial networks[C]//2017 PMLR. International Conference on Machine Learning. Sydney, Australia: PMLR, 2017.
|
[5] |
YI Z, ZHANG H, TAN P, et al. Dualgan: unsupervised dual learning for image-to-image translation[C]//2017 IEEE. Proceedings of the IEEE International Conference on Computer Vision. Venice, Italy: IEEE, 2017.
|
[6] |
ZHU J Y, PARK T, ISOLA P, et al. Unpaired image-to-image translation using cycle-consistent adversarial networks[C]//2017 IEEE. Proceedings of the IEEE International Conference on Computer Vision, Venice, Italy: IEEE, 2017.
|
[7] |
LIANG X. Generating synthesized computed tomography from cone-beam computed tomography using cyclegan for adaptive radiation therapy[J]. Physics in Medicine & Biology, 2019, 64(12): 125002. |
[8] |
米爱中, 张伟, 乔应旭, 等. 人脸妆容迁移研究综述[J]. 计算机工程与应用, 2022, 58(2): 15-26. |
[9] |
石达, 芦天亮, 杜彦辉, 等. 基于改进CycleGAN的人脸性别伪造图像生成模型[J]. 计算机科学, 2022, 49(2): 31-39. |
[10] |
崔克彬, 潘锋. 用于绝缘子故障检测的CycleGAN小样本库扩增方法研究[J]. 计算机工程与科学, 2022, 44(3): 509-515. |
[11] |
GOODFELLOW I J, POUGET-ABADIE J, MIRZA M, et al. Generative adversarial networks[C]//2014 NIPS Foundation. Conference and Workshop on Neural Information Processing Systems, Montreal, Canada: NIPS, 2014.
|
[12] |
WOO S, PARK J, LEE J Y, et al. Cbam: convolutional block attention module[C]//2018 ECCV. Proceedings of the European Conference on Computer Vision, Munich, Germany: ECCV, 2018.
|
[13] |
HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C]//2016 IEEE. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, Las Vegas, America: IEEE, 2016.
|
[14] |
HOWARD A G, ZHU M, CHEN B, et al. Mobilenets: efficient convolutional neural networks for mobile vision applications[J]. ArXiv Preprint ArXiv: 1704.04861, 2017.
|
[15] |
WANG Z, WANG G, HUANG B, et al. Masked face recognition dataset and application[J]. ArXiv preprint ArXiv: 2003.09093, 2020.
|
[16] |
张格格, 李丹. 基于CycleGAN的真实场景到动漫风格图的转换应用[J]. 电子测试, 2021(22): 48-50. |
[17] |
朱克亮, 张天忠, 石雪梅, 等. 基于CycleGAN的低照度人脸图像增强[J]. 计算机技术与发展, 2021, 31(11): 95-100. |
[18] |
WANG Z, BOVIK A C, SHEIKH H R, et al. Image quality assessment: from error visibility to structural similarity[J]. IEEE Transactions on Image Processing, 2004, 13(4): 600-612. |