##项目背景
- mobilenet_v2_0.75_224 预训练模型是基于224224的训练集图片训练而来,需要通过imagenet 100M数据集把模型训练成适用于448448的预训练模型
##思考的问题
1、预训练模型怎么使用和导入
2、如何在服务器上训练
3、如何把训练集弄出来
4、如何评价训练效果,先用448448的图像去224224的预训练模型中查看效果指标,定一个baseline。
##思路
slim库封装好了所有数据下载和train model的接口,直接使用即可。
- https://blog.csdn.net/angelbeats11/article/details/79009858
- 1、按照slim文档下载并制作tfrecord的数据集,这里是flower
- 2、按照slim文档下载pretrain的model,这里是 Inceptionv3 和 mobilenetv2。选取inceptionv3是因为slim的finetune case就是基于inceptionv3实现的,所以先跑一遍。
- 3、完成inceptionv3在flower上的finetune
- 4、完成mobilenetv2在flower上的finetune(遇到下列问题1、2、3)
- 5、下载imagenet数据集,并转换成tfrecord,在服务器上finetune
##遇到的问题
- 1 在 train_image_classifer.py 中 mobilenet网络未设置 default_image_size,所以需要制定 train_image_size。这个可以通过对比slim->nets下其他网络的代码获知。因此需要制定 train_image_size。
- 2 pretrain的model是 mobilenet_v2_0.5,需要在nets_factory中增加 v2_0.5的映射,这样才能找到对应的网络文件。
- 3 在slim中提供的 pretrain model都是基于 imagenet 2012 实现的,默认输出的logit layer 是 2048*1001,如果需要在其他训练集上 finetune(如这里使用的是flower数据集,只有5类),需要通过 labels_offset 参数进行调整,labels_offset = dataset.num_classes - network.num_clasess = 5-1001 = -996
- 4 imagenet官网(http://image-net.org)打不开,因此无法用slim脚本直接执行,需要基于已经下载好的imagenet jpeg文件,制作tfrecord文件,然后调用slim 的脚本finetune。参考