SSD从头训练的实现

1.标注数据

https://cloud.tencent.com/developer/news/325876

2.处理标注数据

按照VOC数据集的要求,创建以下文件夹
Annotations:用于存放标注后的xml文件
ImageSets/Main:用于后续存放训练集、测试集、验收集的文件列表
JPEGImages:用于存放原始图像

下载自动划分脚本,与三个数据文件放在同一目录下

https://github.com/EddyGao/make_VOC2007/blob/master/make_main_txt.py

运行make_main_txt。py文件,ImageSets/Main路径下会生成

trainval_percent代表交叉验证集占总图片的比例,train_percent是训练集占交叉验证集的比例。

3.xml转化为tfrecord格式

tfrecord数据文件tensorflow中的一种将图像数据和标签统一存储的二进制文件,能更加快速地在tensorflow中复制、移动、读取和存储等。首先下载ssd

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

解压ssd_300_vgg.ckpt.zip 到checkpoint文件夹下。

把三个文件放进panda_voc2007文件,panda_voc2007与SSD-Tensorflow-master在同目录下

SSD-Tensorflow-master—>datasets—>pascalvoc_to_tfrecords.py 更改83行读取方式为’rb’

 

116行开始,防止坐标越界,修改如图

执行命令开始转换

 

DATASET_DIR=./panda_voc2007/
OUTPUT_DIR=./panda_tfrecord/
python SSD-Tensorflow-master/tf_convert_data.py --dataset_name=pascalvoc 
--dataset_dir=${DATASET_DIR} --output_name=voc_2007_train --output_dir=${OUTPUT_DIR}

转换完成

4.修改

SSD-Tensorflow-master—>datasets—>pascalvoc_common.py 根据实际情况进行修改

VOC_LABELS = {
    'none': (0, 'Background'),
'box': (1, 'box'),
}

train_ssd_network.py修改第154行的最大训练步数,将None改为比如50000。

 nets/ssd_vgg_300.py,修改87 和88行的类别

train_ssd_network.py,修改类别120行

eval_ssd_network.py 修改类别,66行

datasets/pascalvoc_2007.py 根据自己的训练数据修改整个文件

5.从头训练模型

python SSD-Tensorflow-master/train_ssd_network.py --train_dir ./logs --dataset_dir ./panda_tfrecord --dataset_name=pascalvoc_2007 --dataset_split_name=train --model_name=ssd_300_vgg --checkpoint_model_scope=ssd_300_vgg --save_summaries_secs=60 --save_interval_secs=600 --weight_decay=0.0005 --optimizer=adam --learning_rate=0.0001 --batch_size=4

把训练的模型放在logs文件里,

6.验证模型

然后启动jupyter-notebook

jupyter-notebook SSD-Tensorflow-master/notebooks/ssd_notebook.ipynb

修改6使用训练好的模型

修改8

# Test on some demo image and visualize output.
path = "./1.jpg"
#image_names = sorted(os.listdir(path))
img=cv2.imread(path)
img=cv2.cvtColor(img, cv2.COLOR_RGBA2RGB)
img=cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
#img=np.expand_dims(img,0)
rclasses, rscores, rbboxes =  process_image(np.array(img))

# visualization.bboxes_draw_on_img(img, rclasses, rscores, rbboxes, visualization.colors_plasma)
visualization.plt_bboxes(img, rclasses, rscores, rbboxes)

运行全部出现结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值