发布时间:2023-04-18 文章分类:电脑基础 投稿人:樱花 字号: 默认 | | 超大 打印

一 修改思想

目前yoloV7已经发布有一段时间了,其中yoloV7有一个关键点检测的分支pose,是一个姿态关键点的检测算法,其中有给出的数据,大家可以下载运行起来。
由于实际项目需求,发现17个关键点是不能满足大家的需求的,这里我就稍作修改了一下,把关键点的数量修改为任意数量,并且添加目标检测多分类情况。

二 数据修改

这里我是以车牌的关键点进行举例修改,所有关键点的数量为4个。
修改的过程中需要做左右翻转,所以我的关键点翻转后,1和2交换,3和4交换,5和6交换,依次类推。

1 yaml文件修改

数据制作

# -nfs-阿拉伯车牌字符-沙特阿拉伯卡口车牌-2-沙特阿拉伯卡口车牌-2-image1837.txt
# data.txt   含义分别是: cls   	 x	           y          w       h        point1x		point1y		point2x	   	point2y		 point3x	  point3y	  point4x	   point4y		    ...
# 						类别  目标中心点x    目标中心点y   目标宽w   目标高h    目标点1x坐标  目标点1y坐标   目标点2x坐标  目标点2y坐标   目标点3x坐标  目标点3y坐标   目标点4x坐标  目标点4y坐标    依次类推 
0  0.5739299610894941  0.1724137931034483  0.3715953307392996  0.29064039408866993  0.38910505836575876  0.08374384236453201  0.7587548638132295  0.029556650246305417  0.7607003891050583  0.2660098522167488  0.39299610894941633  0.32019704433497537  
2  0.5739299610894941  0.1724137931034483  0.3715953307392996  0.29064039408866993  0.38910505836575876  0.08374384236453201  0.7587548638132295  0.029556650246305417  0.7607003891050583  0.2660098522167488  0.39299610894941633  0.32019704433497537  
0  0.5739299610894941  0.1724137931034483  0.3715953307392996  0.29064039408866993  0.38910505836575876  0.08374384236453201  0.7587548638132295  0.029556650246305417  0.7607003891050583  0.2660098522167488  0.39299610894941633  0.32019704433497537  
# train.txt
./train/images/-nfs-阿拉伯车牌字符-沙特阿拉伯卡口车牌-2-沙特阿拉伯卡口车牌-2-image1837.jpeg
./train/images/-nfs-车牌字符-埃及车牌-埃及车牌截图-2021-04-30 11-11-52屏幕截图.png
./train/images/-nfs-车牌字符-埃及车牌-埃及车牌截图-2021-04-30 13-57-27屏幕截图.png
./train/images/-nfs-车牌字符-埃及车牌-埃及车牌截图-2021-04-30 10-19-54屏幕截图.png
./train/images/-nfs-阿拉伯车牌字符-外国车牌现场_20210519_1-外国车牌现场_20210519_1-e0d92b0990a1249388bc77bdfa8e43ed.jpg
./train/images/-nfs-车牌字符-埃及车牌-埃及车牌截图-2021-04-30 13-51-28屏幕截图.png
./train/images/-nfs-车牌字符-约旦车牌-videoplayback-videoplayback_13_1460.jpg
./train/images/-nfs-车牌字符-埃及车牌-埃及车牌截图-2021-04-30 13-56-51屏幕截图.png
./train/images/-nfs-车牌字符-埃及车牌-埃及车牌截图-2021-04-30 10-27-50屏幕截图.png

数据读取修改

核心思想就是要把关键点的数量传入数据读取中,根据关键点数量进行数据读取操作。

基于yoloV7-pose添加任意关键点 + 多类别分类网络修改
用到random_perspective()方法的地方记得都去添加一个关机键点数量参数。
基于yoloV7-pose添加任意关键点 + 多类别分类网络修改

三 网络结构修改

1 model文件修改

loss文件修改

基于yoloV7-pose添加任意关键点 + 多类别分类网络修改

四 训练代码修改

1 train.py

2 test.py

3 general.py 中non_max_suppression()方法修改

基于yoloV7-pose添加任意关键点 + 多类别分类网络修改
基于yoloV7-pose添加任意关键点 + 多类别分类网络修改

基于yoloV7-pose添加任意关键点 + 多类别分类网络修改

4 plots.py 文件夹修改

主要是添加关机键点的数量

基于yoloV7-pose添加任意关键点 + 多类别分类网络修改

基于yoloV7-pose添加任意关键点 + 多类别分类网络修改
基于yoloV7-pose添加任意关键点 + 多类别分类网络修改

五 代码分享

1 训练测试

基于yoloV7-pose添加任意关键点 + 多类别分类网络修改
关键点效果已经成功加上去了,并且也添加了多分类。

2 代码链接

代码地址(yolov7-pose_Npoint_Ncla):https://github.com/qinggangwu/yolov7-pose_Npoint_Ncla