文章目录
1、源码以及数据下载、与修改
1.1、Mask Rcnn源码下载
Mask Rcnn官方源码及其数据集下载
Mask Rcnn源码主页面
Source code (zip):源码压缩包下载。
balloon_dataset.zip:气球数据集,里面的图片并不是很多,几十张。
mask_rcnn_balloon.h5:训练好的气球数据集权重。
mask_rcnn_coco.h5:基于mask rcnn训练好的coco数据集的权重,但是这个我在官网没有找到。下面给出我百度网盘的分享:
mask_rcnn_coco.h5:下载链接如下:
链接:https://pan.baidu.com/s/1k0IhAh-H8HYsKl7t9C6jAQ
提取码:bu1r
--来自百度网盘超级会员V4的分享
具体存放路径如下图所示:
1.2、源码的部分修改
1.2.1、ballon.py文件的修改:
把–dataset、–weights、–logs改为自己当前数据的绝对路径、以及logs文件的绝对路径。
if __name__ == '__main__':
import argparse
# Parse command line arguments
parser = argparse.ArgumentParser(
description='Train Mask R-CNN to detect balloons.')
parser.add_argument("command",
metavar="<command>",
help="'train' or 'splash'")
parser.add_argument('--dataset', required=False,
metavar="C:/Users/Administrator/PycharmProjects/PYTORCH/Deep_eye/Target_detection/Mask_RCNN_master/balloon",
help='Directory of the Balloon dataset')
parser.add_argument('--weights', required=True,
metavar="C:/Users/Administrator/PycharmProjects/PYTORCH/Deep_eye/Target_detection/Mask_RCNN_master/mask_rcnn_balloon.h5",
help="Path to weights .h5 file or 'coco'")
parser.add_argument('--logs', required=False,
default=DEFAULT_LOGS_DIR,
metavar="C:/Users/Administrator/PycharmProjects/PYTORCH/Deep_eye/Target_detection/Mask_RCNN_master/logs", # /path/to/logs/
help='Logs and checkpoints directory (default=logs/)')
parser.add_argument('--image', required=False,
metavar="C:/Users/Administrator/PycharmProjects/PYTORCH/Deep_eye/Target_detection/Mask_RCNN_master/balloon/val/14898532020_ba6199dd22_k.jpg",
help='Image to apply the color splash effect on')
parser.add_argument('--video', required=False,
metavar="path or URL to video",
help='Video to apply the color splash effect on')
args = parser.parse_args()
1.2.2、ballon.py-配置的添加
- 首先点击:如下图所示:
1.2.2.1 训练配置参数
- 进入后再Parameters中添加相应配置:我添加的配置如下:
train --dataset=C:/Users/Administrator/PycharmProjects/PYTORCH/Deep_eye/Target_detection/Mask_RCNN_master/balloon --weights=coco
–dataset:在这里我先写入的是我存放气球数据集balloon文件夹的路径。
–weights:指的是初始化权重用的是coco数据集训练好的权重参数。如果有更好的训练权重参数,可以替换。这里也可以把coco换成存放coco权重文件的绝对路径。
1.2.2.2 训练配置参数
配置方法与上面测试过程一样。
splash --weights=C:/Users/Administrator/PycharmProjects/PYTORCH/Deep_eye/Target_detection/Mask_RCNN_master/mask_rcnn_balloon.h5 --image=C:/Users/Administrator/PycharmProjects/PYTORCH/Deep_eye/Target_detection/Mask_RCNN_master/balloon/val/14898532020_ba6199dd22_k.jpg
image:后面可以换成自己想检测图片的路径。
2、Mask Rcnn虚拟环境配置
2.1、尝试过跑不通的环境(避坑)
2.1.1、tensorflow2.0以上的环境
本人首先尝试的是python3.7版本:具体配置如下:
tensorflow:pip install tensorflow2.5
keras:pip install keras2.4.3
以及最新版本的tensorflow。。。。,但是都没泡跑通。
2.1.2、采用源码给的环境
这种方法大家也可以试试,下面是版本对应 和我为啥放弃这种方案。
conda create -n name python3.4
tensorflow:pip install tensorflow1.3
keras:pip install keras2.0.8
这种环境我在安装python3.4虚拟环境后,再安装tensorflow时,显示pip要更新,更新是小事,但是我尝了网上的多种办法都没有解决所以我放弃了这种方案,也建议大家去尝试一下,毕竟是官方的运行环境,是最匹配的。
官方给的配置如下图:
2.2、本人成功运行的配置
1.虚拟环境安装:
conda create -n name python==3.6
2.tensorflow安装:
pip install tensorflow==1.5
3.keras安装 :
pip install keras==2.1.6
4.安装scikit-image
pip install scikit-image==0.17.2
5.安装pycocotools
这个安装网上大多数安装教程都需要安装VS_Code,所以我感觉着这种方法很麻烦,所以找到了一篇 安装pycocotools很好的博客。直接下载清华源的pycocotools到,你当前anaonda的虚拟环境的lib下(比如我的是D:\ProgramData\Anaconda3\envs\mask\Lib),然后pip install 就ok了。下载链接:Links for pycocotools-windows
python是3.6版本,所以选用cp36
pycocotools_windows-2.0.0.2-cp36-cp36m-win_amd64.whl
安装命令如下:
pip install D:\ProgramData\Anaconda3\envs\mask\Lib、pycocotools_windows-2.0.0.2-cp36-cp36m-win_amd64.whl也有一种可能安装成功了,但不能使用,那就必须再安装一个VScode,但本人安装后程序运行是没问题的。
3、程序运行时遇到的报错
3.1、One
报错:AttributeError: ‘str’ object has no attribute 'decode’
解决方法:
pip install h5py==2.8.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
h5py的版本可以更换。
3.2、Two
报错:AttributeError:module ‘keras.engine.topology’ has no attribute 'load_weights_from_hdf5_group_by_name
这个错误是在本人安装tensorflow==2.0以上版本运行后报错的,出现这一类的类似 问题一般都是tensorflow和keras版本不对应导致的,版本对应后,不会报这种错误。
3.3、Three
报错:tensorflow.python.framework.errors_impl.OperatorNotAllowedInGraph:using a tf.Tensor as a Python bool is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.
这种问题出也是出现在我安装tensorflow-gpu2.0以上版本出现的,如果这个问题解决了,那么也是可以把mask-Rcnn跑通的,但是我搜寻了很久,也没有解决相关问题的方法。我之后尝试过安装过5种不同的2.0以上版本的tensorflow-cpu或-gpu都会出现这种错误。
所以我认为这种错误是tensorflow版本相对较高导致的
3.5、Four
在过程中还有出现过其他形式的报错,但是这些报错无需担心,通过百度或CSDN就能快速解决,是比较常见的错误。
4、最后训练展示
每个epoch保存一次权重参数(如下图:)
测试检测效果
原图:
测试后: