Windows运行MaskRCNN时遇到的问题及解决方法

运行demo.ipynb

1. No module named ‘imgaug’

解决方法:pip3 install imgaug
注意:一定要是pip3,不能使用pip,否则在jupyter中运行时还是会跳error。

2. No module named ‘pycocotools’

解决方法:
直接运行pip install pycocotools会报错。

  1. 方法一:在https://github.com/philferriere/cocoapi下载源代码后解压,管理员CMD中cd到\coco-master\PythonAPI,运行python setup.py build_ext install,即可完成安装
  2. 方法二:(优先使用)先安装git,科学上网并运行conda install git
    安装好git再运行pip install git+https://github.com/philferriere/cocoapi.git#egg=pycocotools^&subdirectory=PythonAPI
    (该方法在我的电脑上安装失败,应该是网络问题,卡住不动)

3. Pycocotools等工具包安装成功后依然无法调用

问题解释及原因:
在虚拟环境中安装了pycocotools工具包后在jupyter中依然显示No module named ‘pycocotools’,但在cmd中虚拟环境下则可以调用。
说明Jupyter调用的python不是虚拟环境中的python,验证方法:在cmd中打开Python,分别运行import syssys.executable,显示python位置为虚拟环境中python,而在Jupyter中运行则显示python为base环境中的python。
我理解的原因是(不一定对):Jupyter内核调用的Python位置不对。

解决方法:(目前并未完全解决,只是能让该pycocotools调用)

  1. 方法一(失败):最开始以为更改Jupyter调用kernel就可以解决,即在Jupyter中使用虚拟环境,python -m ipykernel install --user --name=环境名。此处环境名为你的“虚拟环境”名称,但是实践后该方法不行,kernel切换到虚拟环境后查看python路径,依然不是虚拟环境中的。
  2. 方法二(失败):第一个方法失败后,我又找到另一种可以更改python路径的方法,即cmd中运行ipython kernelspec list,查看已有kernel的路径,按照其路径指示打开你所需要修改的虚拟环境的路径下kernel.json文件,将其中的路径改为你虚拟环境下的python.exe,例如:D:\\Software\\Anaconda3\\envs\\tf\\python.exe
    按照这个方法改了以后,重启Jupyter后发现切换至虚拟环境后无法启动服务,遂失败,还是将kernel.json文件改回原路径。
  3. 方法三(可以运行,但治标不治本):思路是既然Jupyter下python调用的为base环境下的python,那在base环境下安装一个pycocotools就行了,安装后果然可以调用,暂时解决该问题。

运行train_shapes.ipynb

1. ‘Model’ object has no attribute ‘metrics_tensors’

解决方案:将mrcnn\model.py文件中第2199行self.keras_model.metrics_tensors.append(loss)改成self.keras_model.metrics.append(loss)即可。
原文引用地址:https://github.com/keras-team/keras-applications/issues/145

2. CUDA Error(SHINELON-X6)

原因:分析为TensorFlow的版本与CUDA和cudnn版本导致所致。
解决方案:多次尝试,最终选用TensorFlow-GPU==1.13.2版本,CUDA10.0.130_411.31,cudnn-10.0-v7.5.0.56,终于可以正确调用GPU。

3.AttributeError: module ‘tensorflow.python.keras.backend’ has no attribute ‘get_graph’

原因:keras与tensorflow-gpu版本不兼容
解决方案:我的tensorflow-gpu版本为1.10.0,此时pip install keras==2.2.0 即可解决。

Labelme生成数据集

1. 操作步骤

  • 安装教程:https://github.com/wkentaro/labelme
  • 运行:cmd中输入labelme即可运行。
  • 标注后会生成*.json文件。
  • 单个json文件生成数据集:
    labelme_json_to_dataset <文件名>.json
    
  • 批量json文件生成数据集:
    import os
    path = 'D:/label'  # path为json文件存放的路径
    json_file = os.listdir(path)
    os.system("activate labelme")
    for file in json_file: 
        os.system("labelme_json_to_dataset.exe %s"%(path + '/' + file))
    
  • 数据集文件夹的形式:
    Windows运行MaskRCNN时遇到的问题及解决方法_第1张图片
    cv2_mask文件夹下存放mask文件
    json文件夹下存放labelme生成的json文件
    labelme_json文件夹下存放json文件转换生成的文件夹
    pic文件夹下存放原图
    • mask文件生成方法:MaskRCNN训练自己的数据集 小白篇

2. 报错解决方法

  • TypeError: rectangle() got an unexpected keyword argument 'width'
    解决方法:pip install Pillow==5.3.0
  • 生成数据集的json文件夹缺少info.yaml文件
    解决方法:labelme:缺少生成"info.yaml"文件

你可能感兴趣的:(python,深度学习,git)