Skip to content

媒体导入

通过带缓存的转码代理,标注浏览器无法显示的文件,包括多页 16 位 TIFF、HEIC、相机 RAW、ProRes 与 MKV。

浏览器无法显示的文件会得到一块空白画布,并且没有任何报错,于是标注者会认定工具坏了。 Potato 会在首次请求时转码这些文件并缓存结果;当它确实无能为力时,会明确说明,并给出应当改为运行的命令。

请求转码后的文件

引用文件时使用 /media/proxy/ 而非 /media/

json
{"id": "scan_001", "image_url": "/media/proxy/scan_001.tif"}

浏览器本就能显示的文件(.jpg.png.webp.mp4.webm)会直接透传、不再重新编码,因此混合格式的语料无需特殊处理。把所有内容都指向代理即可。

结果缓存在 <output_annotation_dir>/.media_cache/ 下。缓存键包含源文件的大小与修改时间,因此编辑源文件会产生新条目,而不会命中过期缓存。

支持的内容

源格式转换为说明
TIFFWebP支持多页与 16 位,并做百分位窗口化
HEICWebPiPhone 的默认照片格式
相机 RAWWebP通过 rawpy
ProRes、MKV、MOV、HEVCMP4用 ffmpeg 做代理转码,并提供抽帧作为回退方案

ffmpeg 与 Pillow-SIMD 仍为可选项。它们缺失时会给出一条指明缺少哪个工具的提示,而不是一块空白面板。

16 位窗口化才是实质所在

科研用 TIFF 通常是 16 位的,而其内容通常只占据可用范围中很窄的一段。把它粗暴地转成 8 位并不是一点小损失:一份内容位于 1200 到 1800 之间的扫描件,渲染出来只有 255 级灰阶中的 4 级区分度。而在百分位窗口下,它有 254 级

同一套窗口化逻辑也驱动着深度图,在那里,做错同样是看不出来的,而不是显而易见的。

相关内容