本模型是研究人体关键点的识别(论文)
本模型是之前keras_Realtime_Multi-Person_Pose_Estimation的基于tensorflow2.0版本的升级版
keras_Realtime_Multi-Person_Pose_Estimation是我第二个琢磨的模型,一直想跑起来试试训练,可是无论在window下,(出现错误ZMQ IPC不支持windows!)还是在Ubuntu下,(tensorflow-gpu还是tensorflow的cpu版本都试了一遍,也着实学会了使用linux系统,都会卡在第一个epoch,个人感觉是各种包不兼容,毕竟pip install、conda install都是默认安装最新的,可是并不知道该代码具体使用的包的版本)都不行!在经历过各种bug和error的摧残下,终于知道旧的不去新的不来了。开始研究新家伙。
根据该模型GitHub页面的介绍,其中含有两个train.py文件,一个是作者使用Mobilenet替代VGG的进行了简化的模型(train_singlenet_mobilenetv3.py),一个是将之前的模型运行在tensorflow2.0版本上的代码(train_2br_vgg.py)。
先看旧模型。先跑起来。
记得换源!!!!!
首先配置环境,系统管理查看自己GPU支持什么版本的CUDA和CUDNN,并在官网下载安装包并安装。在此我首先安装了版本为10.2的CUDA但是提示我没有找到cudart64_101.dll,因此理应使用版本为10.1的CUDA。然后创建一个环境
conda create -n keypoints python=3.6
conda activate keypoints
然后按照requirement.txt文件pip install需要的包。
tensorflow-gpu==2.2.1
opencv-python-headless==4.1.2.30
tqdm==4.50.0
matplotlib==3.3.2
tensorpack==0.9.8
scipy==1.3.3
cython==0.29.14
pycocotools==2.0.0
jupyter==1.0.0
click==7.1.2
git+git://github.com/michalfaber/tf_netbuilder.git@v1.1#egg=tf_netbuilder
其中cython需要在pycocotools之前安装,因为pycocotools安装需要有c++环境。
如果在Windows下安装pycocotools,首先需要电脑上安装Visual Studio中的C++模块与git(需要配置)。最好将包下载下来然后按照makefile中的命令进行安装。注意需要注释掉setup.py中的’-Wno-cpp’, '-Wno-unused-function’两个参数。
ext_modules = [
Extension(
'pycocotools._mask',
sources=['../common/maskApi.c', 'pycocotools/_mask.pyx'],
include_dirs = [np.get_include(), '../common'],
extra_compile_args=['-std=c99'], # '-Wno-cpp', '-Wno-unused-function',
)
]
在Ubuntu下安装pycocotools,需要gcc、g++和git(需要配置)。使用以下命令安装有关gcc的一系列工具。
sudo apt-get install build-essential libcap-dev
实在不行不妨试试使用conda install pycocotools安装包,conda比pip好一些的是会同时安装所需要的依赖。
各个包安装成功之后运行train_2br_vgg.py即可开始训练。Windows是不支持的,运行之后在加载annotation之后会显示 ZMQ IPC doesn’t support windows !
训练之前将下载的训练和验证的数据集放在指定位置,或更改train_2br_vgg.py中的文件路径。
数据集位置:
├── datasets
│ └── coco_2017_dataset
│ ├── annotations
│ │ ├── person_keypoints_train2017.json
│ │ └── person_keypoints_val2017.json
│ ├── train2017/*
│ └── val2017/*
└── tensorflow_Realtime_Multi-Person_Pose_Estimation/*
训练开始之后会生成log文件显示训练过程,在当前环境下使用命令:
tensorboard --logdir=具体路径
即可在本机的6006(localhost:6006)端口查看。