paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集

使用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.ymluse_gpu: 改成 false
paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第1张图片
然后使用命令行进行训练

 python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_roadsign.yml

paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第2张图片
到这就已经开始简单的训练了!
【参考文档】30分钟快速上手PaddleDetection

训练自己的VOC类型数据集

结构

下面是我voc类型数据集的结构
paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第3张图片
至于label_list.txttrain.txtval.txt不用多管,这部分是后面生成的。

你需要做的就是

  1. 在dataset文件夹中创建一个属于自己的文件夹
  2. 创建annotations,images文件夹,然后将图片文件放入images,将xml文件放入annotations
  3. 创建 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为例:
paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第4张图片
配置文件就这么4个

接下来你要做的就是:

  1. configs/datasets创建(或者是直接修改voc.yml文件)
    以下内容基本上必须修改!!!paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第5张图片
    其实直接右键就可以了

paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第6张图片
最后的修改结果就是:

  1. 修改configs/ppyoloe/ppyoloe_crn_l_36e_coco_xpu.yml
    paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第7张图片

贫困小孩用的是cpu,所以要改这个
paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第8张图片

  1. 然后其他文件的话就是一些非必须的调参
  2. 因为我用的是cpu,所以configs/runtime.yml中还要修改以防万一
    paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第9张图片

开跑

命令行开跑:

python tools/train.py -c configs/ppyoloe/ppyoloe_crn_l_36e_coco_xpu.yml

(1)报了个错

paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第10张图片

ppdet/core/workspace.py第78行修改为

with open(file_path, encoding='utf-8') as f:

修改后
paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第11张图片

(2)结论

cpu真的别来沾边,内存占用率最高到99%属实是有点绷不住

paddledetection在window使用cpu快速上手 & 在cpu端训练自己的VOC类型数据集_第12张图片

你可能感兴趣的:(#,paddle,目标检测,深度学习,人工智能)