基于yoloV7-pose添加任意关键点 + 多类别分类网络修改
一 修改思想
目前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添加任意关键点 + 多类别分类网络修改相关推荐
- 五行代码实现千万类别分类网络,飞桨大规模分类库揭秘
"桃花一簇无开主,可爱深红爱浅红. 黄四娘家花满蹊,千朵万朵压枝低. 留连戏蝶时时舞,自在娇莺恰恰啼." 春天来了,经过一个冬天的"窖藏",按耐不住的小伙伴纷纷 ...
- 基于朴素贝叶斯算法对肿瘤类别分类
目录 朴素贝叶斯算法编辑 朴素贝叶斯的三种方式 实战--肿瘤类别的分类 朴素贝叶斯算法 贝叶斯定理 贝叶斯定理(Bayes Theorem)也称贝叶斯公式,是关于随机 事件的条件概率的定理 定理内 ...
- MTCNN——基于级联模型的人脸关键点检测网络
目录 1 致谢 2 前言 3 MTCNN--基于级联模型的人脸关键点检测网络 3.1 P-Net 3.1.1 训练数据是12x12,那么检测时也是要把所有的图像都放缩到12x12吗? 3.1.2 图像 ...
- VideoPose3D:基于视频的3D人体关键点检测
1. 概述 Dario Pavllo等人于2019年提出了VideoPose3D模型,旨在把输入视频转换成人体各关键点相对于根关节的相对三维位置.为了实现这一目的,作者采取的是两步走的策略.首先要利用 ...
- 基于MindStudio的3D人体关键点检测
3D人体关键点检测 1 任务介绍 人体关键点检测插件基于 MindX SDK 开发,在昇腾芯片上进行人体关键点和骨架检测,将检测结果可视化并保存.输入一幅图像,可以检测得到图像中所有行人的关键点并连接 ...
- 基于YOLOv7的室内场景智能识别系统(源码&教程)
1.项目背景: 近年来,随着移动互联网与定位技术的发展,基于位置服务越来越多地出现在人们的日常生活中.虽然智能手机都包含很多基于位置服务的应用,但是传统的基于位置服务常常将服务范围划分为室内与室外两种 ...
- Python基于YOLOv7和CRNN的车牌分割&识别系统(源码&教程)
1.研究背景 随着科技的进步和社会需求的增长,近年来摄像头逐渐高清化.高帧率化,摄像头作为信息获取设备的载体也不再局限于固定场景.路口.路侧.室内.高位.低位等不同场景下产生了各种对于检测识别的需求, ...
- 基于YOLOv7的芯片表面缺陷检测系统(源码&教程)
1.项目背景: 目前随着电子领域的快速发展,芯片也已经成为日常生活中不可或缺的一部分.随着市场对芯片的需求不断增大,裸芯片表面缺陷检测任务的压力也越来越大.裸芯片表面的缺陷检测不仅能保证芯片成品的质量 ...
- Python基于YOLOv7的火灾检测系统(源码&教程)
1.项目背景 为解决传统传感器在检测火灾的过程中受到环境.安装距离等因素影响导致适应性差的缺点,本文基于视觉传 感器,通过视觉目标检测技术对火灾进行检测,从而实现火灾的预警. 2.识别效果展示 3.视 ...
最新文章
- 接口级故障的应对方法
- 《机器学习Python实践》——数据导入(CSV)
- The King of Excel Geek 0.1版本
- 印度HCL揭秘云计算五大盈利模式
- webservice 出现No service was found
- python基础(17)之 JSON
- SQL Server provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错
- 联想笔记本电脑键盘灯怎么开启_【普通背光键盘灯怎么开】联想键盘背光灯怎么开_背光键盘怎么开...
- 计算机应用技术中的c语言,C语言程序设计——Visual C++6.0(高等院校计算机应用技术系列教材)...
- protobuf 微信小程序_微信小程序使用Protobuf
- 18-(基础入门篇)GPRS(Air202)拨打电话
- nuc7 android tv,NUC7PJYH HDMI在特定显示屏上出现问题
- ios苹果签名多少钱?苹果企业签名是最便宜的吗
- 最新支持android的手机型号,android8.0国产手机有哪些 哪些手机支持android 8.0
- 手机摄像头基础知识-1-缩写篇
- RDIFramework.NET敏捷开发框架Web新增邮件中心实现便捷式的邮件收发
- 软件测试工程师面试题答案分类详解-深圳某老牌培训机构内部绝密文件!绝密文件!绝密文件!
- oracle自动存档模式
- 输入月份查询对应的季节
- 解决联想Thinkpad E430光盘或U盘无法启动重装系统(关闭 UEFI)
热门文章
- Latex 表格文字居中(垂直和水平居中)
- SNIPER: Efficient Multi-Scale Training
- 并查集算法 | Union-Find Algorithm
- EOS智能合约开发系列(十): 抵御彩虹攻击
- facebook 添加好友_如何对Facebook帖子添加不同的React(如心脏或表情符号)
- el-row文字换行后实现整行自动撑开
- 排列组合|分组和分配问题
- 横向打印二叉树 java_按树状横向打印二叉树
- Kafka之Controller(Broker的领导者)
- 微信域名防封问题解决源码