/SSD-Tensorflow

SSD检测过程的Tensorflow实现

Primary LanguagePython

SSD-Tensorflow

声明:

更详细的代码解读Tensorflow实现SSD.
欢迎关注我的知乎.

运行环境:

Python3 + Tensorflow1.5 + OpenCV-python3.3.1 + Numpy1.13
windows和ubuntu环境都可以

准备工作:

请在SSD检测模型下载模型,并放到SSD_model文件夹下

文件说明:

1、ssd300_vgg.py:搭建ssd300网络模型,并解码网络输出

·ssd_layers.py:SSD中各种网络层的定义
·ssd_anchors.py:SSD的先验框anchor设置,与Caffe源码保持一致

2、utils.py:功能函数:

(1)预处理图片:白化、resize300x300、增加batchsize这一维度
(2)处理/筛选边界框:
·将边界框超出图片范围(0,0)-(300,300)的部分cut掉;
·按类别置信度scores降序,对边界框进行排序并仅保留top_k=400;
·计算IOU->采用NMS;
·还原相对原图片的边界框真实位置和大小.

3、drawbox.py:可视化最后的检测结果

4、Main.py:SSD主函数:

(1)搭建网络,解码网络输出并设置阈值去除得分低于阈值的边界框,得到边界框的类别、得分、位置大小
(2)导入训练好的SSD模型
(3)预处理图片-->处理/筛选边界框
(4)可视化最后的检测结果

5、SSD_data文件夹:

包含待检测输入图片car.jpg、检测后的输出图片detection.jpg、ssd_300_vgg网络各个层的名称var_name.txt

运行Main.py即可得到效果图:

1、car.jpg:输入的待检测图片

image

2、detection.jpg:检测结果可视化

image