Mask R-CNN上手指南:对象检测和分割实现无人机的检测(一)

简介: Mask R-CNN上手指南:对象检测和分割实现无人机的检测(一)

目标检测是一种计算机视觉技术,用于识别和定位图像中的目标。有很多检测算法存在,这里是对Mask R-CNN的一个很好的总结。

image.png

Mask R-CNN是目标检测的扩展,它为图像中检测到的每个目标生成边界框和分割掩模。这篇文章是关于使用Mask R-CNN训练自定义数据集的指南,希望它能帮助你们中的一些人简化这个过程。

相对Mask R-CNN有更多的了解请参考matterport的示例(资源在文章最后方)

image.png

库和包

算法的主要包是mrcnn。下载库并将其导入到环境中。


!pip install mrcnnfrom mrcnn.config import Config from mrcnn import utils import mrcnn.model as modellib from mrcnn import visualize from mrcnn.model import log

mrcnn还不能与TensorFlow 2.0兼容,所以请确保您恢复到TensorFlow 1.x。因为我是在Colab上开发的,所以我将使用magic函数来恢复到TensorFlow 1.x。这也是TF被诟病的地方,兼容基本靠改。

%tensorflow_version 1.x import tensorflow as tf

在TensorFlow 2.0中,tf.random_shuffle被重命名为tf.random.shuffle,从而导致不兼容问题。通过更改mrcnn代码中的shuffle函数,可以使用TensorFlow 2.0。

使用Colab最好把Keras到以前的版本,如果遇到错误的话,这样才做,没有的话就忽略吧。

!pip install keras==2.2.5

预处理

mrcnn包在接收的数据格式方面相当灵活。我们这里直接处理成NumPy数组。

在此之前,cv2无法正确读取video17_295和 video19_1900。因此,我过滤掉了这些图像并创建了一个文件名列表。

dir = "Database1/"# filter out image that cant be read prob_list = ['video17_295','video19_1900'] # cant read format txt_list = [f for f in os.listdir(dir) if f.endswith(".txt") and f[:-4] not in prob_list] file_list = set([re.match("\w+(?=.)",f)[0] for f in txt_list])# create data list as tuple of (jpeg,txt) data_list = [] for f in file_list:     data_list.append((f+".JPEG",f+".txt"))

接下来要做的事情

  • 检查标签是否存在(某些图像不包含无人机)
  • 读取和处理图像
  • 读取和处理边界框的坐标
  • 可视化目的绘制边界框X,y = [], []
img_box = [] DIMENSION = 128 # set low resolution to decrease training timefor i in range(len(data_list)):     # get bounding box and check if label exist     with open(dir+data_list[i][1],"rb") as f:     box = f.read().split()     if len(box) != 5:         continue # skip data if does not contain labelbox = [float(s) for s in box[1:]]# read imageimg = cv2.imread(dir+data_list[i][0])     img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)# resize img to 128 x 128     img = cv2.resize(img, (DIMENSION,DIMENSION), interpolation= cv2.INTER_LINEAR)# draw bounding box (for visualization purposes)     resize1, resize2 = img.shape[0]/DIMENSION, img.shape[1]/DIMENSION     p1,p2,p3,p4 = int(box[0]*img.shape[1]*resize2), int(box[1]*img.shape[0]*resize1) ,int(box[2]*img.shape[1]*resize2) ,int(box[3]*img.shape[0]*resize1)ymin, ymax, xmin, xmax = p2-p4//2, p2+p4//2, p1-p3//2, p1+p3//2draw = cv2.rectangle(img.copy(),(xmax,ymax),(xmin,ymin),color=(255,255,0),thickness =1)# store data if range of y is at least 20 pixels (remove data with small drones)     if ymax - ymin >=20:         X.append(img)         y.append([ymin, ymax, xmin, xmax])         img_box.append(draw)# convert to numpy arraysX = np.array(X).astype(np.uint8) y = np.array(y) img_box = np.array(img_box)

在转换为NumPy数组之前,我获取数据集的一个子集,作为测试可以减少训练时间。

如果你有计算能力的话,可以省略。

以下是图片:

image.png

目录
相关文章
|
6月前
|
机器学习/深度学习 算法 安全
基于CNN卷积神经网络的口罩检测识别系统matlab仿真
基于CNN卷积神经网络的口罩检测识别系统matlab仿真
|
7月前
|
机器学习/深度学习 算法 数据挖掘
m基于Faster R-CNN网络的烟雾检测系统matlab仿真,带GUI操作界面
m基于Faster R-CNN网络的烟雾检测系统matlab仿真,带GUI操作界面
91 0
|
5月前
CNN+GRU的网络攻击检测识别详细教学
CNN+GRU的网络攻击检测识别详细教学
50 0
CNN+GRU的网络攻击检测识别详细教学
|
7月前
|
机器学习/深度学习 数据采集 监控
m基于CNN卷积神经网络的口罩识别系统matlab仿真,带GUI操作界面,可以检测图片和视频,统计人数
m基于CNN卷积神经网络的口罩识别系统matlab仿真,带GUI操作界面,可以检测图片和视频,统计人数
95 0
|
8月前
|
机器学习/深度学习 数据采集 编解码
使用深度学习模型CNN进行实时情绪检测研究(Matlab代码实现)
使用深度学习模型CNN进行实时情绪检测研究(Matlab代码实现)
100 0
|
10月前
|
机器学习/深度学习 编解码 缓存
两阶段目标检测指南:R-CNN、FPN、Mask R-CNN
两阶段目标检测指南:R-CNN、FPN、Mask R-CNN
133 0
|
11月前
|
机器学习/深度学习 算法 PyTorch
手把手教你使用LabVIEW实现Mask R-CNN图像实例分割(含源码)
前面给大家介绍了使用LabVIEW工具包实现图像分类,目标检测,今天我们来看一下如何使用LabVIEW实现Mask R-CNN图像实例分割。
163 0
|
11月前
|
存储 算法 计算机视觉
【检测|RCNN系列-5】Light-Head R-CNN的稳精度、提速度之路(附论文获取方式)
【检测|RCNN系列-5】Light-Head R-CNN的稳精度、提速度之路(附论文获取方式)
100 0
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
首个目标检测扩散模型,比Faster R-CNN、DETR好,从随机框中直接检测
首个目标检测扩散模型,比Faster R-CNN、DETR好,从随机框中直接检测
135 0
|
11月前
|
机器学习/深度学习 存储 人工智能
用CNN做基础模型,可变形卷积InternImage实现检测分割新纪录!
用CNN做基础模型,可变形卷积InternImage实现检测分割新纪录!
201 0

热门文章

最新文章