|
到这里,前面的铺垫算是大体完成了,准备开始我们的数据训练吧!
三、训练自己的数据
3.1修改segmentation_dataset.py
/models-r1.13.0/research/deeplab/datasets中找到segmentation_dataset.py文件大概在111行的位置增加一个自己的数据集描述“_MYDATA”
然后在下面一个代码块注册数据集,下图光标处为上一步修改的数据集描述名称。
3.2修改Train_utils.py
在/models-r1.13.0/research/deeplab/utils中找到train_utils.py文件,修改109行,修改如下,作用是在使用预训练权重时候,不加载该logit层。
(这里需要考虑数据平衡问题,对于数据集本身,如果数据不平衡,即各类别a,b,background在数据集中占比不相同,比如background占比远大于a,b类别,则需要对权重进行分配,假设权重比为1:10:11,则在train_utils.py的大概70行修改权重。)这里我没有做。
3.3修改train.py
文件路径:/models-r1.13.0/research/deeplab/train.py 在125行左右,修改如下
3.4 下载预训练模型
https://github.com/tensorflow/mo ... /g3doc/model_zoo.md 中下载任意一个模型,在接下来的训练需要用。我下载的是这个
解压后放置在“models-r1.13.0/research/deeplab/g3doc/”下。
3.5训练指令
- python deeplab/train.py \
- --logtostderr \
- --num_clones=1 \
- --training_number_of_steps=100 \
- --train_split="train" \
- --model_variant="xception_65" \
- --atrous_rates=6 \
- --atrous_rates=12 \
- --atrous_rates=18 \
- --output_stride=16 \
- --decoder_output_stride=4 \
- --train_crop_size=321 \
- --train_crop_size=321 \
- --train_batch_size=12 \
- --dataset="mydata" \
- --fine_tune_batch_norm=True \
- --tf_initial_checkpoint='/Users/zhengyuchun/Desktop/Anaconda/models-r1.13.0/research/deeplab/g3doc/deeplabv3_mnv2_pascal_trainval/model.ckpt-30000.index' \
- --train_logdir='/Users/zhengyuchun/Desktop/Anaconda/models-r1.13.0/research/deeplab/exp/mydata_train/train/' \
- --dataset_dir='/Users/zhengyuchun/Desktop/Anaconda/semantic_segmentation/data_tfrecord/tfrecord/'
复制代码
#这里只需要把路径改为自己的路径就可以。
其中:
num_clones:用2个gpu进行训练所以设置成2,默认为1。
train_crop_size:裁剪完成的图片大小。对于参数的说明:
① 不得小于 [321, 321]
② (crop_size - 1)/4 = 整数
③ 将crop_size设置为[256, 256],结果不会好,因为其有ASPP(atrous spatial pyramid pooling)模块,如果图片过小,到feature map时没有扩张卷积的范围大了,所以要求一个最小值
rain_batch_size:batch尺寸,如要训练BN层,batch_size值最好大于12,如果显存不够,可调整crop_size大小,但不得小于[321, 321]。
fine_tune_batch_norm:当batch_size大于12时,设置为True。
tf_initial_checkpoint:修改成自己的预训练权重路径,我使用的是xception_65
train_logdir:训练产生的文件存放路径。
3.6可视化输出
在终端输入指令
- python deeplab/vis.py \
- --logtostderr \
- --vis_split="val" \
- --model_variant="xception_65" \
- --atrous_rates=6 \
- --atrous_rates=12 \
- --atrous_rates=18 \
- --output_stride=16 \
- --decoder_output_stride=4 \
- --vis_crop_size=512 \
- --vis_crop_size=512 \
- --dataset="mydata" \
- --checkpoint_dir='/Users/zhengyuchun/Desktop/Anaconda/models-r1.13.0/research/deeplab/exp/mydata_train/train/' \
- --vis_logdir='/Users/zhengyuchun/Desktop/Anaconda/models-r1.13.0/research/deeplab/exp/mydata_train/vis/' \
- --dataset_dir='/Users/zhengyuchun/Desktop/Anaconda/semantic_segmentation/data_tfrecord/tfrecord/'
复制代码
其中:vis_split:设置为测试集val。
vis_crop_size:设置成数据集里面val数据的大小,比如我的是512*512。
dataset:设置为我们在segmentation_dataset.py文件设置的数据集名称。
dataset_dir:设置为创建的tfrecord路径。
3.7 tensorboard查看训练结果
由于训练结果存储在“/models-r1.13.0/research/deeplab/exp/mydata_train/train/”下
所以cd到research目录,执行命令,然后在浏览器输入cmd里的地址就可以查看训练结果了。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|