如何在不需要人工标注的条件下在mpii 数据集预训练好的HRNet 人体姿态估计网络上测试自定义单人图片数据集,,并且生成包含关联点坐标的json 文件
时间: 2024-03-31 16:32:18 浏览: 83
在没有人工标注的条件下,可以使用开源的人体检测库来检测人体并获取center和scale参数,然后将这些参数用于对自定义单人图片数据集进行预处理,以适应HRNet模型的输入尺寸。
同时,还需要使用一个关键点检测算法来预测人体的关键点坐标。这些关键点坐标可以被保存在一个JSON文件中,以便进一步的使用和分析。
以下是一个基本的流程,用于在不需要人工标注的情况下测试自定义单人图片数据集,并生成包含关联点坐标的JSON文件:
1. 使用开源的人体检测库如OpenCV、Detectron2等来检测图像中的人体,并获取center和scale参数;
2. 使用获取的center和scale参数对测试图像进行裁剪和缩放,以适应HRNet模型的输入尺寸;
3. 使用预训练好的HRNet模型对裁剪和缩放后的图像进行关键点检测,并获得关键点坐标;
4. 将关键点坐标保存在一个JSON文件中,以便进一步的使用和分析。
需要注意的是,由于没有进行人工标注,所以关键点的准确性可能会受到一定的影响。如果需要更高的准确性,建议使用有标注的数据集进行训练,或使用其他的自动化标注方法来获取更准确的关键点坐标。
相关问题
如何在mpii 数据集预训练好的HRNet 人体姿态估计网络上测试自定义图片数据,没有标注文件,不计算损失,不需要ground truth ,不计算精度,只想得到最后的输出文件pred.mat
要在MPii数据集预训练好的HRNet人体姿态估计网络上测试自定义图片数据,你需要先进行以下步骤:
1. 安装HRNet代码库和依赖项。
2. 准备自定义图片数据集,将它们放在一个文件夹中。
3. 修改HRNet代码库中的测试文件,以适应你的数据集。具体来说,你需要修改测试文件中的图片路径和输出路径。
4. 运行测试文件,生成输出文件pred.mat。
以下是具体步骤:
1. 安装HRNet代码库和依赖项
要测试HRNet,你需要下载并安装HRNet代码库和依赖项。你可以从GitHub上的HRNet仓库中下载代码。
安装依赖项:
```bash
pip install -r requirements.txt
```
编译HRNet:
```bash
cd lib/models/networks/HRNet
python setup.py develop
```
2. 准备自定义图片数据集
将你的自定义图片数据集放在一个文件夹中。
3. 修改HRNet代码库中的测试文件
HRNet代码库中的测试文件是`test.py`。你需要修改这个文件,以适应你的数据集。具体来说,你需要修改测试文件中的图片路径和输出路径。
```python
from lib.core.config import config
from lib.models.pose_hrnet import get_pose_net
from lib.datasets import dataset_dict
from lib.utils.utils import create_logger
import torch
import cv2
import os
import numpy as np
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
cfg = config
cfg.merge_from_file('experiments/coco/hrnet/w32_256x192_adam_lr1e-3.yaml')
cfg.TEST.MODEL_FILE = 'models/pytorch/pose_coco/pose_hrnet_w32_256x192.pth'
cfg.freeze()
logger, _, _, _ = create_logger(cfg, cfg.DATASET.TRAIN_SET, 'test')
# 修改以下两行代码,以适应你的数据集
img_path = 'your/image/path.jpg'
output_path = 'your/output/path.mat'
dataset_name = cfg.DATASET.TEST_SET
dataset = dataset_dict[dataset_name](cfg, 'test')
num_classes = dataset.test_num_classes
logger.info('=> {} test dataset has {} images'.format(dataset_name, len(dataset)))
model = get_pose_net(cfg, num_classes)
model.load_state_dict(torch.load(cfg.TEST.MODEL_FILE), strict=False)
model.eval()
model.cuda()
image = cv2.imread(img_path)
with torch.no_grad():
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = dataset.normalize_image(image)
image = torch.from_numpy(image).unsqueeze(0).cuda()
outputs = model(image)
output = outputs[-1].cpu().numpy()
np.save(output_path, output)
logger.info('=> predict done!')
```
4. 运行测试文件,生成输出文件pred.mat
运行修改后的测试文件`test.py`,生成输出文件`pred.mat`。
```bash
python test.py
```
生成的`pred.mat`文件将包含HRNet对于输入图片的预测结果。
如何用在mpii数据集上预训练好的HRNet人体姿态估计网络识别自定义数据集的图片,不计算损失,不需要ground-truth
要将在MPII数据集上预训练好的HRNet人体姿态估计网络应用于自定义数据集的图片,可以按照以下步骤进行:
1. 首先,需要将自定义数据集的图片转换成HRNet网络所需要的输入格式。HRNet网络的输入为一张RGB图像,大小为256x192,且像素值需要减去均值,除以标准差并进行归一化处理。
2. 然后,将转换后的图片输入到HRNet网络中进行推断。推断时,需要关闭网络中的损失计算和反向传播过程,只保留前向传播过程。
3. 推断完成后,HRNet网络将输出一个包含人体姿态信息的热图。每个热图都对应一种姿态关键点,可以通过对热图进行解码,得到对应的姿态关键点坐标。
4. 最后,可以将解码得到的姿态关键点坐标可视化到原始图片上,从而得到自定义数据集图片的姿态估计结果。
需要注意的是,由于没有ground-truth数据,这种方法得到的姿态估计结果可能不太准确。因此,建议在有ground-truth数据的情况下,先fine-tune预训练好的HRNet网络,再进行姿态估计任务。
阅读全文