Ubuntu+SSD训练自己的数据,测试视频图片

版权声明:guojawee https://blog.csdn.net/weixin_36750623/article/details/83536901

(以Driver驾驶员,类别face/eye,2类为例)

1、制作VOC格式的数据集Driver

在/home/gjw/data下新建Driverdevkit目录,将制作好的Driver放在Driverdevkit目录下

2、转换数据集(LMDB格式)

(1)在/home/gjw/SSD/caffe/data目录下新建Driver文件夹
(2)
将home/gjw/SSD/caffe/data/VOC0712下的create_list.sh,create_data.sh,labelmap_voc.prototxt这3个文件复制到home/gjw/SSD/caffe/data/Driver目录下

(3)修改 create_list.sh

root_dir=$HOME/data/Driverdevkit/     ## 自行修改为自己的标签
for name in Driver  ## 自行修改
 
#if [[ $dataset == "test" && $name == "VOC2012" ]]    ## 注释掉这4行
#then 
#continue 
#fi
 
sed -i "s/$/.png/g" $img_file ## 从jpg改为png  (使用jpg还是png格式的数据集训练)
sed -i "s/$/.jpg/g" $img_file 

(4)修改labelmap_voc.prototxt —>labelmap_Driver.prototxt
(5)修改create_data.sh
data_root_dir="$HOME/data/Driverdevkit" ## 自行修改
dataset_name=“Driver” ## 自行修改

(6)执行脚本
$ cd ~/caffe$
./data/Driver/create_list.sh
./data/Driver/create_data.sh

至此,训练数据就已经准备好了,下面就可以进行训练了!


3、训练

(1) 初次训练,还是用VGG网络吧,下载该预训练模型,将其放到/home/mx/caffe/models/VGGNet文件夹之下。
说明:/home/gjw/SSD/caffe/example/ssd下面存放的是用于训练和测试的脚本.py

(2)将 ssd_pascal.py复制一份,改名字为ssd_pascal_driver.py,修改ssd_pascal_driver.py代码的内容:

将VOC0712全部替换为Driver
将VOC2007全部替换为Driver
将VOC全部替换为Driver
num_classes = 3  # 总类别数 3 = 2+1

gpus = "0" # 只有1块GPU

batch_size = 1   # GTX1060,请根据显存大小调整 
accum_batch_size = 1
test_batch_size = 1

num_test_image = 4952 # 测试图片数量
num_test_image = 自定义 # 这个数量应该和test_name_size.txt保持一致

base_lr = 0.0004     #学习率   (如果loss=nan的话,就调小)

'max_iter': 40000    #最大迭代次数
'test_interval': 40000    #每到多少步测试一次精度,一半大小改为和max_iter相等

'display': 100    #每迭代多少次,在屏幕上打印一次结果
'snapshot': 10000,   #每多少次生成一个.caffemodel,修改约<='max_iter': 120000    #最大迭代次数

'stepvalue': [80000, 100000, 120000],    #不修改

(3)训练脚本train.sh

#!/bin/bash 
build/tools/caffe train \
--solver='models/VGGNet/Face/SSD_300x300/solver.prototxt' \
--weights='models/VGGNet/VGG_ILSVRC_16_layers_fc_reduced.caffemodel' \
--gpu 0 2>&1 | tee test_result.log

训练结果示意图:
在这里插入图片描述


4、测试效果:

(1)目录中的图像测试:

[1] 写入绝对路径到pic.txt文件

find /home/gjw/data/Facedevkit/Face/JPEGImages/ -name '*.jpg' > pic.txt

[2] 检测结果:生成result.txt

build/examples/ssd/ssd_detect.bin \
models/VGGNet/Face/SSD_300x300/deploy.prototxt \
models/VGGNet/Face/SSD_300x300/VGG_Face_SSD_300x300_iter_40000.caffemodel \
../pic.txt \
--out_file ../Test/result.txt

[3] 可视化:将result.txt结果保存成图片

python2 examples/ssd/plot_detections.py \
../Test/result.txt \
~/../.. \
--labelmap-file data/Face/labelmap_Face.prototxt \
--visualize-threshold 0.8 \
--save-dir ../Test/test_result/

注解:~/…/… 表示家目录

(2)视频测试:ssd_pascal_video.py—>ssd_pascal_video_driver.py

build/examples/ssd/ssd_detect.bin \
models/VGGNet/Face/SSD_300x300/deploy.prototxt \
models/VGGNet/Face/SSD_300x300/VGG_Face_SSD_300x300_iter_40000.caffemodel \
./video.txt \
-file_type video \
-confidence_threshold 0.8

猜你喜欢

转载自blog.csdn.net/weixin_36750623/article/details/83536901