先看现象。视频标注任务按文件名切给两个人,同一个文件在网盘里被复制一份后改了后缀,两个人都标了同一段三十秒,导出的框既有重叠也有冲突,合并脚本按区间覆盖后,那一段的框全丢了。
排查方向其实有限,先把可能性排一排。任务切分按文件名而不是内容哈希。也可能是合并时按时间区间覆盖,后导入的盖掉前面的。
不容易想到的是,没有记录标注人与任务号,冲突追不回来。
还有一种情况,网盘副本没有校验和,重复文件识别不出来。
第一件事是按内容哈希找出重复文件
python -c "import hashlib,glob;print({hashlib.md5(open(f,'rb').read()).hexdigest() for f in glob.glob('videos/*.mp4')})"
接着按哈希重新分配任务并去重
python assign_tasks.py --by content_hash --annotators 2 --out tasks.csv
然后合并时按区间取交并标记冲突
python merge_boxes.py --inputs a.json,b.json --on-overlap mark
人工复核冲突段后再落库
python review.py --conflicts conflicts.json --out final.json
恢复的判定其实很直接。重复文件只被分配一次,同一段三十秒的框只保留一份,冲突清单里两条记录都能追到标注人和任务号。
补一句。任务切分要按内容而不是文件名,网盘副本改名太常见,合并逻辑也必须能表达冲突而不是静默覆盖。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
