Unet如何制作自己的训练集

这篇博客介绍了如何利用LabelMe工具制作自定义的UNET训练数据集。首先在CMD中激活虚拟环境并安装LabelMe,然后打开软件对图像进行标注。完成后,通过Python脚本将JSON文件转换为图像和对应的像素标签。注意,`classes`变量应根据实际图像内容进行调整。最终,你将得到用于UNET训练的图像和标签文件。
摘要由CSDN通过智能技术生成

最近一直在学unet,所以分享一个如何做一个自己想要的训练集,而不是去从网上找的博客。
首先打开cmd
在这里插入图片描述
输入你自己的虚拟环境,我是在base直接把所有环境都安好了,就不想在创建虚拟环境在安装了。
然后

pip install labelme==3.16.7

在这里插入图片描述
下载好了之后直接输入labelme
在这里插入图片描述

这就是打开后的样子
然后对所选择的图形进行描图,就像这样
在这里插入图片描述
最后他会在你的指定文件下生成一个josn文件,你现在还不能直接打开这个josn文件,需要运行代码

import argparse
import base64
import json
import os
import os.path as osp
import warnings

import numpy as np
import PIL.Image
import yaml
from labelme import utils


if __name__ == '__main__':
    jpgs_path = "datasets/JPEGImages"
    pngs_path = "datasets/SegmentationClass"
    classes = ["_background_", "aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow",
               "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train",
               "tvmonitor"]
    # classes = ["_background_","cat","dog"]

    count = os.listdir("./datasets/before/")
    for i in range(0, len(count)):
        path = os.path.join("./datasets/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['imagePath'])
                with open(imagePath, 'rb') as f:
                    imageData = f.read()
                    imageData = base64.b64encode(imageData).decode('utf-8')

            img = utils.img_b64_to_arr(imageData)
            label_name_to_value = {'_background_': 0}
            for shape in data['shapes']:
                label_name = shape['label']
                if label_name in label_name_to_value:
                    label_value = label_name_to_value[label_name]
                else:
                    label_value = len(label_name_to_value)
                    label_name_to_value[label_name] = label_value

            # label_values must be dense
            label_values, label_names = [], []
            for ln, lv in sorted(label_name_to_value.items(), key=lambda x: x[1]):
                label_values.append(lv)
                label_names.append(ln)
            assert label_values == list(range(len(label_values)))

            lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)

            PIL.Image.fromarray(img).save(osp.join(jpgs_path, count[i].split(".")[0] + '.jpg'))

            new = np.zeros([np.shape(img)[0], np.shape(img)[1]])
            for name in label_names:
                index_json = label_names.index(name)
                index_all = classes.index(name)
                new = new + index_all * (np.array(lbl) == index_json)

            utils.lblsave(osp.join(pngs_path, count[i].split(".")[0] + '.png'), new)
            print('Saved ' + count[i].split(".")[0] + '.jpg and ' + count[i].split(".")[0] + '.png')

在这里说一下classes这一行代码,这个是需要你根据你所处理图像里面的内容而定的。这里需要稍做修改。

最后,你所需要的unet训练集就出来了。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值