SSD算法TensorFlow版使用解析

本文详细介绍了在TensorFlow中实现SSD算法的过程,包括数据预处理、模型训练、模型评估和转换。首先,通过tf_convert_data.py将VOC2007数据集转换为TF-Records格式,然后使用train_ssd_network.py进行训练,eval_ssd_network.py评估模型性能。此外,还提供了caffe_to_tensorflow.py用于将Caffe模型转换为TensorFlow模型。在Ubuntu 16.04环境下,使用Anaconda3和TensorFlow进行操作,同时支持GPU加速。
摘要由CSDN通过智能技术生成

SSD算法TensorFlow版代码地址:https://github.com/balancap/SSD-Tensorflow
运行环境:Ubuntu 16.04
使用anaconda3安装python3.5,并安装如下模块

  • tensorflow
  • opencv
  • py-opencv

如需使用GPU运行,自行安装CUDA,再用anaconda安装tensorflow-gpu模块

一、文件框架

(一)前期准备部分

1、tf_convert_data.py

将VOC2007格式的数据转换为TF-Records格式

运行脚本代码:

DATASET_DIR=./VOC2007/test/
OUTPUT_DIR=./tfrecords
python tf_convert_data.py \
    --dataset_name=pascalvoc \
    --dataset_dir=${DATASET_DIR} \
    --output_name=voc_2007_train \
    --output_dir=${OUTPUT_DIR}

在Ubuntu下,建立一个后缀为shell_name.sh的文件,将代码写入该文件,然后在终端上输入:

./shell_name.sh

shell_name:该脚本文件的名字

/VOC2007/test/此处改为自己的数据集
运行结果是生成一个TF-Records的集合文件,不再是分开的单个文件

2、eval_ssd_network.py

该文件用于评价SSD在数据集上的表现,并且画出召回准确率曲线以及mAP(mean Average Precision)指标
运行脚本代码:

EVAL_DIR=./logs/
CHECKPOINT_PATH=./checkpoints/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt
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=${CHECKPOINT_PATH} \
    --batch_size=1

CHECKPOINT_PATH:需要加载的模型所在路径,可以修改
EVAL_DIR:生成的评价所存放的位置
batch_size:一次处理的数据量

3、caffe_to_tensorflow.py

将caffe模型的断点(checkpoint)转为tensorflow的断点(checkpoint)

如果想跑的模型是在caffe框架下搭建的,生成的是caffe的断点,可以利用这个文件转为tensorflow的断点

运行脚本代码:

CAFFE_MODEL=./ckpts/SSD_300x300_ft_VOC0712/VGG_VOC0712_SSD_300x300_ft_iter_120000.caffemodel
python caffe_to_tensorflow.py \
    --model_name=ssd_300_vgg \
    --num_classes=21 \
    --caffemodel_path=${CAFFE_MODEL}

(二)训练部分

1、train_ssd_network.py

该文件用于训练SSD神经网络,有很多训练过程中可选的项:

  • 数据集
  • 优化器(optimiser)
  • 超参数
  • 模型(model)
  • 断点(checkpoint)

运行脚本代码:

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
--model_name:模型名称
--save_summaries_secs
--save_interval_secs
--weight_decay
--optimizer:优化器的选择(有多种最小化损失函数的方法)
--learning_rate:学习率
--batch_size:一次可以输入到神经网络的数据量
--ssd_300_vgg.ckpt:模型名称
--logs:训练保存目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值