Need help with ssd-pytorch?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

bubbliiiing
266 Stars 98 Forks MIT License 125 Commits 36 Opened issues

Description

这是一个ssd-pytorch的源码,可以用于训练自己的模型。

Services available

!
?

Need anything else?

Contributors list

# 51,811
Python
129 commits

SSD:Single-Shot MultiBox Detector目标检测模型在Pytorch当中的实现


2021年5月24日更新:
添加了mobilenetv2作为ssd的主干特征提取网络,作为轻量级ssd的实现,可通过设置train.py和ssd.py中的backbone进行主干变换。
2021年2月8日更新:
加入letterboximage的选项,关闭letterboximage后网络的map一般可以得到提升。

目录

  1. 性能情况 Performance
  2. 所需环境 Environment
  3. 文件下载 Download
  4. 预测步骤 How2predict
  5. 训练步骤 How2train
  6. 评估步骤 How2eval
  7. 参考资料 Reference

性能情况

| 训练数据集 | 权值文件名称 | 测试数据集 | 输入图片大小 | mAP 0.5:0.95 | mAP 0.5 | | :-----: | :-----: | :------: | :------: | :------: | :-----: | | VOC07+12 | ssd_weights.pth | VOC-Test07 | 300x300| - | 79.39 | VOC07+12 | mobilenetv2ssdweights.pth | VOC-Test07 | 300x300| - | 71.32

所需环境

torch == 1.2.0

文件下载

训练所需的ssd_weights.pth可以在百度云下载。
链接: https://pan.baidu.com/s/1ru6xnYFpBr2G0n5dKHrxTQ 提取码: w3hy

VOC数据集下载地址如下:
VOC2007+2012训练集
链接: https://pan.baidu.com/s/16pemiBGd-P9q2j7dZKGDFA 提取码: eiw9

VOC2007测试集
链接: https://pan.baidu.com/s/1BnMiFwlNwIWG9gsd4jHLig 提取码: dsda

预测步骤

a、使用预训练权重

  1. 下载完库后解压,在百度网盘下载ssdweights.pth,放入modeldata,运行predict.py,输入
    python
    img/street.jpg
    
  2. 在predict.py里面进行设置可以进行fps测试和video视频检测。
    ### b、使用自己训练的权重
  3. 按照训练步骤训练。
  4. 在ssd.py文件里面,在如下部分修改modelpath和classespath使其对应训练好的文件;modelpath对应logs文件夹下面的权值文件,classespath是model_path对应分的类
    python
    _defaults = {
    "model_path"        : 'model_data/ssd_weights.pth',
    "classes_path"      : 'model_data/voc_classes.txt',
    "input_shape"       : (300, 300, 3),
    "confidence"        : 0.5,
    "nms_iou"           : 0.45,
    "cuda"              : True,
    #-------------------------------#
    #   主干网络的选择
    #   vgg或者mobilenet
    #-------------------------------#
    "backbone"          : "vgg",
    #---------------------------------------------------------------------#
    #   该变量用于控制是否使用letterbox_image对输入图像进行不失真的resize,
    #   在多次测试后,发现关闭letterbox_image直接resize的效果更好
    #---------------------------------------------------------------------#
    "letterbox_image"   : False,
    }
    
  5. 运行predict.py,输入
    python
    img/street.jpg
    
  6. 在predict.py里面进行设置可以进行fps测试和video视频检测。

训练步骤

  1. 本文使用VOC格式进行训练。
  2. 训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
  3. 训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。
  4. 在训练前利用voc2ssd.py文件生成对应的txt。
  5. 再运行根目录下的voc_annotation.py,运行前需要将classes改成你自己的classes。注意不要使用中文标签,文件夹中不要有空格!
    python
    classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"]
    
  6. 此时会生成对应的2007_train.txt,每一行对应其图片位置及其真实框的位置
  7. 在训练前需要务必在model_data下新建一个txt文档,文档中输入需要分的类,示例如下:
    modeldata/newclasses.txt文件内容为:
    python
    cat
    dog
    ...
    
  8. 将utils.config的num_classes修改成所需要分的类的个数+1,运行train.py即可开始训练。

评估步骤

评估过程可参考视频https://www.bilibili.com/video/BV1zE411u7Vw
步骤是一样的,不需要自己再建立getdrtxt.py、getgttxt.py等文件。
1. 本文使用VOC格式进行评估。
2. 评估前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
3. 评估前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。
4. 在评估前利用voc2ssd.py文件生成对应的txt,评估用的txt为VOCdevkit/VOC2007/ImageSets/Main/test.txt,需要注意的是,如果整个VOC2007里面的数据集都是用于评估,那么直接将trainvalpercent设置成0即可。
5. 在yolo.py文件里面,在如下部分修改model
path和classespath使其对应训练好的文件;**modelpath对应logs文件夹下面的权值文件,classespath是modelpath对应分的类**。
6. 运行getdrtxt.py和getgttxt.py,在./input/detection-results和./input/ground-truth文件夹下生成对应的txt。
7. 运行get_map.py即可开始计算模型的mAP。

mAP目标检测精度计算更新

更新了getgttxt.py、getdrtxt.py和getmap.py文件。
get
map文件克隆自https://github.com/Cartucho/mAP
具体mAP计算过程可参考:https://www.bilibili.com/video/BV1zE411u7Vw

Reference

https://github.com/pierluigiferrari/ssdkeras
https://github.com/kuhung/SSD
keras

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.