Mask_RCNN入门(一)—— 跑通代码

写在前面

本文主要参考教程:tensorflow版的Mask_RCNN,这个教程也是跑通github上Mask_RCNN项目的教程,为了在避免不必要的废话和原教程可能改变之间trade off,本教程将简述主要步骤,详情请参考原教程,但是同时记录需要注意的点和一些坑。
同时考虑到各种兼容性问题,有必要说明一下我的软硬件环境:
操作系统:Windows10 家庭中文版
CPU:i5 8700 8核 8G内存
GPU:GTX 1060 6G显存
conda version:4.8.2
时间:2020-03-04 (考虑到未指定版本的包默认下载最新版本,故声明时间点)

一步一步来

1.git clone项目

关于怎么git项目,这里不再赘述。
clone后第一步去看看项目READ.md(当然在github上也可以直接看),为了节省时间,这里列出几个值得注意的地方:

  • python版本要求
    在这里插入图片描述
  • 使用requirements.txt安装包和其他注意事项
    在这里插入图片描述
    这里只是提醒一下,这几点具体怎么处理我在下面会仔细阐述,不用担心。
2.conda创建好环境
  • conda下载使用
    conda可以快速简单地创建python环境,推荐使用,但同时考虑到conda的库不够全,推荐使用pip下载包(下面介绍的requirements.txt安装方式也是要使用pip),即“conda创建环境+pip安装包”的方式。关于conda和pip的下载使用这里不再赘述,感兴趣的可以参考我写的关于conda和pip使用的介绍:
    Anaconda初探
    conda的基本命令
    使用pip安装包
    Python,pip,conda和Anaconda
    安装好Anaconda和pip以后,做好进行永久性换上境内镜像,不然之后的install总是会报timeout错误。

  • 创建python=3.5.2环境
    conda创建环境需要指定
    前面也看到过项目环境要求介绍:
    在这里插入图片描述
    即Python 3.4,但是因为之前跑Keras-yolo3使用的是Python 3.5.2不想再下载其他包了,就直接使用的Python 3.5.2,(据说>=3.4都可以):

conda create -n mask_rcnn python=3.5.2
3.pip安装包

之前就注意到:
在这里插入图片描述
所以接下来不用按教程一个一个包单独下载,直接使用项目目录下的requirements.txt安装即可,但是经实测,有几点需要注意:

  • 升级好pip:
python -m pip install --upgrade pip
  • 升级好setuptools
python -m pip install --upgrade setuptools
  • 使用requirements.txt安装包
    看下项目目录下的requirements.txt:
    在这里插入图片描述
    经实测,我的机器上直接安装tensorflow>=1.3.0会报和tensorflow_board兼容性错误:
    在这里插入图片描述
    在requirements.txt中直接指定:
tensorflow==1.6.0

可以成功安装(这也是我跑Keras-yolo3的环境),这个问题应该不是普遍的,不报错就不用改。
回到之前,指定tensorflow版本之后,开始安装:

cd 项目目录
python -m pip install -r requirements.txt

这里记录一个“奇怪”的坑:
在windows server上使用Anaconda创建python环境安装requirements.txt时,总是报:

ERROR: Could not find a version that satisfies the requirement tensorflow==1.6.0 (from versions: none)
ERROR: No matching distribution found for tensorflow==1.6.0

更奇怪的是

python -m pip search tensorflow

也没有1.6.0的版本
pip换成Alibaba的源后,又报错:

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output

无语,最后解决:
卸载掉Anaconda32位,安装64位,pip仍使用Tsinghua的源,又ok了。完全可以找到安装1.6.0。

4.下载官方模型

下载好mask_rcnn_coco.h5,下载路径有很多,之前说的REAM.md注意点中就有:在这里插入图片描述
但国内的github下载速度很慢(这个挺大,251M),可以在网上找其他的资源,我就是使用tensorflow版的Mask_RCNN给的百度网盘的链接下载的。
下载好后,放入项目目录。

5.运行demo

官方给的教程建议直接运行项目目录下/samples/demo.ipynb:
在这里插入图片描述
但是由于我没怎么使用过Jupyter notebook(好吧,其实我试了一下,但是Jupyter切换自己使用的kernel总是有问题,索性放弃),也为了更好的适用性,现将demo.ipynb转为demo.py:
在这里插入图片描述
注:ipynb转py指令 —— jupyter noconvert --to script xxx.ipynb,会在当前目录下生成xxx.py。

生成后:
在这里插入图片描述
直接运行:demo.py:
在这里插入图片描述
报错:
在这里插入图片描述
那就安装:

python -m pip install pycocotools

又报错:
在这里插入图片描述
好吧,其实这是个大问题,潜藏在之前提到的注意点中:
在这里插入图片描述
事情是这样的:在demo.ipynb(当然现在是demo.py了,是一回事)中有这么一句:
在这里插入图片描述
即demo.py是调用我们之前下载官方模型——COCO weights即mask_rcnn_coco.h5文件来进行测试,而使用上面也说了:

to train or test on MS COCO install pycocotools

