本文的写作背景源于本人研究课题——基于骨架的动作识别,由于上篇文章讲解的win10系统配置OpenPose和ST-GCN动作识别不能自制数据集问题,故转战ST-GCN移植的mm框架。本文主要讲解mmskeleton环境的配置及测试,有问题的朋友可以留言评论和咨询本人QQ:2447439418。(注意:如果需要数据等资源及代码远程配置是需要有偿服务的,创作不易,望理解!!!)强调一下:mmskeleton默认使用cascade-rcnn模型做为人体检测器、Hrnet模型作为姿态估计器及ST-GCN模型进行动作识别,因此你使用此框架学习ST-GCN的话,就不需要配置OpenPose了。
(1)Win11系统(笔记本);
(2)RTX2060显卡,6G显存;
(3)显卡驱动信息:
(4)VS2019软件(自行安装,可搜索mmdetection2-windows环境配置参考安装,建议安装位置选择默认,避免后续麻烦);
(5)CUDA10.1信息(这里自行参考网上资料安装);
参考来源: link.
3.1创建虚拟环境及安装pytorch
conda create -n mmd python=3.7
conda activate mmd
conda install pytorch=1.3 torchvision cudatoolkit=10.1
pip install cython opencv-python pillow matplotlib
3.2修改torch源码
1.修改 环境目录下\Lib\site-packages\torch\include\c10\util\flat_hash_map.h中的这个头文件。
(1)注释或删掉第24行,示例如下:
#include
#include
#include
#include
#include
#include
#include
#include
// #include
(2)1379-1398行左右,注释或删掉具体如下:
// std::pair emplace()
// {
// return emplace(key_type(), convertible_to_value());
// }
// template
// std::pair insert_or_assign(const key_type & key, M && m)
// {
// auto emplace_result = emplace(key, std::forward(m));
// if (!emplace_result.second)
// emplace_result.first->second = std::forward(m);
// return emplace_result;
// }
// template
// std::pair insert_or_assign(key_type && key, M && m)
// {
// auto emplace_result = emplace(std::move(key), std::forward(m));
// if (!emplace_result.second)
// emplace_result.first->second = std::forward(m);
// return emplace_result;
// }
(4)1473-1493行左右,注释或删掉
// template
// std::pair emplace(Args &&... args)
// {
// return Table::emplace(T(std::forward(args)...));
// }
// std::pair emplace(const key_type & arg)
// {
// return Table::emplace(arg);
// }
// std::pair emplace(key_type & arg)
// {
// return Table::emplace(arg);
// }
// std::pair emplace(const key_type && arg)
// {
// return Table::emplace(std::move(arg));
// }
// std::pair emplace(key_type && arg)
// {
// return Table::emplace(std::move(arg));
// }
2.修改 环境目录下\Lib\site-packages\torch\include\c10\util\order_preserving_flat_hash_map.h
(1)注释或删除1499-1518行
// std::pair emplace()
// {
// return emplace(key_type(), convertible_to_value());
// }
// template
// std::pair insert_or_assign(const key_type & key, M && m)
// {
// auto emplace_result = emplace(key, std::forward(m));
// if (!emplace_result.second)
// emplace_result.first->second = std::forward(m);
// return emplace_result;
// }
// template
// std::pair insert_or_assign(key_type && key, M && m)
// {
// auto emplace_result = emplace(std::move(key), std::forward(m));
// if (!emplace_result.second)
// emplace_result.first->second = std::forward(m);
// return emplace_result;
// }
(2)注释或删除1593-1613行
// template
// std::pair emplace(Args &&... args)
// {
// return Table::emplace(T(std::forward(args)...));
// }
// std::pair emplace(const key_type & arg)
// {
// return Table::emplace(arg);
// }
// std::pair emplace(key_type & arg)
// {
// return Table::emplace(arg);
// }
// std::pair emplace(const key_type && arg)
// {
// return Table::emplace(std::move(arg));
// }
// std::pair emplace(key_type && arg)
// {
// return Table::emplace(std::move(arg));
// }
3.修改 环境目录下\Lib\site-packages\torch\utils\cpp_extension.py
188行修改成:
match = re.search(r'(\d+)\.(\d+)\.(\d+)', compiler_info.decode("gbk").strip())
4.修改 环境目录下\Lib\site-packages\torch\include\torch\csrc\jit\argument_spec.h
190行左右修改:
将static conststr size_t DEPTH_LIMIT = 128;
替换为static const size_t DEPTH_LIMIT = 128;
5.修改 环境目录下\Lib\site-packages\torch\include\pybind11\cast.h
1448行左右
将explicit operator type&() { return *(this->value); }
替换为explicit operator type& () { *((type*)(this->value)); }
3.3.pycocotools安装
https://github.com/philferriere/cocoapi下载源码,并进行解压。以管理员身份打开 CMD 终端,并切换到 cocoapi\PythonAPI目录。运行以下指令:
python setup.py build_ext --inplace
python setup.py build_ext install
3.4mmdeteciton安装
1.mmcv安装,安装命令
pip install mmcv==0.4.0
2.mmdetection-1.0.0安装
官网: link.
先在官网下载mmdection-1.0.0并解压,然后windows命令窗口cd到mmdection-1.0.0目录,输入命令:
pip install -r requirements.txt
接着,修改其setup.py文件中CUDAExtension中extra_compile_args相关代码,增加cxx的"-DMS_WIN64",“-MD”,并安装:
python setup.py develop
3.5mmskeleton安装
官网: link.
安装命令:
git clone https://github.com/open-mmlab/mmskeleton.git
cd mmskeleton
python setup.py develop