识别动漫图片的神经网络构建

来源:互联网 发布:车机软件 编辑:程序博客网 时间:2024/04/30 20:35

首先,利用百度抓来的图片,分为训练集和测试集
训练集:动漫图片8168张,非动漫图片9906张。
测试集:动漫图片1785张,非动漫图片1984张

使用cifar10的分类神经网络,按照“动漫”0,“非动漫”1进行训练网络。
每批次60个数据,训练了20000批,发现正确率的评估结果约为0.46…
什么鬼。。。测试集中动漫图片占得比例为 1785/(1785+1984) = 0.473。。。
把输出结果logits打印出来,发现logits基本上是[-0.09, 0.09]…这样的数据,难怪正确率与比例差不多。。。

修改为网络结构,把原来的local3层换成conv3卷积层,并对conv3的结果pool,输出一个[60, 3, 3, 64]的张量到local4,后面的结构跟之前的都一样。跑了一会儿,发现conv3层的稀疏率接近为1了。。。网络结构有问题。

继续修改网络结构。原来的数据张量使用[32, 32, 3],不进行randomCrop了,同时,去掉了conv2后面的pool层。结果,训练速度降低了,每批次耗时是之前的三倍左右,conv3的稀疏性很快跳到了0.96,conv1和conv2的稀疏性很不稳定,total_loss有所下降。是不是卷积层太多了呢,去掉conv3试试,

去掉了conv3,现在网络结构是input(32*32*3)->conv1->conv2->local3->soft_linear
训练速度是cifar的2倍左右,看来网络“宽度”对训练速度的影响很大。
前200步中,conv2的稀疏率直奔0.9375,并维持不变,到了400步,才慢慢的以抛物线的形式下降到0.55…好奇怪,在1400步之后慢慢开始回升。

我哭着看到我的评估的正确率从0.46下降到0.22…什么鬼,怎么比0.47低这么多!!!
不过结果你应该猜到了,我测试集的标签搞反了 O.O,也就是说,正确率大概升到了0.78左右。

把测试集的标签改回来,正确率已经变为0.779了。
这里写图片描述

再看一下conv1和conv2的稀疏率,已经分别慢慢回升到0.72和0.92左右。
这里写图片描述
跑了大概两万批次,成功率维持在0.79左右。

代码地址:https://github.com/xiang2017/AnimPicker.git

ImageHand文件夹下是用来抓取图片的工具
AnimPicker文件夹下是CNN的代码。

0 0
原创粉丝点击