install
-
https://github.com/MVIG-SJTU/AlphaPose/blob/master/docs/INSTALL.md
-
git clone https://github.com/MVIG-SJTU/AlphaPose.git
-
cd AlphaPose/
-
pip install natsort
-
ModuleNotFoundError: No module named ‘detector’
,pip install detector
import sys , sys.path.append(“/media/data2/sys/ALPHAPOSE/AlphaPose”)
,or maybe you need to add an empty file named__init__.py to solve problems like this -
ImportError: cannot import name ‘roi_align_cuda’ from ‘alphapose.utils.roi_align’
-
python3 setup.py build develop --user
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
- touch Dockerfile
- 写Dockerfile内容,可参考 https://github.com/MVIG-SJTU/AlphaPose/issues/1057
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