如果要用MS COCO进行训练或测试就必须安装pycocotools这个包,这也是为什么requirements.txt安装没有报错,运行demo.py才报错的原因 —— 你可以不使用mask_rcnn_coco.h5进行训练测试,使用自己的数据训练模型或者其他的模型,这样就不用装pycocotools包。

好了,现在知道为什么要装pycocotools了,那么安装过程中为什么又会报Microsoft Visual C++ 14.0 is required的这个错误呢?
原因其实在上面的注意点的最后一行已经说了:
在这里插入图片描述
安装pycocotools必须要有Microsoft Visual C++ 2015 build tools(其实就是14.0,2015对应14.0)
所以先去安装Microsoft Visual C++ 2015 build tools,这个东西网上可靠的资源还蛮少(某N上很多人利用这个公开资源赚币,嗯), 这里放上两个可靠的资源:
visualcppbuildtools_full.exe
visualcppbuildtools_full.exe

安装好后,继续:

python -m pip install pycocotools

原错误消失,继续报错:
在这里插入图片描述
错误:
Command line error D8021 : invalid numeric argument ‘/Wno-cpp’
解决方案:
不再使用pip在线安装,采用本地编译安装:

  • 下载:cocoapi(内含pycocotools):
    https://github.com/cocodataset/cocoapi
  • 进入PythonAPI文件夹:
    在这里插入图片描述
    修改setup.py文件:
    在这里插入图片描述
    为:
    在这里插入图片描述
    到setup.py目录下,执行:
python setup.py build_ext --inplace

把生成的pycocotools放入conda相应环境下的python的库目录下——%python安装路径%\Lib\site-packages,对于当前的conda环境:
先看环境位置:
在这里插入图片描述
库位置:C:\Users\apple.conda\envs\mask_rcnn\Lib\site-packages,放入:
在这里插入图片描述

解决方案参考:https://blog.csdn.net/qq_29592829/article/details/82877494
其实上面的pycocotools安装方式也是Mask_RCNN的READ.md中建议的:
在这里插入图片描述

6.注释掉get_ipython().run_line_magic()

安装好pycocotools后,回去运行demo.py:

python demo.py

报错:
在这里插入图片描述
报错:get_ipython().run_line_magic(‘matplotlib’, ‘inline’)
查资料知,这是Jupyter notebook执行的语句,将ipynb文件转为py文件执行后就会报此错,粗暴的解决方式是,直接注释掉:
在这里插入图片描述
再次运行,成功!




在这里插入图片描述



Q&A

Q1:既然直接pip install pycocotools会报错,最终还是通过本地安装 —— git cocoapi中本地生成pycocotools包,导入python库,那么我们中间的解决的报错 —— Microsoft Visual C++ 14.0是不是多余的呢? 直接本地安装不就好了?
A1:经实测,不行,如果不安装Microsoft Visual C++ 14.0,那么本地通过cocoapi安装时还是会报错。这也印证了README.md

Q2:安装Microsoft Visual C++ 14.0后,除了还有其他方式安装吗?
A2:有的

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

看命令大致也知道,就是将git cocoapi和pip install命令合在一起,但经实测不起作用(命令行半天没反应,不知道是在下载cocoapi还是哪里出错了),所以只放在这里作为参考

Q3:如果通过Jupyter notebook运行demo.ipynb自然下面这行不会报错:

get_ipython().run_line_magic('matplotlib', 'inline')

A3:但是要先熟悉Jupyter notebook的用法,特别是如何在Jupyter notebook中使用conda环境。

Q4:requirements.txt中tensorflow不是cpu版本的,如果想使用gpu版本的呢?
A4:见我另外一门教程Mask_RCNN入门(三)—— 使用gpu进行训练和测试

  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
mask_rcnn是一种广泛应用于计算机视觉领域的模型,它是在Faster RCNN基础上进行改进得到的。COCO2017是代表微软公司在2017年推出的一个大规模目标检测、分割和关键点检测数据集。 mask_rcnn模型结合了目标检测、实例分割和语义分割的功能,能够检测图像中的多个目标并准确地对每个目标进行分割。在训练过程中,mask_rcnn通过对每个RoI(Region of Interest)应用ROI Align操作,将特征图映射到固定大小的特征图上,然后通过RPN(Region Proposal Network)生成ROIs,并对生成的ROIs进行分类、边界框回归和掩码预测。 COCO2017数据集是一个非常庞大的数据集,包含超过150,000张标记的图像,共80个不同的类别。这些图像涵盖了各种场景,如人、动物、交通工具等。COCO2017数据集在目标检测、分割和关键点检测任务上提供了丰富的标注信息,使得模型能够学习不同类别的目标的特征。 使用mask_rcnn模型在COCO2017数据集上进行训练可以有效地改善图像识别、目标检测和分割任务的性能。通过在训练过程中引入语义分割和掩码预测,mask_rcnn能够更好地理解图像中不同目标的空间关系,从而提供更准确的目标检测和分割结果。此外,COCO2017数据集的丰富标注信息能够帮助模型更好地学习各个类别目标的特征,提高模型在实际场景中的适用性。 总体而言,mask_rcnn模型结合COCO2017数据集可提供更好的目标检测、分割和关键点检测能力,为计算机视觉领域的各种应用提供了强有力的支撑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值