yolov8+动物+姿态识别(训练教程+代码)

news2024/11/25 2:59:30

本文关键词:
关键点检测 关键点估计 姿态估计 YOLO
在这里插入图片描述

  • 动物姿态估计是计算机视觉的一个研究领域,是人工智能的一个子领域,专注于自动检测和分析图像或视频片段中动物的姿势和位置。
  • 目标是确定一种或多种动物的身体部位(例如头部、四肢和尾巴)的空间排列。
  • 这项技术具有广泛的应用,从研究动物行为和生物力学到野生动物保护和监测。

在这篇博文中,我们将专门处理狗的关键点估计,并向您展示如何微调 Ultralytics 非常流行的 YOLOv8 姿势模型。

动物姿势估计数据集

对于我们的动物姿势估计实验,我们将使用斯坦福数据集,该数据集包含 120 个品种的狗,分布在 20,580 张图像中。此外,数据集还包含这些图像的边界框注释。

关键点注释需要通过填写谷歌表单从 StandfordExtra 数据集下载。在 12,538 张图像中提供了 20 个狗姿势关键点的关键点注释(每条腿 3 个,每只耳朵 2 个,尾巴、鼻子和下巴 2 个)。

下载的注释将包含以下结构:

dog
├── StanfordExtra_v12.json
├── test_stanford_StanfordExtra_v12.npy
├── train_stanford_StanfordExtra_v12.npy
└── val_stanford_StanfordExtra_v12.npy

训练、验证和测试拆分作为原始 StanfordExtra_v12.json 数据的索引提供,这些数据分别包含 6773、4062 和 1703 图像的注释。
还以CSV文件的形式提供了关键点元数据,其中包含动物姿势名称、每个关键点的颜色编码等。但是,它包含 24 个关键点的信息(每个眼睛、喉咙和肩膀各 1 个)。可以使用下图来说明关键点。

在这里插入图片描述

为训练和验证数据创建与 YOLOv8 一致的注解

以下几点突出显示了用于微调 Ultralytics 的 YOLOv8 Pose 模型的数据集格式:

用于训练YOLO姿态模型的数据集格式如下:

每个图像一个文本文件:数据集中的每个图像都有一个对应的文本文件,其名称与图像文件相同,扩展名为 .txt。
每个对象一行:文本文件中的每一行对应于图像中的一个对象实例。
每行对象信息:每行包含有关对象实例的以下信息:
对象类索引:表示对象类的整数(例如,0 表示人,1 表示汽车等)。
对象中心坐标:对象中心的 x 和 y 坐标归一化为 0 和 1.
对象宽度和高度:对象的宽度和高度被规范化为介于 0 和 1 之间.
对象宽度和高度:对象的宽度和高度被规范化为介于 0 和 1 之间.
此外,可见性标志与关键点坐标相关联。它可以包含以下三个值之一:

0:未标记
1:已标记但不可见
2:标记和可见。
JSON 注释包含一个额外的布尔可见性标志和前面讨论的关键点坐标。我们将所有可见关键点的标志设置为 2.

在这里插入图片描述

下载图像数据和关键点元数据

在开始数据准备之前,我们需要先下载图像数据。让我们定义一个实用程序函数,用于下载和提取包含图像的图像images.tar文件。此外,我们还将下载包含关键点元数据keypoint_definitions.csv,例如动物姿势名

def download_and_unzip(url, save_path):
 
    print("Downloading and extracting assets...", end="")
    file = requests.get(url)
    open(save_path, "wb").write(file.content)
 
    try:
        # Extract tarfile.
        if save_path.endswith(".tar"):
            with tarfile.open(save_path, "r") as tar:
                tar.extractall(os.path.split(save_path)[0])
             
        print("Done")
    except:
        print("Invalid file")

所有下载的图像都将提取到 Images 目录中。它具有以下目录结构:

Images/
├── n02085620-Chihuahua
│   ├── n02085620_10074.jpg
│   ├── n02085620_10131.jpg
│   └── ...
├── n02085782-Japanese_spaniel
│   ├── n02085782_1039.jpg
│   ├── n02085782_1058.jpg
│   └── n02085782_962.jpg
└── ...

可视化来自 YOLO 注释的数据

一旦我们创建了与YOLO兼容的数据,我们就可以可视化一些地面实况样本,以确保我们的转换是正确的。
在这里插入图片描述

