运行demo.ipynb
1. No module named ‘imgaug’
解决方法:pip3 install imgaug
注意:一定要是pip3,不能使用pip,否则在jupyter中运行时还是会跳error。
2. No module named ‘pycocotools’
解决方法:
直接运行pip install pycocotools
会报错。
- 方法一:在
https://github.com/philferriere/cocoapi
下载源代码后解压,管理员CMD中cd到\coco-master\PythonAPI
,运行python setup.py build_ext install
,即可完成安装 - 方法二:(优先使用)先安装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 sys
、sys.executable
,显示python位置为虚拟环境中python,而在Jupyter中运行则显示python为base环境中的python。
我理解的原因是(不一定对):Jupyter内核调用的Python位置不对。
解决方法:(目前并未完全解决,只是能让该pycocotools调用)
- 方法一(失败):最开始以为更改Jupyter调用kernel就可以解决,即在Jupyter中使用虚拟环境,
python -m ipykernel install --user --name=环境名
。此处环境名
为你的“虚拟环境”名称,但是实践后该方法不行,kernel切换到虚拟环境后查看python路径,依然不是虚拟环境中的。 - 方法二(失败):第一个方法失败后,我又找到另一种可以更改python路径的方法,即cmd中运行
ipython kernelspec list
,查看已有kernel的路径,按照其路径指示打开你所需要修改的虚拟环境的路径下kernel.json文件,将其中的路径改为你虚拟环境下的python.exe,例如:D:\\Software\\Anaconda3\\envs\\tf\\python.exe
。
按照这个方法改了以后,重启Jupyter后发现切换至虚拟环境后无法启动服务,遂失败,还是将kernel.json文件改回原路径。 - 方法三(可以运行,但治标不治本):思路是既然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))
- 数据集文件夹的形式:
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"文件