当前位置: 首页 > news >正文

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.jsqmd.com/news/284572/

相关文章:

  • java_ssm114自行车在线租赁系统设计与实现_idea项目源码
  • 瞧瞧别人家的日志打印,那叫一个优雅!
  • java_ssm6专门体检预约管理系统_idea项目源码
  • [特殊字符] 栈与队列基础知识全面解析
  • 医疗器械包装运输验证标准:GB/T4857系列标准
  • java_ssm7特产农产品网上商城的设计与实现_idea项目源码
  • java_ssm115计算机系统在线考试平台_idea项目源码
  • java_ssm8中药中草药商城 供求信息管理系统_idea项目源码
  • 小迪安全2023-2024|第102天:漏洞发现-漏扫项目篇Poc开发Yaml语法插件一键生成匹配结_笔记|web安全|渗透测试|
  • C++中string与char的全面解析
  • 如何搭建自动化测试框架?
  • 从Java基础到微服务架构:互联网大厂面试三轮问答实录
  • java_ssm2家用二手电器回收系统
  • java_ssm116课程在线学习评测教学系统智慧学伴服务平台开发_idea项目源码
  • EasyGBS打造智慧机场一体化智能监管体系
  • 2026年北京周边诚信的加湿系统专业加盟公司,如何选择?
  • java_ssm3Web的篮球CBA联赛信息管理系统
  • 2026年资质齐全的专升本辅导机构,哈尔滨共创专升本值得关注!
  • java_ssm117超市在线配送管理系统_idea项目源码
  • java_ssm1 高校学生班费管理系统
  • 三星岩意奢岩板专业吗,从工艺到服务全面探究
  • java_ssm10乡村小学校园官网_idea项目源码
  • 620-3033处理器模块
  • 2026年广州有实力的Databricks公司排名
  • java_ssm118足球联赛管理系统 商城_tdl2g--论文
  • java_ssm11特色铁艺家居家具商城销售系统的设计与实现_idea项目源码
  • 性能测试:测试常见的指标
  • 葫芦岛市连山龙港南票兴城绥中建昌英语雅思培训辅导机构推荐;2026权威出国雅思课程中心学校口碑排行榜
  • 2026年全国重型设备搬运公司哪家靠谱?多家厂家深度解析 实用指南
  • 接口测试用例设计