【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++多类别分割;
完
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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】