## 1. Requirements
* CUDA 11.1
* TensorRT 7.2.2
* Python 3.8.5
* Cython
* PyTorch 1.8.1
* torchvision 0.9.1
* numpy 1.17.4 (numpy版本过高会出报错)
* python-package setuptools >= 40.0
## 2. Results
[AlphaPose](https://github.com/MVIG-SJTU/AlphaPose/blob/master/docs/MODEL_ZOO.md) 存在多个目标检测+姿态估计模型的组合,
本仓库(fork from [AlphaPose](https://github.com/MVIG-SJTU/AlphaPose) )仅对[YOLOv3_SPP](https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-spp.cfg) + [Fast Pose](https://github.com/MVIG-SJTU/AlphaPose/blob/master/configs/coco/resnet/256x192_res50_lr1e-3_1x.yaml)
进行加速。
<div align="center">
<img src="docs/2.jpg" , width="400" alt><br>
<b><a>AlphaPose_trt inference rst</a></b>
</div>
AlphaPose在数据预处理部分使用YOLOv3-SPP模型检测出一幅图像中的多个人物,然后将这些人物图像送入到FastPose模型中进行姿态估计。
我们对YOLOv3_SPP模型以及FastPose模型都进行了加速, 并记录了加速前后的mAP值,验证集来自MSCOCO [val2017](https://cocodataset.org/#keypoints-2017) 。 其中ground truth box表示FastPose模型
的检测精度, detection boxes表示YOLOv3_SPP + FastPose模型的检测精度。
<center>
| Method | ground truth box mAP@0.6 | detection boxes mAP@0.6 |
|:-------|:-----:|:-------:|
| AlphaPose | 0.743 |0.718 |
| **AlphaPose_trt** | **0.743** | **0.718** |
</center>
**所有的测试过程都对GPU以及Memory进行了锁频**
GPU Frequency = **1509MHz**, Memory Frequency = **5001MHz**,具体操作如下:
```shell
nvidia-smi -pm 1
nvidia-smi -q -d clock # 查看memory以及gpu的频率
nvidia-smi -ac memoryFrq, gpuFrq
nvidia-smi -lgc gpuFrq,gpuFrq # 将GPU进行锁频
```
### 2.1 YOLOv3-SPP speed up
下表记录了YOLOv3_SPP模型在不同batch size下的推理时间以及吞吐量,并计算了加速比(第三列以及第四列)。
实验环境为:**Tesla T4**
吞吐量: Throughput = 1000 / latency * batchsize
时延: Latency speed up = original latency / trt latency
<center>
| model | Batchsize | Latency (ms) | Throughput | Latency Speedup |Throughput speedup| Volatile GPU-Util |
|:-------|:-----:|:-------:|:-----:|:-------:|:-------:|:-------:|
| YOLOv3-SPP | 1 | 54.1 | 18.48 | 1x | 1x | 87% |
| | 2 | 93.9 | 21.30 | | | 93% |
| | 4 | 172.6 | 23.17 | | | 98% |
| | 8 | 322.8 | 24.78 | | | 100% |
| **YOLOv3-SPP_trt** | 1 | 20.1 | 49.75 | **2.7x** | **2.7x** | **100%** |
| | 2 | 33.7 | 59.35 | **2.8x** | **2.8x** | **100%** |
| | 4 | 60.5 | 66.12 | **2.9x** | **2.9x** | **100%** |
| | 8 | 115.5 | 69.26 | **2.8x** | **2.8x** | **100%** |
</center>
代码实现参考8.2部分
### 2.2 Fast Pose speed up
下表记录了Fast Pose模型在不同batch size下的推理时间以及吞吐量,并计算了加速比(第三列以及第四列)。
实验环境为:**Tesla T4**
<center>
| model | Batchsize | Latency (ms) | Throughput | Latency Speedup |Throughput speedup| Volatile GPU-Util |
|:-------|:-----:|:-------:|:-----:|:-------:|:-------:|:-------:|
| FastPose | 1 | 23.9 | 41.84 | 1x | 1x | 30% |
| | 2 | 24.6 | 81.30 | | | 39% |
| | 4 | 27.9 | 143.37 | | | 64% |
| | 8 | 33.2 | 240.96 | | | 99% |
| | 16 | 56.6 | 282.68 | | | 99% |
| | 32 | 105.8 | 302.46 | | | 99% |
| | 64 | 206.2 | 310.38 | | | 100% |
| **FastPose_trt** | 1 | 1.49 | 671.14 | **16.0x** | **16.0x** | **3%** |
| | 2 | 2.32 | 862.07 | **10.6x** | **10.6x** | **3%** |
| | 4 | 4.06 | 985.22 | **6.9x** | **6.9x** | **38%** |
| | 8 | 7.69 | 1040.31 | **4.3x** | **4.3x** | **100%** |
| | 16 | 15.16 | 1055.41 | **3.7x** | **3.7x** | **100%** |
| | 32 | 29.98 | 1067.38 | **3.5x** | **3.5x** | **100%** |
| | 64 | 59.67 | 1072.57 | **3.5x** | **3.5x** | **100%** |
</center>
代码实现参考8.1部分
### 2.3 YOLOv3-SPP + FastPose speed up
下表记录了YOLOv3_SPP + FastPose模型在不同batch size下的推理时间以及吞吐量,并计算了加速比(第三列以及第四列)。
实验环境为:**Tesla T4**
<center>
| model | Batchsize | Latency (ms) | Throughput | Latency Speedup |Throughput speedup| Volatile GPU-Util |
|:-------|:-----:|:-------:|:-----:|:-------:|:-------:|:-------:|
| AlphaPose | 1 | 78.0 | 12.82 | 1x | 1x | 87% |
| | 2 | 118.5 | 16.87 | | | 94% |
| | 4 | 200.5 | 19.95 | | | 97% |
| | 8 | 356 | 22.47 | | | 100% |
| **AlphaPose_trt** | 1 | 21.59 | 46.32 | **3.6x** | **3.6x** | **100%** |
| | 2 | 36.02 | 55.52 | **3.3x** | **3.3x** | **100%** |
| | 4 | 64.56 | 61.96 | **3.1x** | **3.1x** | **100%** |
| | 8 | 123.19 | 64.94 | **3.5x** | **3.5x** | **100%** |
</center>
代码实现参考8.3部分
## 3. Code installation
AlphaPose的安装参考自[这](https://github.com/MVIG-SJTU/AlphaPose/blob/master/docs/INSTALL.md)
,主要有两种安装方式
#### 3.1 使用conda进行安装
Install conda from [here](https://repo.anaconda.com/miniconda/)
```shell
# 1. Create a conda virtual environment.
conda create -n alphapose python=3.6 -y
conda activate alphapose
# 2. Install PyTorch
conda install pytorch==1.1.0 torchvision==0.3.0
# 3. Get AlphaPose
git clone https://github.com/MVIG-SJTU/AlphaPose.git
# git pull origin pull/592/head if you use PyTorch>=1.5
cd AlphaPose
# 4. install
export PATH=/usr/local/cuda/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/:$LD_LIBRARY_PATH
python -m pip install cython
sudo apt-get install libyaml-dev
################Only For Ubuntu 18.04#################
locale-gen C.UTF-8
# if locale-gen not found
sudo apt-get install locales
export LANG=C.UTF-8
######################################################
python setup.py build develop
```
#### 3.2 使用pip进行安装
```shell
# 1. Install PyTorch
pip3 install torch==1.1.0 torchvision==0.3.0
# Check torch environment by: python3 -m torch.utils.collect_env
# 2. Get AlphaPose
git clone https://github.com/MVIG-SJTU/AlphaPose.git
# git pull origin pull/592/head if you use PyTorch>=1.5
cd AlphaPose
# 3. install
export PATH=/usr/local/cuda/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/:$LD_LIBRARY_PATH
pip install cython
sudo apt-get install libyaml-dev
python3 setup.py build develop --user
```
## 4. YOLOv3-SPP(PyTorch) to engine
YOLOv3-SPP(PyTorch)可以转成static shape的engine模型以及dynamic shape的engine模型。前者表示engine的输入数据只能是
固定的尺寸,而后者表示我们输入的数据尺寸可以是动态变化的,但是变化的范围要在我们转成engine时所设置的范围内。
### 4.1 转成static shape的engine模型
(1) YOLOv3_SPP转成onnx模型
下载YOLOv3_SPP的[cfg](https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-spp.cfg) 以及[weights](https://pjreddie.com/media/files/yolov3-spp.weights) ,并分别放在
./detector/yolo/cfg/以及./detector/yolo/data/文件夹下。
YOLOv3_SPP输入数据的尺寸默认为: 1x3x608x608
``` shell
python ./darknet2onnx.py
--cfg ./detector/yolo/cfg/yolov3-spp.cfg
--weight ./detector/yolo/data/yolov3-spp.weights
```
执行该命令之后,会在当前目录下产生一个yolov3_spp_static.onnx模型
(2) 对模型进行修正
由于YOLOv3-SPP模型中存在Padding操作,trt不能直接识别,因此需要onnx进行修改 [this issue](https://github.com/onnx/onnx-tensorrt/blob/master/docs/faq.md#inputsat0-must-be-an-initializer-or-inputsat0is_weights
)。可能需要额外下载tensorflow-gpu == 2.4.1以及polygraphy == 0.22.0模块。
``` shell
polygraphy surgeon sanitize yolov3_spp_static.onnx
--fold-constants
--output yolov3_spp_static_folded.onnx
```
执行该命令之后,会在当前目录下产生一个yolov3_spp_static_folded.onnx模型
(3) 由onnx模型生成engine
需要注册ScatterND plugin,将[this repository](https://github.com/NVIDIA/trt-samples-for-hackathon-cn/tree/master/plugins)
下的plugins文件夹以及Makifile文件放到当前目录下,然后make MakeFile文件,进行编译,编译之后�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
算法部署-使用TensorRT部署AlphaPose姿态估计算法-算法加速-项目源码-优质项目实战.zip (413个子文件)
psroi_pooling_cuda.c 3KB
yolov3.cfg 9KB
yolov3-spp.cfg 8KB
yolov3.cfg 8KB
yolo-voc.cfg 3KB
yolo.cfg 3KB
tiny-yolo-voc.cfg 1KB
setup.cfg 66B
soft_nms_cpu.cpp 332KB
deform_conv_cuda.cpp 29KB
GridSamplerPlugin.cpp 8KB
deform_pool_cuda.cpp 4KB
roi_align_cuda.cpp 3KB
nms_cpu.cpp 2KB
nms_cuda.cpp 581B
deform_conv_cuda_kernel.cu 41KB
deform_pool_cuda_kernel.cu 16KB
roi_align_kernel.cu 11KB
psroi_pooling_kernel.cu 8KB
nms_kernel.cu 5KB
GatherND.cu 4KB
ScatterND.cu 3KB
AddPlugin.cu 2KB
AddPluginDyn.cu 2KB
GatherND.h 7KB
AddPluginDyn.h 5KB
ScatterND.h 5KB
AddPlugin.h 5KB
psroi_pooling_kernel.h 835B
psroi_pooling_cuda.h 489B
1.jpg 193KB
2.jpg 178KB
2.jpg 148KB
3.jpg 41KB
alpha-pose-results-sample.json 5KB
ccmcpe.json 606B
person_keypoints_train2017.json 1B
Makefile 68B
README.md 15KB
README.md 4KB
README.md 2KB
README.md 421B
README.md 186B
README.md 163B
README.md 151B
README.md 119B
not-zip-safe 1B
pallete 908B
PKG-INFO 9KB
posetrack_data 48B
poseval 41B
utils.py 27KB
transforms.py 25KB
basetransforms.py 23KB
pPose_nms.py 21KB
hardnet.py 20KB
vis.py 19KB
utils.py 19KB
utils.py 19KB
hrnet.py 17KB
darknet_trt.py 17KB
darknet.py 17KB
efficientdet.py 17KB
osnet.py 17KB
osnet_ain.py 16KB
models.py 15KB
demo_api.py 15KB
trt_inference.py 15KB
datasets.py 15KB
resnet_fc.py 15KB
anchors.py 14KB
inference.py 14KB
tracker_api.py 13KB
yolo_api_trt.py 13KB
util.py 13KB
tracker-baseline.py 13KB
yolo_api.py 13KB
demo_inference.py 13KB
effdet_api.py 12KB
target_assigner.py 12KB
deform_conv.py 12KB
detector.py 12KB
multitracker.py 12KB
simple_transform.py 12KB
custom.py 11KB
tracker-general.py 11KB
utils.py 11KB
trt_lite.py 10KB
tracker_api.py 10KB
deform_pool.py 10KB
train.py 10KB
kalman_filter.py 9KB
matcher.py 9KB
poseflow_infer.py 8KB
writer.py 8KB
validate_trt.py 8KB
argmax_matcher.py 8KB
bbox.py 8KB
halpe_136.py 8KB
SE_Resnet.py 8KB
共 413 条
- 1
- 2
- 3
- 4
- 5
资源评论
__AtYou__
- 粉丝: 3508
- 资源: 2175
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- windows server 2019 安装net franework3.5.,添加功能-勾选3.5-确认步骤【指定备用源路径】,指定解压后路径,即可成功安装
- win10/win11均可使用
- 二甲基pep基于双光子激发细胞成像中的DNA探针设计
- java校园二手市场源码带本地搭建教程数据库 MySQL源码类型 WebForm
- 后端框架使用Django开发,数据库使用:Sql Server,前端使用Django模板,实现管理员对用户信息的增删改查,图书的增删改查,借阅管理,数据库日志查看,用户可以浏览图书信息,加入书架
- SQLServer-2022-Editions-datasheet.pdf
- EN-US-CNTNT-white-paper-DBMod-Microsoft-SQL-Server-2019-Technical-white-paper.pdf
- 基于Python+Django的交友系统,包括功能发布动态,私信聊天,发起活动,发表评论等
- Python毕业设计基于知识图谱的大学生能力评价与职位推荐系统源码(高分项目)
- java教师教学质量评价管理系统源码数据库 MySQL源码类型 WebForm
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功