位置: 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登录页面)

  • 进项税额转出会计分录月末如何结转
  • 报销单据粘贴单图片
  • 公司中介费收入如何纳税
  • 民办学校房屋要求
  • 一般纳税人购销合同印花税计税依据
  • 其他应付款转实收资本有风险吗
  • 个人所得税扣缴申报表
  • 投入的流动资金函怎么写
  • 完税凭证和发票一起打印
  • 成立企业的步骤
  • 工业总产值填报原则
  • 收到国债本金和利息会计分录
  • 主营业务税金及附加包括什么
  • 资产折旧摊销扣什么税
  • 当月作废的专票需要账务处理吗
  • 集团控股公司
  • 水利建设专项收入
  • 抵税的税额怎么计算
  • 职工购房补贴面积标准
  • 筹建期间的开办费包括哪些
  • 1697510605
  • 购入土地建厂房要交的税
  • 免征增值税的会计处理方法有哪些
  • 微信收款会计分录,然后提现有手续费
  • 预计负债是什么原则
  • 公司收到拆迁补偿款要交税吗
  • 预付账款坏账处理流程
  • edge浏览器总是打开新的网页
  • 腾讯电脑管家浏览器保护在哪
  • php使用redis缓存技术
  • 从劳务市场雇人受伤了怎么办?
  • 外汇账户转账有手续费吗
  • linux系统怎么打开
  • php字符串定义
  • 财务新手要注意哪些事项
  • 贷款损失会计处理
  • 用现金报销差旅费,合规吗
  • laravel enum
  • php面向对象和面向过程
  • linux中php的作用
  • php输出mysql查询结果
  • 装修阶段监理注意事项
  • 物流企业会计核算的具体内容包括
  • 小汽车的消费税税率按照气缸容量实行差别
  • 公司食堂开支如何记账
  • javascript前端开发案例教程源码
  • 如何利用远期交易保值
  • sqlserver 数据库加密
  • mysql复制粘贴
  • 公司购买手表可以做费用吗?
  • 计提坏账准备如何做会计分录
  • 已经认证抵扣的发票,要退回,怎么处理
  • 土地使用权的摊销计入在建工程
  • 投资性房地产转为非投资性房地产
  • 劳务派遣如何做线上业务
  • 固定资产核算的内容主要包括
  • 加油卡充值如何开发票
  • 砂石资源税怎么算
  • 融资租赁固定资产利息的账务处理实例
  • 融资租赁首付租金会计账务处理
  • 房地产会计核算地上地下成本分摊
  • windows server2014 安装 Mysql Applying Security出错的完美解决方法
  • mysql免安装版怎么使用
  • 苹果手机价格
  • win10能玩dota
  • xp怎么删除系统
  • Windows Server 2008虚拟技术说明
  • xp桌面底部任务栏不见了
  • linux find命令查找文件名
  • ultra系统优盘恢复
  • ubuntu系统怎么修改root密码
  • android开发工程师案例教程源码
  • cocos2dx3.3在Win7(64位)上Android开发环境搭建(提要)
  • webview实现有什么用
  • [置顶]游戏名:chivalry2
  • python计算字符串长度的程序
  • 2020年上海税务跨区迁移很麻烦吗
  • 居民个人从境外公司获得分红
  • 深圳海关属于省级吗
  • 区地税局会不会分到乡镇
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设