AlphaPose alphapose使用

install

run

  • python scripts/demo_inference.py --cfg configs/coco/resnet/256x192_res50_lr1e-3_1x.yaml --checkpoint pretrained_models/fast_res50_256x192.pth --indir examples/demo/

  • python scripts/demo_inference.py --cfg configs/coco/resnet/256x192_res50_lr1e-3_1x.yaml --checkpoint pretrained_models/fast_res50_256x192.pth --indir examples/demo/

(DiffuseIT) pdd@pdd-Dell-G15-5511:~/Downloads/MYUPOSE/AlphaPose$ python scripts/demo_inference.py --cfg configs/coco/resnet/256x192_res50_lr1e-3_1x.yaml --checkpoint pretrained_models/fast_res50_256x192.pth --indir examples/demo/
2023-06-03 01:23:28 [DEBUG]: Loaded backend agg version v2.2.
/home/pdd/anaconda3/envs/DiffuseIT/lib/python3.9/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.
  warnings.warn(
/home/pdd/anaconda3/envs/DiffuseIT/lib/python3.9/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet50_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet50_Weights.DEFAULT` to get the most up-to-date weights.
  warnings.warn(msg)
Downloading: "https://download.pytorch.org/models/resnet50-0676ba61.pth" to /home/pdd/.cache/torch/hub/checkpoints/resnet50-0676ba61.pth
  1%|▉                                                                                                                                                                                                  | 512k/97.8M [00:00<00:53, 1.90MB/s]2023-06-03 01:23:30 [DEBUG]: Loaded backend agg version v2.2.
2023-06-03 01:23:30 [DEBUG]: Loaded backend agg version v2.2.
2023-06-03 01:23:30 [DEBUG]: Loaded backend agg version v2.2.
  8%|████████████████                                                                                                                                                                                  | 8.12M/97.8M [00:00<00:05, 17.3MB/s]Loading YOLO model..
 15%|█████████████████████████████▎                                                                                                                                                                    | 14.8M/97.8M [00:01<00:04, 21.4MB/s]Process Process-2:
Traceback (most recent call last):
  File "/home/pdd/anaconda3/envs/DiffuseIT/lib/python3.9/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/home/pdd/anaconda3/envs/DiffuseIT/lib/python3.9/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/pdd/Downloads/MYUPOSE/AlphaPose/alphapose/utils/detector.py", line 243, in image_detection
    dets = self.detector.images_detection(imgs, im_dim_list)
  File "/home/pdd/Downloads/MYUPOSE/AlphaPose/detector/yolo_api.py", line 91, in images_detection
    self.load_model()
  File "/home/pdd/Downloads/MYUPOSE/AlphaPose/detector/yolo_api.py", line 49, in load_model
    self.model.load_weights(self.model_weights)
  File "/home/pdd/Downloads/MYUPOSE/AlphaPose/detector/yolo/darknet.py", line 407, in load_weights
    fp = open(weightfile, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'detector/yolo/data/yolov3-spp.weights'
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 97.8M/97.8M [00:04<00:00, 21.1MB/s]
Loading pose model from pretrained_models/fast_res50_256x192.pth...
Traceback (most recent call last):
  File "/home/pdd/Downloads/MYUPOSE/AlphaPose/scripts/demo_inference.py", line 183, in <module>
    pose_model.load_state_dict(torch.load(args.checkpoint, map_location=args.device))
  File "/home/pdd/anaconda3/envs/DiffuseIT/lib/python3.9/site-packages/torch/serialization.py", line 771, in load
    with _open_file_like(f, 'rb') as opened_file:
  File "/home/pdd/anaconda3/envs/DiffuseIT/lib/python3.9/site-packages/torch/serialization.py", line 270, in _open_file_like
    return _open_file(name_or_buffer, mode)
  File "/home/pdd/anaconda3/envs/DiffuseIT/lib/python3.9/site-packages/torch/serialization.py", line 251, in __init__
    super(_open_file, self).__init__(open(name, mode))
FileNotFoundError: [Errno 2] No such file or directory: 'pretrained_models/fast_res50_256x192.pth'

  • fast_res50_256x192.pth https://drive.google.com/file/d/1kQhnMRURFiy7NsdS8EFL-8vtqEXOgECn/view
  • cp ./fast_res50_256x192.pth ./MYUPOSE/AlphaPose/pretrained_models/
  • Download the object detection model manually: yolov3-spp.weights(Google Drive | Baidu pan). Place it into detector/yolo/data.

run in lower resources

重点关注一下:

  • psize参数
  • sp 参数
// /home/pdd/Downloads/MYUPOSE/AlphaPose/alphapose/utils/detector.py
    def start_worker(self, target):
        p = Thread(target=target, args=())
        # if self.opt.sp: # TODO
        #     p = Thread(target=target, args=())
        # else:
        #     p = mp.Process(target=target, args=())
        
        # p.daemon = True
        p.start()
        return p

TRACK

  • https://musetransfer.com/s/shtu6pvtl 请点击链接获取《无主题 - osnet_ain_x1_0_msmt17_256x128_amsgrad_ep5…》, 有效期至7月21日

将AlphaPose json结果按照图像名称汇总

import os  
import json

# 读取 AlphaPose JSON 结果文件  
with open("alphapose_result.json", "r") as f:  
    results = json.load(f)

# 获取图像文件的名称  
image_names = [n for n in os.listdir("images")]

# 将结果分组并根据图像名称存储  
result_grouped_by_image_name = {}  
for i, result in enumerate(results["results"]):  
    image_name = result["image_name"]  
    if image_name not in result_grouped_by_image_name:  
        result_grouped_by_image_name[image_name] = []  
    result_grouped_by_image_name[image_name].append(result)

# 输出结果  
for image_name, results in result_grouped_by_image_name.items():  
    print(f"{image_name} results:")  
    for result in results:  
        print(f"{result['Poses'][0]['positions']}")  

import os  
import json

# 读取 JSON 文件  
with open("alphapose_result.json", "r") as f:  
    results = json.load(f)

# 获取图像文件的名称  
image_names = [n for n in os.listdir("images")]

# 将结果分组并根据图像名称存储  
result_grouped_by_image_id = {}  
for i, result in enumerate(results["results"]):  
    image_name = result["image_name"]  
    if image_name not in result_grouped_by_image_id:  
        result_grouped_by_image_id[image_name] = []  
    result_grouped_by_image_id[image_name].append(result)

# 合并相同 image_id 的项目之间的 keypoints  
merged_keypoints = []  
for image_name, results in result_grouped_by_image_id.items():  
    results_by_id = {}  
    for result in results:  
        if result["image_id"] == image_name:  
            results_by_id[result["category_id"]] = result["keypoints"]  
        else:  
            results_by_id[result["category_id"]] = merged_keypoints  
    merged_keypoints = results_by_id["keypoints"]  
    merged_keypoints.sort()  
    result_grouped_by_image_id[image_name] = merged_keypoints

# 输出结果  
for image_name, results in result_grouped_by_image_id.items():  
    print(f"{image_name} results:")  
    for result in results:  
        print(f"{result['Poses'][0]['positions']}")  

RUN IN DOCKER

FROM pytorchlightning/pytorch_lightning:base-cuda-py3.7-torch1.12-cuda11.3.1
# FROM nvidia/cuda:11.6.0-devel-ubuntu20.04
# https://github.com/nianjingfeng/AlphaPose_Docker/blob/main/Dockerfile_alphapose

RUN apt clean

RUN DEBIAN_FRONTEND=noninteractive apt update && DEBIAN_FRONTEND=noninteractive apt install -y --allow-change-held-packages \
    ffmpeg \
    git \
    build-essential \
    ninja-build \
    cuda-libraries-11-6 \
    mesa-common-dev \
    libosmesa6 libosmesa6-dev \
    libgles2-mesa-dev \
    libglu1-mesa-dev \
    libgles2-mesa-dev \
    libcublas-11-6 \
    libcublas-dev-11-6 \
    libcusparse-dev-11-6 \
    cuda-nvcc-11-6 \
    libcusolver-dev-11-6 \
    cuda-nvrtc-dev-11-6 \
    libcurand-dev-11-6 \
    cuda-nvml-dev-11-6 \
    libcufft-dev-11-6 \
    cuda-toolkit-11-6 \
    nvidia-cuda-toolkit \
    libyaml-dev

ENV CUDA_HOME='/usr/local/cuda'

RUN DEBIAN_FRONTEND=noninteractive apt -y install python3 python3-pip python3-tk

RUN pip install "torch==1.12.1+cu116" "torchvision==0.13.1" "torchaudio==0.12.1" --extra-index-url https://download.pytorch.org/whl/cu116
RUN pip install opencv-contrib-python-headless -i https://pypi.douban.com/simple/
# RUN pip install pip --upgrade

RUN pip install cython pycocotools -i https://pypi.douban.com/simple/

RUN python3 -c "import torch; print(torch.version.cuda)" 

RUN mkdir /build
RUN cd /build && git clone https://github.com/HaoyiZhu/HalpeCOCOAPI.git
RUN cd /build && git clone https://github.com/MVIG-SJTU/AlphaPose.git


RUN cd /build/HalpeCOCOAPI/PythonAPI && python3 setup.py build develop --user

WORKDIR /build/AlphaPose

RUN TORCH_CUDA_ARCH_LIST="6.1;7.5;8.6" \
    PATH=/usr/local/cuda/bin/:$PATH \
    LD_LIBRARY_PATH=/usr/local/cuda/lib64/:$LD_LIBRARY_PATH  \
    python3 setup.py build develop --user

# Fix compatibility issue with numpy >= 1.20
RUN pip install git+https://github.com/H4dr1en/cython_bbox.git@patch-1

RUN apt install bc -y && \
    pip install boto3 && \
    python3 -c "import torchvision.models as tm; tm.resnet152(pretrained=True)"

# Download weights, adapt to what you need
RUN pip install gdown  -i https://pypi.douban.com/simple/
RUN mkdir -p detector/yolo/data && \
    gdown 1D47msNOOiJKvPOXlnpyzdKA3k6E97NTC -O detector/yolo/data/yolov3-spp.weights && \
    gdown 1S-ROA28de-1zvLv-hVfPFJ5tFBYOSITb -O pretrained_models/halpe26_fast_res50_256x192.pth
  • docker run --rm --gpus all -it alphapose /bin/bash
  • python3 scripts/demo_inference.py --cfg configs/halpe_26/resnet/256x192_res50_lr1e-3_1x.yaml --checkpoint pretrained_models/halpe26_fast_res50_256x192.pth --indir examples/demo/ --save_img

CG

json文件中的每个项目包含"image_id": "1.jpg", "category_id": 1, "keypoints": [ ** ],
"score": 3.1222591400146484, 
"box": [568.2610473632812, 41.407630920410156, 148.61181640625, 495.2166976928711],
"idx": [0.0]},
将image_id相同的项目的keypoints合并起来
  • Alphapose - Windows下Alphapose(Pytorch 1.1+)版本2021最新环境配置步骤以及踩坑说明
  • HAKE
  • 现有的基于图像的活动理解方法主要采用直接映射,即从图像到活动的概念,由于差距巨大,可能会遇到性能瓶颈。有鉴于此,我们提出了一种新的途径:首先推断人类的部分状态,然后基于部分级语义推理出活动。人体部分状态(PaSta)是细粒度的动作语义表征,如〈手,握,某事〉,它可以组成活动,帮助我们迈向人类活动知识引擎。为了充分利用PaSta的强大功能,我们构建了一个大规模的知识库PaStaNet,其中包含7M+PaSta注释。并提出了两个相应的模型:首先,我们设计了一个名为Activity2Vec的模型来提取PaSta特征,该模型旨在作为各种活动的通用表示。其次,我们使用基于PaSta的推理方法来推断活动。在PaStaNet的推动下,我们的方法实现了显著的改进,例如在全容量和单容量时分别为6.4和13.9毫安时
  • AlphaPose姿态估计 只输出骨架 源码修改 相关记录
  • https://github.com/oreo-lp/AlphaPose_TRT
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值