Mask R-CNN对象检测和分割实现对无人机检测

Github上发布了何凯明的Mask R-CNN目标检测和对象分割Keras和TensorFlow的实现代码。

这个实现基于Python 3、Keras和TensorFlow。模型对图片中的每个对象实例生成包围框(bounding boxes)和分割掩膜(segmentation masks)。基于特征金字塔网络(FPN)和ResNet101的主干(backbone)

Mask R-CNN对象检测和分割实现对无人机检测_第1张图片

github仓库包含以下内容:

建立在FPN和ResNet101上的Mask R-CNN源代码

MS COCO上的训练代码

MS COCO上的预训练权重

可视化每一步的训练管道(pipline)的Jupyter notebooks

用于多GPU训练的并行类

MS COCO上的指标评估

在你自己的数据集上训练的例子

源代码有注释而且设计得易于扩展。如果你在你的研究中用了这些代码,请引用本仓库。如果你从事3D视觉,你可能会觉得我们最近发布的Matterport3D数据集对你有用。

Mask R-CNN对象检测和分割实现对无人机检测_第2张图片

更多参考:https://github.com/matterport/Mask_RCNN

下面我们要来讲讲对无人机实现检测和分割

首先下载数据标注工具:https://github.com/abreheret/PixelAnnotationTool

Mask R-CNN对象检测和分割实现对无人机检测_第3张图片

该工具将分别为每个原始图像生成三个图像

IMAGENAME_color_mask.png

IMAGENAME_mask.png

IMAGENAME_watershed_mask.png

这里共有546张图片。测试数据是每秒25帧的视频文件。最后一个注释完成后,我们需要IMAGENAME_color_mask.png文件。

需要将其重命名为:

IMAGENAME.png

Mask R-CNN对象检测和分割实现对无人机检测_第4张图片

Dataset folder数据集文件夹

Annotations folder注释文件夹,用于存储注释后的蒙版数据

JPEGImages文件夹,其中包含原始JPG图像

Train_data_dir运行脚本以创建tf记录文件所在的目录

Label_map.pbtxt数据分类JSON描述,这里是固定翼无人机的分类

创建tf记录数据,

首先你需要下载脚本文件create_mask_rcnn_tf_record.py,下载地址是:

https://github.com/vijendra1125/Custom-Mask-RCNN-using-Tensorfow-Object-detection-API

放置在tensorflow对象检测API框架中

研究\ object_detection\ dataset_tools

在目录下,然后打开修改后的代码行的第57行,并且必须正确索引标记的每个对象掩码。

然后运行如下

您将获得生成的tf记录文件。

上述数据标注和生成过程仅适用于单个对象标记。如果有多个对象,请首先使用labelImg标记框,生成XML标签文件,然后通过PixelAnnotation生成掩码数据。

其次迁移学习

要使用迁移学习训练Mask-RCNN来实现自定义对象检测,首先需要预训练模型。这里使用的预训练模型是:

Mask_rcnn_inception_v2_coco

下载地址是:

Http://download.tensorflow.org/models/object_detection/mask_rcnn_inception_v2_coco_2018_01_28.tar.gz

修改pipeline_config文件

从object_detection \ samples \ configs文件夹中查找相应的配置文件。

mask_rcnn_inception_v2_coco.config

将所有PATH_TO_BE_CONFIGURED更改指向实际路径,然后根据需要调整以下参数。

Keep_aspect_ratio_resizer

-min_dimension

-max_dimension

改为600

-num_classes字段的值更改为1,

表示我们只有一个类别

要防止在训练期间由资源耗尽导致的内存溢出错误,请将以下属性添加到train_config块。

Batch_queue_capacity:150

Num_batch_queue_threads:8

Prefetch_queue_capacity:10

Gradient_clipping_by_norm:10.0

保存配置文件后,运行以下命令行以开始训练。

通过tensorboard查看培训

Mask R-CNN对象检测和分割实现对无人机检测_第5张图片

Mask R-CNN对象检测和分割实现对无人机检测_第6张图片

在训练结果之后,运行以下脚本以导出pb文件。

使用导出的pb文件,测试结果如下

Mask R-CNN对象检测和分割实现对无人机检测_第7张图片

相关源码关注微信公众号:“图像算法”或者微信搜索账号imalg_cn关注公众号

你可能感兴趣的:(图像算法,Mask,R-CNN,R-CNN,图像算法,Python,目标检测)