基于深度学习通过SVM分类器实现视频技术真假脸识别

悠悠 2023-10-15 13:00 17阅读 0赞

目 录

摘 要 II
Abstract III
目 录 IV
第一章 绪论 1
1.1GAN 简介 1
1.2Deepfake 简介 1
1.3研究背景及意义 2
1.3.1研究背景 2
1.3.2研究意义 3
1.4国内外研究现状 3
1.5论文结构 5
第二章 相关工作 6
2.1图像人脸提取方法的比较 6
2.1.1方法简介 6
2.1.2实验对比 7
2.2视频分帧存图的实现 9
2.3颜色直方图简介 10
2.4SURF 概念原理简介 12
2.5ELA 概念原理简介 13
2.6SVM 概念原理简介 15
2.6.1线性可分 16
2.6.2线性不可分 16
2.6.3其他相关概念 16
2.7总体实验流程图 17
2.8本章小结 18
第三章 特征提取与分类 19
3.1颜色直方图代码实现介绍 19
3.2SURF 代码实现介绍 20
3.3ELA 代码实现介绍 24
3.4SVM 代码实现介绍 26
3.5本章小结 28
第四章 实验结果与分析 29
4.1视频分帧存图结果展示 29
4.2人脸提取结果展示 30
4.3颜色直方图特征提取结果展示 31
4.4SURF 特征提取结果展示 34
4.5ELA 特征提取结果展示 36
4.6SVM 分类效果展示 38
4.7实验结果分析 39
4.8本章小结 45
第五章 总结与展望 46
5.1优势分析 46
5.2劣势总结 46
5.3工作展望 47
参考文献 48
致谢 52
1.3研究背景及意义

1.3.1研究背景

GAN 模型是通过框架中的两个模块——生成模型与判别模型之间的互相博弈与学习,产生相当好的输出。这是近年来无监督学习在复杂分布上最具前景的方法之一。Deepfake 假脸视频技术,作为在现今换脸技术中,效果最为逼真且操作较为简单的技术, 已经在世界范围内引起了研究者们的关注。
Deepfake 技术在政治、艺术、表演、社会化媒体上有越来越广泛的应用。
政治方面:Deepfake 被用来在视频中歪曲知名政客的形象。这里举例一些 Deepfake 视频。阿根廷总统马克里的脸被阿道夫·希特勒的脸所取代,安格拉·默克尔的脸被唐纳德·特朗普的脸所取代。2018 年 4 月,乔丹·皮尔与 Buzzfeed 合作,用皮尔的声音制作了巴拉克·奥巴马的 Deepfake,这是一个公共服务公告,目的是提高人们对 Deepfake

的认识。[7]2019 年 1 月,福克斯下属的 KCPQ 在特朗普椭圆形办公室演讲中播放了一个
Deepfake 视频,嘲弄特朗普的外表和肤色。[8] 2020 年 4 月,比利时 Extinction Rebellion组织在 Facebook 上发布了一段比利时首相索菲·威尔梅斯的 Deepfake 视频。[9]该视频宣传了森林砍伐与 Covid-19 之间可能存在的联系。24 小时内浏览量超过 10 万次,收到不少评论。该视频出现的 Facebook 页面上,许多用户将该 Deepfake 视频解读为正版。艺术领域:2018 年 3 月,多学科艺术家 Joseph Ayerle 根据 Sempre2.0 出版了视频艺
术作品 Un’emozione(英文标题:The Italian Game)。艺术家运用 Deepfake 技术,创作了一部 80 年代电影明星 Ornella Muti 的合成版,从 1978 年到 2018 年,在时间上进行了旅行。[10]
表演方面:有人猜测,Deepfake 被用来为未来的电影创作数字演员。数字构造/改变的人类已经在电影中使用过,而 Deepfake 在不久的将来可能会有新的发展。例如《速度与激情 7》中的保罗,由于其之前不幸去世,就是通过其弟弟扮演,利用 Deepfake 技术将原先的保罗的脸部数据进行合成,最终形成的效果。
社会化媒体:Deepfake 已经开始在流行的社交媒体平台上使用,特别是通过 Zao 这个 Deepfake 应用程序,允许用户将自己的脸替换成电影和电视节目中的角色。
1.3.2研究意义

网上多数 Deepfake 是用于色情政治等方面的恶搞行为。对于知名度很高的明星来说,人们知道不是其本人,所以影响并不是很大。但对于普通人或者知名度比较低的女星来说,与其相关的 Deepfake 视频的影响将会使其名誉受损,难以自辩。而政治方面的影响将会更加严重,比如挑起矛盾,引发战火等等。
对 Deepfake 假脸视频的面部细节特征提取算法的研究,首先是提取视频图像的面部特征,能够挖掘合成视频与原始视频的差异,可以更好地判别真假视频。这将对
Deepfake 犯罪形成一定的威慑力,营造更好的社会环境。

  1. import numpy as np
  2. import joblib
  3. import numpy as np
  4. import os
  5. from sklearn.svm import SVC
  6. from sklearn.linear_model import SGDClassifier
  7. import random
  8. path1=r'F:\bksj\jyt\TIMIT_img\train_threecharacter\LBP\attack'
  9. path2=r'F:\bksj\jyt\TIMIT_img\train_threecharacter\LBP\real'
  10. # path3=r'E:\lbpsvmtest\yellow'
  11. savepath=r'F:\bksj\jyt\SVM\lbpsvm'
  12. imglist1 = os.listdir(path1)
  13. imglist2 = os.listdir(path2)
  14. imglist= imglist1 + imglist2
  15. print(imglist)
  16. randomlist=random.shuffle(imglist)
  17. print(imglist)
  18. X = np.empty(shape=[0, 65536])
  19. y = []
  20. prefix='ori'
  21. i=0
  22. clf = SGDClassifier()
  23. for list in imglist:
  24. if i>=100:
  25. clf.partial_fit(X, y, classes=np.array([0, 1]))
  26. i=0
  27. # print(X)
  28. # print(y)
  29. X = np.empty(shape=[0, 65536])
  30. y = []
  31. else:
  32. i += 1
  33. if prefix in list:
  34. citys = np.loadtxt(path2 + '/' + list, delimiter=' ') # 读入txt文件,分隔符为\t
  35. data = np.reshape(citys, [1, 65536]) # 改变矩阵排列,统一为1*65536
  36. X = np.append(X, data, axis=0)
  37. y.append(1)
  38. else:
  39. citys = np.loadtxt(path1 + '/' + list, delimiter=' ') # 读入txt文件,分隔符为\t
  40. data = np.reshape(citys, [1, 65536]) # 改变矩阵排列,统一为1*65536
  41. X = np.append(X, data, axis=0)
  42. y.append(0)
  43. joblib.dump(clf, savepath+'/'+'clf.pkl')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,17人围观)

还没有评论,来说两句吧...

相关阅读