# 基于 ResNet 的不良图片识别模型
## 摘要
随着现代移动互联网设备以及社交软件的迅速发展,网络用户每天都会上传大量的图片内容到互联网中,为保证网络空间的环境清明,通过各种手段来识别和过滤网络色情图片是很有必要的。针对实际应用中色情图片的复杂多样性问题,运用了基于 ResNet(深度残差网络)的不良图片识别模型,对图片进行判类、不良程度打分,从而实现真对不良图片的自动化判例。测试结果表明,该方案在时间效率、模型置信度以及识别准确率上具有良好的效果。
## 介绍
### 研究背景
随着 Web 2.0时代的到来,用户在浏览网络空间的信息的同时,也能自由地发表自己的看法、观点,越来越多的人们开始以图片、视频等形式在网络上分享自己的生活。然而,受利益驱动,一些不法分子会借此在论坛、贴吧、博客、微博等公共平台中上传一些不雅视频、照片以吸引流量或达到其他目的,这使得网络淫秽色情现象仍然较为严重。
一方面,随着越来越多的年轻用户、儿童群体接触互联网,网络空间中的不雅图片会对其造成巨大的伤害;另一方面,在公司办公场所和学校教育场所等地方, 应该过滤掉这些网络不良内容。基于此,2021年 3月,全国“扫黄打非”办公室作出安排部署:即日起至 11月底开展“新风2021”集中行动,“新风”行动将以“护苗2021”“净网2021”“秋风2021”专项行动为开展平台,通过摸底排查、接收群众举报等方式对网络空间进行整治。
然而人工的成本是巨大的。因此,随着机器学习和人工智能的快速发展,越来越多的理论被提出,越来越多的技术开始代替人工、被应用于不良图片的鉴别。
在这个过程中,如何通过技术手段更准确、更有效地识别和过滤网络色情图片,一直是一个重要的研究课题。国内外的许多学者对不良图片的识别技术做出了许多尝试,并取得了一些进展。
### 相关研究
常用的检测方式有三种:基于肤色检测的识别模式、基于多种特征结合检测的识别模式、基于深度学习的方法。
基于肤色检测的识别模式是最典型的识别方法,这种方法主要基于色情图片中往往包含有大量的裸露肤色信息这一事实,进而通过肤色检测来判断一张图片是否为不良图片。RGB 颜色空间、YCbCr 颜色空间[1]都曾被利用以检测肤色;有的理论使用多重颜色空间定义肤色模型,同时加入纹理检测以更准确地提取出肤色区域,进而结合裸露肤色区域的像素比例、肤色连通域的数目、位置、形状[2]等特征,将其作为 SVM 等分类器的输入并判断一张图片是否为不良图片。这类基于肤色特征和人体检测的方法误检率较高,因为其存在有如下的一些问题:现实中不同种族之间存在有肤色差异、相同的肤色在不同的光照条件下会呈现不同的结果、自然界中的一些与肤色类似的物体会对检测结果存在干扰。
基于多种特征结合检测的识别模式往往会结合不同的人体识别技术来提高人体检测的准确率,如人体动态姿势识别的多层联合模型[3]、在具有复杂背景的图像中结合图像区域检测技术[4]进行更准确的场景分割与识别等,通过引入其他的技术预先进行检测、随后再进行特征识别的方式,进一步提高了准确率。
随着深度学习理论的发展,基于深度学习的方法也逐渐被应用到这一领域中。这种发放是把特征提取与分类器放在一个模型里统一起来,模型通过对大量标注的训练数据进行自动学习,从而得到一套可用于分类的参数。从最简单的 CNN(卷积神经网络)模型,到基于 CNN的 AlexNet、AGNet、VGGNet和 GoogleNet等模型,再到多种模型的联合使用,基于深度学习的不良图像检测方法已经成为了综合评价较高的一种方法,其应用最为广泛、成本相对较低、准确率相对较高。
在基于深度学习的检测方法中,就理论上而言,随着神经网络层数的加深,模型可以对更为复杂的特征进行提取,从而获得更好的分类结果。然而实验表明,实际上网络会出现退化问题(degradation problem):刚开始随着网络深度的增加,训练效果可以得到一定的提升;然而在达到某一个阈值之后,随着网络深度的继续增加,网络的训练精度反而下降了,且这种退化并不是由过拟合引起的,同时在适当的深度模型上添加更多的层会导致更高的训练误差。
在本项目中,我们采用了基于深度学习的检测方法,通过预标注的数据集训练一个神经网络模型,对不良图片进行分类检测。本项目中将采用单一网络对图片进行简单分类,并构建一个网页供用户自行上传图片进行检测。
考虑到不良图片的分类检测是一个很复杂的问题,为了保证在加深神经网络的同时不影响网络的性能,同时受限于时间和能力,在进行综合考量后,我们决定采用 ResNet(残差神经网络)[5]作为我们的分类模型。
### 实验方案
#### 数据获取及标注
由于目前网络上缺少一个公开的、具有一定标准的不良图片数据集,故本次实验采用自行获取数据并构建数据集并进行标注的方式。数据获取将结合python opencv库,将收集到的不良视频运用分帧的形式剪切为图片数据集。为保证数据的差异性,选图的决策为每个视频间隔固定时间选取 1 张的方式获取50张图片,即用总帧数除以 50作为选取图片的时间间隔。将得到的图片数据保存到本地,然后以打分的形式人工对所有图片进行标注,所选分值为 0、1、2、3。其中 0代表正常图片,1、2、3代表色情图片,并根据图片色情程度确定图片最终分值,程度越重分值越高。
### 数据预处理
根据我们的设计,模型有 2分类检测模型和 4分类评级模型,其中 2分类检测模型用于检测输入图片是否含有不良信息,4分类评级模型将用于对图片内容的不良程度进行评估。
根据检测模型与评级模型的区别设计了两种数据集:2 分类检测数据集和 4分类评级数据集。其中 2分类检测数据集有两个标签:0表示图像不是不良图像,1表示图像可能含有不良内容;4分类评级数据集有 4个标签,其中 0表示不是不良图像,从 1开始,数字越高表示不良内容越严重。因此,针对 2分类检测数据集的数据标注比较好标,但是针对 4分类评级数据集的数据标注会不可避免地受到人工判断的影响导致标注界限较为模糊,进而影响模型性能,这点我们会在结果分析中进行详细说明。
![](https://www.writebug.com/myres/static/uploads/2022/9/7/833286d72eafdb8f6ca8a277ee4d139e.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/9/7/00edf9a51f5f5ed62292c4a2751b5db0.writebug)
我们获取到的图像的尺寸大多在 720 * 406左右,在训练时要对其进行裁切和重置尺寸等操作。一般而言,在条件允许的情况下,用 ResNet做图像分类时,输入图像的尺寸为 224 * 224是比较好的,batch size取值为 64、128等值时是比较好的。然而,受限于硬件条件,我们只能将输入图像的尺寸重整为 56 *56,并将 batch size设置为 8,这将在一定程度上影响实验结果(尝试过将图像尺寸和 batch size分别向大值调整,然而稍微大一点就会用尽内存)。
具体实现上,借助 torchv
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
实验中我们直接对图像进行分类,这样的处理其实是有些粗糙的。比较好的操作方式是,先将图片切块并分类标注,然后训练某个神经网络模型,最终得到一个能够检测一个图像块中是否含有不良内容的分类模型;然后引入一个滑动窗口,让这个分类模型对窗口所提取到的图像进行内容检测;最后再根据检测到的不良内容的类别进行打分,得到这张图片对应的分数,这个分数反映了这张图片的严重程度。
资源推荐
资源详情
资源评论
收起资源包目录
100011729-基于Python ResNet 的不良图片识别模型.zip (20个子文件)
resnet
evaluator.py 2KB
简介.md 1001B
data_2
0
类别0的图片 1024B
1
类别1的图片 1024B
renameimgs.py 330B
LICENSE 1KB
data_4
0
类别0的图片 1024B
1
类别1的图片 1024B
2
类别2的图片 1024B
3
类别3的图片 1024B
models.py 5KB
makedata.py 5KB
train_result
auc_classes_4.png 77KB
class_4.log 15KB
class_2.log 15KB
auc_classes_2.png 89KB
acc_classes_4.png 84KB
acc_classes_2.png 83KB
train.py 11KB
README.md 27KB
共 20 条
- 1
资源评论
神仙别闹
- 粉丝: 2714
- 资源: 7669
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功