您的位置:首页 > 其它

【开发日记】马桶识别之马桶分类,通过迁移学习进行马桶分类

2018-01-10 21:42 351 查看
通过上篇文章马桶识别之数据清洗,通过Resnet50清洗脏数据,得到了干净的马桶图片。但是由于评论区图片有限,每一类的图片只有300张左右。如果从头开始训练,数据量有点小。这时可以通过迁移学习,利用从ImageNet数据集中学习到的模型来进行迁移学习。

具体的做法是冻结网络(比如ResNet,GoogleNet,Vgg16等)前几层的权重和偏置,只留下最后一层的参数进行训练。其实,也是把前面几层网络当成特征提取器进行特征提取,然后再利用最后一层进行线性分类。

在Tensorflow的官方教程中,有一篇是关于迁移学习的教程,有兴趣的可以看一下:How to Retrain Inception's Final Layer for New Categories。本文正是基于该教程进行迁移学习。

1. 数据准备

数据组织结构如下图所示,创建一个总文件夹,下面放“种类”子文件夹,子文件夹下放图片



2. 代码准备

确保~/tensorflow/examples 下有文件夹 image_retraining。如果没有的话,可以上Tensorflow的GitHub网址上下载(https://github.com/tensorflow/tensorflow)。

3. 开始训练

训练很简单,只要输入以下代码即可,默认使用预训练的 Inception V3模型。(注意更改为自己代码所在位置以及图片路径)python E:\Python35\Lib\site-packages\tensorflow\examples\image_retraining\retrain.py --image_dir F:\AI\proj\data4. 训练结果
使用我的笔记本电脑,差不多10分钟左右就可以出来结果。

训练的精度为68.4%,并不是很好,可能样本还是太少了,但是训练过程很简单,避免自己从头开始写一个神经网络。

下一步可以使用其他模型或者使用数据增强,以及调整一下其他参数来看一下精度能否继续提高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