yolov7 训练crowded human 【head, full body, visible body box detection】

2023-12-03 05:40

本文主要是介绍yolov7 训练crowded human 【head, full body, visible body box detection】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 0 前言
  • 0 训练数据公开
  • 1 相关资料
  • 2 crowded human数据集下载
    • 2.1 官网数据集下载
  • 3 YOLOv5-Tools
    • 3.1 YOLOv5-Tools 安装
    • 3.2 YOLOv5-Tools中关键文件
    • 3.3 CrowdHuman数据转化为coco数据集格式
    • 3.4 转化后的结果展示
    • 3.5 图像文件和标注文本文件 重构
    • 3.6 CrowdHuman YOLO格式数据下载
  • 4 yolov7 训练与测试
    • 4.1 下载预训练权重
    • 4.2 配置文件
    • 4.3 训练
    • 4.5 训练结果
    • 4.6 测试
    • 4.7 结果对比
    • 4.7 分析训练结果

0 前言

知乎:

b站:https://www.bilibili.com/video/BV1f94y1n7NG/

上一篇博客:yolov5 训练crowded human 【visible body detection】

在对拥挤人群(我应用场景是学生课堂)进行检测时,采用现有的模型代码,有一定问题,比如直接采用yolov8、yolov7、yolov5、yolov3、faster rcnn等,在拥挤场景的检测效果不佳,但使用crowded human数据集重训练后的yolov7,效果很好。crowded human数据集标签如下,有Head BBox、Visible BBox、Full BBox。如下图显示:

在这里插入图片描述

0 训练数据公开

YOLOv7x训练权重及训练相关文件

YOLOv7x权重:
链接:https://pan.baidu.com/s/1DJ0GEpxlaUtnNDCmxNr3UA?pwd=4lf2
提取码:4lf2

YOLOv7x 训练相关文件:
链接:https://pan.baidu.com/s/1BWYLHt2uf8zjN6d3UNOLaQ?pwd=s77o
提取码:s77o

google drive:https://drive.google.com/drive/folders/1FYd8xiQvmTfKcpgl_2fedawuor61snjo?usp=sharing

crowdhuman_vbody_yolov5m:
https://drive.google.com/file/d/1VJtrdE85Wc4xSZXqAPUkWABLResUYG8V/view?usp=sharing

crowdhuman_vbody_yolov5m:
链接:https://pan.baidu.com/s/1w-5BH2CMfJ9t5qFKyd89Ag?pwd=td3j
提取码:td3j

1 相关资料

CrowdHuman的论文
CrowdHuman: A Benchmark for Detecting Human in a Crowd:https://arxiv.org/pdf/1805.00123.pdf

yolov5-crowdhuman的代码,这里是训练后的head detection和 full body detection 的模型,并没有 visible body detection。
yolov5-crowdhuman:https://github.com/deepakcrk/yolov5-crowdhuman

这是githun中对CrowdHuman论文的翻译
PaperWeekly/CrowdHuman.md:https://github.com/Mycenae/PaperWeekly/blob/master/CrowdHuman.md

这一个博客就非常重要了,是我能完成这篇博客的核心
目标检测 YOLOv5 CrowdHuman数据集格式转YOLOv5格式:https://blog.csdn.net/flyfish1986/article/details/115485814

