2021SC@SDUSC
paddledetection作为国内出名的应用于目标检测框架,想要搞明白并不是一件非常容易的事,在分析代码之前,要首先知道如何使用它
举个例子 我们现在有一份数据集 我们需要训练这份数据集 该怎么办呢
方法如下:
1.转换格式 将这份数据集的格式转换成我们的PaddleDetection可以操作的格式,比如COCO或VOC数据集格式
如果需要转化的数据集格式是labelme或者cityscape的 一般使用x2coco.py(在tools目录下)来转化成coco格式
问题1:如何判断自己得到数据集格式?
labelme数据集
打开预先准备好的数据集,如果文件目录为
这就是labelme格式的数据集 其中image放的原始图片 label放的二值化灰度图(举个例子)
image的png图
对应的label
cityscape数据集
对应目录 里面内容不再赘述 小白如果不知道可以去搜索
问题2:如何开始转换?
找到x2coco.py所在路径 在此处资源管理器执行cmd
执行以下命令
python ./ppdet/data/tools/x2coco.py
--dataset_type labelme
--json_input_dir ./labelme_annos/
--image_input_dir ./labelme_imgs/
--output_dir ./cocome/
--train_proportion 0.8
--val_proportion 0.2
--test_proportion 0.0
--dataset_type:需要转换的数据格式,目前支持:'labelme'和'cityscape'
--json_input_dir:使用labelme标注的json文件所在文件夹
--image_input_dir:图像文件所在文件夹
--output_dir:转换后的COCO格式数据集存放位置
--train_proportion:标注数据中用于train的比例
--val_proportion:标注数据中用于validation的比例
--test_proportion:标注数据中用于infer的比例
此处参考大佬
VOC数据集所必须的文件内容如下所示,数据集根目录需有VOCdevkit/VOC2007或VOCdevkit/VOC2012文件夹,该文件夹中需有Annotations,JPEGImages和ImageSets/Main三个子目录,Annotations存放图片标注的xml文件,JPEGImages存放数据集图片,ImageSets/Main存放训练trainval.txt和测试test.txt列表。
VOCdevkit
├──VOC2007(或VOC2012)
│ ├── Annotations
│ ├── xxx.xml
│ ├── JPEGImages
│ ├── xxx.jpg
│ ├── ImageSets
│ ├── Main
│ ├── trainval.txt
│ ├── test.txt
执行以下脚本,将根据ImageSets/Main目录下的trainval.txt和test.txt文件在数据集根目录生成最终的trainval.txt和test.txt列表文件:
python dataset/voc/create_list.py -d path/to/dataset
2.选择模型
根据需求选择一个合适的模型
PaddleDetection中提供了丰富的模型库,具体可在模型库中查看各个模型的指标,您可依据实际部署算力的情况,选择合适的模型:
算力资源小时,推荐您使用移动端模型,PaddleDetection中的移动端模型经过迭代优化,具有较高性价比。
算力资源强大时,推荐您使用服务器端模型,该模型是PaddleDetection提出的面向服务器端实用的目标检测方案。
同时也可以根据使用场景不同选择合适的模型:
当小物体检测时,推荐您使用两阶段检测模型,比如Faster RCNN系列模型,具体可在模型库中找到。
当在交通领域使用,如行人,车辆检测时,推荐您使用特色垂类检测模型。
当在竞赛中使用,推荐您使用竞赛冠军模型CACascadeRCNN与OIDV5_baseLINE_MODEL。
当在人脸检测中使用,推荐您使用人脸检测模型。
同时也可以尝试PaddleDetection中开发的YOLOv3增强模型、YOLOv4模型与Anchor Free模型等。
剩下两个步骤在我的下一篇博客中 此处开始分析已经看的源码
因为我负责分析的是特色垂类检测模型



