yolopose算法coco keypoints数据集yolo格式图片展示

yolo格式数据集的展示

在这里插入图片描述
如上图,coco keypoints数据集,yolopose算法使用的是其yolo格式,第一位0代表类别,第二到五位代表box锚框的xywh格式,后面的51位代表kpts姿态信息

思路

  1. 将box框的xywh格式转化为xyxy格式并乘上相对应的宽高
  2. 将kpts姿态数据乘对应的宽高
  3. 姿态数据中,每3位有一个2,这个是官方coco annotator标注软件会自动插入的值,在yolopose算法detect检测中,该值被定义为每一个关键点的置信度conf
import torch
from utils.plots import colors, plot_one_box
import cv2
from utils.general import xywh2xyxy

if __name__ == '__main__':
    # 将yolo格式的标注好的图片展示出来
    im0 = cv2.imread("data/images/000000000785.jpg")
    f = open("data/txt/000000000785.txt", "r")
    det_list = []
    for line in f.readlines():
        # line = line.strip('\n')  #去掉列表中每一个元素的换行符
        det_list = list(map(float, line.split(' ')))
        print(det_list)
        f.close()
        # 前5个参数为 0类型 xyxy
        xywh = det_list[1:5]
        # 转化为 xyxy格式
        gn = torch.tensor(im0.shape)[[1, 0, 1, 0]]
        xyxy = (xywh2xyxy(torch.tensor(xywh).view(1, 4)) * gn).view(-1).tolist()
        print(xyxy)
        # 后51个参数为 姿态数据 官方的是百分比表示法,需要乘宽高
        kpts = det_list[5:]
        # 640
        weight = im0.shape[1]
        # 425
        height = im0.shape[0]

        for index, i in enumerate(kpts):
            if index % 3 == 0:
                kpts[index] = kpts[index] * weight
            if index % 3 == 1:
                kpts[index] = kpts[index] * height
            if index % 3 == 2:
                kpts[index] = 0.9

        # 画框打点
        plot_one_box(xyxy, im0, label="person", color=colors(0, True), line_thickness=3,
                     kpt_label=True, kpts=kpts, steps=3, orig_shape=im0.shape[:2])
    cv2.imshow("demo", im0)
    cv2.waitKey(0)  # 1 millisecond

你可能感兴趣的:(小马AI学习手账,算法,YOLO,python)