前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >YoloV5一系列实践详情,Github代码已开源

YoloV5一系列实践详情,Github代码已开源

作者头像
计算机视觉研究院
发布2022-03-04 12:13:28
1.5K0
发布2022-03-04 12:13:28
举报
文章被收录于专栏:计算机视觉战队

关注并星标

从此不迷路

计算机视觉研究院

公众号IDComputerVisionGzq

学习群扫码在主页获取加入方式

计算机视觉研究院专栏

作者:Edison_G

本文主要讲解几个部分,(适合一些在读的研究生啥也不会然后接到一些项目无从下手,如果是大佬的话就可以跳过了)先看看网络摄像头的效果吧(在2060的电脑上运行 )

转自《知乎——kaka》

实践时间Pipeline

2021年9月18日,在github上发布了一套使用ONNXRuntime部署anchor-free系列的YOLOR,依然是包含C++和Python两种版本的程序。起初我是想使用OpenCV部署的,但是opencv读取onnx文件总是出错,于是我换用ONNXRuntime部署。YOLOR是一个anchor-free系列的YOLO目标检测,不需要anchor作为先验。本套程序参考了YOLOR的官方程序(https://github.com/WongKinYiu/yolor), 官方代码里是使用pytorch作为深度学习框架的。根据官方提供的.pth文件,生成onnx文件后,我本想使用OpenCV作为部署的推理引擎的,但是在加载onnx 文件这一步始终出错,于是我决定使用ONNXRuntime作为推理引擎。在编写完Python版本的程序后, 在本机win10-cpu环境里,在visual stdio里新建一个c++空项目,按照csdn博客里的文章讲解来配置onnxruntime, 配置的步骤跟配置Opencv的步骤几乎一样。在编写完c++程序后,编译运行,感觉onnxruntime的推理速度要比 opencv的推理速度快,看来以后要多多使用onnxruntime作为推理引擎了,毕竟onnxruntime是微软推出的专门针对 onnx模型做推理的框架,对onnx文件有着最原生的支持。本套程序里的onnx文件链接:https://pan.baidu.com/s/1Mja0LErNE4dwyj_oYsOs2g,提取码:qx2jGithub地址是:https://github.com/hpc203/yolor-onnxruntime

9月19日,在github上发布了一套使用深度学习算法实现虚拟试衣镜,结合了人体姿态估计、人体分割、几何匹配和GAN,四种模型。仅仅只依赖opencv库就能运行,除此之外不再依赖任何库。源码地址是:https://github.com/hpc203/virtual_try_on_use_deep_learning

这套程序只有Python版本的,我在本地编写了C++程序,但是输出结果跟Python版本的输出结果始终不一致, 对于这个bug我还没有找到原因,因此我在github只发布python程序的。程序启动运行之后,要等几秒种后才能弹窗显示结果, 程序运行速度慢的问题还有待优化。

10月17日,在github上发布了使用OpenCV部署SCRFD人脸检测,依然是包含C++和Python两种版本的程序实现。SCRFD是一个FCOS式的人脸检测器,2021年5月在insightface仓库里发布的,它也是检测人脸矩形框和5个关键点。我发布在github上的源码地址是:https://github.com/hpc203/scrfd-opencv

11月6日,在github发布了使用OpenCV部署libface人脸检测和SFace人脸识别,包含C++和Python两种版本的程序,仅仅只依赖OpenCV库就能运行。源码地址是:https://github.com/hpc203/libface-sface_detect-recognition-opencv

人脸检测和人脸识别模块是由人脸识别领域的两位大牛设计的, 其中人脸检测是南科大的于仕琪老师设计的,人脸识别模块是北邮的邓伟洪教授设计,其研究成果SFace发表在图像处理顶级期刊IEEE Transactions on Image Processing。人脸检测示例程序在opencv-master/samples/dnn/face_detect.cpp里,起初我在win10系统里,在visual stdio 2019 里新建一个空项目,然后把opencv-master/samples/dnn/face_detect.cpp拷贝进来作为主程序,尝试编译,发现编译不通过。仔细看代码可以发现face_detect.cpp里使用了类的继承和虚函数重写,这说明依赖包含了其他的.cpp和.hpp头文件的。因此我就编写一套程序, 人脸检测和人脸识别程序从opencv源码里剥离出来,只需编写一个main.cpp文件,就能运行人脸检测和人脸识别程序。于仕琪老师设计的libface人脸检测,有一个特点就是输入图像的尺寸是动态的,也就是说对输入图像不需要做resize到固定尺寸,就能输入到神经网络做推理的,此前我发布的一些人脸检测程序都没有做到这一点,而且模型文件.onnx只有336KB。因此,这套人脸检测模型是 非常有应用价值的。在下载完代码之后,在visual stdio 2019里新建一个空项目,配置opencv,然后把main.cpp和weights文件拷贝进去,接下来编译运行就可以了。

12月12日,我在github发布了使用OpenCV部署faster-rcnn检测证件照,包含C++和Python两种版本的程序,仅仅只依赖opencv库就能运行。源码地址是:https://github.com/hpc203/faster-rcnn-card-opencv

12月18日,我在github发布了使用ONNXRuntime部署PicoDet目标检测,包含C++和Python两个版本的程序,源码地址是:https://github.com/hpc203/picodet-onnxruntime

起初,我是想使用opencv部署PicoDet目标检测的,但是opencv的dnn模块读取.onnx文件失败了。于是只能使用onnxruntime部署了。12月28日,我在github发布了使用OpenCV部署NanoDet-Plus,包含C++和Python两个版本的程序;使用ONNXRuntime部署NanoDet-Plus,包含C++和Python两个版本的程序。源码地址是:https://github.com/hpc203/nanodet-plus-opencv

2022年1月16日,我在github发布了使用ONNXRuntime部署人脸动漫化——AnimeGAN,包含C++和Python两个版本的代码实现,源码地址是https://github.com/hpc203/AnimeGAN-onnxruntime

1月21日,我在github发布了使用OpenCV部署ByteTrack目标跟踪,包含C++和Python两个版本的程序。使用ONNXRuntime部署ByteTrack目标跟踪,包含C++和Python两个版本的程序。源码地址是:https://github.com/hpc203/bytetrack-opencv-onnxruntime

1月28日,我在github发布了使用OpenCV部署yolov5检测车牌和4个角点,包含C++和Python两个版本的程序。使用ONNXRuntime部署yolov5检测车牌和4个角点,包含C++和Python两个版本的程序。程序会输出车牌的水平矩形框的左上和右下顶点的坐标(x,y),车牌的4个角点的坐标(x,y)。源码地址是https://github.com/hpc203/yolov5-detect-car_plate_corner

2月7日,在github发布了使用ONNXRuntime部署yolov5-lite目标检测,包含C++和Python两个版本的程序,源码地址是https://github.com/hpc203/yolov5-lite-onnxruntime

2月17日,在github发布了使用OpenCV部署多任务的yolov5目标检测+语义分割,包含C++和Python两个版本的程序。使用ONNXRuntime部署多任务的yolov5目标检测+语义分割,包含C++和Python两个版本的程序。源码地址是https://github.com/hpc203/multiyolov5-opencv-onnxrun

2月19日,在github发布了使用OpenCV部署yolov5旋转目标检测,包含C++和Python两个版本的程序。使用ONNXRuntime部署yolov5旋转目标检测,包含C++和Python两个版本的程序。源码地址是https://github.com/hpc203/rotate-yolov5-opencv-onnxrun

在编写这套程序的过程中,发现在python程序里,opencv的dnn模块提供了现成的计算旋转矩形框的NMS函数cv2.dnn.NMSBoxesRotated。但是在C++程序里,opencv的dnn模块提供现成的计算旋转矩形框的NMS函数NMSBoxesRotated。因此在C++程序里,需要自己编写实现计算旋转矩形框的NMS函数。经调研发现opencv库里有表示旋转矩形框的结构体RotatedRect,也有计算两个旋转矩形框的交叠区域和交叠面积的函数rotatedRectangleIntersection和contourArea,最终编写完成了计算旋转矩形框的NMS函数。附上一张C++程序的运行结果图:

© THE END 

转载请联系本公众号获得授权

计算机视觉研究院学习群等你加入!

计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

扫码关注

计算机视觉研究院

公众号ID|ComputerVisionGzq

学习群|扫码在主页获取加入方式

 往期推荐 

🔗

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机视觉战队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档