mask rcnn源码模型踩坑(__reduce_cython__)指南(MxNet)

mask rcnn模型踩坑指南(MxNet框架):
1. 环境:anaconda3+tensorflow-gpu+python2.7.14
pip freeze: certifi==2017.11.5 / Cython==0.27.3 / easydict==1.7 / frcnn-cython==0.0.0 / numpy==1.13.3 / olefile==0.44 / opencv-python==3.3.0.10 / Pillow==4.3.0 / pycocotools==0.0.0
2. 步骤 :
a. 原始数据集+原始代码。模型运行源码网址:https://github.com/TuSimple/mx-maskrcnn,数据集网址:https://www.cityscapes-dataset.com/ . 先下载数据集gtFine_trainvaltest.zip, leftImg8bit_trainvaltest.zip(需先注册,有些麻烦)和代码git clone https://github.com/TuSimple/mx-maskrcnn.git. 数据集解压到 ./data/cityscape/目录下
b. ***@ubuntu: mx-maskrcnn-master $ bash scripts/download_res50.sh  #Download Resnet-50 pretrained model 
c. 安装mxnet, tutorial: https://mxnet.incubator.apache.org/get_started/build_from_source.html
(tensorflow-gpu-python2) ***@ubuntu:mx-maskrcnn-master$ git clone --recursive https://github.com/apache/incubator-mxnet.git [mxnet]    # mxnet官网GitHub下载地址,download incubator-mxnet,即mxnet模块, --recursive必不可少,否则可能make失败,导致后面缺少libmxnet.so库。
d. (tensorflow-gpu-python2) ***@ubuntu: mx-maskrcnn-master $ cp rcnn/CXX_OP/* incubator-mxnet/src/operator/  # Build MXNet with ROIAlign operator.
cd incubator-mxnet
make -j8 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1 USE_CPP_PACKAGE=1 # c++编译选项USE_CPP_PACKAGE=1
# mxnet官网GitHub下载地址。 作者采用mxnet源码方式安装
e. cd ./rcnn/pycocotools/,  python setup.py build_ext install/--inplace #此处install或--inplace自己尝试的
cd ./rcnn/cython/,  python setup.py build_ext install/--inplace
# (必须进入目录运行,运行这句话之后,同一文件夹下的文件 _mask.pyx方能成为模块被其他文件import _mask)  if ./rcnn/pycocotools/mask.py", line 3, import _mask, no model named ‘_mask’
f. (tensorflow-gpu-python2) ***@ubuntu: mx-maskrcnn-master $ make #build related cython code , maybe need install cython package, 
g. (tensorflow-gpu-python2) ***@ubuntu: mx-maskrcnn-master $ bash scripts/train_alternate.sh  #Kick off training, 需修改train_alternate.sh最后一行为单GPU


模型正常训练结果:先加载图像,再迭代
========================1285 ============================
data/cityscape/gtFine/train/bochum/bochum_000000_006746_gtFine_instanceIds.png
(2048, 1024)
========================1286 ============================
data/cityscape/gtFine/train/weimar/weimar_000022_000019_gtFine_instanceIds.png
(2048, 1024)
 
模型训练2h显示:
 
模型训练20h显示:
 


3. 踩的2个大坑:
a.
(1) 报如下错误:

运行最后一步bash scripts/train_alternate.sh报错,File "_mask.pyx", line 56, in init rcnn.pycocotools._mask AttributeError: type object 'rcnn.pycocotools._mask.RLEs' has no attribute '__reduce_cython__' 


(2) 解决方案:将anaconda中的python3.6更换为python2.7(python3.6中还会报其他格式错误)
(3) 可能原因:见https://groups.google.com/forum/#!topic/cython-users/tQlwfcpdf0k,可能是Cython 0.26与python3不兼容(谷歌搜__reduce_cython__)
b.
(1) 报如下错误:
src/storage/storage.cc:63: Check failed: e == cudaSuccess || e == cudaErrorCudartUnloading CUDA: invalid device ordinal
 
(2) 解决方案:将./scripts/train_alternate.sh脚本最后一行作如下修改:
--gpu 0,1,2,3 |& tee -a ${TRAIN_DIR}/train.log  ->  --gpu 0 |& tee -a ${TRAIN_DIR}/train.log
(3) 可能原因:见http://blog.csdn.net/zpp13hao1/article/details/78581767?locationNum=7&fps=1中间部分“使用一个GPU,源代码是使用了4个GPU,需要在train_alternate.sh中的最后一句话改为”
4. 备注
训练模型时,如出现如下libmxnet.so文件缺失,说明mxnet安装不成功,需从步骤c开始重新安装mxnet。
打印如下:RuntimeError: Cannot find the files. List of candidates:./incubator-mxnet/python/mxnet/libmxnet.so
./incubator-mxnet/python/mxnet/../../lib/libmxnet.so
./incubator-mxnet/python/mxnet/../../build/libmxnet.so
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: cython_bbox是一个用于边界框操作的Python扩展模块。边界框通常用于目标检测、目标跟踪以及图像分割等计算机视觉任务中。这个模块提供了一些高效的函数,以便对边界框进行计算和操作。 cython_bbox模块提供了一些重要的函数,包括计算两个边界框的重叠度量、计算边界框的面积、将边界框转换为一般格式等。这些函数在进行目标检测和跟踪时非常有用。 使用cython_bbox的好处是它利用了Cython语言的特性,能够将Python代码转换为C代码并进行编译。这样一来,与纯Python代码相比,cython_bbox能够获得更高的性能。这对于处理大规模的图像数据和复杂的计算是至关重要的。 在实际应用中,我们可以将cython_bbox与其他计算机视觉库(如OpenCV)结合使用,以实现更高级的任务。例如,我们可以使用cython_bbox计算目标检测算法的评估指标,或者将其用于目标跟踪的实时应用中。 总之,cython_bbox是一个有助于提高边界框操作性能的Python扩展模块。它提供了一系列高效的函数,可以在目标检测、目标跟踪等计算机视觉任务中派上用场。通过利用Cython的编译能力,cython_bbox能够为处理大规模图像数据和复杂计算提供更高的性能。 ### 回答2: Cython_bbox是一个用于边界框操作的Cython库。边界框是在计算机视觉和图像处理中常见的一种数据结构,用于表示物体或区域在图像中的位置和范围。cython_bbox提供了一些方便的函数和方法,用于操作和处理边界框。 cython_bbox提供了一些常用的边界框操作,包括计算边界框的面积、交并比和中心点坐标等。这些操作对于目标检测、图像分割和目标跟踪等应用非常有用。 此外,cython_bbox还提供了一些方便的边界框转换功能,如将边界框从(x1, y1, x2, y2)的坐标格式转换为(cx, cy, w, h)的格式,以及将边界框转换为更大或更小的尺寸等。 使用cython_bbox可以提高边界框操作的性能,因为它是用Cython实现的,可以将Python代码编译为C代码并进行优化。它的使用方法与Python的标准库类似,因此很容易上手。 总之,cython_bbox是一个方便实用的Cython库,用于边界框操作和处理。它提供了一些常用的边界框操作和转换功能,可以帮助开发者更高效地处理边界框数据。 ### 回答3: Cython_bbox是一个Python库,用于实现目标框(bounding box)的计算和操作。目标框在计算机视觉和目标检测中非常常见,它们是用于表示物体在图像或视频中位置和大小的矩形区域。 Cython_bbox库提供了一些方便且快速的函数来处理目标框。它是基于Cython编写的,这使得它在性能方面相对于纯Python实现更加高效。 该库提供了一些基础的函数,如计算两个目标框的交并比(IOU),计算目标框的面积,对目标框进行缩放和平移等。几乎所有的函数都使用了Cython的静态类型声明,以提高效率。 通过使用Cython_bbox库,我们可以更高效地处理和操作目标框。它在目标检测和图像处理任务中非常有用,可以用于计算目标框的相似度、过滤不合格的目标框、对目标框进行合并等。 总的来说,Cython_bbox是一个方便且高效的Python库,用于计算和操作目标框。它在图像处理和目标检测任务中发挥着重要的作用,可以大大提高我们的工作效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值