Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Open more actions menu

Repository files navigation

generalImageClassification

[toc]

本项目是通用的图像分类项目,并以涉黄、涉政、涉恐和普通图片4分类为例。图像违规质检本质是图像分类,所以关键点在于两个:

  1. 图像分类的数据准备;
  2. 图像分类的模型选择、训练;

1 数据准备

为了达到特定类别的分类,准备相应的图片数据,

  • 1 开源的数据集。
  • 2 自己写爬虫,爬取数据。但是没时间写,而且反爬虫设施的破解很费时间。
  • 3 利用特定的网站(爬虫),帮你取下载数据。

1.1 开源数据集

如果开始一个图像相关的项目,而这个领域又有公开、开源的数据集,那是最幸福的一件事了。所以有了项目需求之后,第一件事情,可以去github等网站搜寻一下有没有可以直接使用的数据集。

而对我们的“图片质检”项目,涉政图片、涉恐图片网上找不到现成的数据集。但是涉黄图片却又很多公开数据集,并且图片质量灰常的“优秀”。下面给出两个实例:

  1. nsfw_data_scrapper公开数据集(下面是图片地址,和一些介绍如何使用的博客):
  2. nsfw_data_source_urls公开数据集:

1.2 利用特定网站爬数据

最近发现一个特别好的图片爬虫网站:imagecyborg,只需要把你想下载的图片的网页地址放进去,他就可以帮你打包下载。使用方法:

2 分类模型的选择

图像分类研究近些年已经非常的成熟,涌现出的大批的优秀模型,并且已经被深度学习框架纳入自己的版图.对于工程界的我们一般只需要微调这些成熟的模型即可。

下面是keras框架内置的模型介绍,本项目考虑准确率和运行速度两个问题,所以选择了InceptionV3这个模型,准确率也可以,模型也不太深 参数不算过多。

模型 大小 Top1准确率 Top5准确率 参数数量 深度
Xception 88 MB 0.790 0.945 22,910,480 126
InceptionV3 92 MB 0.779 0.937 23,851,784 159
ResNeXt50 96 MB 0.777 0.938 25,097,128 -
DenseNet201 80 MB 0.773 0.936 20,242,984 201
DenseNet169 57 MB 0.762 0.932 14,307,880 169
ResNet50V2 98 MB 0.760 0.930 25,613,800 -
DenseNet121 33 MB 0.750 0.923 8,062,504 121

参考: - keras微调模型 https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html - 《Keras:自建数据集图像分类的模型训练、保存与恢复》 https://blog.csdn.net/akadiao/article/details/80456742

3 代码结构及使用方法

3.1 代码结构

  • data:存放数据的文件夹。
    • train:存放训练图片数据的文件夹。
    • validation:存放validation图片数据的文件夹。
    • modelFile:存放训练好的模型的文件夹。
  • log:存放log的文件夹。
  • trainMyDataWithKerasModel.py:训练模型的文件。
  • predictWithMyModel.py:使用训练好的模型进行单次预测。
  • reTrainMyDataWithKerasModel.py:对训练好的模型进行再训练。
  • main.py:使用flask将predictWithMyModel.py作为接口开放出去。

3.2 使用方法

主要需求的python包:

  • tensorflow:1.4.0
  • keras:2.3.1
  • flask:1.0.2 (非必须)

数据输入 和 数据lable生成:项目使用了keras的ImageDataGenerator这一个神器,会根据data文件夹下的子文件夹的名字生成lable。

About

通用的图像分类项目,并以涉黄、涉政、涉恐和普通图片4分类为例。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.