一 修改思想

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

二 数据修改

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

1 yaml文件修改

  • 设置关键点数量,修改关键点数量为4

  • 设置类别数量和类别标签

数据制作

  • 训练标签制作
# -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 和val.txt 制作
# 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

数据读取修改

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

  • datasets.py/LoadImagesAndLabels() 初始化修改

  • cache_labels() 方法 :数据读取修改

  • LoadImagesAndLabels()中__getitem__() 方法 :数据左右翻转修改

  • datasets.py/random_perspective() 方法


用到random_perspective()方法的地方记得都去添加一个关机键点数量参数。

三 网络结构修改

1 model文件修改

  • yolo.py 我们用到的是IKeypoint()方法,所以这里只修改这个方法,其他方法是一样的修改。
    结构中主要是把分类数量和关机键点数量加入进去就ok了。

loss文件修改

  • loss初始化类别数量和关机键数量
  • loss 计算中加入类别和关机键点计算

  • build_targets() 方法修改 添加关键点数量

四 训练代码修改

1 train.py

  • 添加关机键点数量
  • 读取数据加入关机键点数量
  • 初始化loss 添加关键点数量和类别数量
  • 画图添加关键点数量

2 test.py

  • 读取数据添加关机键点数量

  • 画图添加关机键点数量

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


4 plots.py 文件夹修改

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


五 代码分享

1 训练测试


关键点效果已经成功加上去了,并且也添加了多分类。

2 代码链接

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

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

  1. 五行代码实现千万类别分类网络,飞桨大规模分类库揭秘

    "桃花一簇无开主,可爱深红爱浅红. 黄四娘家花满蹊,千朵万朵压枝低. 留连戏蝶时时舞,自在娇莺恰恰啼." 春天来了,经过一个冬天的"窖藏",按耐不住的小伙伴纷纷 ...

  2. 基于朴素贝叶斯算法对肿瘤类别分类

    目录 朴素贝叶斯算法​编辑 朴素贝叶斯的三种方式 实战--肿瘤类别的分类 朴素贝叶斯算法  贝叶斯定理 贝叶斯定理(Bayes Theorem)也称贝叶斯公式,是关于随机 事件的条件概率的定理 定理内 ...

  3. MTCNN——基于级联模型的人脸关键点检测网络

    目录 1 致谢 2 前言 3 MTCNN--基于级联模型的人脸关键点检测网络 3.1 P-Net 3.1.1 训练数据是12x12,那么检测时也是要把所有的图像都放缩到12x12吗? 3.1.2 图像 ...

  4. VideoPose3D:基于视频的3D人体关键点检测

    1. 概述 Dario Pavllo等人于2019年提出了VideoPose3D模型,旨在把输入视频转换成人体各关键点相对于根关节的相对三维位置.为了实现这一目的,作者采取的是两步走的策略.首先要利用 ...

  5. 基于MindStudio的3D人体关键点检测

    3D人体关键点检测 1 任务介绍 人体关键点检测插件基于 MindX SDK 开发,在昇腾芯片上进行人体关键点和骨架检测,将检测结果可视化并保存.输入一幅图像,可以检测得到图像中所有行人的关键点并连接 ...

  6. 基于YOLOv7的室内场景智能识别系统(源码&教程)

    1.项目背景: 近年来,随着移动互联网与定位技术的发展,基于位置服务越来越多地出现在人们的日常生活中.虽然智能手机都包含很多基于位置服务的应用,但是传统的基于位置服务常常将服务范围划分为室内与室外两种 ...

  7. Python基于YOLOv7和CRNN的车牌分割&识别系统(源码&教程)

    1.研究背景 随着科技的进步和社会需求的增长,近年来摄像头逐渐高清化.高帧率化,摄像头作为信息获取设备的载体也不再局限于固定场景.路口.路侧.室内.高位.低位等不同场景下产生了各种对于检测识别的需求, ...

  8. 基于YOLOv7的芯片表面缺陷检测系统(源码&教程)

    1.项目背景: 目前随着电子领域的快速发展,芯片也已经成为日常生活中不可或缺的一部分.随着市场对芯片的需求不断增大,裸芯片表面缺陷检测任务的压力也越来越大.裸芯片表面的缺陷检测不仅能保证芯片成品的质量 ...

  9. Python基于YOLOv7的火灾检测系统(源码&教程)

    1.项目背景 为解决传统传感器在检测火灾的过程中受到环境.安装距离等因素影响导致适应性差的缺点,本文基于视觉传 感器,通过视觉目标检测技术对火灾进行检测,从而实现火灾的预警. 2.识别效果展示 3.视 ...

最新文章

  1. 接口级故障的应对方法
  2. 《机器学习Python实践》——数据导入(CSV)
  3. The King of Excel Geek 0.1版本
  4. 印度HCL揭秘云计算五大盈利模式
  5. webservice 出现No service was found
  6. python基础(17)之 JSON
  7. SQL Server provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错
  8. 联想笔记本电脑键盘灯怎么开启_【普通背光键盘灯怎么开】联想键盘背光灯怎么开_背光键盘怎么开...
  9. 计算机应用技术中的c语言,C语言程序设计——Visual C++6.0(高等院校计算机应用技术系列教材)...
  10. protobuf 微信小程序_微信小程序使用Protobuf
  11. 18-(基础入门篇)GPRS(Air202)拨打电话
  12. nuc7 android tv,NUC7PJYH HDMI在特定显示屏上出现问题
  13. ios苹果签名多少钱?苹果企业签名是最便宜的吗
  14. 最新支持android的手机型号,android8.0国产手机有哪些 哪些手机支持android 8.0
  15. 手机摄像头基础知识-1-缩写篇
  16. RDIFramework.NET敏捷开发框架Web新增邮件中心实现便捷式的邮件收发
  17. 软件测试工程师面试题答案分类详解-深圳某老牌培训机构内部绝密文件!绝密文件!绝密文件!
  18. oracle自动存档模式
  19. 输入月份查询对应的季节
  20. 解决联想Thinkpad E430光盘或U盘无法启动重装系统(关闭 UEFI)

热门文章

  1. Latex 表格文字居中(垂直和水平居中)
  2. SNIPER: Efficient Multi-Scale Training
  3. 并查集算法 | Union-Find Algorithm
  4. EOS智能合约开发系列(十): 抵御彩虹攻击
  5. facebook 添加好友_如何对Facebook帖子添加不同的React(如心脏或表情符号)
  6. el-row文字换行后实现整行自动撑开
  7. 排列组合|分组和分配问题
  8. 横向打印二叉树 java_按树状横向打印二叉树
  9. Kafka之Controller(Broker的领导者)
  10. 微信域名防封问题解决源码