Ubuntu18.04编译TensorRT MaskRCNN例子和模型转化---sampleuffMaskRCNN

14 篇文章 1 订阅
13 篇文章 5 订阅

0.前期准备

本教程主要测试tensorrt的maskrcnn例子,官方网址为sampleUffMaskRCNN
请确认已经安装好TensorRT 6.0,如果未安装,可参考博客
Ubuntu 18.04 安装配置TensorRT 6.0
本文基于以上链接,在conda创建名为trt的虚拟环境中进行.

Step1 安装requirement.txt需要的依赖

依赖位置: TensorRT/samples/opensource/sampleUffMaskRCnn/converted/requirements.txt

conda install keras==2.1.3
conda install tensorflow-gpu=1.14.0 #默认下载了cudatoolkit==10.1
conda install scikit-image

Step2 安装编译sample需要的其他系统的包

   pip3 install cmake==3.13 #要求最低3.13
   #如果当前GNU Make版本为v4.1 最低要求为v4.1无需安装,否则,安装GNU Make
   pip3 install --upgrade pip #升级pip 要求最低19.0
   sudo apt-get install git

Step3 Clone github 的TensorRT库

   # git clone -b master https://github.com/nvidia/TensorRT TensorRT #原github版本不对!应改为下一句:
    git clone -b release/6.0 https://github.com/nvidia/TensorRT TensorRT
    cd TensorRT
    git submodule update --init --recursive

Step4 开始编译

	export TRT_SOURCE=`pwd`
 	export TRT_RELEASE=`pwd`/../TensorRT-6.0.1.5 #你的tensorrt安装目录
    cd $TRT_SOURCE
    mkdir -p build && cd build 
    cmake .. -DTRT_LIB_DIR=$TRT_RELEASE/lib -DTRT_BIN_DIR=`pwd`/out
    make -j$(nproc)

Step5 修改conv2d_transpose function in UFF的conversion_functions.py

#如果使用了trt虚拟环境
vim /home/lixj/anaconda3/envs/trt/lib/python3.6/site-packages/uff/converters/tensorflow/converter_functions.py
#否则,如果没有使用conda 虚拟环境
# vim /home/lxj/.local/lib/python3.6/site-packages/uff/converters/tensorflow/converter_functions.py

找到524行,更换通道顺序

uff_graph.conv_transpose(
    inputs[0], inputs[2], inputs[1],
    strides, padding,
    dilation=None, number_groups=number_groups,
    left_format=lhs_fmt, right_format=rhs_fmt,
    name=name, fields=fields
    )

Step6 下载Mask R-CNN库并设置PYTHONPATH.

   git clone https://github.com/matterport/Mask_RCNN.git
   export PYTHONPATH=$PYTHONPATH:$PWD/Mask_RCNN

Step7 Apply the patch into Mask R-CNN repo to update the model from NHWC to NCHW

方法如下:

    cd Mask_RCNN
    git checkout 3deaec5
    git am $TRT_SOURCE/samples/opensource/sampleUffMaskRCNN/converted/0001-Update-the-Mask_RCNN-model-from-NHWC-to-NCHW.patch

上句若找不到.patch文件,可以手动找到之后,例如我的:

    git am ~/Downloads/TensorRT/samples/opensource/sampleUffMaskRCNN/converted/0001-Update-the-Mask_RCNN-model-from-NHWC-to-NCHW.patch

注意,这里需要登录自己的github账号

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

Step8 下载Mask-RCNN必须的包:

  pip3 install imgaug
  pip3 install keras==2.1.3

Step9 将h5模型转为uff模型

例如我的训练好的模型为mask_rcnn_coco.h5 (257.6MB),需要事先根据你的分割任务训练好。
保存到 Mask_RCNN/data/路径下.

 cd $TRT_SOURCE/samples/opensource/sampleUffMaskRCNN/converted/

修改config.py文件,注意,转换之后再修改sampleUffMaskRCNN/config.h是无效的,一定要在转换模型的时候将类别转换为你所需要的分类类别。
修改mrcnn_to_trt_single.py文件,第91行将类别80+1改为你分类的类别

 python mrcnn_to_trt_single.py -w /path/to/data/mask_rcnn_coco.h5 -o /path/to/data/mrcnn_nchw.uff -p ./config.py

这里,/path/to/data/需要改为你的路径,例如我的为

python mrcnn_to_trt_single.py -w ~/Mask_RCNN/data/mask_rcnn_coco.h5 -o ~/Mask_RCNN/data/mrcnn_nchw.uff -p ./config.py

转换成功,输出

UFF Output written to /home/lxj/Mask_RCNN/data/mrcnn_nchw.uff    (257MB)
UFF Text Output written to /home/lxj/Mask_RCNN/data/mrcnn_nchw.pbtxt  (1.1MB)

Step10 测试

测试参见
TX2上编译安装TensorRT的SampleUffMaskRCNN示例程序
注意修改config.h文件中的类别名.

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值