用PaddleDetection目标检测

本次目标检测使用的配置文件是yolov3_mobilenet_v1_ssld_270e_voc.yml,使用的数据集是voc格式的,具体的使用方法在下文会具体介绍

第一步:制作数据集

因为要用到的是voc格式的,所以我们使用的软件是labelimg

# 在命令窗口中运行这几段代码就能安装
pip install PyQt5
pip install pyqt5-tools
pip install lxml
pip install labelimg

如果安装的速度太慢,可以使用永久镜像源,这里以清华源为例

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装好之后在命令行输入labelimg即可弹出框

数据集链接: https://pan.baidu.com/s/1b48jzIStY1wbsF8NU6eMjw 提取码: e7w3 

第二步,进入飞浆平台下载好PaddleDetection

!git clone https://gitee.com/paddlepaddle/PaddleDetection   # 就用这个下载就很好
! pip install --upgrade pip # 升级pip
!unzip work/voc_data.zip # 解压数据集,直接unzip + “数据集存放位置即可”

# 再安装一些需要安装的
! pip install -r requirements.txt
! pip install pycocotools
! python setup.py install
! pip install Cython


# 生成train.txt, val.txt文件
import random
import os
random.seed(2022)
xml_dir = '/home/aistudio/work/voc_data/Annotations'
img_dir = '/home/aistudio/work/voc_data/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('bmp', 'xml'))
    path_list.append((img_path, xml_path))
random.shuffle(path_list)
ratio = 0.8
train_f = open('/home/aistudio/work/voc_data/train.txt', 'w') 
val_f = open('/home/aistudio/work/voc_data/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 = ['target']
with open('/home/aistudio/work/voc_data/label_list.txt', 'w') as f:
    for text in label:
        f.write(text + '\n')

第三步,修改配置文件

进入PaddleDetection/configs/yolov3/yolov3_mobilenet_v1_ssld_270e_voc.yml后,修改

其中 '../datasets/voc.yml':含有训练数据和验证数据的路径

'../runtime.yml':存放是否使用GPU 、迭代次数这些

 '_base_/optimizer_270e.yml':学习率和优化器的配置

'_base_/yolov3_mobilenet_v1.yml':模型、主干网络

'_base_/yolov3_reader.yml':读取后的预处理操作、如数据增强

主要修改'../datasets/voc.yml'中的路径,dataset_dir、anno_path、label_list

和'_base_/optimizer_270e.yml'中的epoch即可

第四步,开始训练

!python tools/train.py -c configs/yolov3/yolov3_mobilenet_v1_ssld_270e_voc.yml --eval 

进行评估

!python -u tools/eval.py -c configs/yolov3/yolov3_mobilenet_v1_ssld_270e_voc.yml -o weights=output/yolov3_mobilenet_v1_ssld_270e_voc/best_model.pdparams

进行预测

!python tools/infer.py -c configs/yolov3/yolov3_mobilenet_v1_ssld_270e_voc.yml -o weights=output/yolov3_mobilenet_v1_ssld_270e_voc/best_model.pdparams --infer_img=/home/aistudio/work/voc_data/images/1.bmp

 预测得到的文件保存在PaddleDetection/output中

但是因为框出目标的颜色是随机产生的,所以黑色也包含在其中,所以我把边框颜色固定了

文件在/PaddleDetection/ppdet/utils/visualizer.py下

导出模型

!python tools/export_model.py -c configs/yolov3/yolov3_mobilenet_v1_ssld_270e_voc.yml  -o weights=output/yolov3_mobilenet_v1_ssld_270e_voc/best_model.pdparams
# 导出的模型存在PaddleDetection/output_inference下

预测,阈值这里设置的0.3,实践中可以根据自己的实际需求调整(测试图片)

如果要预测视频的话,只需要将  --image_file 改为  --video_file即可

 

!python deploy/python/infer.py --model_dir=output_inference/yolov3_mobilenet_v1_ssld_270e_voc --image_file=/home/aistudio/work/voc_data/Test/a.jpg  --device GPU --thresh=0.3

这里设置框的颜色,在PaddleDetection/deploy/python/visualize.py下修改红色画出的位置

这里通道是RGB(检测图片),  检测视频是BGR

完成辣!

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值