fix
This commit is contained in:
@@ -9,12 +9,13 @@ combine_text_levels), поэтому «есть текст» здесь озна
|
||||
видит модель: непустой текст для выбранных text_levels, а не заглушку
|
||||
"No description available.".
|
||||
|
||||
Пример:
|
||||
python check_coverage.py \
|
||||
--data_root /media/servml/SSD_2_2TB/datasets/cvgl_datasets/GTA-UAV-LR \
|
||||
--captions_v1 ".../GTA-UAV-LR-captions_ v1" \
|
||||
--captions_v2 ".../GTA-UAV-LR-captions_v2" \
|
||||
--text_levels level1 level2
|
||||
Запуск:
|
||||
python3 check_coverage.py \
|
||||
--data_root "/media/servml/SSD_2_2TB/datasets/cvgl_datasets/GTA-UAV-LR" \
|
||||
--captions_v1 "/media/servml/SSD_2_2TB/datasets/cvgl_datasets/GTA-UAV-LR-captions_ v1" \
|
||||
--captions_v2 "/media/servml/SSD_2_2TB/datasets/cvgl_datasets/GTA-UAV-LR-captions_v2" \
|
||||
--text_levels level1 level2 level3
|
||||
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
@@ -39,8 +40,10 @@ def _has_real_text(
|
||||
desc = descriptions.get(name)
|
||||
if not desc:
|
||||
return False
|
||||
# combine_text_levels возвращает заглушку, когда все уровни пустые →
|
||||
# это и есть «текста фактически нет».
|
||||
combined = combine_text_levels(desc, text_levels)
|
||||
return combined.strip() != "" and combined != "No description available."
|
||||
return combined != "No description available."
|
||||
|
||||
|
||||
def _covered_set(
|
||||
@@ -87,33 +90,64 @@ def _report_side(
|
||||
)
|
||||
|
||||
|
||||
def main(args: argparse.Namespace) -> None:
|
||||
data_root = Path(args.data_root)
|
||||
text_levels = list(args.text_levels)
|
||||
def _report_split(
|
||||
data_root: Path,
|
||||
meta_name: str,
|
||||
desc_by_view: dict[str, tuple[dict, dict]],
|
||||
text_levels: list[str],
|
||||
) -> None:
|
||||
"""Покрытие v1/v2 для одного split-файла (train или test)."""
|
||||
meta_path = data_root / meta_name
|
||||
if not meta_path.exists():
|
||||
print(f"\n⚠️ Пропущен (нет файла): {meta_path}")
|
||||
return
|
||||
|
||||
with open(data_root / args.test_meta) as f:
|
||||
with open(meta_path) as f:
|
||||
pairs_meta = json.load(f)
|
||||
|
||||
# Дрон-запросы: уникальные имена картинок дрона в тесте.
|
||||
# Дрон-запросы: уникальные имена картинок дрона в split.
|
||||
drone_names = sorted({e["drone_img_name"] for e in pairs_meta})
|
||||
# Спутниковая галерея: те же уникальные тайлы, что и в eval.
|
||||
gallery_names, _ = collect_gallery_names(pairs_meta)
|
||||
|
||||
print("=" * 64)
|
||||
print(f"COVERAGE CHECK | text_levels={text_levels} | {args.test_meta}")
|
||||
print("\n" + "=" * 64)
|
||||
print(f"SPLIT: {meta_name} ({len(pairs_meta)} пар)")
|
||||
print("=" * 64)
|
||||
|
||||
for view, names in (("drone", drone_names), ("satellite", gallery_names)):
|
||||
desc_v1 = load_text_descriptions(args.captions_v1, view_type=view)
|
||||
desc_v2 = load_text_descriptions(args.captions_v2, view_type=view)
|
||||
desc_v1, desc_v2 = desc_by_view[view]
|
||||
_report_side(
|
||||
f"{view.upper()} {'queries' if view == 'drone' else 'gallery'}",
|
||||
names, desc_v1, desc_v2, text_levels,
|
||||
)
|
||||
|
||||
|
||||
def main(args: argparse.Namespace) -> None:
|
||||
data_root = Path(args.data_root)
|
||||
text_levels = list(args.text_levels)
|
||||
|
||||
print("=" * 64)
|
||||
print(f"COVERAGE CHECK | text_levels={text_levels}")
|
||||
print("=" * 64)
|
||||
|
||||
# Описания не зависят от split — грузим один раз на каждую сторону.
|
||||
desc_by_view = {
|
||||
view: (
|
||||
load_text_descriptions(args.captions_v1, view_type=view),
|
||||
load_text_descriptions(args.captions_v2, view_type=view),
|
||||
)
|
||||
for view in ("drone", "satellite")
|
||||
}
|
||||
|
||||
# Покрытие важно и на train (что модель УЧИТ), и на test (что видит eval).
|
||||
for meta_name in (args.train_meta, args.test_meta):
|
||||
_report_split(data_root, meta_name, desc_by_view, text_levels)
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
p = argparse.ArgumentParser(description="Сравнить покрытие captions v1 vs v2")
|
||||
p.add_argument("--data_root", type=str, required=True)
|
||||
p.add_argument("--train_meta", type=str, default="cross-area-drone2sate-train.json")
|
||||
p.add_argument("--test_meta", type=str, default="cross-area-drone2sate-test.json")
|
||||
p.add_argument("--captions_v1", type=str, required=True)
|
||||
p.add_argument("--captions_v2", type=str, required=True)
|
||||
|
||||
Reference in New Issue
Block a user