当前位置:   article > 正文

用PaddleDetection目标检测_paddledetection测试图片

paddledetection测试图片

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

第一步:制作数据集

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

  1. # 在命令窗口中运行这几段代码就能安装
  2. pip install PyQt5
  3. pip install pyqt5-tools
  4. pip install lxml
  5. 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

  1. !git clone https://gitee.com/paddlepaddle/PaddleDetection # 就用这个下载就很好
  2. ! pip install --upgrade pip # 升级pip
  3. !unzip work/voc_data.zip # 解压数据集,直接unzip + “数据集存放位置即可”
  4. # 再安装一些需要安装的
  5. ! pip install -r requirements.txt
  6. ! pip install pycocotools
  7. ! python setup.py install
  8. ! pip install Cython
  9. # 生成train.txt, val.txt文件
  10. import random
  11. import os
  12. random.seed(2022)
  13. xml_dir = '/home/aistudio/work/voc_data/Annotations'
  14. img_dir = '/home/aistudio/work/voc_data/images'
  15. path_list = list()
  16. for img in os.listdir(img_dir):
  17. img_path = os.path.join(img_dir+ '/' +img)
  18. xml_path = os.path.join(xml_dir+ '/' +img.replace('bmp', 'xml'))
  19. path_list.append((img_path, xml_path))
  20. random.shuffle(path_list)
  21. ratio = 0.8
  22. train_f = open('/home/aistudio/work/voc_data/train.txt', 'w')
  23. val_f = open('/home/aistudio/work/voc_data/val.txt', 'w')
  24. for i ,content in enumerate(path_list):
  25. img, xml = content
  26. text = img + ' ' + xml + '\n'
  27. if i < len(path_list) * ratio:
  28. train_f.write(text)
  29. else:
  30. val_f.write(text)
  31. train_f.close()
  32. val_f.close()
  33. # 根据自己数据类别生成标签文档
  34. label = ['target']
  35. with open('/home/aistudio/work/voc_data/label_list.txt', 'w') as f:
  36. for text in label:
  37. 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下

导出模型

  1. !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
  2. # 导出的模型存在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

完成辣!

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/52085
推荐阅读
相关标签
  

闽ICP备14008679号