用mask-rcnn训练自己的数据

本文档详细记录了使用Mask-RCNN训练自己数据集的过程,包括环境配置、数据准备、标注工具Labelme的使用,以及16位图像转8位的处理。在Ubuntu16上,作者通过Labelme进行图像标注,然后利用labelme_json_to_dataset工具转换数据,并解决16位掩模到8位掩模的转换问题。训练数据包括原始图片、标注信息和转换后的标签。代码部分主要参考了开源项目,并根据自己的类别进行了适当修改,以适应特定的物体识别任务(如公园道路和立面物体)。
摘要由CSDN通过智能技术生成

这篇是记录用maskrcnn训练自己的数据集,防止以后忘记.

主要参考:

1.https://blog.csdn.net/qq_29462849/article/details/81037343

2.https://github.com/matterport/Mask_RCNN

这个工作需求是识别公园道路和公园的一些立面物体,就是防止公园的无人清扫车碰撞(老板一定要用视觉解决...不要用超声波传感器),因为要识别路面,所以想到用语义分割来做,之前也用过maskrcnn来检测行人,效果很好,所以这次把公园采集到的数据来自己标注,然后训练,标注语义分割数据真是一场灾难!!!!!!!!!下面是我遇到的一些报错,记录一下,参考1其实已经写的很清楚了.但是还是遇到一些问题.

环境Ubuntu16

先下载git上的源码.配置的问题需要自己解决,Ubuntu上不难.

然后在Mask_RCNN/samples/shapes的文件夹下.自己建一个train.py,其实和/data/Mask_RCNN/samples/shapes/train_shapes.ipynb文件基本一样的,只是用惯了pycharm,回不了头用jupyter notebook了,哈哈哈哈.下面是我的shapes的文件夹模样.

主要是train.py train_data文件夹 还有16位图像转8位.py,这几个比较重要,其他的源码都有.

train_data文件夹下是这样的

我先解释数据准备.首先train_data文件夹下有5个文件夹,我是用labelme标注的.首先pic就是就是原图.

然后是json文件夹,这些就是labelme产生的json

然后是labelme_json文件夹,这些就是labelme_json_to_dataset 把json转换成文件夹,当然网上有批量处理的方法,大家可以去参考一些,我的是建立了一个sh命令.我无法修改labelme里面的py文件,可能是因为我的Ubuntu还是有点菜鸡.文件夹里就是基本的5个文件img.png info.yaml label.png label_names.txt label_viz.png

#!/bin/bash
dir=`ls /data/self-sweeper/7.23/json1/`    #定义遍历的目录 
path="/data/self-sweeper/7.23/json1/"      #名字与上一行相同
for i in $dir
do
    labelme_json_to_dataset ${path}$i
    #echo $i
done

最后在train_data里还有2个文件夹,就是16bit和cv2_mask,其实这两个文件夹是一个东西,但是参考1的博主说由于labelme生成的掩码标签 label.png为16位存储,opencv默认读取8位,需要将16位转8位,可通过C++程序转化,代码请参考这篇博文:http://blog.csdn.net/l297969586/article/details/79154150 ,所以16bit文件夹里的就是每个labelme_json文件夹中的json文件夹下的label.png,但是要记得好命名。我先给大家看我的16bit文件夹下的内容

大家可以看到,我的16bit文件夹下的就是每个label.png,这个名字要和上面的都对应好。然后我们需要把16bit转化为8bit,下面是我自己写的代码,很简单,中心思想就一条。

import os
from PIL import Image
import numpy as np

imgs_path = '/data/Mask_RCNN/samples/shapes/train_data/16bit/'
res_path = '/data/Mask_RCNN/samples/shapes/train_data/cv2_mask/'

imgs = sorted(os.listdir(imgs_path))

for img in imgs:
    test = Image.open(imgs_path &#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值