在可视化样本之前,我们可以将 keypoint_definitions.csv 值的十六进制颜色编码映射到 RGB 值。

ann_meta_data = pd.read_csv("keypoint_definitions.csv")
COLORS = ann_meta_data["Hex colour"].values.tolist()
 
COLORS_RGB_MAP = []
for COLORS incolor COLORS:
    R, G, B = int(颜色[:2]16), int(颜色[22:4]16 ), ), intintint], (color[(color[4:4(color[:], 16:], 1616)
    COLORS_RGB_MAP.append({color: (R,G,B)})

动物姿势估计的微调和训练

最后,我们将使用上面定义的配置进行训练。

pose_model = = model = YOLO(train_config.MODEL)
 
pose_model.train(data = train_config.DATASET_YAML,
            epochs = train_config.EPOCHS,
            imgsz = data_config.IMAGE_SIZE,
            batch = data_config.BATCH_SIZE,
            project = train_config.PROJECT,
            name = train_config.NAME,
            close_mosaic = data_config.CLOSE_MOSAIC,
            mosaic = data_config.MOSAIC,
            fliplr = data_config.FLIP_LR
           )

动物姿态估计:超参数设置和微调

Ultralytics 提供以下在 MS-COCO 数据集上预训练的姿势模型,该数据集由 17 个关键点组成.
在这里插入图片描述
使用上面的配置,我们获得了 YOLOv8m 的以下指标:

Box 指标:
mAP@50: 0.991
map@50-95:0.922
姿势指标:
mAP@50: 0.937
map@50-95:0.497
下图显示了 YOLOv8m 的指标。
在这里插入图片描述

训练结果展示

在这里插入图片描述

结论

在本文中,我们了解了如何微调 YOLOv8 以进行动物姿态估计。可以根据此训练自己的数据,也可以在学习中使用模型对动物进行姿态估计!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring-cloud-starter-dubbo不设置心跳间隔导致生产者重启no Provider问题记录

版本 spring-cloud-starter-dubbo-2.2.4.RELEASE 问题描述 生产者重启后,正常注册到注册中心,但是消费者调用接口是no provider,偶现,频繁出现 解决办法 先说原因和解决办法,有兴趣可以看下问题的排查过程。 原因…

ELK搭建以及使用教程(多pipiline)

1、环境准备 服务器:Centos7 Jdk版本:1.8 Es版本:7.12.1 kibana版本:7.12.1 logstash版本:7.12.1 IP地址安装软件192.168.50.211Es,Kibana,logstash 2、安装docker 安装步骤参考:https:…

【KVM】KVM介绍及功能概述

前言 大家好,我是秋意零。 今天介绍的内容是KVM的概述,以及它所支持的基本功能。 👿 简介 🏠 个人主页: 秋意零🔥 账号:全平台同名, 秋意零 账号创作者、 云社区 创建者&#x1f…

安吉寻梦桃花原

安吉——西湖边的那片竹海 安吉县,地处浙江西北部,湖州市辖县之一,北靠天目山,面向沪宁杭。建县于公元185年,县名出自《诗经》“安且吉兮”之意。 安吉县生态环境优美宜居,境内“七山一水二分田”&#xf…

多线程与高并发实战

什么是进程? OS操作系统分配CPU资源的基础单位为进程 OS操作系统调度(执行)CPU资源的基础单位为线程 单核CPU设定多线程是否有意义? 线程数是不是设置的越大越好? 线程切换也要消耗资源 工作线程数(线程…

浅谈前端出现率高的设计模式

目录 六大原则: 23 种设计模式分为“创建型”、“行为型”和“结构型” 前端九种设计模式 一、创建型 1.构造器模式:抽象了对象实例的变与不变(变的是属性值,不变的是属性名) 2. 工厂模式:为创建一组相关或相互依赖的对象提…

普通人快速逆袭的一个路径:AI赛道+早+下场干

昨天参加去参加了一场AI峰会,几点收获: 1、要早 无界AI300万用户,2022年5月就已经入场干 黄小刀出版最早的ChatGPT书籍和最早的ChatGPT训练营 浙工大团队也是2022年最早的使用AI绘画 2、要快速下场干 最早的知道这个事情没用,…

1067 试密码

一.问题: 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。 输入格式: 输入在第一行给出一个密码(长度不超过 20 的、不…

周记录总结2

1.feign注解中没有URL/服务名是错误的 导致报错:找不到服务 2.测试环境测试时,接口看不到日志,但是页面可以看到接口的返回值 说明有其他机器注册到eureka中 配置文件register 调整为false 3.there is not getter for xxxx 重新编译打个包 …

LangChain+LLM实战---实用Prompt工程讲解

原文:Practical Prompt Engineering 注:本文中,提示和prompt几乎是等效的。 这是一篇非常全面介绍Prompt的文章,包括prompt作用于大模型的一些内在机制,和prompt可以如何对大模型进行“微调”。讲清楚了我们常常听到的…

SpringSecurity6从入门到上天系列第三篇:回顾Filter以及SpringSecurity6的实现原理

文章目录 前言 1:几个核心问题 2:一个关键思考 一:回顾Filter 1:过滤器概念作用 2:过滤器核心代码 3:过滤器原理 4:过滤器链 FilterChain 二:SSC的FilterChain 1&#xff…

2019数二(二重积分的不等式问题)

注&#xff1a; 1、在相同积分区域内的积分比较大小&#xff1a;被积函数大的积分值大&#xff0c;被积函数小的积分值小 2、在区间[0&#xff0c;Π/2]上 &#xff1a;sinx < x < tanx

JS+CSS随机点名详细介绍复制可用(可自己添加人名)

想必大家也想拥有一个可以随机点名的网页&#xff0c;接下来我为大家介绍一下随机点名&#xff0c;可用于抽人&#xff0c;哈哈 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>* {margin: 0;…

前端框架Vue学习 ——(四)Axios

文章目录 Axios 介绍Axios 入门 Axios 介绍 介绍: Axios 对原生的 Ajax 进行了封装&#xff0c;简化书写&#xff0c;快速开发。&#xff08;异步请求&#xff09; 官网: https://www.axios-http.cn/ 官网介绍&#xff1a;Axios 是一个基于 promise 网络请求库&#xff0c;作…

一个很不错的开源图像库 Graphics32

Graphics32 是一个很不错的开源图像库。通过调试和跟踪Graphics32 的代码&#xff0c;可以快速的熟悉图像处理的一些知识。例外Graphics32有着很不错的性能。在不使用DirectX的情况下能达到一个惊人的速度&#xff0c;可以作为一个简单的2D引擎来使用&#xff0c;就功能上讲比那…

基于STC15单片机温度光照蓝牙传输-proteus仿真-源程序

一、系统方案 本设计采用STC15单片机作为主控器&#xff0c;液晶1602显示&#xff0c;DS18B20采集温度&#xff0c;光敏电阻采集光照、按键设置温度上下限&#xff0c;测量温度小于下限&#xff0c;启动加热&#xff0c;测量温度大于上限&#xff0c;启动降温。 二、硬件设计 …

Photoshop图片处理

工具 Photoshop剪映 步骤 打开photoshop 工具主界面 2. 导入素材图片 或者直接将图片拖入主界面 3. 双击图层&#xff0c;将背景图改为可编辑图层 4. 使用多边形套索工具勾画需要搽除的区域 5. 希望删除的区域使用多边形套索工具勾画出来后&#xff0c; 按“del”键&a…

Flutter 08 三棵树(Widgets、Elements和RenderObjects)

一、Flutter三棵树背景 1.1 先思考一些问题 1. Widget与Element是什么关系&#xff1f;它们是一一对应的还是怎么理解&#xff1f; 2. createState 方法在什么时候调用&#xff1f;state 里面为啥可以直接获取到 widget 对象&#xff1f; 3. Widget 频繁更改创建是否会影响…

手把手教程 | YOLOv8-seg训练自己的分割数据集

&#x1f680;&#x1f680;&#x1f680;手把手教程&#xff1a;教会你如何使用自己的数据集开展分割任务 &#x1f680;&#x1f680;&#x1f680;YOLOv8-seg创新专栏&#xff1a;http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8&#xff0c;从入门到创新&#xff0c;轻轻松…

基于卷尾猴算法的无人机航迹规划-附代码

基于卷尾猴算法的无人机航迹规划 文章目录 基于卷尾猴算法的无人机航迹规划1.卷尾猴搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用卷尾猴算法来优化无人机航迹规划。 1.卷尾猴…