一、 *实验目的*

(1) 掌握在 WINDOWS 下安装和使用 GAN 图片生成系统、换脸检测系统

(2) 掌握 GAN 图片生成系统主要功能模块、换脸检测系统主要功能模块

(3) GAN 图片生成系统的原理、换脸检测系统的原理

二、 *实验内容*

(1) 分析并调试 GAN 图片生成系统程序主要功能模块、换脸检测系统程序主要功能模块

(2) 选取实验数据集

(3) 运行 WINDOWS 下的 GAN 图片生成系统、换脸检测系统

(4) 用 GAN 图片生成系统对实验数据集进行图片生成实验

(5) 用换脸检测系统对实验数据集进行换脸检测实验

三、 *系统整体描述和分功能描述*

*系统整体描述*

DCGAN系统:

通过GAN来生成生成图片

Deepfakes CNN-Detection系统:

通过CNN算法对图像进行鉴别,辨别是否是伪造信息。

*分功能描述*

1)生成头像算法训练

建立图像样本库,用Python在动漫素材相关网站爬取或使用网络上已有的数据集,按照固定比例划分训练集和测试集,并对样本进行标准化处理,使图像大小保持,每一张图片拥有唯一ID。

img

其次,选择深度卷积网络,实现目标特征提取以及图像分类。使用Visdom实现训练过程的可视化,通过控制学习率、迭代次数、训练比例等参数,设置多组对照实验,观察实验结果并利用测试集进行多次测试。

python main.py train –gpu –vis=False

2)生成动漫头像

使用训练好的生成模型,进行头像生成(说明文件给出的代码有误)

1
python main.py generate --nogpu --vis=False --netd-path=checkpoints/netd_200.pth --netg-path=checkpoints/netg_200.pth --gen-img=result.png --gen-num=64

3)检测功能,检测一张照片真伪

读取到照片后进行检测

1
python demo.py -f examples/real.png -m weights/blur_jpg_prob0.5.pth

4)批量检测功能

读取照片集进行检测

1
python train.py --name blur_jpg_prob0.5 --blur_prob 0.5 --blur_sig 0.0,3.0 --jpg_prob 0.5 --jpg_method cv2,pil --jpg_qual 30,100 --dataroot ./dataset/ --classes airplane,bird,bicycle,boat,bottle,bus,car,cat,cow,chair,diningtable,dog,person,pottedplant,motorbike,tvmonitor,train,sheep,sofa,horse

四、 *实验步骤、结果及分析*

*实验步骤*

1. *安装PYcharm后配置环境*

在命令行安装PyTorch

img

安装其他支持文件

1
pip install -r requirements.txt

img

2. *准备数据*

在老师给的压缩包中已经包含了准备好的数据。

img

3. *通过已有数据进行训练*

1
python main.py train --gpu --vis=False

这个过程比较慢,可以尝试使用训练好的数据(已在压缩包中给出)

img

或者选择自己跑数据训练

imgimg

4. *训练完成后即可生成图片*

1
python main.py generate --nogpu --vis=False --netd-path=checkpoints/netd_200.pth --netg-path=checkpoints/netg_200.pth --gen-img=result.png --gen-num=64

生成结果会储存在DCGAN文件夹下,可根据修改日期看出是新生成的图片。

img

生成结果如下

img

第一个实验到此结束。

5. *配置Deepfakes CNN-Detection实验环境*

基本不用发生更改,在第一次配置时已经完成

6. *尝试运行一张图片,并检测真假*

1
2
3
python demo.py -f examples/real.png -m weights/blur_jpg_prob0.5.pth

python demo.py -f examples/fake.png -m weights/blur_jpg_prob0.5.pth

其中真照片运行结果如下

img

img

其中假照片运行结果如下

img

img

尝试运行数据集检测

1
python demo_dir.py -d examples/realfakedir -m weights/blur_jpg_prob0.5.pth

尝试跑自己的数据集,效果并不好(已在后文中说明)

img

跑老师给的数据集(airplane)

img

  1. 对数据集进行检测
1
python eval.py --no_crop --batch_size 1

实验二结束。

实验结果及分析

  1. 在实验一中进行多次实验,可以看出每次生成结果都不同。

但仿真程度都不是很高

img img img

2.在实验二的单张检测中可以尝试对实验一的生成图片进行检测。

img

首先对总生成结果进行检测,由于其中元素较多识别出错,程旭认为其为真实图片。

但从中截取一幅生成图片进行检测,这次检测结果正确。

说明可以正确检验真伪。

img

3.使用另一种权重进行实验

对比实验可以看出二者之间的差别,0.1版本的准确度更高一些

img

4.对数据集进行检验

老师给的数据集过大,因此在检测时选取了一个比对的数据集。

对airplane数据集进行测试,测试成功。准确率很高

img

五、 *实验中遇到的问题及改正的方法*

  1. 在安装其他支持文件时经常安装失败,这里可以提供三种安装方法

首先尝试直接使用命令pip install -r requirements.txt安装,如报连接失败错误可以尝试挂梯子再次链接。

其次可以尝试在Pycharm中单个添加。

img

如果上述方法都不可行,只能在官网或镜像站逐一下载,最后将其手动安装。

2.老师给的数据集过大,因此在检测时选取了一个deepfake人脸生成比对的数据集。

在测试前准备选取一真一假两张照片进行单张实验观察结果。由于deepfake技术效果比较好,比对结果显示为二者都为真的概率比较高。

这两张图片为:其中左图为真

imgdf0.jpg imgdf1.jpg

进行检测的结果显示

img

虽可以看出伪造成分,但无法证明右图为伪造图片。

其后更改算法权重为另一版本,效果略有升高。

img

但仍然达到不了50%以上,无法证明图片为伪造。