基于深度学习的“微博人像自动识别转发机器人”设计

V1.0更新:

一,对网络结构调整:

1,通过大量实验测试,最终在RESnet50与VGG16中使用VGG16。

基于深度学习的“微博人像自动识别转发机器人”设计

2,通过观察爬取的数据集特征,将训练数据集分为5类,分别为”人像“,“食物”,“文字”,“动物”,“风景”。

3,训练100次epoch

4,batchsize=24

5,imagesize = 120

最终实际运行准确度更加趋近稳定,对于动物误识别为人的概率大大减小。

基于深度学习的“微博人像自动识别转发机器人”设计

二,增加更多的功能:

1,将屏蔽转发用户写入为block_list文件,从文件中读取屏蔽用户。

2,当用户发送 “@深绘里 -quit”时,可以将自己列入屏蔽列表中,当发送”@深绘里 -join“,可以重新参与被检索。

3,当用户quit or join,通过私信告知用户。

4,为了提高检测精准度,预测图像的时候,对于 长 or 高(比例大于1:1.3) 的图像裁剪为上,中,下,以及整张图resize为正方形的四张图片进行预测,如果有一张检测为人像,并且另外三张没有同时检测为其他同一类型的图片,则正确分类为人像。

5,自动生成日志log文件,存放于log/log_.txt中。

6,修补bug(修改为运行时强制使用CPU运行,不占用GPU显存)。

 

程序逻辑设计概要

本文实验采用Python+Keras作为主要语言,使用饭否API接口实现对微博用户上传的图片实时监控,通过多层卷积神经网络对采集图像进行识别,图像符合人群画像标准,则转发。通过对神经网络训练,识别准确率可达到82.5%。点击这里查看微博链接。

卷积神经网络设计

         本文采用对Lenet经典神经网络改进网络,网络结构如下:

基于深度学习的“微博人像自动识别转发机器人”设计

# first set of CONV -> RELU -> POOL layers
model.add(Conv2D(20, (5, 5), padding="same", input_shape=inputShape))
model.add(Activation(
"relu"))
model.add(MaxPooling2D(
pool_size=(2, 2), strides=(2, 2)))
# second set of conv relu pool layers
model.add(Conv2D(50, (5, 5), padding="same"))
model.add(Activation(
"relu"))
model.add(MaxPooling2D(
pool_size=(2, 2), strides=(2, 2)))
# triple set of conv relu pool layers
model.add(Conv2D(20, (5, 5), padding="same"))
model.add(Activation(
"relu"))
model.add(MaxPooling2D(
pool_size=(2, 2), strides=(2, 2)))
# first (only) set of FC relu layers
model.add(Flatten())
model.add(Dense(
500))
model.add(Activation(
"relu"))
# softmax classifier
model.add(Dense(classes))
model.add(Activation(
"softmax"))

数据集

对数据集采取二分类划分,类别为人像和非人像。数据集收集自饭否网。共计2168张图片,为了提高人像识别度,其中人像大于1.3:1尺寸的图像通过裁剪为三个等比例正方形方法扩展为共计489张。

基于深度学习的“微博人像自动识别转发机器人”设计

基于深度学习的“微博人像自动识别转发机器人”设计

自动转发系统设计

         转发系统采用python语言设计,通过饭否API (https://github.com/FanfouAPI/FanFouAPIDoc/wiki)获取系统微博信息。提取信息中的图像数据,使用训练好的model模型进行预测图像分类,若属于人像分类则通过API自动转发。

自动转发系统日志:

基于深度学习的“微博人像自动识别转发机器人”设计

基于深度学习的“微博人像自动识别转发机器人”设计

机器人识别效果

通过35次epoch 迭代,训练准确度达到89%左右,验证准确度达到83%左右。由于采取验证图像数据集过于小,所以可以看出图中验证准确度波动较大,且loss较高。

基于深度学习的“微博人像自动识别转发机器人”设计

基于深度学习的“微博人像自动识别转发机器人”设计

基于深度学习的“微博人像自动识别转发机器人”设计

http://fanfou.com/uarepretty/

总结与展望

         虽然对于人像可以准确的识别,但是对于一些类人像特征的物体,如猫等。也会被误识别为人像并转发。

基于深度学习的“微博人像自动识别转发机器人”设计

         其主要原因是网络结构过于浅,无法学习到更细节的特征,仅学习到了如眼睛,脸轮廓等。对于皮肤光滑程度没有很好的识别。如果采取更深层次的网络如ResNet50将会得到更好的效果。