本仓库是人工智能课程的课程作业仓库,主要是完成无人机图像目标检测的任务,我们对visdrone数据集进行了处理,在yolo和ssd两种框架下进行了训练和测试,并编写demo用于实时的无人机图像目标检测。
requirements依赖:
ssd: pytorch1.4
yolo:pytorch1.0 tensorflow1.14
结构
visdrone_detection
├─ readme.md
├─ ssd
├─ yolo
└─ 人工智能大作业_流程.md
数据集
本作业使用的数据集是VisDrone数据集,包含了10个类(即行人、人、汽车、面包车、公共汽车、卡车、汽车、自行车、遮阳三轮车和三轮车),由于本次作业我们使用SSD和YOLO框架来完成目标检测的任务,需要对原先的数据标注格式进行处理,数据集原始的标注形式为xml文件,我们将标注转化为了常用的voc形式和yolo形式,您可以使用代码中的utils下的代码文件自行处理数据
训练
ssd训练
首先请cd到ssd
目录下,调试visdrone_train.py
下数据集和配置文件的路径信息,本作业的配置文件为configs/vgg_ssd300_visdrone0413.yaml
,执行:
python visdrone_train.py
训练好的模型文件将会保存在outputs
目录下
yolo训练
首先请cd到yolo
目录下,生成cfg文件和custom.data
python train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data--pretrained_weights weights/darknet53.conv.74
训练好的模型文件将会保存在checkpoints
目录下
测试
ssd测试
首先请cd到ssd
目录下, 执行
python visdrone_test.py
python visdrone_demo.py
yolo测试
首先请cd到yolo
目录下, 执行
python test.py --weights_path weights/yolov3.weights
python3 detect.py --image_folder data/samples/
结果
-
mAP指标
# yolo
+-------+-----------------+---------+
| Index | Class name | AP |
+-------+-----------------+---------+
| 0 | pedestrian | 0.08822 |
| 1 | people | 0.02340 |
| 2 | bicycle | 0.00165 |
| 3 | car | 0.43279 |
| 4 | van | 0.07407 |
| 5 | truck | 0.07747 |
| 6 | tricycle | 0.00995 |
| 7 | awning-tricycle | 0.01727 |
| 8 | bus | 0.25008 |
| 9 | motor | 0.05405 |
| 10 | others | 0.00366 |
+-------+-----------------+---------+
---- mAP 0.09387386786609676
# ssd
2020-11-04 14:56:20,698 SSD.inference INFO: mAP: 0.1524
pedestrian : 0.1170
people : 0.0909
bicycle : 0.0909
car : 0.4377
van : 0.1740
truck : 0.2258
tricycle : 0.1048
awning-tricycle : 0.0413
bus : 0.3754
motor : 0.0800
others : 0.0909
FPS
# yolo
fps: 19.17227602398063
83.97542357444763s / 1610imgs
# ssd
FPS:64.44748916337679
24.98157835006714s / 1610imgs
部分结果: