位置: IT常识 - 正文

Yolov7-pose 训练body+foot关键点(yolo训练参数)

编辑:rootadmin
Yolov7-pose 训练body+foot关键点 一、Yolov7介绍:

推荐整理分享Yolov7-pose 训练body+foot关键点(yolo训练参数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:yolov3训练流程,yolov3训练,yolov2训练,yolov5训练命令,yolov5训练出来参数box,yolov2训练,yolov3训练过程,yolov5训练出来参数box,内容如对您有帮助,希望把文章链接给更多的朋友!

yolov7网络由三个部分组成:input,backbone和head,与yolov5不同的是,将neck层与head层合称为head层,实际上的功能的一样的。对各个部分的功能和yolov5相同,如backbone用于提取特征,head用于预测。

根据上图的架构图走一遍网络流程:先对输入的图片预处理,对齐成640*640大小的RGB图片,输入到backbone网络中,根据backbone网络中的三层输出,在head层通过backbone网络继续输出三层不同size大小的feature map(以下简称fm),经过RepVGG block 和conv,对图像检测的三类任务(分类、前后背景分类、边框)预测,输出最后的结果。

推荐yolov7 网络架构深度解析_所向披靡的张大刀的博客-CSDN博客

github在yolov7下面的pose部分

二、数据集准备

train 数据集 基于coco_whole_body_train 改造。

原始格式

${POSE_ROOT}

|-- data

`-- |-- coco

    `-- |-- annotations

        |   |-- coco_whole_body_train2017.json

        |   `-- coco_whole_body_val2017.json

        |-- person_detection_results

        |   |-- COCO_val2017_detections_AP_H_56_person.json

        `-- images

            |-- train2017

            |   |-- 000000000009.jpg

            |   |-- 000000000025.jpg

            |   |-- 000000000030.jpg

            |   |-- ...

            `-- val2017

                |-- 000000000139.jpg

                |-- 000000000285.jpg

                |-- 000000000632.jpg

                |-- ...

Json 信息

image:包含了,宽高,地址,图像名

annotations: 包含imageid iscrowd信息还有其他关键点的信息

"bbox": [

339.88,

22.16,

153.88,

300.73

],

Yolo的格式

    `-- |-- annotations

        |   |-- person_keypoints_train2017.json

        |   `-- person_keypoints_val2017.json

        |-- person_detection_results

        |   |-- COCO_val2017_detections_AP_H_56_person.json

        `-- images

        |    |-- train2017

        |    |   |-- 000000000009.jpg

        |    |   |-- 000000000025.jpg

        |    |   |-- ...

        |    `-- val2017

        |        |-- 000000000139.jpg

Yolov7-pose 训练body+foot关键点(yolo训练参数)

        |        |-- 000000000285.jpg

        |        |-- ...

        `-- labels

        |    |-- train2017

        |    |   |-- 000000000009.txt

        |    |   |-- 000000000025.txt   #这里面图片的keypoint信息,以YOLO格式展示

        |    |   |-- ...

        |    `-- val2017

        |        |-- 000000000139.txt

        |        |-- 000000000285.txt   #这里面图片的keypoint信息,以YOLO格式展示

        |        |-- ...  

    `-- train2017.txt    #这里面放的内容是:相对路径+图片名字

    `-- val2017.txt    #这里面放的内容是:相对路径+图片名字

打开一个labels 下的000000391895.txt格式

0 0.651281 0.479236 0.240437 0.835361 0.575000 0.169444 1.000000 0.576562 0.144444 2.000000 0.000000 0.000000 0.000000 0.596875 0.133333 2.000000 0.000000 0.000000 0.000000 0.575000 0.233333 2.000000 0.679688 0.225000 2.000000 0.565625 0.347222 2.000000 0.696875 0.347222 2.000000 0.562500 0.425000 2.000000 0.000000 0.000000 0.000000 0.620313 0.463889 1.000000 0.685937 0.461111 1.000000 0.576562 0.536111 2.000000 0.720313 0.650000 2.000000 0.564063 0.683333 2.000000 0.740625 0.797222 2.000000

解析为:

这里看到bbox 不一致,查看官方给的解释是归一化了,具体算法如下

img = images['%g' % x['image_id']]

h, w, f = img['height'], img['width'], img['file_name']

# The COCO box format is [top left x, top left y, width, height]

box = np.array(x['bbox'], dtype=np.float64)

box[:2] += box[2:] / 2  # xy top-left corner to center

box[[0, 2]] /= w  # normalize x

box[[1, 3]] /= h  # normalize y

这边手动验证下

Weigth=640 heigth=360

Bbox=[339.88,22.16,153.88,300.73]

Yolo-Bbox(6_float):(339.88+153.88/2)/640=0.651281,

(22.16+300.73/2)/360=0.479236, 153.88/640=0.2404375, 300.73/360=0.835361

与yolo中的一致

Keypoints = [368/640,61/360]=[0.575,0.169444]

与yolo中的label格式一致。按照上述,制作yolo 23点的训练集和验证集。

三、 训练代码准备

有些bug没放上来,因为train的时候就能跑出来简单的bug。

修改data/coco_kpts.yaml文件中的数据读取路径。

修改models/hub/cfg文件,如yolo7_pose_kpts.yaml中的相关参数如:nkpt 从17改为32;

修改dataset第497行,有关如何读取txt数据的;

修改dataset第987行,有关数据如何变化的,将原bbox写为kpts;

修改dataset第365行,有关如何flip数据;

修改loss函数第187,和202行,有关loss_gain;

loss函数中第119行,有关sigmas,coco数据集中给出了,直接换上。

修改yolo函数第90行,有关self.inplace;

修改test第80行,有关flip_index翻转处理问题;

train.log

四、结论

通过coco okps 计算100个迭代的mAP

也有和我一样在body+foot的工作者 用yolov7 pose 出现了相同的问题

 在多人视频下推理速度能达到30fps

会出现脚步乱连现象。

 脚步乱连现象已解决,主要是和test.py 和 dataset.py 文件下的filp_idex 的设置有关。

本文链接地址:https://www.jiuchutong.com/zhishi/299392.html 转载请保留说明!

上一篇:JavaScript-扫盲(javascriptz)

下一篇:html+css唯美登录页面,代码提供(效果展示)(html+css登录页面)

  • 已缴纳车船税的车船在同一年度
  • 管理费用结转本年利润,账簿怎么登
  • 公司之间往来款需要开收据吗
  • 公司工会的主要职能是
  • 公益机构可以收费吗
  • 以旧换新会计处理金银首饰
  • 应收应付明细表模板图片
  • 期末未缴税额为什么会有数据
  • 营业外收入交税会计分录
  • 销售蔬菜水果需要什么证件
  • 职工福利费税前扣除标准最新
  • 一般纳税人销售自己使用过的物品
  • 公积金超出上限部分
  • 电脑内存条是干什么的?
  • 电子专用发票没有发票代码
  • 冲销应收账款怎么记账
  • 小规模季度不超过30万的账务处理
  • 调解仲裁法什么时候实施
  • 加计扣除的会计要素
  • 在windows7中桌面指的是全部窗口
  • 分公司不纳入合并
  • 新开的酒店怎么做宣传
  • 供应商自身的品质问题
  • php实现购物车功能的方法
  • 企业会计准则存在的问题怎么写
  • php js
  • 发票过账和不过账是什么意思
  • 印花税不足一元需要缴纳吗
  • yolov4tiny网络结构
  • vue.js简介
  • php屏蔽ip
  • php递归函数桃子一天吃一半
  • 前端面试题目100及最佳答案
  • sql2008设置
  • 应收账款的账务改为公司招待费用怎么做会计分录
  • 收回已冲销的应收账款会计分录
  • 清税证明怎么在网上申请
  • 金税四期对企业影响
  • 备用金支出没有发票怎么办
  • 小规模纳税人的增值税计入成本吗
  • 三证合一指的是什么意思
  • 补交所得税会计处理方法包括
  • 专票多长时间
  • 小规模纳税人购进税控收款机
  • 水利建设行业
  • 公户转私户的钱怎么退回来
  • 收不回来的应收账款会计分录
  • 怎么理解什么是生命
  • 红字发票的开具需要把开始的发票取回作废吗?
  • 企业账务流程
  • 发票作废怎么写说明
  • 房地产 监控
  • 收到投资款怎么做凭证
  • 剩余股利政策发放股利后的年末未分配利润
  • mysql查询语句大全讲解
  • sql查询使用临时表
  • 在window7
  • ubuntu系统自动获取ip
  • thinkpad如何安装win10
  • win7系统internet怎么打开摄像头
  • 打开win七
  • win7旗舰版系统还原无法启动
  • linux命令nano
  • 安装win7系统后一直正在启动
  • popupwindow底部弹出
  • Android游戏开发教程
  • Cocos2d-x 3.0final 终结者系列教程23CocosStudio UI组件使用大全Cocos2d-x3.2使用
  • javascript获取数据类型
  • perl常用函数
  • our与my的区别
  • Node.js中的全局变量有哪些
  • 一个进程cpu占用率长时间为90%以上
  • 不要用强制方法杀掉python线程
  • 抽奖小程序模板
  • node作为中间件做接口转发
  • 手机sd卡满了怎么办
  • 安卓手机管家
  • 粮食企业所得税优惠
  • 营改增后的工程造价怎么算
  • 房产税怎么申报操作流程视频
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设