动物姿态识别+数据集+代码

简介: 动物姿态识别+数据集+代码

介绍

  • 这是基于《野外动物姿势》所做的工作。
  • 它包含了动物姿态数据集的介绍、标注文件和代码。
  • 动物姿态数据集是第一个用于通用动物姿势估计的大规模数据集。它包含了来自23个动物家族和54个物种的10,015张图像,具有高质量的关键点标注。
  • 我们还包含了约50,000张带有家族和物种标签的图像。该数据集可用于监督学习、跨领域迁移学习、家族内和家族间领域等。它还可用于自监督学习、半监督学习等。标注文件采用COCO风格提供


e8b3ea8b1afe7d55621a67218c030aab_bdd14b851ba34e58adb2cfae980ba9e5.png

关键点定义

具体定义如下:

背景

环境安装

步骤 0. 从官方网站下载并安装Miniconda。

步骤 1. 创建并激活一个conda环境。

conda create --name openmmlab python=3.8 -y
conda activate openmmlab

步骤 2. 安装PyTorch,按照官方说明进行操作,例如:

在GPU平台上:

conda install pytorch torchvision -c pytorch

此命令将自动安装最新版本的PyTorch和cudatoolkit,请检查它们是否与您的环境匹配。

在CPU平台上:

conda install pytorch torchvision cpuonly -c pytorch

安装

我们建议用户按照我们的最佳实践安装MMPose。然而,整个过程是高度可定制的。请查看“自定义安装”部分以获取更多信息。

最佳实践

步骤 0. 使用MIM安装MMCV。

pip install -U openmim
mim install mmcv-full

数据及代码使用

数据集准备

请从下载部分下载数据集,并将其解压缩到data文件夹下,例如:

mkdir data
unzip ap-10k.zip -d data/
mv data/ap-10k data/ap10k

解压后的数据集应该如下所示:

AP-10K
├── mmpose
├── docs
├── tests
├── tools
├── configs
|── data
    │── ap10k
        │-- annotations
        │   │-- ap10k-train-split1.json
        │   |-- ap10k-train-split2.json
        │   |-- ap10k-train-split3.json
        │   │-- ap10k-val-split1.json
        │   |-- ap10k-val-split2.json
        │   |-- ap10k-val-split3.json
        │   |-- ap10k-test-split1.json
        │   |-- ap10k-test-split2.json
        │   |-- ap10k-test-split3.json
        │-- data
        │   │-- 000000000001.jpg
        │   │-- 000000000002.jpg
        │   │-- ...

推理

可以从HRNet-w32、HRNet-w48、ResNet-50、ResNet-101下载检查点。

python tools/test.py <CONFIG_FILE> <DET_CHECKPOINT_FILE>

训练

bash tools/dist_train.sh <CONFIG_FILE> <GPU_NUM>

例如,要在1个GPU上训练HRNet-w32模型,请运行:

bash tools/dist_train.sh configs/animal/2d_kpt_sview_rgb_img/topdown_heatmap/ap10k/hrnet_w32_ap10k_256x256.py 1


关键问题

1. 数据集的创建目的是什么?

数据集的创建旨在促进动物姿势估计领域的研究。在更多来自不同物种的训练数据可用的情况下,有必要研究一些具有挑战性的问题,比如:


1)不同代表性人体姿势模型在动物姿势估计任务上的性能如何?

2)深度模型的表征能力是否受益于在具有不同物种的大规模数据集上的训练?

3)在具有不同物种的大规模数据集的背景下,预训练(例如在ImageNet数据集或人体姿势估计数据集上的预训练)的影响如何?

4)在使用来自特定物种或家族的数据训练的模型中,模型的家族内和家族间泛化能力如何?


然而,先前用于动物姿势估计的数据集包含有限数量的动物物种。因此,使用现有数据集无法研究这些问题,因为它们包含的最多只有5种物种,这远远不足以得出可靠的结论。相比之下,数据集包含23个家族和54个物种,因此可以帮助研究人员研究这些问题。


2. 是否进行了数据清理?

我们使用aHash算法检测相似图像并进行手动检查,删除了重复的图像。手动删除了有重叠和标志的图像。清理后的图像被分类到不同的物种和家族中。


3. 关键点如何指导进行标注?


  • 标注者首先了解动物的相貌、体型和关键点分布。然后,给标注者展示每个物种的五张图像,用于标注关键点,这些标注用于评估其标注质量。具有良好标注质量的标注者进一步接受培训,了解如何处理由于遮挡导致的身体部分的部分缺失,并参与后续的标注过程。标注者被要求标注所有可见的关键点。对于被遮挡的关键点,他们被要求标注他们可以根据身体结构、姿势和身体的对称性估计的关键点,其中可以从可见的肢体或关键点推断出被遮挡的肢体的长度或被遮挡的关键点的位置。其他关键点则保持未标记。
  • 为了确保标注质量,我们采用了顺序标注策略。进行了三轮交叉检查和校正,包括手动检查和自动检查(根据特定规则,例如,属于同一实例的关键点位于同一边界框中),以减少可能的错误标注。首先,标注者标注了每个实例的关键点,并向经验丰富的高级标注者提交了版本-1标签,然后经验丰富的高级标注者检查了版本-1标签的质量,并向标注者返回了错误列表,标注者根据此列表修复了这些错误。最后,标注者向经验丰富的高级标注者提交了修复后的版本-2标签,他们进行最后的校正,查找任何潜在的错误标注的关键点。完成所有三轮工作后,带有高质量标签的数据集的发布版本完成了。


结果展示

相关文章
|
6月前
|
人工智能 JSON 数据可视化
yolov8+动物+姿态识别(训练教程+代码)
yolov8+动物+姿态识别(训练教程+代码)
|
3月前
|
机器学习/深度学习 存储 算法框架/工具
【深度学习】猫狗识别TensorFlow2实验报告
本文介绍了使用TensorFlow 2进行猫狗识别的实验报告,包括实验目的、采用卷积神经网络(CNN)进行训练的过程,以及如何使用交叉熵作为损失函数来识别猫狗图像数据集。
124 1
|
6月前
|
机器学习/深度学习 数据采集
机器学习练手项目-猫狗分类器
机器学习练手项目-猫狗分类器
105 0
|
6月前
|
机器学习/深度学习 编解码 运维
深度学习数据集合(交通标志/火焰/手写字符/道路裂缝数据集)
深度学习数据集合(交通标志/火焰/手写字符/道路裂缝数据集)
|
机器学习/深度学习 算法框架/工具 计算机视觉
【深度学习】实验11 使用Keras预训练模型完成猫狗识别
【深度学习】实验11 使用Keras预训练模型完成猫狗识别
143 0
|
机器学习/深度学习 PyTorch 程序员
【Python】Pytorch(CNN)实现垃圾,宝石,表情,车牌,鸟类,食物等各种分类
【Python】Pytorch(CNN)实现垃圾,宝石,表情,车牌,鸟类,食物等各种分类
132 0
|
机器学习/深度学习 传感器 监控
【动物识别】基于AlexNet神经网络的动物识别系统附Matlab代码
【动物识别】基于AlexNet神经网络的动物识别系统附Matlab代码
|
机器学习/深度学习 传感器 算法
【动物识别】基于计算机视觉实现动物图像分类识别附matlab代码
【动物识别】基于计算机视觉实现动物图像分类识别附matlab代码
|
计算机视觉 异构计算
手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例
手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例
手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例