使用cpu快速上手
配置文件
配置文件在configs文件夹
下,包含了基本上所有常见模型的配置文件
以yolov3_mobilenet_v1_roadsign.yml为例
_BASE_: [
'../datasets/roadsign_voc.yml',
'../runtime.yml',
'_base_/optimizer_40e.yml',
'_base_/yolov3_mobilenet_v1.yml',
'_base_/yolov3_reader.yml',
]
- yolov3_mobilenet_v1_roadsign 文件入口
- roadsign_voc 主要说明了训练数据和验证数据的路径
- runtime.yml 主要说明了公共的运行参数,比如说是否使用GPU、每多少个epoch存储checkpoint等
- optimizer_40e.yml 主要说明了学习率和优化器的配置。
- ppyolov2_r50vd_dcn.yml 主要说明模型、和主干网络的情况。
- ppyolov2_reader.yml 主要说明数据读取器配置,如batch size,并发加载子进程数等,同时包含读取后预处理操作,如resize、数据增强等等
修改&开始训练
因为我使用的是cpu,所以只需要将configs/runtime.yml
中use_gpu:
改成 false
然后使用命令行进行训练
python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml
到这就已经开始简单的训练了!
【参考文档】30分钟快速上手PaddleDetection
训练自己的VOC类型数据集
结构
下面是我voc类型数据集的结构
至于label_list.txt
,train.txt
,val.txt
不用多管,这部分是后面生成的。
你需要做的就是
- 在dataset文件夹中创建一个属于自己的文件夹
- 创建annotations,images文件夹,然后将图片文件放入images,将xml文件放入annotations
- 创建 create_list.py(代码如下)
import random
import os
#生成train.txt和val.txt
random.seed(2020)
#---------------------修改为自己的路径----------------------------------------------------
xml_dir = 'D:/computervision/PaddleDetection-release-2.5/dataset/number/annotations'#标签文件地址
img_dir = 'D:/computervision/PaddleDetection-release-2.5/dataset/number/images'#图像文件地址
#---------------------修改为自己的路径----------------------------------------------------
path_list = list()
for img in os.listdir(img_dir):
img_path = os.path.join(img_dir,img)
xml_path = os.path.join(xml_dir,img.replace('jpg', 'xml'))
path_list.append((img_path, xml_path))
random.shuffle(path_list)
ratio = 0.9
#---------------------train/val之前修改为自己的路径----------------------------------------------------
train_f = open('D:/computervision/PaddleDetection-release-2.5/dataset/number/train.txt','w') #生成训练文件
val_f = open('D:/computervision/PaddleDetection-release-2.5/dataset/number/val.txt' ,'w')#生成验证文件
#---------------------修改为自己的路径----------------------------------------------------
for i ,content in enumerate(path_list):
img, xml = content
text = img + ' ' + xml + '\n'
if i < len(path_list) * ratio:
train_f.write(text)
else:
val_f.write(text)
train_f.close()
val_f.close()
#生成标签文档
label = ['number']#设置你想检测的类别
#---------------------label_list之前修改为自己的路径----------------------------------------------------
with open('D:/computervision/PaddleDetection-release-2.5/dataset/number/label_list.txt', 'w') as f:
# ---------------------label_list之前修改为自己的路径----------------------------------------------------
for text in label:
f.write(text+'\n')
修改配置文件
这点是基于你已经选择好了想要使用的模型,我以我使用的ppyoloe为例:
配置文件就这么4个
接下来你要做的就是:
- 到
configs/datasets
创建(或者是直接修改voc.yml文件)
以下内容基本上必须修改!!!
其实直接右键就可以了
最后的修改结果就是:
- 修改
configs/ppyoloe/ppyoloe_crn_l_36e_coco_xpu.yml
贫困小孩用的是cpu,所以要改这个
- 然后其他文件的话就是一些非必须的调参
- 因为我用的是cpu,所以
configs/runtime.yml
中还要修改以防万一
开跑
命令行开跑:
python tools/train.py -c configs/ppyoloe/ppyoloe_crn_l_36e_coco_xpu.yml
(1)报了个错
ppdet/core/workspace.py第78行修改为
with open(file_path, encoding='utf-8') as f:
修改后
(2)结论
cpu真的别来沾边,内存占用率最高到99%属实是有点绷不住