Vlm-ClipJsonl代码

import os import json # ======================== 你的实际路径配置(无需修改) ======================== # 脚本所在目录(train目录) SCRIPT_ROOT = os.path.dirname(os.path.abspath(__file__)) # 数据集根路径(train/data) BASE_PATH = os.path.join(SCRIPT_ROOT, "data") # 元数据保存路径(框架固定目录) JSONL_SAVE_DIR = os.path.join(SCRIPT_ROOT, "dataset", "metadata", "opencvxuetang") # 原图目录:data/test/[类别名]/ IMG_ROOT = os.path.join(BASE_PATH, "test") # Mask根目录:data/ground_truth/[类别名]/ MASK_ROOT = os.path.join(BASE_PATH, "ground_truth") # 类别映射: # key=原图文件夹名 → (label值, 是否有mask, mask所在子文件夹名) # mask子文件夹名和原图类别名一致(比如contamination的mask在ground_truth/contamination/) CLASS_MAP = { "good": (0, False, ""), # 正常样本,无mask "contamination": (1, True, "contamination"), # 异常,mask在ground_truth/contamination/ "broken_small": (1, True, "broken_small"), # 异常,mask在ground_truth/broken_small/ "broken_large": (1, True, "broken_large"), # 异常,mask在ground_truth/broken_large/ } # Mask文件命名规则:原图名 → mask名(比如 xxx.jpg → xxx_mask.png) MASK_SUFFIX = "_mask.png" # ============================================================================= # 创建元数据保存目录 os.makedirs(JSONL_SAVE_DIR, exist_ok=True) JSONL_FILE_PATH = os.path.join(JSONL_SAVE_DIR, "full-shot.jsonl") meta_list = [] print("===== 开始生成元数据 =====\n") # 遍历所有类别 for class_name, (label, has_mask, mask_subdir) in CLASS_MAP.items(): # 1. 拼接原图类别文件夹路径 img_class_dir = os.path.join(IMG_ROOT, class_name) if not os.path.exists(img_class_dir): print(f"⚠️ 原图文件夹不存在:{img_class_dir} → 跳过该类别") continue print(f"🔍 处理类别:{class_name}") print(f" 原图路径:{img_class_dir}") # 2. 遍历该类别下的所有图片 img_files = [f for f in os.listdir(img_class_dir) if f.lower().endswith((".jpg", ".png", ".jpeg"))] if len(img_files) == 0: print(f" ❌ 该类别下无有效图片(jpg/png/jpeg)→ 跳过\n") continue print(f" 找到有效图片数:{len(img_files)}") for img_filename in img_files: # 构建原图的相对路径(框架要求:test/[类别名]/[图片名]) img_rel_path = os.path.join("test", class_name, img_filename).replace("\\", "/") sample = { "image_path": img_rel_path, "label": label, "class_name": class_name, "mask_path": "" } # 3. 处理异常样本的mask(核心修正:拼接mask子文件夹路径) if has_mask: # 拼接mask类别文件夹路径 mask_class_dir = os.path.join(MASK_ROOT, mask_subdir) if not os.path.exists(mask_class_dir): print(f" ❌ mask文件夹不存在:{mask_class_dir} → 跳过图片{img_filename}") continue # 提取原图名(去掉后缀)+ 拼接mask文件名 img_base_name = os.path.splitext(img_filename)[0] mask_filename = img_base_name + MASK_SUFFIX # 拼接mask的绝对路径(检查是否存在) mask_abs_path = os.path.join(mask_class_dir, mask_filename) if os.path.exists(mask_abs_path): # 构建mask的相对路径(框架要求:ground_truth/[类别名]/[mask名]) mask_rel_path = os.path.join("ground_truth", mask_subdir, mask_filename).replace("\\", "/") sample["mask_path"] = mask_rel_path meta_list.append(sample) print(f" ✅ 图片{img_filename} → mask{mask_filename} → 添加成功") else: print(f" ❌ 图片{img_filename}的mask不存在:{mask_abs_path} → 跳过") else: # good类直接添加 meta_list.append(sample) print(f" ✅ 正常图片{img_filename} → 添加成功") print("\n") # 写入jsonl文件 with open(JSONL_FILE_PATH, "w", encoding="utf-8") as f: for sample in meta_list: f.write(json.dumps(sample, ensure_ascii=False) + "\n") # 最终验证 print("===== 生成完成 ======") print(f"📁 元数据文件路径:{JSONL_FILE_PATH}") print(f"📊 总有效样本数:{len(meta_list)}") # 打印前5个样本示例 if len(meta_list) > 0: print("\n📝 前5个样本示例:") for i in range(min(5, len(meta_list))): print(f" 样本{i + 1}:{meta_list[i]}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1200678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java_ssm114自行车在线租赁系统设计与实现_idea项目源码

