官网说明地址:点击此处
------------------------------------------------------------------------------------------------
1. 准备数据集
法1:网上寻找标准数据集
法2:自己制作
1) 寻找图片
寻找75张(自定义数目)包含目标的图片,把它划分为训练集和验证集。最好整理成如下文件夹:
问:为什么不需要一百万张图片来训练一个深层的学习模型?
答:主要依靠以下两个要点来显著降低我的训练要求:
a. 迁移学习,加载coco数据集的训练权重,再继续训练自己的数据集。
b. 不要求高精度,因此用小数据集即可。
2) 标注数据集
本文使用的工具:VIA (VGG Image Annotator)
a. 下载 制作工具:HTML 文件
b. 工具使用
* 打开 via.html
* 加载图片文件夹:
Project → Add local files,选择需要标注的图片
* 选定目标区域:
—— 矩形、圆形和椭圆形:按下鼠标左键 —> 拖动鼠标光标 —> 释放鼠标按钮。
—— 点:单击以定义点。
—— 多边形与直线:单击定义顶点 —> 双击/enter 完成 或者 Esc 取消
* 创建属性 (一般多类目标检测需要,单类目标检测可不用)
在左边的 Attributes 控制版上—> 选择 Region Attributes 选项卡 ——> 按下 '+' 号,填写需要的属性名称
* 创建属性的类别
给每个标签选择type类型——>为该type添加选项 (id) ——>然后就可以为图中每个选定的目标区域选择特定的属性类别,即为标签
如果要分别编辑每个目标的属性,点击Toggle Annotation Editor
备注:在coco数据集中,这个id很重要,所以如果要训练多分类网络,务必给每个目标区域标注ID。
* 导出标注文件
每张图片都标注完成后,在顶部菜单栏: Annotations → Export annotations ——> 此时本地 document 文件夹下会多一个 via_region_data.json 文件(这次项目下所有图片的标注情况全被记录在这个文件里)——> 将他放到采集的数据集的 train 文件夹中
-------------------------------------------------------------------------------------------------
以下内容需要的代码均在balloon文件夹下。为了使用方便,inspect_balloon_data.ipynb 和 inspect_balloon_model.ipynb 被转换成 .py文件,转换方法见:点击此处 .
------------------------------------------------------------------------------------------------
2. 验证数据集
a. 修改代码的对应名称
代码作者将适用于coco数据集的 inspect_data.py 文件改成了 适用于 Balloons 数据集的 inspect_balloon_data.py
b. 修改代码的数据集目录
将 inspect_balloon_data.py 文件中的数据集目录换为自己收集的数据集母目录:
c. 修改引用代码的语法
因为新版本的标注数据集的工具VIA中,"regions" 由原来的字典 dict 变成了list:
原来:
现在:
又因为 list 没有.values 属性,需要将 balloon.py 中的
polygons = [r['shape_attributes'] for r in a['regions'].values()]
改为:
polygons = [r['shape_attributes'] for r in a['regions']]
d. 运行
运行,即可得到各个阶段的检测结果
-------------------------------------------------------------------------------------
3. 训练
a. 修改训练文件中的层数
1) 根据mrcnn文件夹中的utils文件里,add_class函数定义:
2) 在训练文件balloon.py中增加层数(中间为标注时对应的目标id):
3) 修改预训练模型目录
4) 在终端训练:
cd PycharmProjects/Mask_RCNN/samples/mountain #打开文件位置
python balloon.py train --dataset=/home/xupp/PycharmProjects/Mask_RCNN/datasets/mountain3 --weights=coco #用coco预训练参数训练
5) 检查结果:
修改demo.py,修改根目录,训练好的模型位置(默认在logs中,将最新的模型移动到该位置,并修改名称为 mask_rcnn_balloon),测试图片位置