1.概述
OpenCV-4.0的dnn模块加入了对Mask R-CNN模型的支持,通过OpenCV提供的接口,可以直接加载已经训练好的Mask R-CNN模型。我根据learnopencv/Mask-RCNN提供的方法成功实现了Mask R-CNN模型(已在COCO数据集上训练)的调用,下面是详细过程。
2.相关工作
2.1)环境安装
- OpenCV版本要求:>= 4.0(OpenCV的安装过程此处不做讨论)
2.2)源码及相关文件
源码与相关文件可以通过learnopencv/Mask-RCNN获得,虽然github并不提供下载仓库内单个文件夹的途径,但是复制目录的链接到DownGit下载。
2.3)文件夹结构
Mask-RCNN/
|—— LICENSE
|—— README.md
|—— cars.jpg
|—— cars.mp4
|—— colors.txt
|—— mask_rcnn.cpp
|—— mask_rcnn.out
|—— mask_rcnn.py
|—— mask_rcnn_inception_v2_coco_2018_01_28.pbtxt
|—— mscoco_labels.names
文件夹中提供了调用模型需要用到的配置文件、源码(C++/Python)、测试资源。colors.txt和mscoco_labels.names分别用于记录与类别相关的掩码颜色和目标名称;mask_rcnn_inception_v2_coco_2018_01_28.pbtxt描述了神经网络模型的结构(但是并不记录权值等具体信息)。
3.调用模型
learnopencv/Mask-RCNN提供了C++和Python两种语言的源码,并且在README.md中详细描述了运行方法,下面做一些简单的翻译工作。
- README.md
1. 下载并解压神经网络的模型文件
> wget http://download.tensorflow.org/models/object_detection/mask_rcnn_inception_v2_coco_2018_01_28.tar.gz
> tar zxvf mask_rcnn_inception_v2_coco_2018_01_28.tar.gz
2. Python的运行方法
python3 mask_rcnn.py --image=cars.jpg
python3 mask_rcnn.py --video=cars.mp4
3. C++的运行方法
3.1. 编译
这一步本人使用了cmake配置编译,了解cmake使用方法的读者可以使用下面提供的CmakeLists.txt。
3.2. 运行
> ./mask_rcnn.out --image=cars.jpg
> ./mask_rcnn.out --video=cars.mp4
- CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(mask_rcnn)
find_package( OpenCV 4.0 REQUIRED )
include_directories(
${OpenCV_INCLUDE_DIRS}
)
add_executable(${PROJECT_NAME} "./mask_rcnn.cpp")
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
网友评论