基于Paddle的计算机视觉入门教程——第12讲 实战:PaddleDeteciton实现目标检测

B站教程地址

https://www.bilibili.com/video/BV18b4y1J7a6/

下载链接

链接:https://pan.baidu.com/s/1ydUkMBOUQtaIaNJrjbCjGQ
提取码:qxp9

数据集

数据集结构

在实际项目中最常用的是voc数据集格式,我们以voc数据集为例,进行介绍。

JPEGImages存放所有数据集图片,Annotations中存放所有标注文件。

如图片000001.jpg,它对应的标注就是000001.xml

这张图片对应的标注信息如下:

<annotation>
	<folder>VOC2007</folder>
	<filename>000001.jpg</filename>
	<source>
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
		<flickrid>341012865</flickrid>
	</source>
	<owner>
		<flickrid>Fried Camels</flickrid>
		<name>Jinky the Fruit Bat</name>
	</owner>
	<size>
		<width>353</width>
		<height>500</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>dog</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>48</xmin>
			<ymin>240</ymin>
			<xmax>195</xmax>
			<ymax>371</ymax>
		</bndbox>
	</object>
	<object>
		<name>person</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>8</xmin>
			<ymin>12</ymin>
			<xmax>352</xmax>
			<ymax>498</ymax>
		</bndbox>
	</object>
</annotation>

制作数据集

使用labelImg软件制作目标检测数据集。

键盘A和D代表上一张和下一张,W为标注工具,标注完成后CTRL+S保存,这样一张图片就标注完成了。所有的图片都需要进行标注,而且不能遗漏目标物体,这一过程是非常耗时耗力的。

PaddleDetection

把制作好的数据集放在dataset文件夹下,然后修改configs里面的标注文件,对应你想要修改的模型,特别需要注意修改dataset相关的参数,如果对模型不做特别修改,其他大多数参数都不需要改变。

模型训练

python tools/train.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml --use_vdl=True --eval

断点训练

python tools/train.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml -r output/yolov3_darknet53_270e_voc/100

模型评估

python tools/eval.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml -o weights=output/yolov3_darknet53_270e_voc/best_model

模型导出

python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml --output_dir=./inference_model -o weights=output/yolov3_darknet53_270e_voc/best_model

模型预测

python deploy/python/infer.py --model_dir=./inference_model/yolov3_darknet53_270e_voc --image_file=./street.jpg --device=GPU --threshold=0.2

生成train.txt和eval.txt代码

import os
import random
 
def ReadFileDatas():
    FileNamelist = []
    file = open('train.txt','r+')
    for line in file:
        line=line.strip('\n') 
        FileNamelist.append(line)
    file.close()
    return FileNamelist
 
def WriteDatasToFile(listInfo,cls_num):
    train_file_handle=open('train.txt',mode='w')
    eval_file_handle=open('eval.txt',mode='w')
    i = 0
    for idx in range(len(listInfo)):
        i += 1
        str = listInfo[idx]
        str_Result = str  + '\n'
        if(i % (cls_num+1) == 0):
            eval_file_handle.write(str_Result)
        else:
            train_file_handle.write(str_Result)
    train_file_handle.close()
    eval_file_handle.close()


with open("train.txt", 'w') as f:
    res = os.listdir('./annotations')             			 #修改为自己的标注路径
    for j in res:
        j = j[:-4]
        f.write("./photos/"+str(j)+'.jpg ')					 #修改为自己的图片路径
        f.write("./annotations/"+str(j)+'.xml'+'\n')		 #修改为自己的标注路径
      
listFileInfo = ReadFileDatas()
random.shuffle(listFileInfo)
WriteDatasToFile(listFileInfo,6)   #训练集和测试集 6 : 1

注意修改最后的图片和标注文件路径!

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值