目标检测、目标分割:常用框架与流程(流程包括:数据集标注与格式预处理、训练与推理、训练优化、算法代码以及原理)

1.目标检测(矩形框):

①常用模型YOLO5

1°入门使用,具体见这篇博客

YOLOv5训练自己的数据集(超详细完整版)_深度学习菜鸟的博客-CSDN博客_yolov5训练自己的数据

(补充说明:其中的数据一开始是VOC格式自定义数据集,因此建议直接使用labelImg来标注自己的数据,导出直接是VOC格式)

训练技巧与优化:

官网中的:  https://github.com/ultralytics/yolov5/blob/master/README.zh-CN.md

竞赛经验|Kaggle竞赛中使用YoloV5将物体检测的性能翻倍的心路历程

2°训练结束后看训练结果,看这些博客:

yolov5 训练结果解析_sinat_37322535的博客-CSDN博客_yolov5训练结果分析

目标检测中的mAP是什么含义? - 知乎

3°YOLO5原理与代码解读

你一定从未看过如此通俗易懂的YOLO系列(从V1到V5)模型解读!

深入浅出Yolo系列之Yolov5核心基础知识完整讲解_江大白*的博客-CSDN博客_yolov5(强烈推荐)

Yolov5总结文档(理论、代码、实验结果)YoloV5代码详细解读_浩瀚之水_csdn的博客-CSDN博客_yolov5代码解读Yolov5总结文档(理论、代码、实验结果)

也可以通过Bibilili等搜索yolo5优化相关,例如加入多层小目标检测层。

​​​​​​​
②常用框架:mmdetection

mmdetection/README_zh-CN.md at master · open-mmlab/mmdetection · GitHub

https://mmdetection.readthedocs.io/_/downloads/zh_CN/latest/pdf/

其中,

1°安装(可以参考里面的“从零开始设置脚本”那一节):https://github.com/open-mmlab/mmdetection/blob/master/docs/zh_cn/get_started.md

2°自定义数据集看这篇:

mmdetection/2_new_data_model.md at master · open-mmlab/mmdetection · GitHub

其中,建议使用COCO格式的自定义数据集,因此我们可以使用labelme工具标记数据(矩形框),然后可以参考这篇:

​​​​​​目标检测前奏:labelme的矩形框标记好数据以后,转成COCO格式_starDu-CSDN博客_labelme转coco 目标检测

③常用框架:百度飞浆paddlepaddle

 视频学习教程:飞桨AI Studio - 人工智能学习与实训社区

GitHub - PaddlePaddle/PaddleDetection: Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.

Paddle/README_cn.md at develop · PaddlePaddle/Paddle · GitHub

https://github.com/PaddlePaddle/awesome-DeepLearning  (工业项目案例,建议以此作为入门实战,例如目标检测的话可以学习里面的头盔检测,包括优化模型思路)

④YoloX模型:

“白话”目标检测系列:YOLO X

【深度学习】解决YOLOX训练时AP为0_MangoloD的博客-CSDN博客_扫描到的ap数目为0

2.目标分割(多边形框):

①yolo5 V7.0目前支持目标分割了(另外也支持目标分类)-2022.12.12

官网去下载使用即可,已亲测可用:

GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLite

②常用框mmmdetection

mmdetection/README_zh-CN.md at master · open-mmlab/mmdetection · GitHub

其中,自定义数据集看这篇:

mmdetection/2_new_data_model.md at master · open-mmlab/mmdetection · GitHub

建议使用COCO格式的自定义数据集,因此我们可以使用labelme工具标记数据(多边形框),可以参考这篇来制作COCO数据集(多边形):

labelme标注格式转coco格式_1037号森林里一段干木头的博客-CSDN博客

(备注:转化建议在linux下可成功运行,windows下运行可能会报错)

③常用框架:百度飞浆paddlepaddle

Paddle/README_cn.md at develop · PaddlePaddle/Paddle · GitHub

https://github.com/PaddlePaddle/awesome-DeepLearning  (工业项目案例,建议以此作为入门实战,目标分割的话例如里面的钢材缺陷检测)

视频学习教程:飞桨AI Studio - 人工智能学习与实训社区

3.把以上算法的推理做成应用

①C/S架构,单机版

做界面的常用方法有:C#的话有自带图形界面控件;c++的话有MFC、C++版本的QT;python的话可以选择PyQT【第五节】PyQt5事件和信号-PyQt5中文教程,然后调用深度学习算法(一般为python编写,封装在docker里面,提供post接口与外部联系)的时候,假如出现按钮卡顿等现象,界面可以使用多线程解决。

②B/S架构==算法推理异步(并行):

1°框架mmdetection是直接带有并行推理的例子的;

2°框架paddlePaddle,有server以及K8s分布式推理接口

3°yolov5,可以官网教程看看(好像推出了支持分布式推理以及云服务)

4°假如需要自己写的话,也可以学习以下常用模式:{python的并发例子+flask等web框架提供算法post端口+docker封装算法},相关学习资料如下:

实战教程|基于 docker 和 Flask 的深度学习模型部署!

Python3 多线程 | 菜鸟教程

使用Web框架 - 廖雪峰的官方网站

4.他人打榜:实战经验

水下目标检测算法赛解决方案分享 | 2020年全国水下机器人(湛江)大赛 -

水下目标检测赛获奖解决方案https://code.ihub.org.cn/projects/33630

天池篡改赛Rank 5方案(含第一名Code)

5.嵌入式设备(例如瑞芯微板卡)跑yolo5推理模型

1°其实最简单的话,是直接用英伟达的带GPU的嵌入式设备(NVIDIA Jetson),适配等工作做得好,易用性高。支持国产设备的话,有百度、华为昇腾、寒武纪、瑞芯微等AI嵌入式产品,可能用起来需要花时间多一些,中间的坑多一些,但优点是支持国货,还有例如瑞芯微的板子体积比较小,便宜些。

2°瑞芯微板卡跑yolo5推理模型可以参考:先在yolo5官网查看.pt转成.onnx步骤,然后再把.onnx转成.rkkt,具体步骤可以参考:

利用瑞芯微3399Pro推理yoloV5s目标检测模型:踩坑笔记_starDuXY的博客-CSDN博客_rknn yolov5

你可能感兴趣的:(目标检测,深度学习,计算机视觉)