转自https://blog.csdn.net/pingushen2100/article/details/80513043

一.Mask-RCNN数据集

1.1 训练Mask-RCNN用的到的文件有三种:原图像(jpg),mask(png),info.yaml

也就是训练的训练图像,掩模(mask),info.yaml里存放的是label的名字:分为背景,物体1,物体2.......的名字

1.2  图像的重命名:

1.3这里我们先创建一个叫train的文件夹,在文件里存放训练的文件图像(之后的操作基本都在这里面)

我的训练图像格式是bmp格式的,所以先转格式---使用以下python脚本

    #-*- coding:utf-8 -*-
from PIL import Image
import os
import glob
os.chdir(r'./')#图片所在文件夹
for file_names in glob.glob('*.bmp'):#找出所有的后缀为bmp的格式的图片
print(file_names)
file_path = r'./'+'//'+file_names#拼接出图片的完整url
print(file_path)
out_path = os.path.splitext(file_path)[0]+'.jpg'
Image.open(file_path).save(out_path)
print('转换成功')

把脚本放在图片所在文件夹,在当前文件夹下打开终端:   sudo python3   脚本名字.py  即可

1.4  labelme图像标注工具

    Github链接:             https://github.com/wkentaro/labelme

注意事项:在train下新建一个json文件夹用于labelme生成的json文件

1.5编写    .sh 脚本 去生成标签等数据  我这里是20张图,21这个参数根据自己的设定

    #!/bin/bash
s1="/home/attach/datasets/train/json/rgb_"
s2=".json"
for((i=1;i<21;i++))
do
s3=${i}
labelme_json_to_dataset ${s1}${s3}${s2}
done
                        

1.6rgb_X_json里面的label是16位深的,而opencv读取的是8位的,所以新建一个mask文件夹用于生成label.png

    #include <iostream>
#include <opencv2/opencv.hpp>
#include <string>
#include <stdio.h>
using namespace std;
using namespace cv;
int main(void){
char buff1[100];
char buff2[100];
for(int i=1;i<21;i++){
sprintf(buff1,"/home/attach/datasets/train/json/rgb_%d_json/label.png",i);
sprintf(buff2,"/home/attach/datasets/train/mask/%d.png",i);
Mat src;
src=imread(buff1,CV_LOAD_IMAGE_UNCHANGED);
Mat ff=Mat::zeros(src.rows,src.cols,CV_8UC1);
for(int k=0;k<src.rows;k++){
for(int kk=0;kk<src.cols;kk++){
int n=src.at<ushort>(k,kk);
ff.at<uchar>(k,kk)=n;
}
}
imwrite(buff2,ff);
}
return 0;
}

这是个opencv的C++,你可以在Windows下转换,也可以在Ubuntu下:

使用如下命令:

 sudo g++ tran16_8.cpp -lpthread -o  tran16_8 `pkg-config --cflags --libs opencv`

2.最后补充

新建rgb用于存放训练的rgb_x.jpg

Mask-RCNN训练的图像需要是2的倍数(困惑,你知道了告诉我哈~)

以下放出两个resize的python脚本

resizejpg的,放在rgb文件夹下,在rgb下打开终端直接运行:(sudo python3   你的脚本名字.py)

    #-*- coding:utf-8 -*-
from PIL import Image
import os.path
import glob
def convertjpg(jpgfile,outdir,width=512,height=512):
img=Image.open(jpgfile)
try:
new_img=img.resize((width,height),Image.BILINEAR)
new_img.save(os.path.join(outdir,os.path.basename(jpgfile)))
except Exception as e:
print(e)
for jpgfile in glob.glob("./*.jpg"):
convertjpg(jpgfile,"./")

resizepng的脚本是放在mask文件夹下运行:

    #-*- coding:utf-8 -*-
from PIL import Image
import os.path
import glob
def convertpng(pngfile,outdir,width=512,height=512):
img=Image.open(pngfile)
try:
new_img=img.resize((width,height),Image.BILINEAR)
new_img.save(os.path.join(outdir,os.path.basename(pngfile)))
except Exception as e:
print(e)
for pngfile in glob.glob("./*.png"):
convertpng(pngfile,"./")

当你看到这里的时候,恭喜你!你的Mask-RCNN数据集做好了

最后的小tips:放在rgb   mask 跑的脚本记得去掉,不然训练的时候读取会报错out of range噢!

