深度学习_目标检测(二)——SSD(一)TensorFlow版本(一)使用

目录

SSD tensorflow版本

step 1/4 测试代码

1. 预训练的模型

2.执行检测

step 2/4 训练

1.voc转tfrecords数据类型

问题解决 

2.训练

问题解决 

step 3/4 验证

1.测试数据转换

2. 验证

问题解决

step 4/4 监测

参考


SSD tensorflow版本

step 1/4 测试代码

1. 预训练的模型

unzip ssd_300_vgg.ckpt.zip

2.执行检测

我是通过转成python脚本来运行的。官方教程如下:

jupyter notebook notebooks/ssd_notebook.ipynb

step 2/4 训练

1.voc转tfrecords数据类型

# mkdir tfrecords
DATASET_DIR=./VOC2007/
OUTPUT_DIR=./tfrecords
python tf_convert_data.py \
    --dataset_name=pascalvoc \
    --dataset_dir=./VOC2007/ \
    --output_name=voc_2007_train \
    --output_dir=./tfrecords

wiodow下

python tf_convert_data.py  --dataset_name=pascalvoc  --dataset_dir=./VOC2007/  --output_name=voc_2007_train  --output_dir=./tfrecords

问题解决 

Q: 需要更改:读取方式utf-8编码coding出错。

A: 
image_data = tf.gfile.FastGFile(filename, 'r').read()
image_data = tf.gfile.FastGFile(filename, 'rb').read()

2.训练

ssdvgg300微调

# batch_size set <16
# gpu_memory_fraction set <=0.5
```bash
DATASET_DIR=./tfrecords
TRAIN_DIR=./logs/
CHECKPOINT_PATH=./checkpoints/ssd_300_vgg.ckpt
python train_ssd_network.py \
    --train_dir=${TRAIN_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=pascalvoc_2012 \
    --dataset_split_name=train \
    --model_name=ssd_300_vgg \
    --checkpoint_path=${CHECKPOINT_PATH} \
    --save_summaries_secs=60 \
    --save_interval_secs=600 \
    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.001 \
    --batch_size=32
```

window下_ssdvgg300微调

```window
python train_ssd_network.py  --train_dir=./logs/  --dataset_dir=./tfrecords --dataset_name=pascalvoc_2007  --dataset_split_name=train   --model_name=ssd_300_vgg  --checkpoint_path=./checkpoints/ssd_300_vgg.ckpt  --save_summaries_secs=60  --save_interval_secs=600  --weight_decay=0.0005  --optimizer=adam  --learning_rate=0.001  --batch_size=16
```

vgg微调

DATASET_DIR=./tfrecords
TRAIN_DIR=./log/
CHECKPOINT_PATH=./checkpoints/vgg_16.ckpt
python 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=32

 window下_vgg微调

python train_ssd_network.py  --train_dir=./log/  --dataset_dir=./tfrecords  --dataset_name=pascalvoc_2007  --dataset_split_name=train  --model_name=ssd_300_vgg  --checkpoint_path=./checkpoints/vgg_16.ckpt  --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=32

 

 问题解决 

Q: 无法运行训练

A:
# batch_size set <16
# gpu_memory_fraction set <=0.5

step 3/4 验证

1.测试数据转换

同理 voc转tfrecords数据类型.

# mkdir tfrecords
DATASET_DIR=./VOC2007/
OUTPUT_DIR=./test_tfrecords
python tf_convert_data.py \
    --dataset_name=pascalvoc \
    --dataset_dir=./VOC2007/ \
    --output_name=voc_2007_test \
    --output_dir=./test_tfrecords

2. 验证

EVAL_DIR=${TRAIN_DIR}/eval
python eval_ssd_network.py \
    --eval_dir=${EVAL_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=pascalvoc_2007 \
    --dataset_split_name=test \
    --model_name=ssd_300_vgg \
    --checkpoint_path=${TRAIN_DIR} \
    --wait_for_checkpoints=True \
    --batch_size=1 \
    --max_num_batches=500
```window
python eval_ssd_network.py  --eval_dir=./logs/eval  --dataset_dir=./test_tfrecords   --dataset_name=pascalvoc_2007  --dataset_split_name=test   --model_name=ssd_300_vgg  --checkpoint_path=./logs/  --wait_for_checkpoints=True  --batch_size=1  --max_num_batches=500
```

问题解决

Q:TypeError: _variable_v2_call() got an unexpected keyword argument 'collections'

A:It should be work if you change the code in ./tf_extended/metrics.py Line 51.
"return variables.Variable" =>> "return variables.VariableV1"

step 4/4 监测

tensorboard logdir=.

参考

ssd tensorflow版本实现

https://github.com/balancap/SSD-Tensorflow

https://github.com/DJdongbudong/SSD-Tensorflow

中文教程:http://www.studyai.com/article/3e454b9e#goto-page-logo

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能之心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值