• Mask-RCNN数据集制作


    转自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噢!

  • 相关阅读:
    boboJavaScript中innerHTML,innerText,value
    bobo JS中document.write(" ");
    bobo window.location.href
    bobojQuery选择器总结
    bobo jquery attr()方法
    bobowindow.location.hash 属性使用说明
    bobo$(function(){})和$(document).ready(function(){})
    bobo使用jQuery解析JSON数据
    MyBatis实现CRUD操作
    第一个MyBatis程序
  • 原文地址:https://www.cnblogs.com/MY0213/p/9568862.html
Copyright © 2020-2023  润新知