最近在做这个迁移学习,看了一本书,叫《21个项目玩转深度学习》里面的第三章介绍如何用自己的数据集去训练自己的深度模型,当然了 这本书的python版本好像是2.x,用现在的3.会有一些bug,不过去网上都可以解决,在这里我搜到的第三章解决问题的链接(http://www.pianshen.com/article/500471432/)基本都可以解决按照这个连接去解决,环境的问题自己去配置好就行。我的python版本是3.6.7,tensorflow是1.13.1。
根据书上的学习,首先是制作满足训练的数据集,自己可以搜集,然后生成tfrecord文件,会生成如图文件:
其中生成的label文件是数据标签的一个索引,比如第一类是汽车car,文件的第一个标签就是car,以此类推。
接下来是训练这个按照书中的指令训练就可以,区分是在于是否在训练的时候加上trainable_scopes=…,加上这个指令的话会按照设定的范围进行微调,不加的话对所有模型中的参数进行训练。加上的话训练会快一些,不加的话训练会慢一些。本人试过,不加的话效果好一些,就是费点时间,毕竟重新全训练要点时间。我用的是InceptionV3这个预训练模型,在这里你可以下载你想要的预训练模型(https://github.com/tensorflow/models/tree/master/research/slim)
训练命令:
python train_image_classifier.py --train_dir=satellite/train_dir --dataset_name=satellite
--dataset_split_name=train --dataset_dir=satellite/data
--model_name=inception_v3
--checkpoint_path=satellite/pretrained/inception_v3.ckpt
--checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits
--trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits
--max_number_of_steps=100000 --batch_size=32
--learning_rate=0.001
--learning_rate_decay_type=fixed --save_interval_secs=300
--save_summaries_secs=2 --log_every_n_steps=10
--optimizer=rmsprop --weight_decay=0.00004
参数什么的可以自己去调,最好用GPU去训练模型,比较快,省时间做其他事,没有的话可以想象办法,网上也有白嫖的方法。
接下俩就是验证准确率,按照书上的准确率很低,自己通过调参和数据处理后我的准确率还行,
我做了十个类别的分类,准确率可以了。
接下来是导出模型,然后拿自己的图像数据去识别看是什么效果。
这些按照书上一步一步做就可以了。
我训练了InceptinV3、InceptionV4两个模型,效果V4比V3好,在训练V4的时候,这里改为:
checkpoint_exclude_scopes=InceptionV4/Logits,InceptionV3/AuxLogits/Aux_logits --
在训练resnet_v1_50这个模型的时候这里改为:(我暂时改的可以跑通,还没做完去验证效果)
checkpoint_exclude_scopes=resnet_v1_50/Predictions/Reshape_1 --
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删