YOLOv5-Tools-main源码
我也将这个同步到了自己的github中:https://github.com/Whiffe/YOLOv5-Tools-main
也同步到了码云:[https://gitee.com/YFwinston/YOLOv5-Tools-main](https://gitee.com/YFwinston/YOLOv5-Tools-main

2 crowded human数据集下载

2.1 官网数据集下载

CrowdHuman dataset下载链接:https://www.crowdhuman.org/download.html
在这里插入图片描述
下载后有这些文件:
在这里插入图片描述

3 YOLOv5-Tools

3.1 YOLOv5-Tools 安装

YOLOv5-Tools的功能之一就是讲crowded human转化为yolo可以使用的数据集格式,即coco数据集格式。
YOLOv5-Tools代码链接:https://gitcode.net/mirrors/shaoshengsong/YOLOv5-Tools

我也将这个同步到了自己的github中:https://github.com/Whiffe/YOLOv5-Tools-main
也同步到了码云:https://gitee.com/YFwinston/YOLOv5-Tools-main

选择社区景象(https://www.autodl.com/home)
在这里插入图片描述

cd /root/autodl-tmp
git clone https://gitee.com/YFwinston/YOLOv5-Tools-main

3.2 YOLOv5-Tools中关键文件

YOLOv5-Tools中有1个关键文件:
/root/autodl-tmpYOLOv5-Tools-main/CrowHuman2YOLO/data/gen_txts_hfv.py

在这里插入图片描述

3.3 CrowdHuman数据转化为coco数据集格式

crowdhuman 数据集位于:/root/autodl-pub/CrowdHuman

在这里插入图片描述

crowded human数据转化为yolo数据集格式,执行下面的代码

cd /root/autodl-tmp/YOLOv5-Tools-main/CrowHuman2YOLO/data/mv /root/autodl-tmp/CrowdHuman/* /root/autodl-tmp/YOLOv5-Tools-main/CrowHuman2YOLO/data/rawbash prepare_data_hfv.sh 608x608

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.4 转化后的结果展示

然后目录/root/autodl-tmp/YOLOv5-Tools-main/CrowHuman2YOLO/data/raw/Images的结构如下

Images
├── 273271,1017c000ac1360b7.jpg
├── 273271,10355000e3a458a6.jpg
├── 273271,1039400091556057.jpg
├── 273271,104ec00067d5b782.jpg
├── ...
└── 284193,ff25000b6a403e9.jpg

使用文件计数命令可以数出Images文件夹下文件数量

cd /root/autodl-tmp/YOLOv5-Tools-main/CrowHuman2YOLO/data/raw/Images
ls -l|grep "^-"| wc -l

在这里插入图片描述

结果是:19370

还有个路径也有生成结果:/home/YOLOv5-Tools-main/CrowHuman2YOLO/data/crowdhuman-608x608
结构如下

crowdhuman-608x608
├── 273271,1017c000ac1360b7.jpg
├── 273271,1017c000ac1360b7.txt
├── 273271,10355000e3a458a6.jpg
├── 273271,10355000e3a458a6.txt
├── ...
├── 284193,ff25000b6a403e9.jpg
├── 284193,ff25000b6a403e9.txt
├── test.txt
└── train.txt

我们看看273271,1017c000ac1360b7.txt的内容
在这里插入图片描述
再看看test.txt的内容
在这里插入图片描述
再看看train.txt的内容
在这里插入图片描述
讲crowded human生成coco标准文件夹格式

3.5 图像文件和标注文本文件 重构

3.3节只是将crowded human数据集转化为了coco结构的数据集,但是图像文件和标注文本文件需要重构,

首先按照下面路径创建文件夹:

# 数据集生成目录
to_train_img_path = '/root/autodl-tmp/CrowdHuman/images/train/' 
to_val_img_path = '/root/autodl-tmp/CrowdHuman/images/val/'
to_train_label_path = '/root/autodl-tmp/CrowdHuman/labels/train/'
to_val_label_path = '/root/autodl-tmp/CrowdHuman/labels/val/'

并修改:/root/autodl-tmp/YOLOv5-Tools-main/CrowHuman2YOLO/data/gen_coco_stru.py
在这里插入图片描述

然后重构命令:

cd /root/autodl-tmp/YOLOv5-Tools-main/CrowHuman2YOLO/data/
python gen_coco_stru.py

结果如下:
/root/autodl-tmp/CrowdHuman/images/

crowdedHuman
├── Images
│   ├── train
│   │   ├── 273271,1017c000ac1360b7.jpg
│   │   ├── 273271,10355000e3a458a6.jpg
│   │   ├── 273271,1039400091556057.jpg
│   │   ├── ...
│   │   └── 284193,ff01000db10348e.jpg
│   ├── val
│   │   ├── 273271,104ec00067d5b782.jpg
│   │   ├── 273271,10f400006b6fb935.jpg
│   │   ├── 273271,118910008d823f61.jpg
│   │   ├── ...
│   │   └── 284193,ff25000b6a403e9.jpg
└── labels ├── train│   ├── 273271,1017c000ac1360b7.txt│   ├── 273271,10355000e3a458a6.txt│   ├── 273271,1039400091556057.txt│   ├── ...│   └── 284193,ff01000db10348e.txt└── val├── 273271,104ec00067d5b782.txt├── 273271,10f400006b6fb935.txt├── 273271,118910008d823f61.txt├── ...└── 284193,ff25000b6a403e9.txt
cd /root/autodl-tmp/CrowdHuman/images/train
ls -l|grep "^-"| wc -l
cd /root/autodl-tmp/CrowdHuman/images/val
ls -l|grep "^-"| wc -l
cd /root/autodl-tmp/CrowdHuman/labels/train
ls -l|grep "^-"| wc -l
cd /root/autodl-tmp/CrowdHuman/labels/val
ls -l|grep "^-"| wc -l

在这里插入图片描述
images/train: 15000

images/val: 4370

labels/train: 15000

labels/val: 4370

3.6 CrowdHuman YOLO格式数据下载

CrowdHuman YOLO格式数据我已经上传百度网盘,·:
链接:https://pan.baidu.com/s/1Gw0QgRS7O0QHR9PmyABxdw?pwd=vre3
提取码:vre3

4 yolov7 训练与测试

4.1 下载预训练权重

下载yolov7x的模型,https://github.com/WongKinYiu/yolov7
然后上传到平台中
在这里插入图片描述

训练需要在 /data/SCB/yolov7-main/data/ 下创建:crowdhuman.yaml,其内容如下:

4.2 配置文件

执行下面的代码

cd  /data/SCB/yolov7-main/data/
vim crowdhuman.yaml
train: /data/CrowdHuman/images/train
val: /data/CrowdHuman/images/val
#test: test.txt#number of classes
nc: 3# class names
names: ['head', 'full body', 'visible body']

进入:/data/SCB/yolov7-main/training/yolov7x.yaml
然后修改:
在这里插入图片描述

4.3 训练

执行下面的训练代码:

cd  /data/SCB/yolov7-main/
python train.py --data ./data/crowdhuman.yaml --cfg ./cfg/training/yolov7x.yaml --weights yolov7x.pt --batch-size 8 --epochs 200 --project runs/train/CrowdHumanYOLOv7x

在这里插入图片描述

4.5 训练结果

在这里插入图片描述

Class      Images      Labels           P           R      mAP@.5  mAP@.5:.95: all        4365      282433       0.873       0.799       0.855       0.571head        4365       82364       0.882       0.803       0.855       0.551full body        4365      100536       0.881       0.809       0.865       0.582visible body        4365       99533       0.857       0.785       0.845       0.581
200 epochs completed in 38.834 hours.

4.6 测试

 python test.py --data data/crowdhuman.yaml --weights runs/train/CrowdHumanYOLOv7x/exp/weights/last.pt

在这里插入图片描述


val: Scanning '/data/CrowdHuman/labels/val.cache' images and labels... 4370 found, 0 missing, 1 empty, 5 corrupted: 100%|█████████████████████████████████████████████████| 4370/4370 [00:00<?, ?it/s]Class      Images      Labels           P           R      mAP@.5  mAP@.5:.95: all        4365      282433       0.877       0.796       0.856       0.572head        4365       82364       0.887       0.797       0.854        0.55full body        4365      100536       0.883       0.811       0.869       0.585visible body        4365       99533       0.862        0.78       0.845       0.581
Speed: 2.9/0.8/3.7 ms inference/NMS/total per 640x640 image at batch-size 32
Results saved to runs/test/exp3

4.7 结果对比

在这里插入图片描述
原图

在这里插入图片描述
yolov7x
在这里插入图片描述
yolov7x_crowdhuman
在这里插入图片描述
原图

在这里插入图片描述

yolov7x
在这里插入图片描述

yolov7x_crowdhuman

4.7 分析训练结果

请添加图片描述
confusion_matrix.png

在这里插入图片描述
F1_curve.png

在这里插入图片描述
P_curve.png
在这里插入图片描述

PR_curve.png

在这里插入图片描述

R_curve.png

在这里插入图片描述
results.png

这篇关于yolov7 训练crowded human 【head, full body, visible body box detection】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/448278

相关文章

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

跟我一起玩《linux内核设计的艺术》第1章(四)——from setup.s to head.s,这回一定让main滚出来!(已解封)

看到书上1.3的大标题,以为马上就要见着main了,其实啊,还早着呢,光看setup.s和head.s的代码量就知道,跟bootsect.s没有可比性,真多……这确实需要包括我在内的大家多一些耐心,相信见着main后,大家的信心和干劲会上一个台阶,加油! 既然上篇已经玩转gdb,接下来的讲解肯定是边调试边分析书上的内容,纯理论讲解其实我并不在行。 setup.s: 目标:争取把setup.

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形网络移植到NeRF中,以进一步模拟人类神经场的动力学,从而动画化逼真的人类运动。然而,这种流水线要么依赖于姿态相关的表示,要么由于帧无关的优化而缺乏运动一致性

多云架构下大模型训练的存储稳定性探索

一、多云架构与大模型训练的融合 (一)多云架构的优势与挑战 多云架构为大模型训练带来了诸多优势。首先,资源灵活性显著提高,不同的云平台可以提供不同类型的计算资源和存储服务,满足大模型训练在不同阶段的需求。例如,某些云平台可能在 GPU 计算资源上具有优势,而另一些则在存储成本或性能上表现出色,企业可以根据实际情况进行选择和组合。其次,扩展性得以增强,当大模型的规模不断扩大时,单一云平

时间序列|change point detection

change point detection 被称为变点检测,其基本定义是在一个序列或过程中,当某个统计特性(分布类型、分布参数)在某时间点受系统性因素而非偶然因素影响发生变化,我们就称该时间点为变点。变点识别即利用统计量或统计方法或机器学习方法将该变点位置估计出来。 Change Point Detection的类型 online 指连续观察某一随机过程,监测到变点时停止检验,不运用到

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询数据

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询; 一、首先启动相关服务: 二、新建一个film索引: 三、建立映射: 1、通过Head插件: POST http://192.168.1.111:9200/film/_mapping/dongzuo/ {"properties": {"title": {"type":