docker容器训练Tensorflow-SSD以及出现的错误

1.拉取镜像

镜像地址:juliojj/cuda9-cudnn7-p3-tf1.12
该镜像为cuda9,cudnn7,python3.5,tensorflow-gpu==1.12.0的环境。
复制其tag,拉取镜像:
在这里插入图片描述

2.创建容器

docker run -it --runtime=nvidia --name=liukongling-tensorflow-gpu -p 13001:8888 -p 13002:6006 -p 13003:8008 -v  /home/liukongling:/liukongling docker.io/juliojj/cuda9-cudnn7-p3-tf1.12:latest

其中:name:可自己进行更换
/home/liukongling:/liukongling:可放置自己想要的位置
docker.io/juliojj/cuda9-cudnn7-p3-tf1.12:latest:镜像名称
容器创建成功,并已进入

3.模型训练

由于tensorflow-SSD之前在win版本上运行过,因此所需的文件已有:
在这里插入图片描述
若不清楚,可参考:
SSD-Tensorflow 目标检测(自定义数据集(VOC2007格式))
SSD-Tensorflow 目标检测(VOC2007)

根据网上的指导,创建train_ssd_network.sh如下:

DATASET_DIR=/liukongling/SSD-Tensorflow-master/tfrecords_/
TRAIN_DIR=/liukongling/SSD-Tensorflow-master/train_model/
CHECKPOINT_PATH=/liukongling/SSD-Tensorflow-master/checkpoints/vgg_16.ckpt
python3 /liukongling/SSD-Tensorflow-master/train_ssd_network.py
train_dir=${TRAIN_DIR}
dataset_dir=${DATASET_DIR}
dataset_name=pascalvoc_2007
dataset_split_name=train
model_name=ssd_300_vgg
checkpoint_path=${CHECKPOINT_PATH}
checkpoint_model_scope=vgg_16
checkpoint_exclude_scopes=ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box
trainable_scopes=ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box
save_summaries_secs=60
save_interval_secs=600
weight_decay=0.0005
optimizer=adam
learning_rate=0.001
learning_rate_decay_factor=0.94
batch_size=24
gpu_memory_fraction=0.9

可是运行该.sh文件一直找不到train_ssd_network.py,因此我直接在该.py中进行更改:
在这里插入图片描述
可根据环境参数进行修改即可
然后,进入train_ssd_network.py的路径:
在这里插入图片描述
运行如上代码即可进行训练。
PS:若想运行.sh文件,可参照SSD目标检测:tensorflow 版本调试以及出现错误的解决方法

4.测试图片

首先在容器中安装jupyter并配置文件,设置密码:
pip install jupyter notebook #安装jupyter
jupyter notebook --generate -config   #生成配置文件
jupyter notebook password    #生成登录密码
jupyter-notebook --ip 0.0.0.0 --allow-root #打开jupyter

或者配置成功后,直接在浏览器输入:ip:容器端口号(比如我这里是 192.168.1.101:14001),可以进行代码运行及修改。
进入jupyter,打开notebooks/ssd_notebook.ipynb:
在这里插入图片描述
在这里插入图片描述
将以上两处改为你的文件的绝对路径即可。
点击cell/run all进行测试,测试结果如下:
在这里插入图片描述
运行过程中遇到的问题:
运行ssd_notebook.ipynb时出现
“ModuleNotFoundError: No module named ‘nets’”
网上提供的方法对于我的情况不适合,我的问题出现在该文件的路径问题:
在这里插入图片描述
打开该文件可以发现网址中的路径中出现了两次notebooks。
解决办法:将notebooks文件夹下的ssd_notebook.ipynb直接拷贝到主目录SSD-Tensorflow-master下,然后在主目录下打开这个文件ssd_notebook.ipynb,这个时候的网址变为下图所示,再继续在这文件上执行。
在这里插入图片描述
详情可见:深度学习文章4:训练自己模型的SSD完整详细步骤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值