Mask-RCNN数据集制作的更多相关文章

  1. 目标检测网络之 Mask R-CNN

    Mask R-CNN 论文Mask R-CNN(ICCV 2017, Kaiming He,Georgia Gkioxari,Piotr Dollár,Ross Girshick, arXiv:170 ...

  2. Mask RCNN 源码阅读(update)

    之前看了Google官网的object_dectect 的源码,感觉Google大神写的还不错.最近想玩下Mask RCNN,就看了下源码,这里刚好当做总结和梳理.链接如下: Google官网的obj ...

  3. Mask RCNN 学习笔记

    下面会介绍基于ResNet50的Mask RCNN网络,其中会涉及到RPN.FPN.ROIAlign以及分类.回归使用的损失函数等 介绍时所采用的MaskRCNN源码(python版本)来源于GitH ...

  4. Mask R-CNN详解和安装

    Detectron是Facebook的物体检测平台,今天宣布开源,它基于Caffe2,用Python写成,这次开放的代码中就包含了Mask R-CNN的实现. 除此之外,Detectron还包含了IC ...

  5. [代码解析]Mask R-CNN介绍与实现(转)

    文章来源 DFann 版权声明:如果你觉得写的还可以,可以考虑打赏一下.转载请联系. https://blog.csdn.net/u011974639/article/details/78483779 ...

  6. [Network Architecture]Mask R-CNN论文解析(转)

    前言 最近有一个idea需要去验证,比较忙,看完Mask R-CNN论文了,最近会去研究Mask R-CNN的代码,论文解析转载网上的两篇博客 技术挖掘者 remanented 文章1 论文题目:Ma ...

  7. 物体检测丨从R-CNN到Mask R-CNN

    这篇blog是我刚入目标检测方向,导师发给我的文献导读,深入浅出总结了object detection two-stage流派Faster R-CNN的发展史,读起来非常有趣.我一直想翻译这篇博客,在 ...

  8. 谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN

    谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN 朱晓霞发表于目标检测和深度学习订阅 235 广告关闭 11.11 智慧上云 云服务器企业新用户优先购,享双11同等价格 ...

  9. Windows上配置Mask R-CNN及运行示例demo.ipynb

    最近做项目需要用到Mask R-CNN,于是花了几天时间配置.简单跑通代码,踩了很多坑,写下来分享给大家. 首先贴上官方Mask R-CNN的Github地址:https://github.com/m ...

  10. 终极指南:构建用于检测汽车损坏的Mask R-CNN模型(附Python演练)

    介绍 计算机视觉领域的应用继续令人惊叹着.从检测视频中的目标到计算人群中的人数,计算机视觉似乎没有无法克服的挑战. 这篇文章的目的是建立一个自定义Mask R-CNN模型,可以检测汽车上的损坏区域(参 ...

随机推荐

  1. CS299笔记:广义线性模型

    指数分布族 我们称一类分布属于指数分布族(exponential family distribution),如果它的分布函数可以写成以下的形式: \[ \begin{equation} p(y;\et ...

  2. 老项目迁移到springboot之后,上线服务器出现404的解决方法

    原因是老项目迁移到springboot之后,已经不再使用web.xml的配置了,但是WEB-INF目录下还有web.xml,所以才导致的404,所以只需要在源码处删除整个WEB-INF重新build即 ...

  3. 牛客OI周赛4-提高组-C-战争[并查集]

    题意 一个长度为 \(n\) 的序列,每个权值互不相同,给出形如 \(l,r,p\) 的信息表示 \([l,r]\) 区间中最小的数是 \(p\) ,问第几个信息开始出现矛盾. \(n\leq 5 \ ...

  4. mybatis 初步使用(IDEA的Maven项目, 超详细)

    目录 创建 Maven 项目 Maven配置 pom.xml 创建数据库 配置Mybatis 配置mybatis的XML文件 创建实体类和对应的Mapper.xml 测试 源码 @ 创建 Maven ...

  5. uwsgi+django架构程序内部无法获取全局变量

    近期开发了一个djangoi程序,用django自带的python manage.py runserver 0.0.0.0:80 运行方式无任何问题,但用django+nginx+uwsg部署运行有时 ...

  6. 阿里云ECS服务器源配置

    前段时间领取了阿里云ECS免费试用6个月的福利,此处记录一下服务器源配置过程和服务器用户创建过程. 一.CentOS源配置 1.备份 mv /etc/yum.repos.d/CentOS-Base.r ...

  7. 镜像仓库管理:与Portus不得不说的那些事

    背景: 目前在做一个云计算相关的项目,其中有这样一个需求:每个平台用户都有自己的docker镜像仓库(docker registry),用户可以对自己的镜像仓库的push/pull权限进行管理,也就是 ...

  8. 关于如何在Tomcat中使用JavaBean

    对于没有使用myeclipse,NetBean等IDE工具的用户,如果在编写JSP时,用到了java文件,就必须配置JAVAbean了,网上也有很多在Tomcat中配置JAVABean的例子,这里我简 ...

  9. Linux下C语言编程基础学习记录

    VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...

  10. SDN交换机迁移2

    关于迁移过程中迁移目标(被迁移的交换机和目标控制器)的选择 SDN中基于过程优化的交换机竞争迁移算法 通信学报 交换机:请求速率大于域内平均请求速率的交换机集合: 控制器:综合网络中时延.流量和控制器 ...