当前位置:   article > 正文

Mask rcnn训练、测试自己的数据集(多目标检测)_maskrcnn目标检测自己的数据集

maskrcnn目标检测自己的数据集

前言

参考的代码Mask_Rcnn
修改后的文件目录:
在这里插入图片描述

1. 数据集制作

1.1 数据集准备

1.1.1 样本

网上随便找的猫、狗、牛图片,有8张图(图名字和尺寸都需要统一格式),我用的数据集不是这个,目前项目没做完,所以就用这些图做个示范,主要用来记录这个过程,免得忘了!!!

1.1.2 rename.py 重命名

# -*- coding: utf-8 -*-

import os
path = "C:/Users/Administrator/Desktop/Mask_RCNN-master/make_dataset/jpg"

# 改名字和后缀
filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹)

count=1
for file in filelist:
    print(file)
for file in filelist:   #遍历所有文件
    Olddir=os.path.join(path,file)   #原来的文件路径
    if os.path.isdir(Olddir):   #如果是文件夹则跳过
        continue
    filename=os.path.splitext(file)[0]   #文件名
    filetype=os.path.splitext(file)[1]   #文件扩展名
    # Newdir=os.path.join(path+str(count)+'.png')  #用字符串函数zfill 以0补全所需位数
    Newdir=os.path.join(path,str(count).zfill(6)+'.jpg')
    os.rename(Olddir,Newdir)#重命名
    count+=1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

1.1.3 resize.cpp 统一图片的尺寸

可以用python的opencv,我是正好在做c++ opencv相关的东西,就用这个做了。

#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <iostream>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>


using namespace std;
using namespace cv;
using namespace cv::xfeatures2d;


int main() {
	String path = "C:/Users/Administrator/Desktop/Mask_RCNN-master/make_dataset/jpg/";        //待处理图片文件夹地址
	String dest = "C:/Users/Administrator/Desktop/Mask_RCNN-master/make_dataset/jpg/";    //处理后图片的保存地址
	String savedfilename;
	vector<cv::String> filenames;
	glob(path, filenames); //opencv里面用来读取指定路径下文件名的一个很好用的函数
	int num = filenames.size();
	printf("The number of file is %d", num);
	for (int k = 0; k < filenames.size(); k++)
	{
		Mat src = imread(filenames[k]);
		resize(src, src, Size(448, 512));
		int len = path.length();
		savedfilename = dest + filenames[k].substr(len);
		imwrite(savedfilename, src);

		waitKey(30);
	}
	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

在这里插入图片描述

1.2 labelme标记得到json文件

安装和基本使用参考 labelme标记
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.3 json_to_dataset.py将json文件转为label.png

import argparse
import json
import os
import os.path as osp
import warnings
 
import PIL.Image
import yaml
# import draw
from labelme import utils
import base64
 
def main():
    count = os.listdir("./before/") 
    for i in range(0, len(count)):
        path = os.path.join("./before", count[i])

        if os.path.isfile(path) and path.endswith('json'):
            data = json.load(open(path))
            
            if data['imageData']:
                imageData = data['imageData']
            else:
                imagePath = os.path.join(os.path.dirname(path), data[
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/520682
推荐阅读
相关标签
  

闽ICP备14008679号