README.md 2.9 KB
Newer Older
J
JiaQi Xu 已提交
1
## SSD:Single-Shot MultiBox Detector目标检测模型在Pytorch当中的实现
J
JiaQi Xu 已提交
2
---
J
JiaQi Xu 已提交
3

J
JiaQi Xu 已提交
4 5 6
### 目录
1. [所需环境 Environment](#所需环境)
2. [文件下载 Download](#文件下载)
B
Bubbliiiing 已提交
7 8 9
3. [预测步骤 How2predict](#预测步骤)
4. [训练步骤 How2train](#训练步骤)
5. [参考资料 Reference](#Reference)
J
JiaQi Xu 已提交
10 11

### 所需环境
J
JiaQi Xu 已提交
12
torch == 1.2.0
J
JiaQi Xu 已提交
13 14

### 文件下载
J
JiaQi Xu 已提交
15
训练所需的ssd_weights.pth可以在百度云下载。  
J
JiaQi Xu 已提交
16
链接: https://pan.baidu.com/s/1ltXCkuSxKRJUsLi0IoBg2A  
B
Bubbliiiing 已提交
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
提取码: uqnw  

### 预测步骤
#### 1、使用预训练权重
a、下载完库后解压,在百度网盘下载ssd_weights.h5,放入model_data,运行predict.py,输入  
```python
img/street.jpg
```
可完成预测。  
b、利用video.py可进行摄像头检测。  
#### 2、使用自己训练的权重
a、按照训练步骤训练。  
b、在ssd.py文件里面,在如下部分修改model_path和classes_path使其对应训练好的文件;**model_path对应logs文件夹下面的权值文件,classes_path是model_path对应分的类**
```python
_defaults = {
    "model_path": 'model_data/ssd_weights.pth',
    "classes_path": 'model_data/voc_classes.txt',
    "model_image_size" : (300, 300, 3),
    "confidence": 0.5,
    "cuda": True,
}
```
c、运行predict.py,输入  
```python
img/street.jpg
```
可完成预测。  
d、利用video.py可进行摄像头检测。  

J
JiaQi Xu 已提交
46
### 训练步骤
J
JiaQi Xu 已提交
47 48 49 50
1、本文使用VOC格式进行训练。  
2、训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。  
3、训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。  
4、在训练前利用voc2ssd.py文件生成对应的txt。  
B
Bubbliiiing 已提交
51
5、再运行根目录下的voc_annotation.py,运行前需要将classes改成你自己的classes。**注意不要使用中文标签,文件夹中不要有空格!**   
J
JiaQi Xu 已提交
52 53 54
```python
classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"]
```
B
Bubbliiiing 已提交
55 56 57 58 59 60 61 62 63 64 65 66
6、此时会生成对应的2007_train.txt,每一行对应其**图片位置**及其**真实框的位置**
7、**在训练前需要务必在model_data下新建一个txt文档,文档中输入需要分的类,在train.py中将classes_path指向该文件**,示例如下:   
```python
classes_path = 'model_data/new_classes.txt'    
```
model_data/new_classes.txt文件内容为:   
```python
cat
dog
...
```
8、将train.py的NUM_CLASSES修改成所需要分的类的个数+1,运行train.py即可开始训练。
J
JiaQi Xu 已提交
67

J
JiaQi Xu 已提交
68 69 70 71 72
### mAP目标检测精度计算更新
更新了get_gt_txt.py、get_dr_txt.py和get_map.py文件。  
get_map文件克隆自https://github.com/Cartucho/mAP  
具体mAP计算过程可参考:https://www.bilibili.com/video/BV1zE411u7Vw

J
JiaQi Xu 已提交
73
### Reference
J
JiaQi Xu 已提交
74 75
https://github.com/pierluigiferrari/ssd_keras  
https://github.com/kuhung/SSD_keras