做姿态估计的小伙伴们肯定经常用检测器,为了方便大家,这里给出一个很方便的教程
让大家快速上手,不用再纠结配置环境!
欢迎加入我们的姿态估计群:970029323
(0)配置环境
①下载数据集
下载coco数据集(2014或者2017随便你),
比如这里我们保存到
/home/user/datasets/coco
然后解压,把图片解压到
/home/user/datasets/coco/images
把标注解压到
/home/user/datasets/coco
最终形成如下目录结构
/home/user/datasets/coco/images
/home/user/datasets/coco/annotations
②下载代码
git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
③配置执行环境
将下列代码保存为prepare_env.sh到maskrcnn-benchmark的目录下
然后执行
这个脚本的功能主要有:
---配置python的虚拟环境
---配置pip源让你安装更快
---下载coco api的源码
---安装mask rcnn到python的虚拟环境
---下载模型
---下载其他文件
---准备数据集
---准备输出结果的目录
#!/usr/bin/env bash
COCO_ROOT=/home/user/datasets/coco
# install packages
packages_install(){
# python.h is needed
sudo apt install -y python3-dev
# necessary package
sudo apt install -y python3-tk
}
# install virtualenv for python3
virtualenv_install(){
sudo -H pip3 install virtualenv
}
# create virtual environment and install packages
virtualenv_create(){
virtualenv venv -p python3
source venv/bin/activate
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install torch==1.0
pip install torchvision
pip install opencv-python
pip install -r requirements.txt
deactivate
}
# install coco api
coco_install(){
source venv/bin/activate
git clone https://github.com/cocodataset/cocoapi.git
pushd cocoapi/PythonAPI
python setup.py install
deactivate
popd
}
maskrcnn_install(){
source venv/bin/activate
python setup.py build develop
deactivate
}
download_models(){
mkdir models
pushd models
# faster rcnn
wget https://download.pytorch.org/models/maskrcnn/e2e_faster_rcnn_X_101_32x8d_FPN_1x.pth
# mask rcnn
wget https://download.pytorch.org/models/maskrcnn/e2e_mask_rcnn_X_101_32x8d_FPN_1x.pth
popd
}
download_params(){
mkdir -p ~/.torch/models
wget -O ~/.torch/models/X-101-32x8d.pkl https://dl.fbaipublicfiles.com/detectron/ImageNetPretrained/20171220/X-101-32x8d.pkl
}
prepare_datasets(){
mkdir -p datasets/coco
pushd datasets/coco
ln -s ${COCO_ROOT}/images/train2017
ln -s ${COCO_ROOT}/images/val2017
ln -s ${COCO_ROOT}/images/test2017
ln -s ${COCO_ROOT}/annotations
popd
}
prepare_directories(){
mkdir outputs
}
packages_install
virtualenv_install
virtualenv_create
coco_install
maskrcnn_install
download_models
prepare_datasets
download_params
prepare_directories
这里解释一下脚本里面的download_models函数
需要使用什么样的模型可以参考:
https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/MODEL_ZOO.md
然后下载对应的模型
这里我们确定使用两个模型:
faster rcnn和mask的X-101-32x8d-FPN
对应的下载地址为:
https://download.pytorch.org/models/maskrcnn/e2e_faster_rcnn_X_101_32x8d_FPN_1x.pth
https://download.pytorch.org/models/maskrcnn/e2e_mask_rcnn_X_101_32x8d_FPN_1x.pth
你只需要替换脚本里掉对应的链接即可。
(1)修改对应的模型的配置文件
maskrcnn-benchmark/configs/e2e_faster_rcnn_X_101_32x8d_FPN_1x.yaml
maskrcnn-benchmark/configs/e2e_mask_rcnn_X_101_32x8d_FPN_1x.yaml
修改其中以下几项:
①数据集设置为coco2017对应的名字
DATASETS:
TRAIN: ("coco_2017_train", "coco_2017_val")
TEST: ("coco_2017_val",)
具体可以参考:
maskrcnn-benchmark/configs/paths_catalog.py
里面给出了各个数据集的路径
②由于是测试,因此需要设置batchsize小一些,方便在笔记本上跑,训练的时候需要设置大一些
IMS_PER_BATCH: 8
将该参数设置为1,最小!
③设置好模型的位置
WEIGHT: "models/e2e_mask_rcnn_X_101_32x8d_FPN_1x.pth"
(2)跑起demo
将一下代码保存为run_demo.sh,然后放入maskrcnn-benchmark的目录下并执行
#!/usr/bin/env bash
source venv/bin/activate
python demo/webcam.py \
--config-file configs/e2e_mask_rcnn_X_101_32x8d_FPN_1x.yaml \
--min-image-size 300 MODEL.DEVICE cuda
# --show-mask-heatmaps
deactivate