尧图精选

nerfstudio 数据集去重:10 分钟用图像指纹清掉重复图像

🕒 发布时间:2026/9/14 15:48:29 📁 来源:尧图网络
nerfstudio 数据集去重10 分钟用图像指纹清掉重复图像【免费下载链接】nerfstudioA collaboration friendly studio for NeRFs项目地址: https://gitcode.com/GitHub_Trending/ne/nerfstudio打开images目录800 帧里至少 200 张几乎一模一样。做 nerfstudio 数据集去重前先把重复图像检测、数据集清洗这一步在 NeRF 数据预处理里跑通训练才不会被冗余帧拖慢。三分钟跑通装环境、指目录、出报告这节只解决一件事让你最快看到第一份查重结果先别管为什么。装环境。git clone https://gitcode.com/GitHub_Trending/ne/nerfstudio拉下仓库去重要用它自带的处理工具再pip install -e .。其实很简单前提是 Python 3.8 和 ffmpeg 已经就位。指向数据目录。把原始图丢进data/your_dataset一整轮手机连拍或 Polycam 导出的都行下面这张就是典型的输入——一整圈扫下来的室内原始帧执行去重。把实战演示里的两段代码存成dedup_report.py跑python dedup_report.py。看到输出。终端会打出一行共 X 张唯一 / Y 张重复Y 就是眼下能直接删掉的冗余帧数。把 Y 跑出来再说后面。真正该删的帧、以及为什么可信下面两节各管一段。为什么哈希能查重把每张图当指纹卡片这节一句话讲清原理不堆术语把每张图当成一张指纹卡片读它的字节流算出一个固定长度的摘要哈希内容哪怕只动 1 个像素摘要就完全不同两张字节完全一样的图摘要必然一样。手机相册的查重 App 干的就是这件事——先把所有照片生成指纹再两两比对全等的标红你点一下就删。说白了去重 列卡片 记指纹 挑重复三步里没有一步需要碰模型或耗 GPU。落到 nerfstudio 上nerfstudio/process_data/process_data_utils.py里的list_images负责列卡片它按后缀jpg、jpeg、png、tif、tiff 加 cr2把目录里的图全部扫出来排序递归时连子目录一起进。剩下两步——逐张算 SHA-1、记进一个字典、出现过第二次就算重复——是纯 Python1000 帧混进 150 张重复几秒钟就能全量比对完结果稳定可复现。实战演示这节给可直接跑的代码分两步先出报告再落盘。如何批量比对图像哈希这段在做什么列出全部图像、逐张算 SHA-1、统计唯一张数和重复张数并打印前 10 组重复文件名。import hashlib from pathlib import Path from nerfstudio.process_data.process_data_utils import list_images sha1 lambda p: hashlib.sha1(open(p, rb).read()).hexdigest() seen, dupes {}, [] for p in list_images(Path(data/your_dataset)): h sha1(p) if h in seen: dupes.append((p.name, seen[h])) else: seen[h] p.name print(len(seen), 唯一 /, len(dupes), 重复)跑完你手里有两个东西seen每张图的首次出现路径和dupes被再次出现、需要删掉的文件名清单。把data/your_dataset换成你自己的目录即可其余不用动。如何导出干净帧复用 copy_images_list这段在做什么接着第一段同一会话里把不在重复名单里的图复制成一套从frame_00001起连续编号的干净数据集num_downscales0表示不缩放、按原图落盘。from pathlib import Path from nerfstudio.process_data.process_data_utils import list_images, copy_images_list dup_names {n for (n, f) in dupes} keep [p for p in list_images(Path(data/your_dataset)) if p.name not in dup_names] copy_images_list(keep, Path(data/your_dataset_clean), num_downscales0) print(干净数据集已写出, len(keep), 张)复用copy_images_list而不是自己写拷贝是因为它会把图重命名成 nerfstudio 期望的frame_%05d形式顺带处理 raw 转码落盘后目录能直接接ns-process-data跑位姿。去重放在 COLMAP 之前做等于让位姿解算只在有效帧上花算力而不是在 20% 的重复帧上白跑。避坑清单RAW 帧、缩放帧、隐藏文件三处翻车点这节列真实会翻车的点照查能省半天。RAW 帧.cr2哈希不一致。raw 文件和它转出来的 jpg 字节完全不同直接哈希会各算一次、互相认不出。copy_images_list会用 rawpy 把 .cr2 转成 .jpg 再落盘所以坚持先转码、后哈希同一张 raw 才不会和它的分身重名。缩放后再比对会误杀。num_downscales一大低分辨率把相邻帧的细微差异抹平本来不同的 20 帧可能被判成重复。比对一定用原分辨率落盘时再决定要不要生成缩放版。路径含隐藏文件被 glob 跳过。list_images的匹配串是[!.]*点开头的文件macOS 的._IMG_0001.JPG资源叉、.DS_Store会被直接略过。清单张数对不上原始文件数时先查这里。横竖混排。同一目录里竖拍横拍混着放copy_images_list的批量 ffmpeg 默认按同尺寸走混排时自动切到逐帧慢速路径。去重报告要按实际张数对时间别按批量估算。收尾先跑查重报告删掉重复帧用干净目录训练数据从哪来、怎么转 nerfstudio 格式见 自定义数据集文档。【免费下载链接】nerfstudioA collaboration friendly studio for NeRFs项目地址: https://gitcode.com/GitHub_Trending/ne/nerfstudio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →