【DL】如何生成用于训练的数据集

操作步骤:

1. 使用标注工具生成标注文件;

博主使用labelme开源工具标注文件;

labelme的安装和使用清参考here;

2. 基于标注数据文件和样本图片生成对应的json目录;

每个样本文件生成的json目录包含的内容有原图/

img.png: 对应的局部的jpg原图文件,训练时要用

label.png: 标注语义图像,训练时要用

label_names.txt: 在这张图像上目标分类名称

label_viz.png:  标签可视化,用于让我们确认是否标记正确

3. 将局部类别标签转换为全局类别标签文件,得到用于训练的样本对;

 

4. 分离训练集和验证集用于训练;

 

注意,

1. 数据集的标注;

2. 数据集的路径和生成过程;

3. 原博客中有错误(也有可能与使用的软件版本等有关);最后生成的png是灰度图像,像素值是全局类别数值;

遇到的错误

File "/home/xxx/miniconda3/envs/open_mmlab/lib/python3.8/site-packages/torch/nn/functional.py", line 3163, in interpolate
return torch._C._nn.upsample_bilinear2d(input, output_size, align_corners, sfl[0], sfl[1])
RuntimeError: It is expected output_size equals to 2, but got size 3

原因:生成的全局类别标签图像文件的数据尺寸有问题;

解决方法:

# new = new + np.expand_dims(index_all*(np.array(img) == index_json),-1)
new = new + index_all*(np.array(img) == index_json)

特别注意,

保存图像的时候要注意保存成png格式的图像,因为jpg格式会在存储时对图像进行压缩,导致mask图像不准确。

 在PIL中,图像有很多种模式,如'L'模式,’P'模式,还有常见的'RGB'模式,模式'L'为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。模式“P”为8位彩色图像,它的每个像素用8个bit表示,其对应的彩色值是按照调色板索引值查询出来的。标签图像的模式正是'P'模式,因此测试时要生成对应标签图像的图片的话,构建一个调色板即可。

 

参考

1. 语义分割中单类别和多类别图片数据标注,以及灰度类别转换

2. UNet/UNet++多类别分割

posted on   鹅要长大  阅读(600)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示