当前位置:   article > 正文

TensorFlow+SSD编程实战及模型优化(一)_基于tensorflow平台的ssd模型

基于tensorflow平台的ssd模型

一.SSD模型详细介绍

1背景:Single Shot MultiBox Detector (one-stage方法)

.Wei Liu在ECCV 2016提出

.端到端的训练,不存在候选框提取这个过程,采用anchor机制

.直接回归目标类别和位置

.不同尺度的特征图上进行预测

2.网络框架

每一个方格为一个卷积层 ,主干网络为VGGNet,将VGG-16最后两个fc层替换为两个卷积层,在经过多次下采样,6个连线对应6种特征图,多尺度Feature Map预测,在检测层对目标区域的目标类别和坐标的预测,定义Default bounding boxes来完成类别分数,偏移量的预测。

3.Anchor

这里的每个正方形格子都代表了当前feature map的一个点 ,anchor就是指特征图(包含了多通道)上的每一个点,每个点我们会将他映射到原图中,1个anchor对应多个region的中心点,多个region通过采取不同尺寸和不同长宽比来提取,具体提取哪些区域呢,我们通过两个参量(scale和长宽比)来决定。

4.Default box

假设一个特征图有m*n个anchor,每个单元对应k个default box,每个default box预测c个类别概率分布和4个坐标,输出有(c+4)*k*m*n个值

实际选择的default box称为Prior box

5.损失函数

分类损失(softmax)+回归损失(Smootn-L1)

6.样本构造

.正样本:1.从GT box出发找到最匹配的prior box放入候选正样本集

                  2.从prior box集出发,寻找与GT box满足IOU>0.5的最大prior box放入候选正样本集

.负样本:难例挖掘(难分的样本,常用方法为OHEM),正负样本比1:3

7.数据增强

(1)随机采样多个区域,与物体之间最小的jaccard overlap(IOU)为:0.1,0.3,0.5,0.7与0.9

(2)采样的区域比例是【0.3,1.0】,aspect ratio(长宽比) 在0.5或2

(3)GTbox中心在采样区域中且面积大于0

(4)Resize到固定大小

(5)以0.5的概率随机的水平翻转

二.TensorFlow+SSD环境搭建

1.安装TensorFlow-gpu版本1.12以上;下载框架:https://github.com/tensorflow/models/tree/master/research/object_detection;安装说明:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md

按照上面的步骤安装

因为我用的是tf1.13.1

说一下我测试遇到的错误:

解决:用pycharm打开mobilenet.py文件,修改:

之后在research文件路径下运行python3 object_detection/builders/model_builder_test.py

出现以下结果,说明环境装好:

三.人脸检测数据清洗与数据打包

我们使用WIDER FACE数据集,由香港中文大学提出的,包括32203个图像和393703个人脸图像,有在尺度,姿势,遮挡,表情,装扮,光照变化的图像,从61个事件中提取的,对于每个事件类别,选取其中的40%作为训练集,10%用于交叉验证,50%作为测试集

对于数据打包呢,我们首先转化为Passcal VOC格式,再转化为TFrecord

Passcal VOC

主要有三个重要的文件夹:Annotations,ImageSets和JPEGImages

在Annotations和JPEGImages文件夹下分别存放标注信息和图片,两文件的命名是相同的,只是格式不同,Annotation会指向JPEGImages下的图片

在ImageSets存放着我们训练和测试要用到的文件列表,我们会根据文件列表将数据集划分为训练集,测试集和验证集

下载数据集:http://shuoyang1213.me/WIDERFACE/

下载下来如下:

其中标注文件在wider_face_split.zip中,打开压缩包:

打开其中一个标注信息(这里打开列表中第5个文件):

第一行是图片的路径,第二行是当前图片人脸的个数,第三行的前4个值(前两个是左上角的坐标,后两个是人脸框的大小)是人脸框的坐标信息,后面6个值对应着

我们会根据后面6个值进行清洗,去掉一些样本,使得我们的模型对当前的任务更加匹配

接下来我们打开WIDER_train文件下的images文件:

一共61个文件,对应到61个不同的场景

接下来我们需要将图片和真值文件转化为VOC格式数据集

完整代码我已上传:https://download.csdn.net/download/zjc20172333086/12456618

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/291185
推荐阅读
相关标签
  

闽ICP备14008679号