目录 具体实现截图自行车在线租赁系统设计与实现摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 自行车在线租赁系统设计与实现摘要 自行车在线租赁系统基于SSM(SpringSpringM…

瞧瞧别人家的日志打印,那叫一个优雅!

前言这篇文章跟大家一起聊聊打印优雅日志的10条军规,希望对你会有所帮助。第1条:格式统一反例(管理看到会扣钱):log.info("start process"); log.error("error happen"); 无时间戳,无上…

java_ssm6专门体检预约管理系统_idea项目源码

目录具体实现截图系统概述技术架构核心功能模块数据库设计项目亮点系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 系统概述 Java_SSM6专门体检预约管理系统基于SpringSpringMVCMyBatis&#xf…

[特殊字符] 栈与队列基础知识全面解析

一、栈(Stack)理论基础 1.1 栈的基本特性 栈是一种后进先出(LIFO, Last In First Out) 的数据结构,操作只在栈顶进行。 // 栈的基本操作 stack<int> st; st.push(1); // 入栈 st.push(2); int top = st.top(); // 查看栈顶元素:2 st.pop(); // 出栈,…

医疗器械包装运输验证标准:GB/T4857系列标准

一、GB/T 4857系列核心测试标准解析 GB/T 4857《包装 运输包装件基本试验》系列标准涵盖23个部分&#xff0c;针对医疗器械运输场景&#xff0c;以下核心标准构成了全方位的测试体系&#xff1a; &#xff08;一&#xff09;冲击类试验&#xff1a;模拟碰撞风险 跌落试验&am…

java_ssm7特产农产品网上商城的设计与实现_idea项目源码

目录 具体实现截图项目背景与意义技术架构核心功能模块创新点与优势应用价值 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 项目背景与意义 随着互联网技术的发展和农村电商的兴起&#xff0…

java_ssm115计算机系统在线考试平台_idea项目源码

目录 具体实现截图计算机系统在线考试平台摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 计算机系统在线考试平台摘要 该在线考试平台基于Java SSM框架&#xff08;SpringSpring MVCMyBa…

java_ssm8中药中草药商城 供求信息管理系统_idea项目源码

目录 具体实现截图项目背景与目标技术架构核心功能模块创新与优势适用场景总结 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 项目背景与目标 中药中草药商城供求信息管理系统基于Java SSM框…

小迪安全2023-2024|第102天:漏洞发现-漏扫项目篇Poc开发Yaml语法插件一键生成匹配结_笔记|web安全|渗透测试|

第102天&#xff1a;漏洞发现-漏扫项目篇&Poc开发&Yaml语法&插件一键生成&匹配结_笔记 一、漏洞发现—漏扫项目篇&#xfeff;00:15 1. 漏洞扫描工具分类&#xfeff;01:50 综合类工具&#xff1a; BurpSuite&#xff1a;集成化Web应用测试平台&#xff0c;…

C++中string与char的全面解析

一、char(字符) 1.1 基本概念 char 是C++中的基本数据类型,用于表示单个字符。 char c = A; // 单个字符用单引号 char zero = 0; // 字符0,ASCII值为48 char space = ; // 空格字符 char newline = \n; // 转义字符1.2 重要特性 大小:通常1字节(8位)…

如何搭建自动化测试框架?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 最近好多小伙伴都在说接口自动化测试&#xff0c;那么究竟什么是接口自动化测试呢&#xff1f;让我们一起往下看就知道了&#xff0c;首先我们得先弄清楚下面这…

从Java基础到微服务架构:互联网大厂面试三轮问答实录

从Java基础到微服务架构&#xff1a;互联网大厂面试三轮问答实录 第一轮&#xff1a;核心语言与平台基础 面试官问&#xff1a; Java中HashMap的底层实现原理是什么&#xff1f;JVM如何进行内存管理&#xff1f;能简单介绍下主要的内存区域吗&#xff1f;在Java中&#xff0c;如…

java_ssm2家用二手电器回收系统

目录具体实现截图家用二手电器回收系统摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 家用二手电器回收系统摘要 随着电子产品更新迭代速度加快&#xff0c;大量二手电器被闲置或废弃&…

java_ssm116课程在线学习评测教学系统智慧学伴服务平台开发_idea项目源码

目录具体实现截图项目概述核心功能技术架构创新点应用价值系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 项目概述 Java_SSM116课程在线学习评测教学系统智慧学伴服务平台是一个基于SSM&#x…

EasyGBS打造智慧机场一体化智能监管体系

在航空运输业高速发展与智慧化转型的时代背景下&#xff0c;机场作为连接空中与地面的关键枢纽&#xff0c;其运营安全、效率和服务质量面临着前所未有的高标准要求。传统机场监控系统普遍存在“信息孤岛”、智能化程度不足、应急响应滞后等痛点。在这一背景下&#xff0c;Easy…

2026年北京周边诚信的加湿系统专业加盟公司,如何选择?

2026年健康家居市场持续升温,加湿系统作为改善室内环境、提升居住舒适度的核心设备,其加盟赛道也迎来爆发式增长。无论是解决白粉污染、微生物滋生等用户痛点的创新技术,还是覆盖住宅、商业、医疗等多场景的解决方案…

java_ssm3Web的篮球CBA联赛信息管理系统

目录具体实现截图篮球CBA联赛信息管理系统摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 篮球CBA联赛信息管理系统摘要 该系统基于Java SSM&#xff08;SpringSpringMVCMyBatis&#xff09…

2026年资质齐全的专升本辅导机构,哈尔滨共创专升本值得关注!

本榜单依托全维度行业调研与真实学员口碑,深度筛选出五家黑龙江省医学专升本领域标杆机构,为医学类专科生选型提供客观依据,助力精准匹配适配的升本辅导伙伴。 TOP1 推荐:哈尔滨共创教育信息咨询有限公司 推荐指数…

java_ssm117超市在线配送管理系统_idea项目源码

目录具体实现截图项目概述核心功能模块技术实现项目亮点系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 项目概述 Java_SSM117超市在线配送管理系统是一款基于SSM&#xff08;SpringSpringMVCMy…

java_ssm1 高校学生班费管理系统

目录具体实现截图高校学生班费管理系统摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 高校学生班费管理系统摘要 高校学生班费管理系统基于Java SSM框架&#xff08;SpringSpring MVCMyBat…