实例分割学习记录-数据集转换

最近在使用yolov7做实例分割的时候,想自己搞数据集时候使用的一些方法和代码,在此分享:

1.转换数据集mask图转换成json格式

我们有时候在网上下载一些实例分割数据集的时候,虽然他们是用labelme标注的,但是数据集中并没有对应的json格式的标注,而是将他们转换成了mask.png形式的图片掩码,查看的时候就跟全黑的图片一样,如下图:

虽然看起来是全黑的,但是其实这种成为二值图片,其中所对应的标注的目标区域是有值的,只不过都很小,有几类就有几个。下面提供一个仓库的代码可以将上面的那种二值图转换成json格式的标注:

https://github.com/guchengxi1994/mask2json

其中的readme文件可以找到代码实例:

我们直接将代码下载下来,用pycharm打开项目,将需要的包安装好后,在项目的根目录下创建.py文件mask2json.py,然后将上面的代码粘贴进去就能用了,但是这个代码的引用有一点问题,而且一次只能处理单张图片,所以我稍微加了一点东西可以处理两个文件夹:

from convertmask.utils.methods.get_multi_shapes import getMultiShapes
import cv2
import glob
import os

jpeg_folder_path = ''
png_folder_path = ''
savePath = ''
yamlPath = ''
# getMultiShapes.getMultiShapes(imgPath, maskPath, savePath, yamlPath)  # with yaml
# getMultiShapes(imgPath, maskPath, savePath, yamlPath)  # without yaml


jpeg_files = os.listdir(jpeg_folder_path)

# 使用os.listdir列出PNG文件夹中的所有文件
png_files = os.listdir(png_folder_path)

# 创建一个函数来处理两个文件的路径
def process_image_paths(jpeg_path, png_path):
    getMultiShapes(jpeg_path, png_path, savePath, yamlPath)

i = 0
# 遍历JPEG文件列表,查找相同文件名的PNG图像
for jpeg_file in jpeg_files:
    if jpeg_file.endswith(".jpg"):
        jpeg_name, _ = os.path.splitext(jpeg_file)  # 获取不带扩展名的文件名
        for png_file in png_files:
            if png_file == jpeg_name + ".png":
                jpeg_path = os.path.join(jpeg_folder_path, jpeg_file)
                png_path = os.path.join(png_folder_path, png_file)
                # 调用处理函数并传递两个图像的路径
                process_image_paths(jpeg_path, png_path)
    i = i + 1
print(i)

将文件夹路径修改一下就行了,yamlpath是你的标签路径,里面存放的是图片中每个类别对应的标签背景为0,其他的顺序如果不确定的话可以先转换一张图片,然后用labelme打开来看一看,yamlpath文件内容如图:

2,json格式转yolo需要的txt格式

在搜索这个转换的时候我搜索yolov7,发现内容很少,然后又在v7的readme文件中看到,训练的命令跟yolov5是一样的,所以我找了一下yolov5的格式转换代码,参考这个博客就行了:

https://blog.csdn.net/jin__9981/article/details/128385498

第一次写博客,记录一下过程,后面需要用到好回过来翻^^

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值