From fea75cc1cedb8c8d7b0e5ac912c6026b6d10c6bf Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Mon, 23 Feb 2026 16:01:32 -0600 Subject: [PATCH 01/26] Add latest versions of scripts --- inputs/MEVA | 1 + meva/scripts/v10/__init__.py | 1 + meva/scripts/v10/activity_hierarchy.py | 198 +++ meva/scripts/v10/batch_extract_all_slots.py | 391 ++++++ meva/scripts/v10/build_geom_slot_index.py | 139 ++ meva/scripts/v10/build_scene_graph.py | 260 ++++ meva/scripts/v10/distractor_bank.py | 105 ++ meva/scripts/v10/entity_resolution.py | 298 ++++ meva/scripts/v10/export_to_multicam_format.py | 280 ++++ .../v10/extract_entity_descriptions.py | 710 ++++++++++ meva/scripts/v10/generate_best_camera.py | 351 +++++ meva/scripts/v10/generate_event_ordering.py | 607 ++++++++ meva/scripts/v10/generate_numerical.py | 390 ++++++ meva/scripts/v10/generate_perception.py | 440 ++++++ meva/scripts/v10/generate_scene_summary.py | 272 ++++ meva/scripts/v10/generate_spatial.py | 286 ++++ meva/scripts/v10/generate_temporal.py | 407 ++++++ meva/scripts/v10/naturalize_v8_qa_v2.py | 1220 +++++++++++++++++ meva/scripts/v10/naturalize_v8_qa_v3.py | 523 +++++++ meva/scripts/v10/parse_annotations.py | 264 ++++ meva/scripts/v10/person_descriptions.py | 464 +++++++ meva/scripts/v10/run_pipeline.py | 683 +++++++++ meva/scripts/v10/utils/__init__.py | 1 + meva/scripts/v10/utils/iou.py | 35 + meva/scripts/v10/utils/krtd.py | 124 ++ meva/scripts/v10/utils/mevid.py | 175 +++ meva/scripts/v10/utils/yaml_stream.py | 158 +++ 27 files changed, 8783 insertions(+) create mode 120000 inputs/MEVA create mode 100644 meva/scripts/v10/__init__.py create mode 100644 meva/scripts/v10/activity_hierarchy.py create mode 100755 meva/scripts/v10/batch_extract_all_slots.py create mode 100755 meva/scripts/v10/build_geom_slot_index.py create mode 100644 meva/scripts/v10/build_scene_graph.py create mode 100644 meva/scripts/v10/distractor_bank.py create mode 100644 meva/scripts/v10/entity_resolution.py create mode 100644 meva/scripts/v10/export_to_multicam_format.py create mode 100644 meva/scripts/v10/extract_entity_descriptions.py create mode 100644 meva/scripts/v10/generate_best_camera.py create mode 100644 meva/scripts/v10/generate_event_ordering.py create mode 100644 meva/scripts/v10/generate_numerical.py create mode 100644 meva/scripts/v10/generate_perception.py create mode 100644 meva/scripts/v10/generate_scene_summary.py create mode 100644 meva/scripts/v10/generate_spatial.py create mode 100644 meva/scripts/v10/generate_temporal.py create mode 100644 meva/scripts/v10/naturalize_v8_qa_v2.py create mode 100644 meva/scripts/v10/naturalize_v8_qa_v3.py create mode 100644 meva/scripts/v10/parse_annotations.py create mode 100644 meva/scripts/v10/person_descriptions.py create mode 100644 meva/scripts/v10/run_pipeline.py create mode 100644 meva/scripts/v10/utils/__init__.py create mode 100644 meva/scripts/v10/utils/iou.py create mode 100644 meva/scripts/v10/utils/krtd.py create mode 100644 meva/scripts/v10/utils/mevid.py create mode 100644 meva/scripts/v10/utils/yaml_stream.py diff --git a/inputs/MEVA b/inputs/MEVA new file mode 120000 index 0000000..8a94c1d --- /dev/null +++ b/inputs/MEVA @@ -0,0 +1 @@ +/nas/mars/dataset/MEVA \ No newline at end of file diff --git a/meva/scripts/v10/__init__.py b/meva/scripts/v10/__init__.py new file mode 100644 index 0000000..f9fa1b0 --- /dev/null +++ b/meva/scripts/v10/__init__.py @@ -0,0 +1 @@ +# V8 QA Pipeline — MEVID-enriched multi-camera QA generation diff --git a/meva/scripts/v10/activity_hierarchy.py b/meva/scripts/v10/activity_hierarchy.py new file mode 100644 index 0000000..aa0b3a3 --- /dev/null +++ b/meva/scripts/v10/activity_hierarchy.py @@ -0,0 +1,198 @@ +""" +V7 activity_hierarchy.py — Activity relationship definitions for connected event pairing. + +Defines causal, sequential, and co-occurring activity relationships from the +37 MEVA ActEV activities. Used by generate_temporal.py to prefer event pairs +that have meaningful scene connections. +""" + +from typing import Dict, List, Set, Tuple + +# ============================================================================ +# Activity Relationships +# ============================================================================ + +# Causal/sequential relationships: act_a often leads to act_b +CAUSAL_RELATIONSHIPS: Dict[str, List[str]] = { + # Object manipulation chains + "person_picks_up_object": [ + "person_carries_heavy_object", + "person_puts_down_object", + "person_transfers_object", + ], + "person_puts_down_object": [ + "person_abandons_package", + ], + + # Trunk/vehicle loading + "person_opens_trunk": [ + "person_loads_vehicle", + "person_unloads_vehicle", + "person_closes_trunk", + ], + "person_loads_vehicle": ["person_closes_trunk"], + "person_unloads_vehicle": ["person_closes_trunk", "person_carries_heavy_object"], + + # Vehicle door sequences + "person_opens_vehicle_door": [ + "person_enters_vehicle", + "person_exits_vehicle", + "person_closes_vehicle_door", + ], + "person_enters_vehicle": ["person_closes_vehicle_door", "vehicle_starts"], + "person_exits_vehicle": ["person_closes_vehicle_door"], + + # Facility door sequences + "person_opens_facility_door": [ + "person_enters_scene_through_structure", + "person_exits_scene_through_structure", + "person_closes_facility_door", + ], + "person_enters_scene_through_structure": ["person_closes_facility_door"], + "person_exits_scene_through_structure": ["person_closes_facility_door"], + + # Vehicle sequences + "vehicle_stops": ["person_exits_vehicle", "vehicle_starts"], + "vehicle_starts": ["vehicle_turns_left", "vehicle_turns_right", "vehicle_makes_u_turn"], + + # Sit/stand + "person_sits_down": ["person_stands_up"], + + # Drop-off/pick-up + "vehicle_drops_off_person": ["person_enters_scene_through_structure"], + "vehicle_picks_up_person": ["vehicle_starts"], +} + +# Symmetric co-occurring relationships (activities that often happen together) +CO_OCCURRING: List[Tuple[str, str]] = [ + ("person_talks_to_person", "person_embraces_person"), + ("person_talks_on_phone", "person_texts_on_phone"), + ("person_reads_document", "person_interacts_with_laptop"), + ("person_enters_vehicle", "person_exits_vehicle"), + ("person_opens_vehicle_door", "person_closes_vehicle_door"), + ("person_opens_trunk", "person_closes_trunk"), + ("person_opens_facility_door", "person_closes_facility_door"), + ("person_picks_up_object", "person_puts_down_object"), + ("person_loads_vehicle", "person_unloads_vehicle"), + ("vehicle_starts", "vehicle_stops"), +] + +# Build fast lookup sets +_CAUSAL_PAIRS: Set[Tuple[str, str]] = set() +for parent, children in CAUSAL_RELATIONSHIPS.items(): + for child in children: + _CAUSAL_PAIRS.add((parent, child)) + +_CO_OCCURRING_PAIRS: Set[Tuple[str, str]] = set() +for a, b in CO_OCCURRING: + _CO_OCCURRING_PAIRS.add((a, b)) + _CO_OCCURRING_PAIRS.add((b, a)) + + +# ============================================================================ +# Public API +# ============================================================================ + +def are_related(act_a: str, act_b: str) -> bool: + """Check if two activities have any relationship (causal or co-occurring).""" + return get_relationship(act_a, act_b) is not None + + +def get_relationship(act_a: str, act_b: str) -> str: + """ + Get relationship type between two activities. + + Returns: + "causal" if act_a causally leads to act_b + "reverse_causal" if act_b causally leads to act_a + "co_occurring" if they commonly co-occur + None if no relationship + """ + if (act_a, act_b) in _CAUSAL_PAIRS: + return "causal" + if (act_b, act_a) in _CAUSAL_PAIRS: + return "reverse_causal" + if (act_a, act_b) in _CO_OCCURRING_PAIRS: + return "co_occurring" + return None + + +def get_relationship_strength(act_a: str, act_b: str) -> float: + """ + Get relationship strength (0.0 = none, 1.0 = strong). + + causal: 1.0 + reverse_causal: 0.9 (order matters but both are related) + co_occurring: 0.7 + same_entity_type: 0.3 (both person_ or both vehicle_) + none: 0.0 + """ + rel = get_relationship(act_a, act_b) + if rel == "causal": + return 1.0 + if rel == "reverse_causal": + return 0.9 + if rel == "co_occurring": + return 0.7 + # Same entity type (weak connection) + if act_a.split("_")[0] == act_b.split("_")[0]: + return 0.3 + return 0.0 + + +def get_activity_entity_type(activity: str) -> str: + """Get entity type from activity name.""" + if activity.startswith("vehicle_"): + return "vehicle" + return "person" + + +def humanize_activity(activity: str) -> str: + """Convert activity name to short human-readable form.""" + # Remove entity prefix and replace underscores with spaces + for prefix in ("person_", "vehicle_", "hand_"): + if activity.startswith(prefix): + activity = activity[len(prefix):] + break + return activity.replace("_", " ") + + +# Verb → gerund mappings for natural sentence construction +_GERUND_MAP = { + "opens": "opening", "closes": "closing", "enters": "entering", + "exits": "exiting", "reads": "reading", "carries": "carrying", + "picks": "picking", "puts": "putting", "sets": "setting", + "rides": "riding", "loads": "loading", "unloads": "unloading", + "talks": "talking", "stands": "standing", "walks": "walking", + "runs": "running", "sits": "sitting", "texts": "texting", + "pulls": "pulling", "pushes": "pushing", "interacts": "interacting", + "drops": "dropping", "embraces": "embracing", "uses": "using", + "makes": "making", "steals": "stealing", "starts": "starting", + "stops": "stopping", "turns": "turning", "transfers": "transferring", + "reverses": "reversing", +} + + +def humanize_activity_gerund(activity: str) -> str: + """ + Convert activity to gerund form for sentence construction. + e.g. 'person_opens_facility_door' → 'Opening a facility door' + """ + base = humanize_activity(activity) # e.g. 'opens facility door' + words = base.split() + if words: + first = words[0] + gerund = _GERUND_MAP.get(first, first + "ing") + rest = " ".join(words[1:]) + # Only add article if rest starts with a noun-like word + # Skip if rest starts with preposition, adverb, article, or particle + _no_article = {"up", "down", "on", "off", "out", "in", "to", "from", + "through", "with", "around", "right", "left", "a", + "an", "the", "into", "onto", "over", "away"} + if rest: + first_rest = rest.split()[0] + if first_rest not in _no_article: + rest = "a " + rest + result = f"{gerund} {rest}".strip() if rest else gerund + return result.capitalize() + return base.capitalize() diff --git a/meva/scripts/v10/batch_extract_all_slots.py b/meva/scripts/v10/batch_extract_all_slots.py new file mode 100755 index 0000000..690779a --- /dev/null +++ b/meva/scripts/v10/batch_extract_all_slots.py @@ -0,0 +1,391 @@ +#!/usr/bin/env python3 +""" +Batch Entity Description Extractor — Process all canonical slots overnight. + +Extracts visual descriptions (YOLO + HSV color) from bounding boxes for ALL +annotated entities across the full MEVA dataset. + +This solves the low-visual-description problem: +- Before: ~7% visual coverage (MEVID only) +- After: ~95% visual coverage (all entities with geom bboxes) + +Usage: + # Dry-run: show what will be processed + python3 scripts/final/batch_extract_all_slots.py --dry-run + + # Full extraction (overnight, ~20 hours for 390 slots) + python3 scripts/final/batch_extract_all_slots.py -v + + # Resume from interruption + python3 scripts/final/batch_extract_all_slots.py -v --resume + +Cost: $0 (local YOLO, no API calls) +Time: ~3-4 min per slot × 390 slots = ~20 hours + +Output: /home/ah66742/data/entity_descriptions/{canonical_slot}.json +Progress: /home/ah66742/output/extraction_logs/batch_progress.json +Logs: /home/ah66742/output/extraction_logs/batch_extraction_TIMESTAMP.log +""" + +import argparse +import json +import sys +import time +import subprocess +from pathlib import Path +from datetime import datetime +from typing import Dict, List, Set, Optional + +# ============================================================================ +# Paths +# ============================================================================ + +SLOT_INDEX_PATH = Path("/home/ah66742/data/geom_slot_index.json") +OUTPUT_DIR = Path("/home/ah66742/data/entity_descriptions") +LOG_DIR = Path("/home/ah66742/output/extraction_logs") +PROGRESS_FILE = LOG_DIR / "batch_progress.json" +EXTRACTION_SCRIPT = Path("/home/ah66742/scripts/final/extract_entity_descriptions.py") + +# ============================================================================ +# Progress Tracking +# ============================================================================ + +def load_progress() -> Dict: + """Load progress state from disk (for resume capability).""" + if not PROGRESS_FILE.exists(): + return { + "started_at": None, + "last_updated": None, + "completed_slots": [], + "failed_slots": [], + "skipped_slots": [], + "total_slots": 0, + "total_entities_extracted": 0, + } + with open(PROGRESS_FILE) as f: + return json.load(f) + + +def save_progress(progress: Dict): + """Save progress state to disk.""" + LOG_DIR.mkdir(parents=True, exist_ok=True) + progress["last_updated"] = datetime.now().isoformat() + with open(PROGRESS_FILE, "w") as f: + json.dump(progress, f, indent=2) + + +def init_progress(total_slots: int) -> Dict: + """Initialize fresh progress state.""" + return { + "started_at": datetime.now().isoformat(), + "last_updated": datetime.now().isoformat(), + "completed_slots": [], + "failed_slots": [], + "skipped_slots": [], + "total_slots": total_slots, + "total_entities_extracted": 0, + } + + +# ============================================================================ +# Slot Processing +# ============================================================================ + +def find_raw_slots_for_canonical(canonical_slot: str, slot_index: Dict) -> List[str]: + """ + Resolve canonical slot to its raw variants. + + Canonical: 2018-03-11.16-20-00.school + Raw variants: [2018-03-11.16-20-00.school, 2018-03-11.16-20-01.school, ...] + """ + if canonical_slot not in slot_index: + return [] + + slot_data = slot_index[canonical_slot] + raw_slots = slot_data.get("raw_slot_variants", [canonical_slot]) + return raw_slots + + +def run_extraction(slot: str, verbose: bool = False, dry_run: bool = False) -> Dict: + """ + Run extract_entity_descriptions.py on a single slot. + + Returns: {"success": bool, "entities": int, "error": str or None} + """ + output_path = OUTPUT_DIR / f"{slot}.json" + + # Check if already exists and has data + if output_path.exists(): + try: + with open(output_path) as f: + data = json.load(f) + entity_count = len([k for k in data.keys() if "_actor_" in k]) + if entity_count > 0: + return { + "success": True, + "entities": entity_count, + "error": None, + "skipped": True, + } + except Exception: + pass # corrupted file, re-extract + + if dry_run: + return {"success": True, "entities": 0, "error": None, "dry_run": True} + + # Run extraction + cmd = [ + "python3", + str(EXTRACTION_SCRIPT), + "--slot", slot, + "--output", str(output_path), + ] + if verbose: + cmd.append("-v") + + try: + result = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=600, # 10 min timeout per slot + ) + + if result.returncode != 0: + return { + "success": False, + "entities": 0, + "error": f"Exit code {result.returncode}: {result.stderr[:200]}", + } + + # Parse output JSON to count entities + if output_path.exists(): + with open(output_path) as f: + data = json.load(f) + entity_count = len(data.get("actors", {})) + return { + "success": True, + "entities": entity_count, + "error": None, + } + else: + return { + "success": False, + "entities": 0, + "error": "Output file not created", + } + + except subprocess.TimeoutExpired: + return { + "success": False, + "entities": 0, + "error": "Timeout (>10 min)", + } + except Exception as e: + return { + "success": False, + "entities": 0, + "error": str(e)[:200], + } + + +# ============================================================================ +# Batch Processing +# ============================================================================ + +def process_all_slots(dry_run: bool = False, verbose: bool = False, + resume: bool = False) -> Dict: + """ + Process all canonical slots from slot_index.json. + + Returns summary dict with stats. + """ + # Load geom slot index (only slots with extractable geom data) + if not SLOT_INDEX_PATH.exists(): + print(f"ERROR: Geom slot index not found: {SLOT_INDEX_PATH}") + sys.exit(1) + + with open(SLOT_INDEX_PATH) as f: + geom_index = json.load(f) + + # Extract slots from nested structure + slot_index = geom_index['slots'] + canonical_slots = sorted(slot_index.keys()) + + print(f"\nLoaded {len(canonical_slots)} slots with geom data (filtered from {geom_index['stats']['total_canonical_slots']} total)") + print(f"Coverage: {geom_index['stats']['coverage_percent']:.1f}% of canonical slots have extractable geom") + print(f"Expected entities: ~{geom_index['stats']['total_usable_actors']:,} actors\n") + + # Load or init progress + if resume: + progress = load_progress() + print(f"\nResuming from previous run:") + print(f" Completed: {len(progress['completed_slots'])}") + print(f" Failed: {len(progress['failed_slots'])}") + print(f" Skipped: {len(progress['skipped_slots'])}") + else: + progress = init_progress(len(canonical_slots)) + + completed_set = set(progress["completed_slots"]) + failed_set = set(progress["failed_slots"]) + skipped_set = set(progress["skipped_slots"]) + + # Setup logging + LOG_DIR.mkdir(parents=True, exist_ok=True) + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + log_path = LOG_DIR / f"batch_extraction_{timestamp}.log" + + log_file = open(log_path, "w", buffering=1) # line buffered + + def log(msg: str): + print(msg) + log_file.write(msg + "\n") + + # Process each canonical slot + log(f"\n{'='*60}") + log(f"Batch Entity Description Extraction") + log(f"{'='*60}") + log(f"Mode: {'DRY-RUN' if dry_run else 'FULL EXTRACTION'}") + log(f"Canonical slots: {len(canonical_slots)}") + log(f"Resume: {resume}") + log(f"Log: {log_path}") + log(f"Progress: {PROGRESS_FILE}") + log(f"Started: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") + log(f"{'='*60}\n") + + start_time = time.time() + total_entities = progress.get("total_entities_extracted", 0) + + for i, canonical_slot in enumerate(canonical_slots, 1): + # Skip if already completed + if canonical_slot in completed_set: + continue + + # Find raw variants for this canonical slot + raw_slots = find_raw_slots_for_canonical(canonical_slot, slot_index) + + if not raw_slots: + log(f"[{i:3d}/{len(canonical_slots)}] {canonical_slot}: NO RAW VARIANTS") + skipped_set.add(canonical_slot) + continue + + # Use first raw variant (they share same geom files) + raw_slot = raw_slots[0] + + log(f"[{i:3d}/{len(canonical_slots)}] {canonical_slot} → {raw_slot}") + + result = run_extraction(raw_slot, verbose=verbose, dry_run=dry_run) + + if result.get("skipped"): + log(f" ✓ SKIPPED (already exists, {result['entities']} entities)") + skipped_set.add(canonical_slot) + elif result.get("dry_run"): + log(f" ✓ DRY-RUN OK") + elif result["success"]: + n = result["entities"] + total_entities += n + log(f" ✓ SUCCESS ({n} entities)") + completed_set.add(canonical_slot) + else: + log(f" ✗ FAILED: {result['error']}") + failed_set.add(canonical_slot) + + # Update progress every 5 slots + if i % 5 == 0 or not result["success"]: + progress["completed_slots"] = sorted(completed_set) + progress["failed_slots"] = sorted(failed_set) + progress["skipped_slots"] = sorted(skipped_set) + progress["total_entities_extracted"] = total_entities + save_progress(progress) + + # ETA calculation + if i > 0 and not dry_run: + elapsed = time.time() - start_time + avg_time = elapsed / i + remaining = (len(canonical_slots) - i) * avg_time + eta_hours = remaining / 3600 + log(f" Progress: {i}/{len(canonical_slots)} ({i*100//len(canonical_slots)}%), " + f"ETA: {eta_hours:.1f}h\n") + + # Final stats + elapsed = time.time() - start_time + + log(f"\n{'='*60}") + log(f"BATCH EXTRACTION COMPLETE") + log(f"{'='*60}") + log(f"Total time: {elapsed/3600:.1f} hours") + log(f"Completed: {len(completed_set)}") + log(f"Skipped (already exist): {len(skipped_set)}") + log(f"Failed: {len(failed_set)}") + log(f"Total entities: {total_entities}") + log(f"Avg entities/slot: {total_entities/max(len(completed_set),1):.1f}") + + if failed_set: + log(f"\nFailed slots ({len(failed_set)}):") + for slot in sorted(failed_set): + log(f" - {slot}") + + log(f"\nOutput directory: {OUTPUT_DIR}") + log(f"Log file: {log_path}") + log(f"{'='*60}\n") + + log_file.close() + + # Final progress save + progress["completed_slots"] = sorted(completed_set) + progress["failed_slots"] = sorted(failed_set) + progress["skipped_slots"] = sorted(skipped_set) + progress["total_entities_extracted"] = total_entities + save_progress(progress) + + return { + "total_slots": len(canonical_slots), + "completed": len(completed_set), + "skipped": len(skipped_set), + "failed": len(failed_set), + "total_entities": total_entities, + "elapsed_hours": elapsed / 3600, + "log_path": str(log_path), + } + + +# ============================================================================ +# Main +# ============================================================================ + +def main(): + parser = argparse.ArgumentParser( + description="Batch extract entity descriptions for all slots", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=__doc__, + ) + parser.add_argument("--dry-run", action="store_true", + help="Show what will be processed without extracting") + parser.add_argument("--resume", action="store_true", + help="Resume from previous run (skip completed slots)") + parser.add_argument("--verbose", "-v", action="store_true", + help="Verbose output from extraction script") + + args = parser.parse_args() + + summary = process_all_slots( + dry_run=args.dry_run, + verbose=args.verbose, + resume=args.resume, + ) + + print("\n" + "="*60) + print("SUMMARY") + print("="*60) + print(f"Total slots: {summary['total_slots']}") + print(f"Completed: {summary['completed']}") + print(f"Skipped (exist): {summary['skipped']}") + print(f"Failed: {summary['failed']}") + print(f"Total entities: {summary['total_entities']}") + print(f"Time: {summary['elapsed_hours']:.1f} hours") + print(f"Log: {summary['log_path']}") + print("="*60) + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/build_geom_slot_index.py b/meva/scripts/v10/build_geom_slot_index.py new file mode 100755 index 0000000..be85977 --- /dev/null +++ b/meva/scripts/v10/build_geom_slot_index.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python3 +""" +Build Geom Slot Index — Scan all canonical slots for geom file availability. + +This creates a filtered slot index containing only slots that have at least +one camera with geom.yml bounding box data available. + +Checks both: + - /nas/mars/.../kitware/ + - /nas/mars/.../kitware-meva-training/ + +Output: data/geom_slot_index.json +Time: ~15-20 minutes for 929 slots +""" + +import json +import subprocess +import sys +from pathlib import Path +from typing import Dict + +SLOT_INDEX_PATH = Path("/home/ah66742/data/slot_index.json") +OUTPUT_PATH = Path("/home/ah66742/data/geom_slot_index.json") +EXTRACTION_SCRIPT = Path("/home/ah66742/scripts/final/extract_entity_descriptions.py") + + +def main(): + print("="*60, flush=True) + print("Building Geom Slot Index", flush=True) + print("="*60, flush=True) + print(f"Input: {SLOT_INDEX_PATH}", flush=True) + print(f"Output: {OUTPUT_PATH}", flush=True) + print(flush=True) + + # Load all slots + if not SLOT_INDEX_PATH.exists(): + print(f"ERROR: Slot index not found: {SLOT_INDEX_PATH}", flush=True) + sys.exit(1) + + with open(SLOT_INDEX_PATH) as f: + all_slots = json.load(f) + + total_slots = len(all_slots) + print(f"Scanning {total_slots} canonical slots...", flush=True) + print("This will take ~15-20 minutes.\n", flush=True) + + geom_slots = {} + stats = { + "total_cameras": 0, + "total_usable_actors": 0, + "kitware_count": 0, + "training_count": 0, + } + + for i, (slot, slot_data) in enumerate(sorted(all_slots.items()), 1): + # Run dry-run to check for geom files + try: + result = subprocess.run( + ["python3", str(EXTRACTION_SCRIPT), "--slot", slot, "--dry-run"], + capture_output=True, + text=True, + timeout=15, + ) + + # Parse output + lines = result.stdout.split("\n") + cameras_line = [l for l in lines if "Cameras with geom:" in l] + + if not cameras_line: + continue + + n_cameras = int(cameras_line[0].split(":")[1].strip()) + + if n_cameras > 0: + # Extract usable actor count + usable_actors = 0 + for line in lines: + if " usable," in line: + parts = line.split(",") + for p in parts: + if " usable" in p: + usable_actors += int(p.split()[0]) + + geom_slots[slot] = { + **slot_data, + "geom_cameras": n_cameras, + "geom_usable_actors": usable_actors, + } + + stats["total_cameras"] += n_cameras + stats["total_usable_actors"] += usable_actors + + except subprocess.TimeoutExpired: + print(f" [{i:4d}/{total_slots}] {slot}: TIMEOUT (skipped)", flush=True) + continue + except Exception as e: + print(f" [{i:4d}/{total_slots}] {slot}: ERROR {e}", flush=True) + continue + + # Progress every 50 slots + if i % 50 == 0: + coverage = len(geom_slots) * 100 / i + print(f" [{i:4d}/{total_slots}] Progress: {len(geom_slots)} slots with geom ({coverage:.1f}%), " + f"{stats['total_usable_actors']:,} actors", flush=True) + + # Final stats + print(flush=True) + print("="*60, flush=True) + print("SCAN COMPLETE", flush=True) + print("="*60, flush=True) + print(f"Total canonical slots: {total_slots}", flush=True) + print(f"Slots with geom files: {len(geom_slots)} ({len(geom_slots)*100/total_slots:.1f}%)", flush=True) + print(f"Total cameras with geom: {stats['total_cameras']}", flush=True) + print(f"Total usable actors: {stats['total_usable_actors']:,}", flush=True) + print(f"Avg actors/slot: {stats['total_usable_actors']/max(len(geom_slots),1):.0f}", flush=True) + print(flush=True) + + # Save + output_data = { + "slots": geom_slots, + "stats": { + "total_canonical_slots": total_slots, + "slots_with_geom": len(geom_slots), + "coverage_percent": round(len(geom_slots) * 100 / total_slots, 1), + "total_cameras": stats["total_cameras"], + "total_usable_actors": stats["total_usable_actors"], + "avg_actors_per_slot": round(stats["total_usable_actors"] / max(len(geom_slots), 1)), + } + } + + with open(OUTPUT_PATH, "w") as f: + json.dump(output_data, f, indent=2) + + print(f"Saved: {OUTPUT_PATH}", flush=True) + print("="*60, flush=True) + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/build_scene_graph.py b/meva/scripts/v10/build_scene_graph.py new file mode 100644 index 0000000..f605caf --- /dev/null +++ b/meva/scripts/v10/build_scene_graph.py @@ -0,0 +1,260 @@ +""" +V7 build_scene_graph.py — Step 2: Entity-based scene graph with IoU matching + aliases. + +Builds an entity-based scene graph from parsed events + geom.yml bounding boxes. +Each entity = (camera_id, actor_id) with time span, keyframe bboxes, events, and +human-readable alias for question text. +""" + +from pathlib import Path +from typing import Any, Dict, List, Optional, Set, Tuple +from collections import defaultdict +from dataclasses import dataclass, asdict, field + +from .parse_annotations import Event, find_clips_for_slot, DEFAULT_FRAMERATE +from .utils.yaml_stream import get_actor_keyframe_bboxes, get_actor_frame_range +from .utils.krtd import load_camera_model, CameraModel, INDOOR_CAMERAS +from .utils.iou import compute_iou +from .activity_hierarchy import humanize_activity + + +# ============================================================================ +# Data Structures +# ============================================================================ + +@dataclass +class Entity: + """An entity (person/vehicle) tracked on one camera.""" + entity_id: str # "{camera_id}_actor_{actor_id}" + camera_id: str + actor_id: int + entity_type: str # "person" or "vehicle" + first_frame: int + last_frame: int + first_sec: float + last_sec: float + keyframe_bboxes: Dict[int, List[int]] # {frame: [x1,y1,x2,y2]} + events: List[str] # event_ids this entity participates in + alias: str = "" # Human-readable label (set after construction) + + def make_alias(self, event_list: list = None) -> str: + """ + Generate a human-readable entity alias for question text. + + Uses the entity's primary activity + actor ID + camera + timestamp. + """ + # Find this entity's primary activity from event list + primary_activity = None + mid_sec = None + if event_list: + for evt in event_list: + if evt.camera_id == self.camera_id: + for actor in evt.actors: + if actor["actor_id"] == self.actor_id: + primary_activity = evt.activity + mid_sec = round((evt.start_sec + evt.end_sec) / 2) + break + if primary_activity: + break + + # Build the alias + if primary_activity: + short_act = humanize_activity(primary_activity) + # Use entity's own time span if we didn't find event timing + t = mid_sec if mid_sec is not None else int(self.first_sec) + + # For small actor IDs, include them; for hash IDs, skip + if isinstance(self.actor_id, int) and self.actor_id < 10000: + return f"Person {short_act} (#{self.actor_id} on {self.camera_id} @ {t}s)" + else: + return f"Person {short_act} (on {self.camera_id} @ {t}s)" + + # Fallback: no activity + if isinstance(self.actor_id, int) and self.actor_id < 10000: + return f"Actor #{self.actor_id} on {self.camera_id}" + + return f"Person on {self.camera_id}" + + def to_dict(self) -> dict: + d = asdict(self) + d["alias"] = self.alias + return d + + +@dataclass +class CameraNode: + """Camera metadata for scene graph.""" + camera_id: str + is_indoor: bool + has_krtd: bool + position_enu: Optional[Tuple[float, float, float]] + + def to_dict(self) -> dict: + return asdict(self) + + +@dataclass +class SceneGraph: + """Complete scene graph for one slot.""" + slot: str + cameras: Dict[str, CameraNode] + entities: Dict[str, Entity] # {entity_id: Entity} + events: List[Event] + events_by_camera: Dict[str, List[Event]] + + def to_dict(self) -> dict: + return { + "slot": self.slot, + "cameras": {k: v.to_dict() for k, v in self.cameras.items()}, + "entities": {k: v.to_dict() for k, v in self.entities.items()}, + "events": [e.to_dict() for e in self.events], + "events_by_camera": { + k: [e.to_dict() for e in v] + for k, v in self.events_by_camera.items() + }, + } + + +# ============================================================================ +# Scene Graph Builder +# ============================================================================ + +def build_scene_graph(slot: str, events: List[Event], + verbose: bool = False) -> SceneGraph: + """ + Build an entity-based scene graph from parsed events. + + Steps: + 1. Build camera nodes with KRTD info + 2. Extract entities from events + geom.yml bboxes + 3. Link events to entities + + Args: + slot: Slot name + events: Parsed Event objects from parse_annotations + verbose: Print progress + + Returns: + SceneGraph with entities and events + """ + if verbose: + print(f"Building scene graph for {slot}") + + # Collect unique cameras + camera_ids = sorted(set(e.camera_id for e in events)) + + # 1. Build camera nodes + cameras: Dict[str, CameraNode] = {} + for cam_id in camera_ids: + model = load_camera_model(cam_id) + is_indoor = cam_id in INDOOR_CAMERAS + cameras[cam_id] = CameraNode( + camera_id=cam_id, + is_indoor=is_indoor, + has_krtd=model is not None, + position_enu=tuple(model.camera_center.tolist()) if model else None, + ) + + # 2. Extract entities: collect unique (camera, actor) pairs from events + # Also collect actor_ids per camera for geom.yml lookup + entity_actor_ids: Dict[str, Set[int]] = defaultdict(set) # cam -> actor_ids + entity_types: Dict[str, Dict[int, str]] = defaultdict(dict) # cam -> {aid: type} + entity_events: Dict[str, Dict[int, List[str]]] = defaultdict(lambda: defaultdict(list)) + + for evt in events: + for actor in evt.actors: + aid = actor["actor_id"] + entity_actor_ids[evt.camera_id].add(aid) + entity_types[evt.camera_id][aid] = actor.get("entity_type", "unknown") + entity_events[evt.camera_id][aid].append(evt.event_id) + + # 3. Try to get keyframe bboxes from geom.yml (stream-parsed) + clips = find_clips_for_slot(slot) + clip_by_camera = {c["camera_id"]: c for c in clips} + + entity_bboxes: Dict[str, Dict[int, Dict[int, List[int]]]] = {} # cam -> {aid: {frame: bbox}} + entity_frame_ranges: Dict[str, Dict[int, tuple]] = {} # cam -> {aid: (first, last)} + + for cam_id, actor_ids in entity_actor_ids.items(): + if cam_id not in clip_by_camera: + continue + clip = clip_by_camera[cam_id] + geom_path = Path(clip["activities_file"]).with_name( + Path(clip["activities_file"]).name.replace(".activities.yml", ".geom.yml") + ) + if geom_path.exists(): + try: + # V7: Load ALL frames (sample_every=1) for complete trajectories + bboxes = get_actor_keyframe_bboxes(geom_path, actor_ids, sample_every=1) + entity_bboxes[cam_id] = bboxes + + # Also get frame ranges + ranges = get_actor_frame_range(geom_path) + entity_frame_ranges[cam_id] = ranges + + if verbose: + print(f" {cam_id}: streamed geom.yml — {len(bboxes)} actors with bboxes") + except Exception as e: + if verbose: + print(f" {cam_id}: geom.yml parse error: {e}") + + # 4. Build entity objects + entities: Dict[str, Entity] = {} + framerate = DEFAULT_FRAMERATE + + for cam_id, actor_ids in entity_actor_ids.items(): + cam_ranges = entity_frame_ranges.get(cam_id, {}) + cam_bboxes = entity_bboxes.get(cam_id, {}) + + for aid in actor_ids: + entity_id = f"{cam_id}_actor_{aid}" + + # Frame range from geom.yml if available, else from events + if aid in cam_ranges: + first_frame, last_frame = cam_ranges[aid] + else: + # Estimate from events + actor_events = [e for e in events + if e.camera_id == cam_id + and any(a["actor_id"] == aid for a in e.actors)] + if actor_events: + first_frame = min(e.start_frame for e in actor_events) + last_frame = max(e.end_frame for e in actor_events) + else: + first_frame, last_frame = 0, 0 + + entities[entity_id] = Entity( + entity_id=entity_id, + camera_id=cam_id, + actor_id=aid, + entity_type=entity_types.get(cam_id, {}).get(aid, "unknown"), + first_frame=first_frame, + last_frame=last_frame, + first_sec=round(first_frame / framerate, 2), + last_sec=round(last_frame / framerate, 2), + keyframe_bboxes=cam_bboxes.get(aid, {}), + events=entity_events.get(cam_id, {}).get(aid, []), + ) + + # Group events by camera + events_by_camera: Dict[str, List[Event]] = defaultdict(list) + for evt in events: + events_by_camera[evt.camera_id].append(evt) + + # 5. Generate entity aliases for human-readable question text + for eid, entity in entities.items(): + entity.alias = entity.make_alias(events) + + sg = SceneGraph( + slot=slot, + cameras=cameras, + entities=entities, + events=events, + events_by_camera=dict(events_by_camera), + ) + + if verbose: + print(f" Total: {len(entities)} entities, {len(events)} events, " + f"{len(cameras)} cameras") + + return sg diff --git a/meva/scripts/v10/distractor_bank.py b/meva/scripts/v10/distractor_bank.py new file mode 100644 index 0000000..a7e3ee2 --- /dev/null +++ b/meva/scripts/v10/distractor_bank.py @@ -0,0 +1,105 @@ +""" +V6 distractor_bank.py — Wrong answer generation from activity pool. + +Generates plausible distractor activities for multiple-choice questions. +Distractors are same entity type (person/vehicle) as the correct answer, +preferring activities present in the current slot for plausibility. +""" + +import random +from typing import List, Set + + +# All 37 MEVA activity names grouped by entity type +PERSON_ACTIVITIES = [ + "person_opens_trunk", "person_closes_trunk", + "person_opens_vehicle_door", "person_closes_vehicle_door", + "person_opens_facility_door", "person_closes_facility_door", + "person_enters_vehicle", "person_exits_vehicle", + "person_unloads_vehicle", "person_loads_vehicle", + "person_picks_up_object", "person_puts_down_object", + "person_carries_heavy_object", "person_transfers_object", + "person_talks_to_person", "person_embraces_person", + "person_enters_scene_through_structure", + "person_exits_scene_through_structure", + "person_sits_down", "person_stands_up", + "person_talks_on_phone", "person_texts_on_phone", + "person_reads_document", "person_interacts_with_laptop", + "person_purchases", "person_rides_bicycle", +] + +VEHICLE_ACTIVITIES = [ + "vehicle_starts", "vehicle_stops", + "vehicle_turns_left", "vehicle_turns_right", + "vehicle_makes_u_turn", "vehicle_reverses", + "vehicle_drops_off_person", "vehicle_picks_up_person", +] + +ALL_ACTIVITIES = PERSON_ACTIVITIES + VEHICLE_ACTIVITIES + + +def get_distractors(correct_activity: str, slot_activities: Set[str], + rng: random.Random, n: int = 3) -> List[str]: + """ + Pick n distractor activities that are: + 1. Same entity type (person/vehicle) as correct answer + 2. NOT the correct activity + 3. Prefer activities present in THIS slot (more plausible) + 4. Fall back to global pool if needed + + Args: + correct_activity: The correct answer activity + slot_activities: Set of all activities in the current slot + rng: Random number generator (for reproducibility) + n: Number of distractors to generate + + Returns: + List of n distractor activity names + """ + entity = "vehicle" if correct_activity.startswith("vehicle_") else "person" + pool = VEHICLE_ACTIVITIES if entity == "vehicle" else PERSON_ACTIVITIES + + # Prefer activities in this slot (more believable distractors) + in_slot = [a for a in slot_activities if a != correct_activity and a in pool] + out_slot = [a for a in pool if a != correct_activity and a not in in_slot] + + rng.shuffle(in_slot) + rng.shuffle(out_slot) + + distractors = in_slot[:n] + if len(distractors) < n: + distractors += out_slot[:n - len(distractors)] + return distractors[:n] + + +def get_camera_distractors(correct_cameras: List[str], all_cameras: List[str], + rng: random.Random, n: int = 3) -> List[str]: + """ + Pick n distractor camera IDs. + + Args: + correct_cameras: Camera(s) that are the correct answer + all_cameras: All cameras in the slot + rng: Random number generator + n: Number of distractors + + Returns: + List of distractor camera IDs + """ + pool = [c for c in all_cameras if c not in correct_cameras] + rng.shuffle(pool) + result = pool[:n] + + # If not enough distractors from slot cameras, pad from global MEVA pool + if len(result) < n: + global_pool = [ + "G299", "G300", "G328", "G330", "G336", "G339", "G341", "G419", + "G420", "G421", "G423", "G424", "G436", "G638", "G639", + "G503", "G504", "G505", "G506", "G507", "G508", "G509", + ] + extras = [c for c in global_pool + if c not in correct_cameras and c not in result and c not in all_cameras] + rng.shuffle(extras) + result.extend(extras[:n - len(result)]) + + return result[:n] diff --git a/meva/scripts/v10/entity_resolution.py b/meva/scripts/v10/entity_resolution.py new file mode 100644 index 0000000..3cb80a6 --- /dev/null +++ b/meva/scripts/v10/entity_resolution.py @@ -0,0 +1,298 @@ +""" +V7 entity_resolution.py — Step 3: Cross-camera entity linking. + +Uses MEVID ground truth person IDs + heuristic temporal handoff for +cross-camera entity resolution. Produces entity clusters where each +cluster represents the same real-world person across cameras. + +V7: Added MEVID validation stats to ResolvedGraph output. +""" + +from typing import Any, Dict, List, Optional, Set, Tuple +from collections import defaultdict +from dataclasses import dataclass, asdict + +from .build_scene_graph import SceneGraph, Entity +from .utils.mevid import find_mevid_persons_for_slot + + +# ============================================================================ +# Data Structures +# ============================================================================ + +@dataclass +class CrossCameraLink: + """A link between two entities on different cameras.""" + entity_a: str + entity_b: str + camera_a: str + camera_b: str + link_type: str # "mevid_ground_truth" or "temporal_handoff" + confidence: float # 1.0 for MEVID, 0.0-1.0 for heuristic + mevid_person_id: Optional[int] = None + time_gap_sec: Optional[float] = None + + def to_dict(self) -> dict: + return asdict(self) + + +@dataclass +class EntityCluster: + """A cluster of entities representing the same real-world person.""" + cluster_id: str + entities: List[str] # entity_ids + cameras: List[str] # camera_ids involved + mevid_person_id: Optional[int] = None + link_type: str = "heuristic" # "mevid_ground_truth" or "heuristic" + + def to_dict(self) -> dict: + return asdict(self) + + +@dataclass +class ResolvedGraph: + """Scene graph with resolved cross-camera entity links.""" + cross_camera_links: List[CrossCameraLink] + entity_clusters: List[EntityCluster] + mevid_persons_in_slot: int + heuristic_link_count: int + mevid_link_count: int + mevid_person_cameras: Dict[int, Set[str]] = None # V7: person_id -> {camera_ids} + + def to_dict(self) -> dict: + return { + "cross_camera_links": [l.to_dict() for l in self.cross_camera_links], + "entity_clusters": [c.to_dict() for c in self.entity_clusters], + "mevid_persons_in_slot": self.mevid_persons_in_slot, + "heuristic_link_count": self.heuristic_link_count, + "mevid_link_count": self.mevid_link_count, + "mevid_person_cameras": { + str(k): sorted(v) for k, v in (self.mevid_person_cameras or {}).items() + }, + } + + +# ============================================================================ +# Union-Find for clustering +# ============================================================================ + +class UnionFind: + def __init__(self): + self.parent: Dict[str, str] = {} + self.rank: Dict[str, int] = {} + + def find(self, x: str) -> str: + if x not in self.parent: + self.parent[x] = x + self.rank[x] = 0 + if self.parent[x] != x: + self.parent[x] = self.find(self.parent[x]) + return self.parent[x] + + def union(self, a: str, b: str): + ra, rb = self.find(a), self.find(b) + if ra == rb: + return + if self.rank[ra] < self.rank[rb]: + ra, rb = rb, ra + self.parent[rb] = ra + if self.rank[ra] == self.rank[rb]: + self.rank[ra] += 1 + + def clusters(self) -> Dict[str, Set[str]]: + groups: Dict[str, Set[str]] = defaultdict(set) + for item in self.parent: + groups[self.find(item)].add(item) + return dict(groups) + + +# ============================================================================ +# MEVID-Based Entity Resolution (Ground Truth) +# ============================================================================ + +def _resolve_mevid(sg: SceneGraph, verbose: bool = False) -> Tuple[List[CrossCameraLink], Dict[int, Set[str]]]: + """ + Use MEVID person IDs to establish cross-camera entity links. + + Since we can't map MEVID person_ids to specific Kitware actor_ids without + extracted tracklet images, we establish POTENTIAL cross-camera links: + For each MEVID person appearing on 2+ cameras in this slot, we know that + some entity on camera A is the same person as some entity on camera B. + + Returns: + (links, mevid_persons_map) + """ + slot_cameras = list(sg.cameras.keys()) + mevid_persons = find_mevid_persons_for_slot(sg.slot, slot_cameras) + + if verbose: + print(f" MEVID: {len(mevid_persons)} persons with 2+ cameras in slot") + for pid, cams in sorted(mevid_persons.items())[:5]: + print(f" Person {pid}: cameras {sorted(cams)}") + + # We can't create specific entity-to-entity links without tracklet extraction + # but we know which cameras share persons — this validates heuristic links + return [], mevid_persons + + +# ============================================================================ +# Heuristic Entity Resolution (Temporal Handoff) +# ============================================================================ + +# Entry/exit activities that suggest camera handoff +EXIT_ACTIVITIES = { + "person_exits_scene_through_structure", + "person_exits_vehicle", +} +ENTRY_ACTIVITIES = { + "person_enters_scene_through_structure", + "person_enters_vehicle", +} + + +def _resolve_heuristic(sg: SceneGraph, verbose: bool = False) -> List[CrossCameraLink]: + """ + Heuristic cross-camera entity linking via temporal handoff. + + Strategy: If a person-type entity's time span ENDS on camera A around time T, + and another person-type entity's time span STARTS on camera B around time T, + AND both have a small number of events (suggesting a brief appearance = handoff), + link them as potentially the same person. + + Only considers entities that participate in at least 1 event (not background actors). + """ + MAX_HANDOFF_GAP = 10.0 # seconds — tight for heuristic + MIN_HANDOFF_GAP = 1.0 # seconds (avoid linking simultaneous entities) + MAX_LINKS_PER_ENTITY = 2 # prevent one entity linking to everything + + links = [] + link_count: Dict[str, int] = {} # entity_id -> # links created + + # Only consider entities that participate in events + active_entities = [] + for eid, entity in sg.entities.items(): + if entity.entity_type != "person": + continue + if not entity.events: + continue + active_entities.append({ + "entity_id": eid, + "camera_id": entity.camera_id, + "first_sec": entity.first_sec, + "last_sec": entity.last_sec, + }) + + # Sort by last_sec (when they leave) + active_entities.sort(key=lambda x: x["last_sec"]) + + # Index by first_sec for efficient lookup + by_first = sorted(active_entities, key=lambda x: x["first_sec"]) + + for ea in active_entities: + if link_count.get(ea["entity_id"], 0) >= MAX_LINKS_PER_ENTITY: + continue + + # Look for entities that START shortly after ea ENDS + for eb in by_first: + if ea["camera_id"] == eb["camera_id"]: + continue + + gap = eb["first_sec"] - ea["last_sec"] + + if gap < MIN_HANDOFF_GAP: + continue + if gap > MAX_HANDOFF_GAP: + break # sorted, so no more matches + + if link_count.get(eb["entity_id"], 0) >= MAX_LINKS_PER_ENTITY: + continue + + confidence = max(0.4, 1.0 - gap / MAX_HANDOFF_GAP) + links.append(CrossCameraLink( + entity_a=ea["entity_id"], + entity_b=eb["entity_id"], + camera_a=ea["camera_id"], + camera_b=eb["camera_id"], + link_type="temporal_handoff", + confidence=round(confidence, 2), + time_gap_sec=round(gap, 2), + )) + link_count[ea["entity_id"]] = link_count.get(ea["entity_id"], 0) + 1 + link_count[eb["entity_id"]] = link_count.get(eb["entity_id"], 0) + 1 + + if verbose: + print(f" Heuristic: {len(links)} temporal handoff links " + f"(from {len(active_entities)} active entities)") + + return links + + +# ============================================================================ +# Combined Entity Resolution +# ============================================================================ + +def resolve_entities(sg: SceneGraph, verbose: bool = False) -> ResolvedGraph: + """ + Run entity resolution: MEVID ground truth + heuristic temporal handoff. + + Args: + sg: Scene graph from build_scene_graph + verbose: Print progress + + Returns: + ResolvedGraph with cross-camera links and entity clusters + """ + if verbose: + print("Resolving cross-camera entities...") + + # 1. MEVID ground truth (camera-level mapping) + mevid_links, mevid_persons = _resolve_mevid(sg, verbose) + + # 2. Heuristic temporal handoff + heuristic_links = _resolve_heuristic(sg, verbose) + + # 3. Combine links and build clusters using Union-Find + all_links = mevid_links + heuristic_links + + uf = UnionFind() + for link in all_links: + if link.confidence >= 0.7: # stricter threshold for clustering + uf.union(link.entity_a, link.entity_b) + + # Also add all entities (even unlinked) to UnionFind + for eid in sg.entities: + uf.find(eid) + + # Build entity clusters (only multi-entity clusters) + raw_clusters = uf.clusters() + entity_clusters = [] + cluster_idx = 0 + for root, members in raw_clusters.items(): + if len(members) < 2: + continue + cameras = sorted(set( + sg.entities[eid].camera_id for eid in members if eid in sg.entities + )) + if len(cameras) < 2: + continue + entity_clusters.append(EntityCluster( + cluster_id=f"cluster_{cluster_idx}", + entities=sorted(members), + cameras=cameras, + link_type="heuristic", + )) + cluster_idx += 1 + + if verbose: + print(f" Clusters: {len(entity_clusters)} cross-camera entity clusters") + for c in entity_clusters[:3]: + print(f" {c.cluster_id}: {c.entities} across {c.cameras}") + + return ResolvedGraph( + cross_camera_links=all_links, + entity_clusters=entity_clusters, + mevid_persons_in_slot=len(mevid_persons), + heuristic_link_count=len(heuristic_links), + mevid_link_count=len(mevid_links), + mevid_person_cameras=mevid_persons, + ) diff --git a/meva/scripts/v10/export_to_multicam_format.py b/meva/scripts/v10/export_to_multicam_format.py new file mode 100644 index 0000000..0c7365e --- /dev/null +++ b/meva/scripts/v10/export_to_multicam_format.py @@ -0,0 +1,280 @@ +#!/usr/bin/env python3 +""" +export_to_multicam_format.py — Transform FINAL naturalized QA to multi-cam-dataset schema. + +Reads: /home/ah66742/data/qa_pairs/{slot}.final.naturalized.json +Writes: /nas/neurosymbolic/multi-cam-dataset/meva/qa_pairs/{slot}.json + +Target schema matches agibot / ego-exo4d format: + { + "slot": "...", + "question_type": "temporal", + "question": "...", + "options": {"A": "...", "B": "...", "C": "...", "D": "..."}, + "answer": "A", + "reasoning": "...", + "video_paths": [...], + "metadata": { site, cameras, camera_names, difficulty, verification } + } + +Usage: + python3 scripts/final/export_to_multicam_format.py --slot "2018-03-11.11-25-00.school" + python3 scripts/final/export_to_multicam_format.py --all + python3 scripts/final/export_to_multicam_format.py --slot "..." --dry-run +""" + +import json +import argparse +import sys +from pathlib import Path +from typing import Dict, List, Any, Optional + +# Paths +INPUT_DIR = Path("/home/ah66742/data/qa_pairs") +OUTPUT_DIR = Path("/nas/neurosymbolic/multi-cam-dataset/meva/qa_pairs") + +LETTER_MAP = {0: "A", 1: "B", 2: "C", 3: "D", 4: "E", 5: "F"} + + +def _options_to_dict(options: List[str]) -> Dict[str, str]: + """Convert list of options to {A: ..., B: ..., C: ..., D: ...} dict.""" + return {LETTER_MAP[i]: opt for i, opt in enumerate(options) if i in LETTER_MAP} + + +def _index_to_letter(idx: int) -> str: + """Convert 0-based index to letter answer.""" + return LETTER_MAP.get(idx, "A") + + +def _extract_site(slot: str) -> str: + """Extract site from slot name: '2018-03-11.11-25-00.school' → 'school'.""" + parts = slot.split(".") + return parts[-1] if len(parts) >= 3 else "unknown" + + +def _build_camera_names(cameras: List[str]) -> Dict[str, str]: + """Build camera_names dict: {'G421': 'Camera G421', ...}.""" + return {cam: f"Camera {cam}" for cam in cameras} + + +def _transform_question(q: dict, slot: str, envelope: dict) -> dict: + """Transform a single V9 naturalized QA item to multi-cam-dataset format.""" + # Pick the best available question text + question_text = ( + q.get("naturalized_question") + or q.get("question_template") + or q.get("question", "") + ) + + # Pick the best available options list + options_list = ( + q.get("naturalized_options") + or q.get("options") + or [] + ) + + # Build the camera list for this question + q_cameras = q.get("requires_cameras", []) + if not q_cameras: + # Fall back to envelope-level cameras + q_cameras = envelope.get("cameras", []) + + # Core answer index + answer_idx = q.get("correct_answer_index", 0) + + # Verification data (strip internal fields, keep useful ones) + verification = q.get("verification", {}) + + # Build grounding from verification events (match ego-exo4d ordered_events style) + grounding = _build_grounding(q) + + # Assemble metadata + site = _extract_site(slot) + metadata: Dict[str, Any] = { + "site": site, + "slot": slot, + "cameras": q_cameras, + "camera_names": _build_camera_names(q_cameras), + "difficulty": q.get("difficulty", "medium"), + } + if grounding: + metadata["grounding"] = grounding + if verification: + metadata["verification"] = verification + + # Assemble the output question + out: Dict[str, Any] = { + "slot": slot, + "question_type": q.get("category", "unknown"), + "question": question_text, + "options": _options_to_dict(options_list), + "answer": _index_to_letter(answer_idx), + "reasoning": q.get("reasoning", ""), + "video_paths": q.get("video_paths", []), + "metadata": metadata, + } + + return out + + +def _build_grounding(q: dict) -> List[Dict[str, Any]]: + """Build a grounding/ordered_events list from verification data. + + Matches ego-exo4d style: + [{"activity": "...", "camera": "G421", "start_timestamp": 0.33}, ...] + """ + verification = q.get("verification", {}) + category = q.get("category", "") + events = [] + + if category in ("temporal", "spatial"): + for key in ["event_a", "event_b"]: + ev = verification.get(key, {}) + if ev and ev.get("activity"): + entry: Dict[str, Any] = { + "activity": ev["activity"], + "camera": ev.get("camera", ""), + } + if "start_sec" in ev: + entry["start_timestamp"] = ev["start_sec"] + if "end_sec" in ev: + entry["end_timestamp"] = ev["end_sec"] + events.append(entry) + + elif category == "event_ordering": + ordered = verification.get("ordered_events", []) + for ev in ordered: + if ev.get("activity"): + entry = { + "activity": ev["activity"], + "camera": ev.get("camera", ""), + } + if "start_sec" in ev: + entry["start_timestamp"] = ev["start_sec"] + events.append(entry) + + elif category == "best_camera": + ev = verification + if ev.get("activity"): + entry = { + "activity": ev["activity"], + "camera": ev.get("correct_camera", ""), + } + if "entrance_time_sec" in ev: + entry["start_timestamp"] = ev["entrance_time_sec"] + events.append(entry) + + elif category in ("perception", "summarization", "counting"): + ev = verification.get("target_event", verification) + if ev.get("activity"): + entry = { + "activity": ev["activity"], + "camera": ev.get("camera", ev.get("correct_camera", "")), + } + if "start_sec" in ev: + entry["start_timestamp"] = ev["start_sec"] + events.append(entry) + + return events + + +def export_slot(slot: str, dry_run: bool = False, verbose: bool = False) -> Optional[List[dict]]: + """Export one slot from V9 naturalized format to multi-cam-dataset format. + + Returns the exported list of questions, or None on failure. + """ + input_file = INPUT_DIR / f"{slot}.final.naturalized.json" + if not input_file.exists(): + # Try v9 format as fallback + input_file = INPUT_DIR / f"{slot}.v9.naturalized.json" + if not input_file.exists(): + print(f" ERROR: Input not found: {input_file}", file=sys.stderr) + return None + + with open(input_file) as f: + envelope = json.load(f) + + qa_pairs = envelope.get("qa_pairs", []) + if not qa_pairs: + print(f" WARNING: No qa_pairs in {input_file}", file=sys.stderr) + return [] + + exported = [] + for q in qa_pairs: + out = _transform_question(q, slot, envelope) + exported.append(out) + + if verbose: + print(f" Transformed {len(exported)} questions for {slot}") + # Category breakdown + cats = {} + for q in exported: + cats[q["question_type"]] = cats.get(q["question_type"], 0) + 1 + for cat, count in sorted(cats.items()): + print(f" {cat}: {count}") + + if dry_run: + print(json.dumps(exported[:2], indent=2)) + print(f" ... ({len(exported)} total, showing first 2)") + return exported + + # Write output + OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + output_file = OUTPUT_DIR / f"{slot}.json" + with open(output_file, "w") as f: + json.dump(exported, f, indent=2) + + if verbose: + print(f" Written to {output_file}") + + return exported + + +def find_all_naturalized_slots() -> List[str]: + """Find all slots that have .final.naturalized.json files.""" + slots = [] + for f in sorted(INPUT_DIR.glob("*.final.naturalized.json")): + slot = f.name.replace(".final.naturalized.json", "") + slots.append(slot) + # Also check v9 format as fallback + for f in sorted(INPUT_DIR.glob("*.v9.naturalized.json")): + slot = f.name.replace(".v9.naturalized.json", "") + if slot not in slots: + slots.append(slot) + return sorted(slots) + + +def main(): + parser = argparse.ArgumentParser(description="Export V9 QA to multi-cam-dataset format") + parser.add_argument("--slot", type=str, help="Slot name to export") + parser.add_argument("--all", action="store_true", help="Export all available naturalized slots") + parser.add_argument("--dry-run", action="store_true", help="Print sample output without writing") + parser.add_argument("-v", "--verbose", action="store_true", help="Verbose output") + args = parser.parse_args() + + if not args.slot and not args.all: + parser.print_help() + sys.exit(1) + + if args.all: + slots = find_all_naturalized_slots() + if not slots: + print("No .v9.naturalized.json files found.", file=sys.stderr) + sys.exit(1) + print(f"Found {len(slots)} slot(s) to export:") + total = 0 + for slot in slots: + print(f"\n [{slot}]") + result = export_slot(slot, dry_run=args.dry_run, verbose=args.verbose) + if result is not None: + total += len(result) + print(f"\nTotal: {total} questions exported across {len(slots)} slot(s)") + else: + result = export_slot(args.slot, dry_run=args.dry_run, verbose=args.verbose) + if result is None: + sys.exit(1) + print(f"Exported {len(result)} questions for {args.slot}") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/extract_entity_descriptions.py b/meva/scripts/v10/extract_entity_descriptions.py new file mode 100644 index 0000000..3eea610 --- /dev/null +++ b/meva/scripts/v10/extract_entity_descriptions.py @@ -0,0 +1,710 @@ +#!/usr/bin/env python3 +""" +V8 Entity Description Extractor — Extract visual descriptions from raw video + geom.yml. + +For EVERY annotated actor in a slot, this script: + 1. Parses geom.yml → per-actor bounding boxes per frame + 2. Extracts 5 representative crops from the MP4 video + 3. Runs YOLO color analysis on each crop (upper/lower body colors, carried objects) + 4. Aggregates via majority vote across crops + 5. Generates template description: "a person in blue top and black pants carrying a backpack" + +This gives EVERY entity a visual description (not just the 10% with MEVID matches), +solving the temporal disambiguation problem where "a person enters scene" is ambiguous +when there are 100+ such events. + +Cost: $0 (all local, no API calls) +Time: ~3-4 min per slot (mostly video decode + YOLO inference) + +Usage: + python3 scripts/v8/extract_entity_descriptions.py --slot 2018-03-11.11-25-00.school -v + python3 scripts/v8/extract_entity_descriptions.py --slot 2018-03-11.11-25-00.school --dry-run +""" + +import argparse +import json +import re +import sys +import time +import glob +import os +from pathlib import Path +from collections import Counter, defaultdict +from typing import Dict, List, Optional, Tuple, Set + +import cv2 +import numpy as np + +# ============================================================================ +# Paths +# ============================================================================ + +KITWARE_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware") +KITWARE_TRAINING_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware-meva-training") +AVI_BASE = Path("/nas/mars/dataset/MEVA/avis") # Raw AVIs — lossless, better color +MP4_BASE = Path("/nas/mars/dataset/MEVA/mp4s") # Fallback (CRF 32 re-encode) +OUTPUT_DIR = Path("/home/ah66742/data/entity_descriptions") + +# ============================================================================ +# Constants +# ============================================================================ + +CROPS_PER_ACTOR = 5 # Crops to extract per actor track +MIN_BBOX_HEIGHT = 25 # Min bbox height in pixels for usable crop +MIN_BBOX_WIDTH = 10 # Min bbox width +YOLO_CONF = 0.25 # YOLO detection confidence threshold +YOLO_MODEL = "yolov8n.pt" # Nano model (fast, sufficient for crops) + +# COCO carried-object classes +CARRIED_OBJECTS = { + 24: "backpack", 25: "umbrella", 26: "handbag", 27: "tie", + 28: "suitcase", 39: "bottle", 63: "laptop", 67: "cell phone", + 73: "book", 74: "clock", +} + +# ============================================================================ +# Geom Parsing (regex-based, memory efficient) +# ============================================================================ + +# Order-independent field extractors: handle both kitware and kitware-training formats +# kitware: - { geom: {id1: 5193, id0: 1, ts0: 51, g0: 881 438 947 603, keyframe: true } } +# training: - {'geom': {'g0': '282 499 432 764', 'id0': 115, 'id1': 3, 'ts0': 1019}} +_RE_ID1 = re.compile(r"['\"]?id1['\"]?\s*:\s*['\"]?(\d+)") +_RE_TS0 = re.compile(r"['\"]?ts0['\"]?\s*:\s*['\"]?(\d+)") +_RE_G0 = re.compile(r"['\"]?g0['\"]?\s*:\s*['\"]?(\d+)\s+(\d+)\s+(\d+)\s+(\d+)") + + +def parse_geom(geom_path: Path) -> Dict[int, Dict[int, Tuple[int, int, int, int]]]: + """ + Parse geom.yml → Dict[actor_id → Dict[frame_num → (x1, y1, x2, y2)]]. + Uses regex line-by-line (no YAML load, handles 100K+ line files). + Handles both field orderings (kitware vs kitware-training). + """ + actors = defaultdict(dict) + with open(geom_path) as f: + for line in f: + id1_m = _RE_ID1.search(line) + ts0_m = _RE_TS0.search(line) + g0_m = _RE_G0.search(line) + if not (id1_m and ts0_m and g0_m): + continue + actor_id = int(id1_m.group(1)) + frame = int(ts0_m.group(1)) + bbox = (int(g0_m.group(1)), int(g0_m.group(2)), + int(g0_m.group(3)), int(g0_m.group(4))) + actors[actor_id][frame] = bbox + return dict(actors) + + +# ============================================================================ +# Video Crop Extraction +# ============================================================================ + +def extract_crops(video_path: Path, + actors: Dict[int, Dict[int, Tuple[int, int, int, int]]], + max_crops: int = CROPS_PER_ACTOR, + min_h: int = MIN_BBOX_HEIGHT, + min_w: int = MIN_BBOX_WIDTH, + ) -> Dict[int, List[np.ndarray]]: + """ + Extract bbox crops for all actors from a single video. + + Strategy selection: + - Few target frames (< 200) spread across the video → random seek + - Many target frames or dense clustering → sequential read (skip non-target) + + Sequential read is ~10-50x faster than random seek on H.264 MP4s because + seeks must decode from the nearest keyframe, while sequential just grabs + the next already-decoded frame. + + For each actor, samples `max_crops` frames evenly across their track, + filtering out tiny bboxes. Returns Dict[actor_id → [crop_bgr, ...]]. + """ + if not actors: + return {} + + # Build frame → [(actor_id, bbox)] mapping, sampling per actor + frame_to_actors: Dict[int, List[Tuple[int, Tuple]]] = defaultdict(list) + + for actor_id, keyframes in actors.items(): + # Filter to usable bboxes + usable = {f: bb for f, bb in keyframes.items() + if (bb[2] - bb[0]) >= min_w and (bb[3] - bb[1]) >= min_h} + if not usable: + continue + + frames = sorted(usable.keys()) + if len(frames) > max_crops: + indices = np.linspace(0, len(frames) - 1, max_crops, dtype=int) + frames = [frames[i] for i in indices] + + for fn in frames: + frame_to_actors[fn].append((actor_id, usable[fn])) + + if not frame_to_actors: + return {} + + target_frames = sorted(frame_to_actors.keys()) + target_set = set(target_frames) + results: Dict[int, List[np.ndarray]] = defaultdict(list) + + cap = cv2.VideoCapture(str(video_path)) + if not cap.isOpened(): + print(f" WARNING: Cannot open {video_path}") + return {} + + total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + last_target = target_frames[-1] + + # Decide strategy: sequential if many frames or if target span covers >30% + # of the video (seeking back-and-forth is slower than just reading through) + span = last_target - target_frames[0] + 1 + use_sequential = (len(target_frames) > 150 or + span > 0 and len(target_frames) / span > 0.02) + + def _crop_frame(frame_bgr, frame_idx): + """Extract all actor crops from a decoded frame.""" + h, w = frame_bgr.shape[:2] + for actor_id, bbox in frame_to_actors[frame_idx]: + x1, y1, x2, y2 = bbox + x1, y1 = max(0, x1), max(0, y1) + x2, y2 = min(w, x2), min(h, y2) + if x2 <= x1 or y2 <= y1: + continue + crop = frame_bgr[y1:y2, x1:x2] + if crop.size > 0: + results[actor_id].append(crop) + + if use_sequential: + # Sequential read: read every frame from first target to last target, + # only decode+crop on target frames. cap.grab() is fast (no decode), + # cap.retrieve() decodes only when needed. + start_frame = target_frames[0] + if start_frame > 0: + cap.set(cv2.CAP_PROP_POS_FRAMES, start_frame) + + current = start_frame + collected = 0 + while current <= last_target and current < total_frames: + if current in target_set: + ret, frame = cap.read() + if ret: + _crop_frame(frame, current) + collected += 1 + else: + cap.grab() # Advance without decoding — very fast + current += 1 + else: + # Random seek: fewer frames, worth the per-seek cost + for target_frame in target_frames: + if target_frame >= total_frames: + continue + cap.set(cv2.CAP_PROP_POS_FRAMES, target_frame) + ret, frame = cap.read() + if not ret: + continue + _crop_frame(frame, target_frame) + + cap.release() + return dict(results) + + +# ============================================================================ +# Color Analysis (HSV-based, same as extract_attributes_yolo.py) +# ============================================================================ + +def _hsv_to_color(h: float, s: float, v: float) -> str: + """Convert OpenCV HSV (H:0-180, S:0-255, V:0-255) to color name.""" + if s < 40: + if v < 60: + return "black" + elif v < 150: + return "gray" + else: + return "white" + if v < 40: + return "black" + if h < 10 or h > 170: + return "red" + elif h < 22: + return "orange" + elif h < 35: + return "yellow" + elif h < 78: + return "green" + elif h < 131: + return "blue" + elif h < 155: + return "purple" + elif h <= 170: + return "pink" + return "unknown" + + +def _extract_region_color(crop_bgr: np.ndarray) -> str: + """Extract dominant color from a BGR crop using center-weighted HSV mean.""" + if crop_bgr is None or crop_bgr.size == 0: + return "unknown" + h, w = crop_bgr.shape[:2] + if h < 4 or w < 4: + return "unknown" + + # Inner 80% to avoid background bleed + my, mx = max(1, h // 10), max(1, w // 10) + inner = crop_bgr[my:h - my, mx:w - mx] + + hsv = cv2.cvtColor(inner, cv2.COLOR_BGR2HSV) + h_mean = float(np.mean(hsv[:, :, 0])) + s_mean = float(np.mean(hsv[:, :, 1])) + v_mean = float(np.mean(hsv[:, :, 2])) + + return _hsv_to_color(h_mean, s_mean, v_mean) + + +def analyze_crops_color_only(crops: List[np.ndarray]) -> Dict: + """ + Analyze a list of person-crop BGR images using HSV color analysis only. + No YOLO needed — faster, simpler, works on any size crop. + + Returns dict with upper_color, lower_color. + """ + upper_colors = [] + lower_colors = [] + + for crop in crops: + h, w = crop.shape[:2] + if h < 10: + continue + + # Upper body: 10-45% of height (skip head) + u_y1 = int(h * 0.10) + u_y2 = int(h * 0.45) + # Lower body: 55-90% (skip feet) + l_y1 = int(h * 0.55) + l_y2 = int(h * 0.90) + + upper_colors.append(_extract_region_color(crop[u_y1:u_y2, :])) + lower_colors.append(_extract_region_color(crop[l_y1:l_y2, :])) + + upper = _majority_vote(upper_colors) + lower = _majority_vote(lower_colors) + + return {"upper_color": upper, "lower_color": lower} + + +def _majority_vote(colors: List[str]) -> str: + """Majority vote ignoring 'unknown'.""" + filtered = [c for c in colors if c != "unknown"] + if not filtered: + return "unknown" + return Counter(filtered).most_common(1)[0][0] + + +# ============================================================================ +# YOLO Analysis (optional, richer — detects carried objects) +# ============================================================================ + +_yolo_model = None + + +def _get_yolo(): + """Lazy-load YOLO model.""" + global _yolo_model + if _yolo_model is None: + from ultralytics import YOLO + _yolo_model = YOLO(YOLO_MODEL) + return _yolo_model + + +def analyze_crops_yolo(crops: List[np.ndarray]) -> Dict: + """ + Analyze crops with YOLO for person detection, colors, and carried objects. + More expensive than color-only but detects backpacks, bottles, phones, etc. + """ + model = _get_yolo() + + upper_colors = [] + lower_colors = [] + all_objects = [] + + for crop in crops: + h, w = crop.shape[:2] + if h < 15 or w < 8: + continue + + # Run YOLO + results = model(crop, conf=YOLO_CONF, verbose=False) + + # Find person bbox and carried objects + person_box = None + person_conf = 0.0 + + if results and len(results[0].boxes) > 0: + for box in results[0].boxes: + cls_id = int(box.cls.cpu().numpy()[0]) + conf = float(box.conf.cpu().numpy()[0]) + if cls_id == 0 and conf > person_conf: + coords = box.xyxy[0].cpu().numpy() + person_box = (int(coords[0]), int(coords[1]), + int(coords[2]), int(coords[3])) + person_conf = conf + if cls_id in CARRIED_OBJECTS and conf > 0.3: + all_objects.append(CARRIED_OBJECTS[cls_id]) + + # Use person bbox if found, else full crop + if person_box: + px1, py1, px2, py2 = person_box + else: + px1, py1, px2, py2 = 0, 0, w, h + + ph = py2 - py1 + if ph < 10: + continue + + # Upper/lower body color + u_y1 = py1 + int(ph * 0.10) + u_y2 = py1 + int(ph * 0.45) + l_y1 = py1 + int(ph * 0.55) + l_y2 = py1 + int(ph * 0.90) + + upper_colors.append(_extract_region_color(crop[u_y1:u_y2, px1:px2])) + lower_colors.append(_extract_region_color(crop[l_y1:l_y2, px1:px2])) + + upper = _majority_vote(upper_colors) + lower = _majority_vote(lower_colors) + + # Objects seen in >= 2 crops (or any if only 1 crop) + obj_counts = Counter(all_objects) + objects = sorted(set( + obj for obj, cnt in obj_counts.items() + if cnt >= 2 or len(crops) <= 2 + )) + + return {"upper_color": upper, "lower_color": lower, "carried_objects": objects} + + +# ============================================================================ +# Description Generation (template-based, free) +# ============================================================================ + +def build_description(attrs: Dict) -> str: + """ + Build a natural description from structured attributes. + + Examples: + {"upper_color": "blue", "lower_color": "black", "carried_objects": ["backpack"]} + → "a person in a blue top and black pants carrying a backpack" + + {"upper_color": "gray", "lower_color": "green", "carried_objects": []} + → "a person in a gray top and green pants" + """ + parts = [] + + upper = attrs.get("upper_color", "unknown") + lower = attrs.get("lower_color", "unknown") + + if upper != "unknown" and lower != "unknown": + parts.append(f"a person in a {upper} top and {lower} pants") + elif upper != "unknown": + parts.append(f"a person in a {upper} top") + elif lower != "unknown": + parts.append(f"a person in {lower} pants") + else: + parts.append("a person") + + objects = attrs.get("carried_objects", []) + if objects: + obj_str = " and ".join(objects[:2]) # Max 2 objects + parts[0] += f" carrying a {obj_str}" + + return parts[0] + + +# ============================================================================ +# Slot Processing Pipeline +# ============================================================================ + +def find_slot_files(slot: str) -> List[Dict]: + """ + Find geom.yml + video pairs for a slot. + Searches BOTH kitware/ and kitware-meva-training/ directories. + Prefers raw AVI (lossless) over MP4 (CRF 32 re-encode) for better color. + Returns list of {camera, geom_path, video_path, act_path, video_format, source}. + """ + # Parse slot: "2018-03-11.11-25.school" + parts = slot.split(".") + if len(parts) < 3: + raise ValueError(f"Invalid slot format: {slot} (expected date.time.site)") + + date = parts[0] + time_part = parts[1] # HH-MM (no seconds) + site = parts[2] + + hour = time_part.split("-")[0] # e.g. "11" from "11-25" + + # Check both annotation sources + search_dirs = [ + (KITWARE_BASE / date / hour, "kitware"), + (KITWARE_TRAINING_BASE / date / hour, "kitware-training"), + ] + + avi_dir = AVI_BASE / date / hour + mp4_dir = MP4_BASE / date / hour + + # Find geom files matching slot pattern + prefix = f"{date}.{time_part}" + results = [] + + for kitware_dir, source in search_dirs: + if not kitware_dir.is_dir(): + continue + + for gf in sorted(kitware_dir.glob(f"{prefix}*.{site}.*.geom.yml")): + name = gf.name + # Extract camera: ...school.G328.geom.yml + cam_match = re.search(rf'\.{site}\.(G\d+)\.geom\.yml$', name) + if not cam_match: + continue + cam = cam_match.group(1) + + # Geom basename: 2018-03-11.11-25-00.11-30-00.school.G328 + base_name = name.replace(".geom.yml", "") + + # Prefer raw AVI over MP4 + # AVI naming: {base_name}.r13.avi (exact match or fuzzy on end-time) + video_path = None + video_fmt = None + + if avi_dir.is_dir(): + avi_candidates = sorted(avi_dir.glob(f"{base_name}.r13.avi")) + \ + sorted(avi_dir.glob(f"{prefix}*.{site}.{cam}.r13.avi")) + if avi_candidates: + video_path = avi_candidates[0] + video_fmt = "avi" + + # Fallback to MP4 + if video_path is None and mp4_dir.is_dir(): + mp4_candidates = sorted(mp4_dir.glob(f"{base_name}*.mp4")) + \ + sorted(mp4_dir.glob(f"{prefix}*.{site}.{cam}*.mp4")) + if mp4_candidates: + video_path = mp4_candidates[0] + video_fmt = "mp4" + + # Activity file + act_path = gf.parent / name.replace(".geom.yml", ".activities.yml") + if not act_path.exists(): + act_path = None + + results.append({ + "camera": cam, + "geom_path": gf, + "video_path": video_path, + "video_format": video_fmt, + "act_path": act_path, + "source": source, + }) + + return results + + +def process_slot(slot: str, use_yolo: bool = True, + verbose: bool = False) -> Dict: + """ + Full pipeline: extract descriptions for all actors in a slot. + + Returns dict ready for JSON output: + { + "slot": "...", + "cameras": {...}, + "actors": {actor_id_str: {camera, upper_color, lower_color, objects, description}}, + "stats": {...} + } + """ + t0 = time.time() + files = find_slot_files(slot) + + if verbose: + print(f"\n Slot: {slot}") + print(f" Found {len(files)} cameras with geom annotations") + + if use_yolo: + if verbose: + print(f" Loading YOLO model...", end="", flush=True) + _get_yolo() + if verbose: + print(" done.") + + all_actors = {} + cam_stats = {} + + for cf in files: + cam = cf["camera"] + geom_path = cf["geom_path"] + video_path = cf["video_path"] + video_fmt = cf.get("video_format", "unknown") + + if verbose: + print(f"\n Camera {cam}:") + print(f" Geom: {geom_path.name}") + + if video_path is None or not video_path.exists(): + if verbose: + print(f" SKIP: No video found (checked AVI + MP4)") + cam_stats[cam] = {"actors": 0, "usable": 0, "skipped": "no_video"} + continue + + if verbose: + print(f" Video: {video_path.name} ({video_fmt})") + + # Parse geom + actors = parse_geom(geom_path) + if verbose: + print(f" Actors: {len(actors)} total") + + if not actors: + cam_stats[cam] = {"actors": 0, "usable": 0, "skipped": "no_actors"} + continue + + # Extract crops + t1 = time.time() + crops_by_actor = extract_crops( + video_path, actors, + max_crops=CROPS_PER_ACTOR, + min_h=MIN_BBOX_HEIGHT, min_w=MIN_BBOX_WIDTH, + ) + decode_time = time.time() - t1 + + usable = len(crops_by_actor) + total_crops = sum(len(c) for c in crops_by_actor.values()) + if verbose: + print(f" Usable actors: {usable}/{len(actors)} ({total_crops} crops, {decode_time:.1f}s decode)") + + # Analyze each actor + t2 = time.time() + for actor_id, crops in crops_by_actor.items(): + if not crops: + continue + + if use_yolo: + attrs = analyze_crops_yolo(crops) + else: + attrs = analyze_crops_color_only(crops) + + desc = build_description(attrs) + + # Store by camera_actorID (matching V8 entity ID format) + entity_key = f"{cam}_actor_{actor_id}" + all_actors[entity_key] = { + "actor_id": actor_id, + "camera": cam, + "upper_color": attrs.get("upper_color", "unknown"), + "lower_color": attrs.get("lower_color", "unknown"), + "carried_objects": attrs.get("carried_objects", []), + "description": desc, + "num_crops": len(crops), + "avg_crop_height": int(np.mean([c.shape[0] for c in crops])), + } + + analyze_time = time.time() - t2 + if verbose: + print(f" Analysis: {analyze_time:.1f}s ({'YOLO' if use_yolo else 'color-only'})") + + cam_stats[cam] = { + "actors": len(actors), + "usable": usable, + "total_crops": total_crops, + "decode_sec": round(decode_time, 1), + "analyze_sec": round(analyze_time, 1), + } + + total_time = time.time() - t0 + + # Summary stats + described = sum(1 for a in all_actors.values() if a["description"] != "a person") + color_dist = Counter(a["upper_color"] for a in all_actors.values()) + + result = { + "slot": slot, + "method": "yolo" if use_yolo else "color_only", + "total_actors": len(all_actors), + "actors_with_colors": described, + "actors_without_colors": len(all_actors) - described, + "upper_color_distribution": dict(color_dist.most_common()), + "cameras": cam_stats, + "processing_time_sec": round(total_time, 1), + "actors": all_actors, + } + + if verbose: + print(f"\n === Summary ===") + print(f" Total actors: {len(all_actors)}") + print(f" With color descriptions: {described}") + print(f" Without: {len(all_actors) - described}") + print(f" Color distribution: {dict(color_dist.most_common(5))}") + print(f" Total time: {total_time:.1f}s") + + return result + + +# ============================================================================ +# CLI +# ============================================================================ + +def main(): + parser = argparse.ArgumentParser( + description="V8 Entity Description Extractor — Geom + Video → YOLO descriptions", + ) + parser.add_argument("--slot", "-s", required=True, + help="Slot to process (e.g., 2018-03-11.11-25.school)") + parser.add_argument("--no-yolo", action="store_true", + help="Color-only analysis (no YOLO, faster but no carried objects)") + parser.add_argument("--dry-run", action="store_true", + help="Show what would be processed without extracting") + parser.add_argument("--output", "-o", + help="Output path (default: data/entity_descriptions/{slot}.json)") + parser.add_argument("--verbose", "-v", action="store_true") + + args = parser.parse_args() + + if args.dry_run: + files = find_slot_files(args.slot) + print(f"\n Slot: {args.slot}") + print(f" Cameras with geom: {len(files)}") + for cf in files: + cam = cf["camera"] + actors = parse_geom(cf["geom_path"]) + usable = sum(1 for aid in actors + for frames in [actors[aid].values()] + if any((bb[2]-bb[0]) >= MIN_BBOX_WIDTH and + (bb[3]-bb[1]) >= MIN_BBOX_HEIGHT + for bb in frames)) + vp = cf["video_path"] + has_video = vp and vp.exists() + vfmt = cf.get("video_format", "none") + print(f" {cam}: {len(actors)} actors, {usable} usable, video={'YES' if has_video else 'NO'} ({vfmt})") + return + + result = process_slot(args.slot, use_yolo=not args.no_yolo, verbose=args.verbose) + + # Save + OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + out_path = Path(args.output) if args.output else OUTPUT_DIR / f"{args.slot}.json" + with open(out_path, "w") as f: + json.dump(result, f, indent=2, default=str) + print(f"\n Output: {out_path}") + + # Show sample descriptions + print(f"\n === Sample Descriptions ===") + seen = set() + for eid, info in sorted(result["actors"].items()): + desc = info["description"] + if desc in seen or desc == "a person": + continue + seen.add(desc) + print(f" {info['camera']} actor ...{str(info['actor_id'])[-6:]}: {desc}") + if len(seen) >= 10: + break + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/generate_best_camera.py b/meva/scripts/v10/generate_best_camera.py new file mode 100644 index 0000000..5133bc8 --- /dev/null +++ b/meva/scripts/v10/generate_best_camera.py @@ -0,0 +1,351 @@ +""" +FINAL generate_best_camera.py — Camera Transition Logic questions. + +From the paper: "Identifying which specific camera in the synchronized network +first captures the entrance or appearance of an entity." + +Example question: "Which camera first captures the entrance of a person +wearing a gray top into the scene?" + +Uses `person_enters_scene_through_structure` activity annotations to +determine which camera first detects a specific entity entering, then +asks the user to identify that camera from a set of options. + +Two question sub-types: + 1. first_entrance — "Which camera first captures the entrance of {entity}?" + 2. last_entrance — "Which camera last captures the entrance of {entity}?" + (inverse — checks if model can distinguish temporal extremes) +""" + +import random +from typing import Any, Dict, List, Set, Tuple +from collections import defaultdict + +from .parse_annotations import Event +from .build_scene_graph import SceneGraph, Entity +from .entity_resolution import ResolvedGraph +from .person_descriptions import enrich_entities, get_mevid_persons_with_cameras +from .distractor_bank import get_camera_distractors +from .activity_hierarchy import humanize_activity, humanize_activity_gerund + + +# ============================================================================ +# Constants +# ============================================================================ + +# Activities that indicate "entering the scene" +ENTRANCE_ACTIVITIES = { + "person_enters_scene_through_structure", + "person_exits_vehicle", # effectively enters the scene on foot +} + +# Minimum time gap between first and second camera entrance (seconds) +MIN_SEPARATION_SEC = 2.0 + +# Global pool of MEVA camera IDs (used as distractor padding when slot has few cameras) +_MEVA_CAMERA_POOL = [ + "G299", "G300", "G328", "G330", "G336", "G339", "G341", "G419", "G420", + "G421", "G423", "G424", "G436", "G638", "G639", "G503", "G504", "G505", + "G506", "G507", "G508", "G509", +] + + +# ============================================================================ +# Entrance Event Collection +# ============================================================================ + +def _collect_entrance_events(sg: SceneGraph) -> List[Event]: + """Collect all entrance-type events from the scene graph.""" + return [e for e in sg.events if e.activity in ENTRANCE_ACTIVITIES] + + +def _group_entrances_by_entity(entrance_events: List[Event], + sg: SceneGraph, + resolved: ResolvedGraph + ) -> Dict[str, List[Tuple[Event, str]]]: + """ + Group entrance events by resolved entity cluster. + + Returns: + { cluster_id: [(event, camera_id), ...] } sorted by start_sec + """ + # Map (camera, actor_id) -> entity_id -> cluster_id + entity_to_cluster = {} + for cluster in resolved.entity_clusters: + for eid in cluster.entities: + entity_to_cluster[eid] = cluster.cluster_id + + # Map entity_id -> (camera, actor_id) + eid_to_key = {} + for eid, entity in sg.entities.items(): + eid_to_key[eid] = (entity.camera_id, entity.actor_id) + + # Reverse: (camera, actor_id) -> cluster_id + key_to_cluster = {} + for eid, key in eid_to_key.items(): + if eid in entity_to_cluster: + key_to_cluster[key] = entity_to_cluster[eid] + + # Group events by cluster + cluster_events: Dict[str, List[Tuple[Event, str]]] = defaultdict(list) + for event in entrance_events: + for actor in event.actors: + key = (event.camera_id, actor["actor_id"]) + cid = key_to_cluster.get(key) + if cid: + cluster_events[cid].append((event, event.camera_id)) + else: + # No cluster — use camera+actor as standalone key + standalone = f"standalone_{event.camera_id}_{actor['actor_id']}" + cluster_events[standalone].append((event, event.camera_id)) + + # Sort each cluster's events by time + for cid in cluster_events: + cluster_events[cid].sort(key=lambda x: x[0].start_sec) + + return dict(cluster_events) + + +def _get_entity_description(cluster_id: str, sg: SceneGraph, + entity_descs: Dict[str, str], + resolved: ResolvedGraph) -> str: + """Get the best available VISUAL description for an entity cluster. + + Only returns clothing/appearance descriptions (from MEVID or geom-color). + Filters out activity-verb fallbacks like 'a person puts down object'. + """ + # Find entity IDs in this cluster + for cluster in resolved.entity_clusters: + if cluster.cluster_id == cluster_id: + for eid in cluster.entities: + desc = entity_descs.get(eid) + if not desc or desc == "a person" or "someone" in desc.lower(): + continue + # Filter out activity-verb fallbacks — they contain verbs + # Visual descriptions contain words like "top", "pants", "wearing" + desc_lower = desc.lower() + is_visual = any(kw in desc_lower for kw in + ["top", "pants", "wearing", "shirt", "jacket", "color", + "blue", "red", "black", "white", "green", "gray", "yellow", + "brown", "orange", "purple", "backpack", "bag"]) + if is_visual: + return desc + break + return "a person" + + +# ============================================================================ +# Question Generation +# ============================================================================ + +def generate_best_camera_qa(sg: SceneGraph, resolved: ResolvedGraph, + entity_descs: Dict[str, str], + rng: random.Random, count: int = 2, + verbose: bool = False) -> List[Dict]: + """ + Generate Camera Transition Logic questions. + + "Which camera first captures the entrance of {entity} into the scene?" + """ + entrance_events = _collect_entrance_events(sg) + + if len(entrance_events) < 2: + if verbose: + print(" Best Camera: Too few entrance events") + return [] + + # Group by entity cluster + cluster_entrances = _group_entrances_by_entity(entrance_events, sg, resolved) + + # Filter to entities that appear on 2+ cameras (multi-camera entrance) + multi_cam_clusters = {} + for cid, events_cams in cluster_entrances.items(): + cameras_seen = set(cam for _, cam in events_cams) + if len(cameras_seen) >= 2: + multi_cam_clusters[cid] = events_cams + + # If no multi-camera entities, fall back to any entity with entrance events + # and use all cameras in slot as options + use_multi_cam = len(multi_cam_clusters) >= 1 + candidates = multi_cam_clusters if use_multi_cam else cluster_entrances + + if not candidates: + if verbose: + print(" Best Camera: No entrance events to use") + return [] + + all_cameras = sorted(sg.cameras.keys()) + qa_pairs = [] + used_clusters = set() + + # Attempt to generate `count` questions + candidate_list = list(candidates.items()) + rng.shuffle(candidate_list) + + for cluster_id, events_cams in candidate_list: + if len(qa_pairs) >= count: + break + if cluster_id in used_clusters: + continue + + # Get entity description + desc = _get_entity_description(cluster_id, sg, entity_descs, resolved) + + # Get cameras sorted by first entrance time + cam_times: Dict[str, float] = {} + cam_events: Dict[str, Event] = {} + for event, cam in events_cams: + if cam not in cam_times or event.start_sec < cam_times[cam]: + cam_times[cam] = event.start_sec + cam_events[cam] = event + + sorted_cams = sorted(cam_times.keys(), key=lambda c: cam_times[c]) + + if len(sorted_cams) < 1: + continue + + # ----- Sub-type 1: first_entrance ----- + if len(qa_pairs) < count: + first_cam = sorted_cams[0] + first_time = cam_times[first_cam] + first_event = cam_events[first_cam] + + # Build options: correct camera + distractors + other_cams = [c for c in all_cameras if c != first_cam] + if len(other_cams) < 3: + # Not enough cameras for 4 options + distractor_cams = other_cams + else: + # Prefer cameras that DO have entrance events (harder distractors) + entrance_cams = [c for c in sorted_cams[1:] if c != first_cam] + non_entrance_cams = [c for c in other_cams if c not in entrance_cams] + + # Mix: 1-2 entrance cams + 1-2 non-entrance cams + rng.shuffle(entrance_cams) + rng.shuffle(non_entrance_cams) + distractor_cams = (entrance_cams[:2] + non_entrance_cams[:2])[:3] + + options = [f"Camera {first_cam}"] + [f"Camera {c}" for c in distractor_cams] + while len(options) < 4: + # Pad with remaining slot cameras first, then global pool + remaining = [c for c in all_cameras if f"Camera {c}" not in options] + if not remaining: + remaining = [c for c in _MEVA_CAMERA_POOL if f"Camera {c}" not in options] + if remaining: + options.append(f"Camera {rng.choice(remaining)}") + else: + break + + rng.shuffle(options) + correct_idx = options.index(f"Camera {first_cam}") + + # Build clip_file from the event + clip_file = getattr(first_event, 'clip_file', '') or '' + + question_template = ( + f"Which camera first captures the entrance of {desc} into the scene?" + ) + + qa = { + "question_id": "", # will be renumbered + "category": "best_camera", + "subcategory": "first_entrance", + "question_template": question_template, + "options": options, + "correct_answer_index": correct_idx, + "requires_cameras": sorted_cams + [c for c in all_cameras if c not in sorted_cams], + "difficulty": "medium" if len(sorted_cams) >= 3 else "easy", + "verification": { + "question_type": "first_entrance", + "correct_camera": first_cam, + "entrance_time_sec": round(first_time, 2), + "entity_description": desc, + "cluster_id": cluster_id, + "all_entrance_cameras": { + cam: round(cam_times[cam], 2) for cam in sorted_cams + }, + "activity": first_event.activity, + }, + "debug_info": { + "representative_event": { + "clip_file": clip_file, + "camera": first_cam, + "activity": first_event.activity, + "start_sec": round(first_time, 2), + }, + }, + } + qa_pairs.append(qa) + used_clusters.add(cluster_id) + + # ----- Sub-type 2: last_entrance (if enough cameras) ----- + if len(qa_pairs) < count and len(sorted_cams) >= 2: + last_cam = sorted_cams[-1] + last_time = cam_times[last_cam] + last_event = cam_events[last_cam] + + # Ensure meaningful separation from first + if last_time - cam_times[sorted_cams[0]] < MIN_SEPARATION_SEC: + continue + + other_cams = [c for c in all_cameras if c != last_cam] + rng.shuffle(other_cams) + distractor_cams = other_cams[:3] + + options = [f"Camera {last_cam}"] + [f"Camera {c}" for c in distractor_cams] + while len(options) < 4: + remaining = [c for c in all_cameras if f"Camera {c}" not in options] + if not remaining: + remaining = [c for c in _MEVA_CAMERA_POOL if f"Camera {c}" not in options] + if remaining: + options.append(f"Camera {rng.choice(remaining)}") + else: + break + + rng.shuffle(options) + correct_idx = options.index(f"Camera {last_cam}") + + clip_file = getattr(last_event, 'clip_file', '') or '' + + question_template = ( + f"Of all cameras capturing {desc} entering the scene, " + f"which camera captures this last?" + ) + + qa = { + "question_id": "", + "category": "best_camera", + "subcategory": "last_entrance", + "question_template": question_template, + "options": options, + "correct_answer_index": correct_idx, + "requires_cameras": sorted_cams + [c for c in all_cameras if c not in sorted_cams], + "difficulty": "hard", + "verification": { + "question_type": "last_entrance", + "correct_camera": last_cam, + "entrance_time_sec": round(last_time, 2), + "entity_description": desc, + "cluster_id": cluster_id, + "all_entrance_cameras": { + cam: round(cam_times[cam], 2) for cam in sorted_cams + }, + "activity": last_event.activity, + }, + "debug_info": { + "representative_event": { + "clip_file": clip_file, + "camera": last_cam, + "activity": last_event.activity, + "start_sec": round(last_time, 2), + }, + }, + } + qa_pairs.append(qa) + + if verbose: + print(f" Best Camera: {len(qa_pairs)} questions generated " + f"(from {len(entrance_events)} entrance events, " + f"{len(multi_cam_clusters)} multi-cam entities)") + + return qa_pairs[:count] diff --git a/meva/scripts/v10/generate_event_ordering.py b/meva/scripts/v10/generate_event_ordering.py new file mode 100644 index 0000000..7b2b3ef --- /dev/null +++ b/meva/scripts/v10/generate_event_ordering.py @@ -0,0 +1,607 @@ +""" +V8 generate_event_ordering.py — Event ordering questions (chronological arrangement). + +Unlike temporal questions which ask "which of 2 events happened first?" (binary), +event ordering asks "arrange 3-4 events in chronological order" (combinatorial). +This is significantly harder since the answer space grows factorially. + +Event selection prefers: + - Cross-camera events (multi-camera ordering is harder than single-camera) + - Clear temporal gaps (>3s) so ordering is unambiguous + - Related activities (causal / co-occurring chains) + - Events involving entities with MEVID descriptions (for visual grounding) + +Output: MCQ with scrambled event labels (I, II, III, IV) and 4 permutation options. +""" + +import itertools +import random +from typing import Any, Dict, List, Optional, Set, Tuple + +from .parse_annotations import Event +from .build_scene_graph import SceneGraph, Entity +from .entity_resolution import ResolvedGraph +from .activity_hierarchy import ( + humanize_activity, humanize_activity_gerund, are_related, get_relationship, + CAUSAL_RELATIONSHIPS, CO_OCCURRING, +) +from .utils.mevid import find_mevid_persons_for_slot + +# ============================================================================ +# Constants +# ============================================================================ + +MIN_GAP_SEC = 3.0 # Minimum gap between consecutive events (unambiguous) +DEFAULT_FPS = 30.0 +MIN_EVENTS = 3 # Minimum events per ordering question +MAX_EVENTS = 4 # Maximum events per ordering question +ROMAN = ["I", "II", "III", "IV"] + + +# ============================================================================ +# Event Description Helpers +# ============================================================================ + +def _get_event_description(event: Event, sg: SceneGraph, + entity_descs: Dict[str, str], + fallback_eids: Optional[Set[str]] = None) -> str: + """ + Build a human-readable event description using MEVID entity descriptions + and gerund activity forms. + + Prefers visual (non-fallback) descriptions. Falls back to generic + 'Someone {activity}' if only fallback descriptions are available. + + Example: "A person wearing a gray top, opening a facility door on camera G421" + """ + from .person_descriptions import is_visual_description + # Try to find a visual (non-fallback) description for an actor in this event + desc = None + fallback_desc = None + for eid, entity in sg.entities.items(): + if entity.camera_id == event.camera_id: + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + d = entity_descs.get(eid) + if d: + if fallback_eids and eid in fallback_eids: + if fallback_desc is None: + fallback_desc = d + else: + desc = d + break + if desc: + break + + activity_text = humanize_activity_gerund(event.activity) + + if desc: + # Guard: avoid duplication when desc already contains the activity + act_check = humanize_activity(event.activity).lower() + if act_check in desc.lower() or activity_text.lower() in desc.lower(): + return f"{desc} on camera {event.camera_id}" + return f"{desc}, {activity_text.lower()} on camera {event.camera_id}" + return f"Someone {activity_text.lower()} on camera {event.camera_id}" + + +# ============================================================================ +# Group Scoring +# ============================================================================ + +def _count_related_pairs(events: List[Event]) -> int: + """Count how many event pairs in the group have causal/co-occurring relationships.""" + count = 0 + for i in range(len(events)): + for j in range(i + 1, len(events)): + if are_related(events[i].activity, events[j].activity): + count += 1 + return count + + +def _count_described_events(events: List[Event], sg: SceneGraph, + entity_descs: Dict[str, str]) -> int: + """Count events that have visual (non-fallback) entity descriptions.""" + from .person_descriptions import is_visual_description + count = 0 + for event in events: + for eid, entity in sg.entities.items(): + if entity.camera_id == event.camera_id: + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + desc = entity_descs.get(eid, "") + if desc and is_visual_description(desc): + count += 1 + break + else: + continue + break + return count + + +def _score_group(events: List[Event], sg: SceneGraph, + entity_descs: Dict[str, str], + mevid_person_cameras: Dict[int, Set[str]]) -> float: + """ + Score a candidate event group. Higher = better. + + Criteria: + +2.0 per unique camera (cross-camera diversity) + +1.5 per related-activity pair + +1.0 per event with an entity description + +1.0 if any MEVID-validated camera pair exists in the group + +0.5 for 4-event groups (more challenging) + """ + cameras = set(e.camera_id for e in events) + score = len(cameras) * 2.0 + + score += _count_related_pairs(events) * 1.5 + score += _count_described_events(events, sg, entity_descs) * 1.0 + + # MEVID cross-camera bonus + cam_list = list(cameras) + for pid, pcams in mevid_person_cameras.items(): + if len(pcams & cameras) >= 2: + score += 1.0 + break + + if len(events) == MAX_EVENTS: + score += 0.5 + + return score + + +# ============================================================================ +# Candidate Group Discovery +# ============================================================================ + +def _find_ordering_groups(events: List[Event], sg: SceneGraph, + entity_descs: Dict[str, str], + mevid_person_cameras: Dict[int, Set[str]], + rng: random.Random, + target_count: int = 6) -> List[List[Event]]: + """ + Find candidate groups of 3-4 events suitable for ordering questions. + + Requirements per group: + - Events sorted chronologically with consecutive gaps > MIN_GAP_SEC + - At least 2 distinct cameras + - No overlapping events (start of next > end of previous + MIN_GAP_SEC) + + Returns groups sorted by score (best first), capped at target_count. + """ + if len(events) < MIN_EVENTS: + return [] + + # Sort all events by start_sec for chronological processing + sorted_events = sorted(events, key=lambda e: e.start_sec) + + # De-duplicate: keep one event per (camera, activity, ~time bucket) + # to avoid near-identical events cluttering groups + seen_keys: Set[Tuple[str, str, int]] = set() + unique_events: List[Event] = [] + for e in sorted_events: + bucket = int(e.start_sec // 5) # 5-second buckets + key = (e.camera_id, e.activity, bucket) + if key not in seen_keys: + seen_keys.add(key) + unique_events.append(e) + + if len(unique_events) < MIN_EVENTS: + return [] + + # Build candidate groups using a sliding-window + greedy approach + # For each starting event, try to build a chain of 3-4 events with gaps + groups: List[Tuple[float, List[Event]]] = [] # (score, events) + seen_group_keys: Set[Tuple[str, ...]] = set() + + for start_idx in range(len(unique_events)): + # Try to build chains of length 3 and 4 + for chain_len in (MAX_EVENTS, MIN_EVENTS): + chain = [unique_events[start_idx]] + + for next_idx in range(start_idx + 1, len(unique_events)): + if len(chain) >= chain_len: + break + candidate = unique_events[next_idx] + last = chain[-1] + + # Must have clear temporal gap + gap = candidate.start_sec - last.end_sec + if gap < MIN_GAP_SEC: + continue + + # Prefer cross-camera: skip same-camera if we already have + # an event on that camera AND we haven't reached min cameras + chain_cameras = set(e.camera_id for e in chain) + if (candidate.camera_id in chain_cameras + and len(chain_cameras) < 2 + and len(chain) >= 2): + continue + + chain.append(candidate) + + if len(chain) < chain_len: + continue + + # Require at least 2 cameras + chain_cameras = set(e.camera_id for e in chain) + if len(chain_cameras) < 2: + continue + + # Require activity diversity: at most 1 repeated activity + chain_activities = set(e.activity for e in chain) + if len(chain_activities) < len(chain) - 1: + continue + + # De-duplicate by group key (sorted event_ids) + gkey = tuple(sorted(e.event_id for e in chain)) + if gkey in seen_group_keys: + continue + seen_group_keys.add(gkey) + + score = _score_group(chain, sg, entity_descs, mevid_person_cameras) + groups.append((score, chain)) + + # Sort by score descending + groups.sort(key=lambda g: -g[0]) + + return [g[1] for g in groups[:target_count]] + + +# ============================================================================ +# Distractor Permutation Generation +# ============================================================================ + +def _generate_permutation_label(order: List[int]) -> str: + """ + Convert an index-based ordering to a Roman-numeral arrow string. + + Example: [1, 3, 0, 2] → "II -> IV -> I -> III" + """ + return " -> ".join(ROMAN[i] for i in order) + + +def _generate_distractor_permutations(n: int, correct_order: List[int], + rng: random.Random) -> List[List[int]]: + """ + Generate 3 distinct distractor permutations for n events. + + Strategies (in priority order): + 1. Reverse of correct order + 2. Swap two adjacent elements + 3. Swap first and last elements + 4. Random permutation (fallback) + + All distractors are guaranteed distinct from each other and from the + correct order. + """ + correct_tuple = tuple(correct_order) + distractors: List[List[int]] = [] + seen: Set[Tuple[int, ...]] = {correct_tuple} + + def _try_add(perm: List[int]) -> bool: + t = tuple(perm) + if t not in seen: + seen.add(t) + distractors.append(perm) + return True + return False + + # Strategy 1: full reverse + _try_add(list(reversed(correct_order))) + + # Strategy 2: swap adjacent pairs + for i in range(n - 1): + if len(distractors) >= 3: + break + swapped = list(correct_order) + swapped[i], swapped[i + 1] = swapped[i + 1], swapped[i] + _try_add(swapped) + + # Strategy 3: swap first and last + if len(distractors) < 3: + swapped = list(correct_order) + swapped[0], swapped[-1] = swapped[-1], swapped[0] + _try_add(swapped) + + # Strategy 3.5: rotate by 1 position + if len(distractors) < 3: + rotated = correct_order[1:] + correct_order[:1] + _try_add(rotated) + + # Strategy 4: random permutations as fallback + all_perms = list(itertools.permutations(range(n))) + rng.shuffle(all_perms) + for perm in all_perms: + if len(distractors) >= 3: + break + _try_add(list(perm)) + + return distractors[:3] + + +# ============================================================================ +# Question Construction +# ============================================================================ + +def _build_question_text(descriptions: List[str]) -> str: + """ + Build the question text with numbered event descriptions. + + Returns multi-line text like: + Identify the correct chronological order of the following events + observed across the cameras: + I. A person wearing a gray top, opening a facility door on camera G421 + II. Someone entering a scene through a structure on camera G330 + ... + Which is the correct chronological order? + """ + lines = [ + "Identify the correct chronological order of the following events " + "observed across the cameras:" + ] + for i, desc in enumerate(descriptions): + lines.append(f"{ROMAN[i]}. {desc}") + lines.append("Which is the correct chronological order?") + return "\n".join(lines) + + +def _build_debug_info(event: Event, sg: SceneGraph, + entity_descs: Dict[str, str]) -> Dict: + """Build debug info dict for one event.""" + clip_file = event.video_file + if clip_file.endswith(".avi"): + clip_file = clip_file.replace(".avi", ".mp4") + + desc = None + for eid, entity in sg.entities.items(): + if entity.camera_id == event.camera_id: + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + desc = entity_descs.get(eid, entity.alias) + break + if desc: + break + + return { + "camera": event.camera_id, + "activity": event.activity, + "actor_ids": [a["actor_id"] for a in event.actors], + "frame_range": [event.start_frame, event.end_frame], + "timestamp": f"{event.start_sec:.2f}-{event.end_sec:.2f}s", + "fps": DEFAULT_FPS, + "clip_file": clip_file, + "entity_description": desc, + } + + +# ============================================================================ +# Public API +# ============================================================================ + +def generate_event_ordering_qa(sg: SceneGraph, resolved: ResolvedGraph, + entity_descs: Dict[str, str], + rng: random.Random, count: int = 2, + verbose: bool = False, + fallback_eids: Optional[Set[str]] = None) -> List[Dict]: + """ + Generate event-ordering cross-camera questions. + + Each question presents 3-4 events in scrambled order and asks the + viewer to identify the correct chronological sequence. Significantly + harder than binary temporal questions because the answer space is + combinatorial (3! = 6 or 4! = 24 permutations). + + Args: + sg: Scene graph with events, entities, cameras. + resolved: Resolved graph with entity clusters. + entity_descs: entity_id → human-readable description string. + rng: Seeded RNG for reproducibility. + count: Target number of questions (default 2). + verbose: Print progress info. + + Returns: + List of question dicts in V8 MCQ format. + """ + slot_cameras = list(sg.cameras.keys()) + mevid_person_cameras = find_mevid_persons_for_slot(sg.slot, slot_cameras) + + # Step 1: Find candidate groups + groups = _find_ordering_groups( + sg.events, sg, entity_descs, mevid_person_cameras, rng, + target_count=count * 3, # over-generate for diversity + ) + + if verbose: + print(f" Event ordering: {len(groups)} candidate groups") + + if not groups: + return [] + + # Filter out groups where ANY event uses fallback (non-visual) descriptions + # All events appear in the question text, so all must have visual descriptions + if fallback_eids: + def _all_events_visual(group): + for event in group: + has_visual = False + for eid, entity in sg.entities.items(): + if entity.camera_id == event.camera_id: + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + if eid not in fallback_eids: + has_visual = True + break + if has_visual: + break + if not has_visual: + return False + return True + + visual_groups = [g for g in groups if _all_events_visual(g)] + if verbose and len(visual_groups) < len(groups): + print(f" Filtered {len(groups) - len(visual_groups)} " + f"fallback-only groups → {len(visual_groups)} remaining") + groups = visual_groups + + if not groups: + return [] + + # Step 2: Select diverse groups (avoid reusing same camera sets) + selected: List[List[Event]] = [] + used_camera_sets: Set[Tuple[str, ...]] = set() + used_event_ids: Set[str] = set() + + for group in groups: + if len(selected) >= count: + break + + cam_set = tuple(sorted(set(e.camera_id for e in group))) + group_eids = set(e.event_id for e in group) + + # Prefer distinct camera combinations and non-overlapping events + overlap = group_eids & used_event_ids + if overlap: + continue + if cam_set in used_camera_sets and len(selected) > 0: + continue + + selected.append(group) + used_camera_sets.add(cam_set) + used_event_ids.update(group_eids) + + # If we couldn't fill enough with strict diversity, relax constraints + if len(selected) < count: + for group in groups: + if len(selected) >= count: + break + if group not in selected: + selected.append(group) + + # Step 3: Generate QA for each selected group + qa_pairs: List[Dict] = [] + + for idx, group in enumerate(selected[:count]): + n = len(group) + + # Events are already in chronological order from _find_ordering_groups + chronological = sorted(group, key=lambda e: e.start_sec) + + # Build descriptions in chronological order + descriptions_chrono = [ + _get_event_description(e, sg, entity_descs, fallback_eids) for e in chronological + ] + + # Scramble presentation order: correct_order[i] = chronological + # position of the event presented as Roman numeral (i+1) + presentation_indices = list(range(n)) + rng.shuffle(presentation_indices) + + # presentation_indices[i] tells which chronological event goes to + # presentation slot i. So the event presented as "I" is + # chronological[presentation_indices[0]], etc. + presented_descriptions = [descriptions_chrono[pi] for pi in presentation_indices] + + # The correct answer is the permutation that re-sorts presentation + # back to chronological. If presentation_indices = [2, 0, 3, 1], + # then chronological order in presentation labels is determined by + # argsort(presentation_indices). + # argsort: for each chrono position k, which presentation slot has it? + chrono_to_presentation = [0] * n + for pres_slot, chrono_pos in enumerate(presentation_indices): + chrono_to_presentation[chrono_pos] = pres_slot + + # correct_order = the presentation slots in chronological sequence + correct_order = chrono_to_presentation # e.g. [1, 3, 0, 2] + + # Generate distractor permutations + distractor_perms = _generate_distractor_permutations(n, correct_order, rng) + + # Build options: correct answer + 3 distractors, then shuffle + correct_label = _generate_permutation_label(correct_order) + distractor_labels = [_generate_permutation_label(d) for d in distractor_perms] + + options = [correct_label] + distractor_labels + correct_answer_index = 0 + + # Shuffle options so correct isn't always first + option_pairs = list(enumerate(options)) + rng.shuffle(option_pairs) + shuffled_options = [label for _, label in option_pairs] + correct_answer_index = next( + i for i, (orig_idx, _) in enumerate(option_pairs) if orig_idx == 0 + ) + + # Cameras involved + all_cameras = sorted(set(e.camera_id for e in chronological)) + + # Compute minimum gap between consecutive chronological events + gaps = [] + for i in range(len(chronological) - 1): + gap = chronological[i + 1].start_sec - chronological[i].end_sec + gaps.append(round(gap, 2)) + min_gap = min(gaps) if gaps else 0.0 + + # Difficulty: 4 events = hard, 3 events = medium-hard + difficulty = "hard" if n == 4 else "medium-hard" + + # Build question text + question_text = _build_question_text(presented_descriptions) + + # Verification: ordered events with timing + ordered_events = [] + for i, event in enumerate(chronological): + ordered_events.append({ + "activity": event.activity, + "camera": event.camera_id, + "start_sec": round(event.start_sec, 2), + "description": descriptions_chrono[i], + }) + + # Debug info per event + debug_events = [_build_debug_info(e, sg, entity_descs) for e in chronological] + + # Check MEVID validation + mevid_validated = False + for pid, pcams in mevid_person_cameras.items(): + if len(pcams & set(all_cameras)) >= 2: + mevid_validated = True + break + + qa = { + "question_id": f"v8_event_ordering_{idx + 1:03d}", + "category": "event_ordering", + "difficulty": difficulty, + "question_template": question_text, + "options": shuffled_options, + "correct_answer_index": correct_answer_index, + "correct_answer": shuffled_options[correct_answer_index], + "requires_cameras": all_cameras, + "requires_multi_camera": len(all_cameras) >= 2, + "verification": { + "ordered_events": ordered_events, + "min_gap_sec": min_gap, + "num_events": n, + "gaps_sec": gaps, + }, + "debug_info": { + "events": debug_events, + "presentation_order": presentation_indices, + "correct_permutation": correct_order, + "mevid_validated": mevid_validated, + "group_score": _score_group( + chronological, sg, entity_descs, mevid_person_cameras + ), + "related_pairs": _count_related_pairs(chronological), + "described_events": _count_described_events( + chronological, sg, entity_descs + ), + }, + } + qa_pairs.append(qa) + + if verbose: + print(f" Event ordering: {len(qa_pairs)} questions generated " + f"({sum(1 for q in qa_pairs if q['difficulty'] == 'hard')} hard, " + f"{sum(1 for q in qa_pairs if q['difficulty'] == 'medium-hard')} medium-hard)") + + return qa_pairs diff --git a/meva/scripts/v10/generate_numerical.py b/meva/scripts/v10/generate_numerical.py new file mode 100644 index 0000000..9a8e5da --- /dev/null +++ b/meva/scripts/v10/generate_numerical.py @@ -0,0 +1,390 @@ +""" +FINAL generate_numerical.py — Numerical/counting questions across cameras. + +Tests a model's ability to count activities or entities from a +multi-camera scene. Two counting subtypes: + +1. **activity_counting**: "How many times does [activity] occur across all cameras?" + → Count event instances of that activity type from sg.events. +2. **entity_counting**: "How many distinct people are visible across all cameras?" + → Count unique entity clusters from the resolved graph. + +Distractors are generated arithmetically (±1, ±2, ×2) so that wrong answers +are plausible. All options are stringified integers > 0, sorted numerically. + +Guard rails: skip any candidate whose correct count is < 2 (trivial) or > 20 +(unreasonable for video QA). Preferred difficulty sweet-spot is [3, 10]. +""" + +import random +from collections import Counter, defaultdict +from typing import Any, Dict, List, Set, Tuple + +from .parse_annotations import Event +from .build_scene_graph import SceneGraph, Entity +from .entity_resolution import ResolvedGraph +from .activity_hierarchy import humanize_activity, humanize_activity_gerund + + +# ============================================================================ +# Constants +# ============================================================================ + +MIN_COUNT = 2 # minimum correct count to consider +MAX_COUNT = 20 # maximum correct count to consider +SWEET_LOW = 3 # preferred range lower bound (for scoring) +SWEET_HIGH = 10 # preferred range upper bound + + +# ============================================================================ +# Distractor Generation +# ============================================================================ + +def _make_distractors(correct: int, rng: random.Random) -> List[int]: + """ + Build 3 distinct distractor values for a counting question. + + Candidate pool: correct ± 1, correct ± 2, correct × 2. + All values must be > 0 and != correct. If pool is too small we + widen with correct + 3, correct + 4, etc. + """ + pool = set() + for delta in (-2, -1, 1, 2): + v = correct + delta + if v > 0: + pool.add(v) + doubled = correct * 2 + if doubled > 0 and doubled != correct: + pool.add(doubled) + + pool.discard(correct) + + # Widen if we still don't have 3 + extend = 3 + while len(pool) < 3: + extend += 1 + v = correct + extend + if v > 0 and v != correct: + pool.add(v) + v = correct - extend + if v > 0 and v != correct: + pool.add(v) + + pool_list = sorted(pool) + rng.shuffle(pool_list) + return pool_list[:3] + + +def _build_options(correct: int, rng: random.Random) -> Tuple[List[str], int]: + """ + Return (options, correct_answer_index) with 4 string-ified integers + sorted in ascending numerical order. + """ + distractors = _make_distractors(correct, rng) + all_vals = sorted(set([correct] + distractors)) + options = [str(v) for v in all_vals] + correct_idx = all_vals.index(correct) + return options, correct_idx + + +# ============================================================================ +# Candidate Builders +# ============================================================================ + +def _activity_counting_candidates(sg: SceneGraph) -> List[Dict]: + """ + For each activity type, count total event instances across all cameras. + """ + activity_counts: Dict[str, int] = Counter(e.activity for e in sg.events) + activity_cameras: Dict[str, Set[str]] = defaultdict(set) + activity_events: Dict[str, List[str]] = defaultdict(list) + + for e in sg.events: + activity_cameras[e.activity].add(e.camera_id) + activity_events[e.activity].append(e.event_id) + + candidates = [] + for act, cnt in activity_counts.items(): + if cnt < MIN_COUNT or cnt > MAX_COUNT: + continue + candidates.append({ + "subtype": "activity_counting", + "activity": act, + "correct_count": cnt, + "cameras_involved": sorted(activity_cameras[act]), + "event_ids": activity_events[act], + "cross_camera": len(activity_cameras[act]) >= 2, + }) + return candidates + + +def _entity_counting_candidates( + sg: SceneGraph, resolved: ResolvedGraph +) -> List[Dict]: + """ + Count distinct entity clusters (unique people/entities) across all cameras. + """ + # Person clusters only (most natural counting question) + person_clusters = [] + for cluster in resolved.entity_clusters: + # Check if cluster contains at least one person entity + for eid in cluster.entities: + ent = sg.entities.get(eid) + if ent and ent.entity_type == "person": + person_clusters.append(cluster) + break + + cnt = len(person_clusters) + if cnt < MIN_COUNT or cnt > MAX_COUNT: + return [] + + all_cameras: Set[str] = set() + cluster_ids = [] + for cl in person_clusters: + cluster_ids.append(cl.cluster_id) + for cam in cl.cameras: + all_cameras.add(cam) + + return [{ + "subtype": "entity_counting", + "activity": None, + "correct_count": cnt, + "cameras_involved": sorted(all_cameras), + "event_ids": [], + "cluster_ids": cluster_ids, + "cross_camera": len(all_cameras) >= 2, + }] + + +# ============================================================================ +# Candidate Scoring +# ============================================================================ + +def _score_candidate(cand: Dict) -> float: + """ + Score a candidate – higher is better. + + Prefers: + - Counts in the [3, 10] sweet-spot + - Cross-camera occurrence + - entity_counting slightly preferred (scene-level understanding) + """ + score = 0.0 + cnt = cand["correct_count"] + + # Sweet-spot bonus + if SWEET_LOW <= cnt <= SWEET_HIGH: + score += 3.0 + elif MIN_COUNT <= cnt < SWEET_LOW: + score += 1.5 + else: + score += 0.5 + + # Cross-camera bonus + if cand["cross_camera"]: + score += 2.0 + + # Subtype preference: entity counting is most "scene-level" + if cand["subtype"] == "entity_counting": + score += 1.0 + elif cand["subtype"] == "activity_counting": + score += 0.5 + + return score + + +# ============================================================================ +# Question Text Templates +# ============================================================================ + +def _make_question_text(cand: Dict) -> str: + """Return the natural-language question string for a candidate.""" + subtype = cand["subtype"] + + if subtype == "activity_counting": + act_gerund = humanize_activity_gerund(cand["activity"]) + act_lower = act_gerund[0].lower() + act_gerund[1:] # lowercase first letter + return ( + f"How many times does someone perform the action of " + f"{act_lower} across all cameras in this slot?" + ) + + if subtype == "entity_counting": + return ( + "How many distinct people are visible across all cameras in this slot?" + ) + + return "How many?" + + +# ============================================================================ +# Difficulty Classification +# ============================================================================ + +def _classify_difficulty(cand: Dict) -> str: + """ + easy : count ≤ 5 and ≤ 3 cameras + medium : otherwise + """ + cnt = cand["correct_count"] + n_cams = len(cand["cameras_involved"]) + if cnt <= 5 and n_cams <= 3: + return "easy" + return "medium" + + +# ============================================================================ +# Public API +# ============================================================================ + +def generate_numerical_qa( + sg: SceneGraph, + resolved: ResolvedGraph, + entity_descs: Dict[str, str], + rng: random.Random, + count: int = 1, + verbose: bool = False, +) -> List[Dict]: + """ + Generate numerical/counting questions for a multi-camera slot. + + Args: + sg: Scene graph (events, entities, cameras, slot). + resolved: Resolved cross-camera entity graph. + entity_descs: entity_id → human-readable description string. + rng: Seeded RNG for reproducibility. + count: Target number of questions (default 1). + verbose: Print debug info. + + Returns: + List of QA dicts in the standard V8 format. + """ + if not sg.events: + if verbose: + print(" Numerical: no events – skipping") + return [] + + # ------------------------------------------------------------------ + # 1. Collect all candidates from three subtypes + # ------------------------------------------------------------------ + all_candidates: List[Dict] = [] + all_candidates.extend(_activity_counting_candidates(sg)) + all_candidates.extend(_entity_counting_candidates(sg, resolved)) + + if not all_candidates: + if verbose: + print(" Numerical: no valid candidates (counts out of range)") + return [] + + # ------------------------------------------------------------------ + # 2. Score and sort + # ------------------------------------------------------------------ + for c in all_candidates: + c["_score"] = _score_candidate(c) + all_candidates.sort(key=lambda c: c["_score"], reverse=True) + + if verbose: + print(f" Numerical: {len(all_candidates)} candidates " + f"(act={sum(1 for c in all_candidates if c['subtype'] == 'activity_counting')}, " + f"ent={sum(1 for c in all_candidates if c['subtype'] == 'entity_counting')})") + + # ------------------------------------------------------------------ + # 3. Diversified selection: no two Qs with same subtype or same activity + # ------------------------------------------------------------------ + used_subtypes: Set[str] = set() + used_activities: Set[str] = set() + selected: List[Dict] = [] + + for cand in all_candidates: + if len(selected) >= count: + break + + sub = cand["subtype"] + act = cand.get("activity") + + # Diversity: skip if we already used this subtype + if sub in used_subtypes: + continue + # Diversity: skip if we already asked about this activity + if act and act in used_activities: + continue + + used_subtypes.add(sub) + if act: + used_activities.add(act) + selected.append(cand) + + # If we still need more, relax the subtype constraint (keep activity unique) + if len(selected) < count: + for cand in all_candidates: + if len(selected) >= count: + break + if cand in selected: + continue + act = cand.get("activity") + if act and act in used_activities: + continue + if act: + used_activities.add(act) + selected.append(cand) + + # ------------------------------------------------------------------ + # 4. Build QA dicts + # ------------------------------------------------------------------ + qa_pairs: List[Dict] = [] + + for idx, cand in enumerate(selected[:count]): + correct = cand["correct_count"] + options, correct_idx = _build_options(correct, rng) + question = _make_question_text(cand) + difficulty = _classify_difficulty(cand) + + all_cameras = sorted(sg.cameras.keys()) + requires_cams = cand["cameras_involved"] if cand["cameras_involved"] else all_cameras + + verification: Dict[str, Any] = { + "question_type": cand["subtype"], + "correct_count": correct, + "cameras_involved": cand["cameras_involved"], + } + if cand.get("activity"): + verification["activity"] = cand["activity"] + if cand.get("event_ids"): + verification["event_ids"] = cand["event_ids"] + if cand.get("cluster_ids"): + verification["cluster_ids"] = cand["cluster_ids"] + + debug_info: Dict[str, Any] = { + "subtype": cand["subtype"], + "correct_count": correct, + "cameras_involved": cand["cameras_involved"], + "cross_camera": cand["cross_camera"], + "candidate_score": round(cand["_score"], 2), + "num_candidates_total": len(all_candidates), + "slot": sg.slot, + } + if cand.get("activity"): + debug_info["activity"] = cand["activity"] + debug_info["activity_human"] = humanize_activity(cand["activity"]) + + qa = { + "question_id": f"v8_numerical_{idx + 1:03d}", + "category": "numerical", + "difficulty": difficulty, + "question_template": question, + "options": options, + "correct_answer_index": correct_idx, + "correct_answer": options[correct_idx], + "requires_cameras": requires_cams, + "requires_multi_camera": len(requires_cams) > 1, + "verification": verification, + "debug_info": debug_info, + } + qa_pairs.append(qa) + + if verbose: + subtypes = Counter(q["debug_info"]["subtype"] for q in qa_pairs) + print(f" Numerical: {len(qa_pairs)} questions " + f"({', '.join(f'{s}={n}' for s, n in subtypes.items())})") + + return qa_pairs diff --git a/meva/scripts/v10/generate_perception.py b/meva/scripts/v10/generate_perception.py new file mode 100644 index 0000000..c2d762a --- /dev/null +++ b/meva/scripts/v10/generate_perception.py @@ -0,0 +1,440 @@ +""" +V8 generate_perception.py — Perception questions with MEVID attribute verification. + +V8 CHANGES from V7: +- New subtype: attribute_verification ("What is the person wearing?") +- Entity descriptions from MEVID (GPT/YOLO) instead of actor ID aliases +- Attribute verification requires MEVID color data (not generic fallback) +- 4 question types total (V7 had 3) + +Types: +1. "Which camera captures a {activity} event?" (which_camera) — V7 unchanged +2. "What activity is occurring on camera {cam}?" (activity_identification) — V7 unchanged +3. "{activity} is occurring. Which cameras capture this?" (multi_camera_confirmation) — V7 unchanged +4. NEW: "What is the person on camera {cam} wearing?" (attribute_verification) — V8 +""" + +import random +from typing import Any, Dict, List, Set +from collections import defaultdict + +from .parse_annotations import Event +from .build_scene_graph import SceneGraph +from .entity_resolution import ResolvedGraph +from .person_descriptions import ( + load_person_database, get_person_description, get_person_short_label, + get_mevid_persons_with_cameras, enrich_entities, +) +from .distractor_bank import get_distractors, get_camera_distractors +from .activity_hierarchy import humanize_activity, humanize_activity_gerund + + +# ============================================================================ +# V8 NEW: Attribute Distractor Colors +# ============================================================================ + +UPPER_COLORS = ["black", "white", "blue", "red", "green", "gray", "yellow", + "brown", "orange", "purple", "navy", "beige", "khaki"] +LOWER_COLORS = ["black", "blue", "dark", "gray", "brown", "khaki", "white", + "green", "red", "beige", "navy"] +CARRIED_OBJECTS = ["backpack", "bag", "purse", "briefcase", "water bottle", + "umbrella", "phone", "laptop bag"] + + +def _build_appearance_options(person_data: Dict, rng: random.Random) -> Dict: + """ + Build MCQ options for attribute verification. + + Returns dict with: + - question_text: what we ask about + - options: list of 4 strings + - correct_answer_index: int + - attribute_type: "upper_color" | "lower_color" | "carried_object" + """ + upper = person_data.get("primary_upper_color", "unknown") + lower = person_data.get("primary_lower_color", "unknown") + objects = person_data.get("all_carried_objects", []) + + # Pick the best attribute to ask about (prefer colors with actual data) + candidates = [] + + if upper != "unknown": + candidates.append(("upper_color", upper, + "upper body clothing", + UPPER_COLORS)) + if lower != "unknown": + candidates.append(("lower_color", lower, + "lower body clothing", + LOWER_COLORS)) + # Objects are rarer — only use if we have colors too + if objects and len(candidates) >= 1: + candidates.append(("carried_object", objects[0], + "carried item", + CARRIED_OBJECTS)) + + if not candidates: + return None + + attr_type, correct_val, label, distractor_pool = rng.choice(candidates) + + # Build distractors + dist_pool = [c for c in distractor_pool if c.lower() != correct_val.lower()] + rng.shuffle(dist_pool) + distractors = dist_pool[:3] + + if len(distractors) < 3: + return None # Not enough distractors + + options = [correct_val.capitalize()] + [d.capitalize() for d in distractors] + rng.shuffle(options) + correct_idx = next(i for i, o in enumerate(options) + if o.lower() == correct_val.lower()) + + return { + "attribute_type": attr_type, + "correct_value": correct_val, + "label": label, + "options": options, + "correct_answer_index": correct_idx, + } + + +# ============================================================================ +# Question Generation +# ============================================================================ + +def generate_perception_qa(sg: SceneGraph, resolved: ResolvedGraph, + entity_descs: Dict[str, str], + rng: random.Random, count: int = 3, + verbose: bool = False) -> List[Dict]: + """ + Generate perception questions with MEVID attribute verification. + + V8: Takes entity_descs parameter. Adds attribute_verification subtype. + Target: 1 of each type if possible, up to `count` total. + """ + all_cameras = sorted(sg.cameras.keys()) + slot_activities = set(e.activity for e in sg.events) + + # Build activity/camera mappings (same as V7) + activity_cameras: Dict[str, Set[str]] = defaultdict(set) + activity_events: Dict[str, List[Event]] = defaultdict(list) + for evt in sg.events: + activity_cameras[evt.activity].add(evt.camera_id) + activity_events[evt.activity].append(evt) + + camera_activities: Dict[str, Set[str]] = defaultdict(set) + camera_events: Dict[str, List[Event]] = defaultdict(list) + for evt in sg.events: + camera_activities[evt.camera_id].add(evt.activity) + camera_events[evt.camera_id].append(evt) + + qa_pairs = [] + used_activities = set() + used_cameras = set() + + # ------------------------------------------------------------------ + # Type 1: "Which camera captures X?" (1 question, V7 logic) + # ------------------------------------------------------------------ + type1_pool = [ + (act, cams) for act, cams in activity_cameras.items() + if 1 <= len(cams) <= 3 and act not in used_activities + ] + rng.shuffle(type1_pool) + + for act, correct_cams in type1_pool: + if len(qa_pairs) >= 1: + break + if act in used_activities: + continue + + correct_cam = sorted(correct_cams)[0] + distractors = get_camera_distractors([correct_cam], all_cameras, rng, n=3) + + if len(distractors) < 2: + continue + + options = [f"Camera {correct_cam}"] + [f"Camera {d}" for d in distractors[:3]] + rng.shuffle(options) + correct_idx = options.index(f"Camera {correct_cam}") + + human_act = humanize_activity(act) + # Use gerund form for natural sentence: "Which camera captures someone opening a door?" + gerund_act = humanize_activity_gerund(act) + gerund_lower = gerund_act[0].lower() + gerund_act[1:] + question = f"Which camera captures someone {gerund_lower}?" + + rep_event = activity_events[act][0] if activity_events[act] else None + + debug_info = { + "question_type": "which_camera", + "activity": act, + "activity_alias": human_act, + "correct_camera": correct_cam, + "cameras_with_activity": sorted(correct_cams), + } + if rep_event: + debug_info["representative_event"] = { + "camera": rep_event.camera_id, + "frame_range": [rep_event.start_frame, rep_event.end_frame], + "timestamp": f"{rep_event.start_sec:.2f}-{rep_event.end_sec:.2f}s", + "clip_file": rep_event.video_file.replace(".avi", ".mp4"), + } + + qa = { + "question_id": f"v8_perception_{len(qa_pairs)+1:03d}", + "category": "perception", + "difficulty": "easy", + "question_template": question, + "options": options, + "correct_answer_index": correct_idx, + "correct_answer": options[correct_idx], + "requires_cameras": sorted(correct_cams), + "requires_multi_camera": len(correct_cams) > 1, + "verification": { + "question_type": "which_camera", + "activity": act, + "activity_alias": human_act, + "cameras_with_activity": sorted(correct_cams), + "total_cameras_in_slot": len(all_cameras), + }, + "debug_info": debug_info, + } + qa_pairs.append(qa) + used_activities.add(act) + + # ------------------------------------------------------------------ + # Type 4 (V8 NEW): Attribute Verification — "What is the person wearing?" + # ------------------------------------------------------------------ + person_cameras = get_mevid_persons_with_cameras(sg.slot) + + if person_cameras: + # Pick a person with color data + db = load_person_database() + persons = db.get("persons", {}) + + attr_candidates = [] + for pid, cameras in person_cameras.items(): + if pid not in persons: + continue + pdata = persons[pid] + upper = pdata.get("primary_upper_color", "unknown") + lower = pdata.get("primary_lower_color", "unknown") + if upper == "unknown" and lower == "unknown": + continue + + # Only use cameras that are in our slot + slot_cams = [c for c in cameras if c in sg.cameras] + if slot_cams: + attr_candidates.append((pid, pdata, slot_cams)) + + rng.shuffle(attr_candidates) + + for pid, pdata, slot_cams in attr_candidates: + if len(qa_pairs) >= count: + break + + cam = rng.choice(slot_cams) + attr_opts = _build_appearance_options(pdata, rng) + + if attr_opts is None: + continue + + desc = get_person_description(pid) + gpt_desc = pdata.get("gpt_description", "") + + # Frame the question: show the person on a camera, ask about attribute + if attr_opts["attribute_type"] == "upper_color": + question = ( + f"A person is visible on camera {cam}. " + f"What color is their upper body clothing?" + ) + elif attr_opts["attribute_type"] == "lower_color": + question = ( + f"A person is visible on camera {cam}. " + f"What color are they wearing on their lower body?" + ) + else: # carried_object + question = ( + f"A person is visible on camera {cam}. " + f"What object are they carrying?" + ) + + debug_info = { + "question_type": "attribute_verification", + "mevid_person_id": pid, + "camera": cam, + "person_description": desc, + "gpt_description": gpt_desc, + "attribute_type": attr_opts["attribute_type"], + "correct_value": attr_opts["correct_value"], + "all_cameras_for_person": sorted(slot_cams), + "source": "MEVID YOLO+GPT person database", + } + + qa = { + "question_id": f"v8_perception_{len(qa_pairs)+1:03d}", + "category": "perception", + "subcategory": "attribute_verification", + "difficulty": "medium", + "question_template": question, + "options": attr_opts["options"], + "correct_answer_index": attr_opts["correct_answer_index"], + "correct_answer": attr_opts["options"][attr_opts["correct_answer_index"]], + "requires_cameras": [cam], + "requires_multi_camera": False, + "verification": { + "question_type": "attribute_verification", + "mevid_person_id": pid, + "attribute_type": attr_opts["attribute_type"], + "correct_value": attr_opts["correct_value"], + "camera": cam, + "person_description": desc, + }, + "debug_info": debug_info, + } + qa_pairs.append(qa) + used_cameras.add(cam) + + # ------------------------------------------------------------------ + # Type 2: "What activity is occurring on camera X?" (V7 logic) + # ------------------------------------------------------------------ + type2_pool = [ + (cam, acts) for cam, acts in camera_activities.items() + if len(acts) >= 2 and cam not in used_cameras + ] + rng.shuffle(type2_pool) + + for cam, correct_acts in type2_pool: + if len(qa_pairs) >= count: + break + if cam in used_cameras: + continue + + correct_act = rng.choice(sorted(correct_acts)) + distractors = get_distractors(correct_act, slot_activities, rng, n=3) + + if len(distractors) < 2: + continue + + human_correct = humanize_activity(correct_act) + human_distractors = [humanize_activity(d) for d in distractors[:3]] + + options = [human_correct] + human_distractors + rng.shuffle(options) + correct_idx = options.index(human_correct) + + question = f"What activity is occurring on camera {cam}?" + + cam_evts = [e for e in camera_events[cam] if e.activity == correct_act] + rep_event = cam_evts[0] if cam_evts else None + + debug_info = { + "question_type": "activity_identification", + "camera": cam, + "correct_activity": correct_act, + "correct_activity_alias": human_correct, + "all_activities_on_camera": sorted(correct_acts), + } + if rep_event: + debug_info["representative_event"] = { + "camera": rep_event.camera_id, + "frame_range": [rep_event.start_frame, rep_event.end_frame], + "timestamp": f"{rep_event.start_sec:.2f}-{rep_event.end_sec:.2f}s", + "clip_file": rep_event.video_file.replace(".avi", ".mp4"), + } + + qa = { + "question_id": f"v8_perception_{len(qa_pairs)+1:03d}", + "category": "perception", + "difficulty": "easy", + "question_template": question, + "options": options, + "correct_answer_index": correct_idx, + "correct_answer": options[correct_idx], + "requires_cameras": [cam], + "requires_multi_camera": False, + "verification": { + "question_type": "activity_identification", + "camera": cam, + "correct_activity": correct_act, + "correct_activity_alias": human_correct, + "all_activities_on_camera": sorted(correct_acts), + }, + "debug_info": debug_info, + } + qa_pairs.append(qa) + used_cameras.add(cam) + + # ------------------------------------------------------------------ + # Type 3: Multi-camera confirmation (V7 logic) + # ------------------------------------------------------------------ + if len(qa_pairs) < count: + multi_cam_acts = [ + (act, cams) for act, cams in activity_cameras.items() + if len(cams) >= 2 and act not in used_activities + ] + rng.shuffle(multi_cam_acts) + + for act, correct_cams in multi_cam_acts: + if len(qa_pairs) >= count: + break + + sorted_cams = sorted(correct_cams) + human_act = humanize_activity(act) + gerund_act = humanize_activity_gerund(act) + + if len(sorted_cams) >= 2: + option_both = f"Both Camera {sorted_cams[0]} and Camera {sorted_cams[1]}" + option_a_only = f"Camera {sorted_cams[0]} only" + option_b_only = f"Camera {sorted_cams[1]} only" + option_neither = "Neither" + + options = [option_both, option_a_only, option_b_only, option_neither] + correct_idx = 0 + + question = f"{gerund_act} is occurring. Which cameras capture this activity?" + + debug_info = { + "question_type": "multi_camera_confirmation", + "activity": act, + "activity_alias": human_act, + "cameras_with_activity": sorted_cams, + } + for ci, cam_id in enumerate(sorted_cams[:2]): + cam_evts = [e for e in activity_events[act] if e.camera_id == cam_id] + if cam_evts: + evt = cam_evts[0] + debug_info[f"camera_{ci+1}_event"] = { + "camera": evt.camera_id, + "frame_range": [evt.start_frame, evt.end_frame], + "timestamp": f"{evt.start_sec:.2f}-{evt.end_sec:.2f}s", + "clip_file": evt.video_file.replace(".avi", ".mp4"), + } + + qa = { + "question_id": f"v8_perception_{len(qa_pairs)+1:03d}", + "category": "perception", + "difficulty": "easy", + "question_template": question, + "options": options, + "correct_answer_index": correct_idx, + "correct_answer": options[correct_idx], + "requires_cameras": sorted_cams[:2], + "requires_multi_camera": True, + "verification": { + "question_type": "multi_camera_confirmation", + "activity": act, + "activity_alias": human_act, + "cameras_with_activity": sorted_cams, + }, + "debug_info": debug_info, + } + qa_pairs.append(qa) + used_activities.add(act) + + if verbose: + print(f" Perception: {len(qa_pairs)} questions generated " + f"(incl. {sum(1 for q in qa_pairs if q.get('subcategory') == 'attribute_verification')} attribute verification)") + + return qa_pairs[:count] diff --git a/meva/scripts/v10/generate_scene_summary.py b/meva/scripts/v10/generate_scene_summary.py new file mode 100644 index 0000000..368fbc8 --- /dev/null +++ b/meva/scripts/v10/generate_scene_summary.py @@ -0,0 +1,272 @@ +""" +V8 generate_scene_summary.py — Scene-level summary questions. + +NEW in V8: Questions that test holistic understanding of the entire +multi-camera scene. Requires aggregating information across all cameras +and understanding the overall activity pattern. + +Generates summaries from annotation density: activity types, counts, +temporal flow, and cross-camera patterns. +""" + +import random +from typing import Any, Dict, List, Set +from collections import defaultdict, Counter + +from .parse_annotations import Event +from .build_scene_graph import SceneGraph +from .entity_resolution import ResolvedGraph +from .activity_hierarchy import humanize_activity, humanize_activity_gerund + + +# ============================================================================ +# Scene Analysis +# ============================================================================ + +def _analyze_scene(sg: SceneGraph) -> Dict: + """ + Compute scene-level statistics for summary question generation. + """ + events = sg.events + if not events: + return {} + + # Activity frequency + activity_counts = Counter(e.activity for e in events) + + # Camera activity density + camera_event_counts = Counter(e.camera_id for e in events) + + # Temporal span + min_sec = min(e.start_sec for e in events) + max_sec = max(e.end_sec for e in events) + duration = max_sec - min_sec + + # Activity categories + person_activities = [e for e in events if e.activity.startswith("person_")] + vehicle_activities = [e for e in events if e.activity.startswith("vehicle_")] + + # Cross-camera activities (same activity on 2+ cameras) + activity_cameras: Dict[str, Set[str]] = defaultdict(set) + for e in events: + activity_cameras[e.activity].add(e.camera_id) + cross_camera_acts = {act: cams for act, cams in activity_cameras.items() + if len(cams) >= 2} + + # Most active camera + busiest_camera = camera_event_counts.most_common(1)[0] if camera_event_counts else (None, 0) + + # Unique entity count (person entities across all cameras) + unique_entities = len(sg.entities) + person_entities = sum(1 for e in sg.entities.values() if e.entity_type == "person") + + # Dominant activity pattern + top_3_activities = activity_counts.most_common(3) + + return { + "total_events": len(events), + "unique_activities": len(activity_counts), + "activity_counts": dict(activity_counts), + "camera_event_counts": dict(camera_event_counts), + "num_cameras": len(sg.cameras), + "duration_sec": round(duration, 1), + "person_event_count": len(person_activities), + "vehicle_event_count": len(vehicle_activities), + "cross_camera_activities": {a: sorted(c) for a, c in cross_camera_acts.items()}, + "busiest_camera": busiest_camera[0], + "busiest_camera_count": busiest_camera[1], + "unique_entities": unique_entities, + "person_entities": person_entities, + "top_3_activities": top_3_activities, + } + + +def _build_scene_description(analysis: Dict) -> str: + """Build a natural-language scene description from analysis.""" + parts = [] + + n_cams = analysis.get("num_cameras", 0) + n_events = analysis.get("total_events", 0) + n_acts = analysis.get("unique_activities", 0) + + parts.append(f"The scene spans {n_cams} cameras with {n_events} total activity events") + + top_3 = analysis.get("top_3_activities", []) + if top_3: + top_descs = [] + for act, count in top_3: + human = humanize_activity(act) + top_descs.append(f"{human} ({count} occurrences)") + parts.append(f"The most frequent activities are: {', '.join(top_descs)}") + + cross_cam = analysis.get("cross_camera_activities", {}) + if cross_cam: + n_cross = len(cross_cam) + parts.append(f"{n_cross} activities occur on multiple cameras") + + busiest = analysis.get("busiest_camera") + if busiest: + parts.append(f"Camera {busiest} is the most active with {analysis['busiest_camera_count']} events") + + return ". ".join(parts) + "." + + +# ============================================================================ +# Question Generation +# ============================================================================ + +def generate_scene_summary_qa(sg: SceneGraph, resolved: ResolvedGraph, + entity_descs: Dict[str, str], + rng: random.Random, count: int = 1, + verbose: bool = False) -> List[Dict]: + """ + Generate scene-level summary questions. + + Types: + 1. "Which best describes the overall scene?" (scene characterization) + 2. "Which camera is most active?" (activity density) + 3. "What is the dominant activity type?" (activity distribution) + """ + analysis = _analyze_scene(sg) + + if not analysis or analysis.get("total_events", 0) < 5: + if verbose: + print(" Scene Summary: Too few events for summary questions") + return [] + + qa_pairs = [] + + # Type 1: Scene characterization + # "Which description best matches the overall scene?" + description = _build_scene_description(analysis) + + top_3 = analysis.get("top_3_activities", []) + n_events = analysis.get("total_events", 0) + n_cams = analysis.get("num_cameras", 0) + n_person = analysis.get("person_event_count", 0) + n_vehicle = analysis.get("vehicle_event_count", 0) + + # Build correct answer based on dominant activity pattern + if n_person > n_vehicle * 2: + scene_type = "pedestrian-dominant" + elif n_vehicle > n_person * 2: + scene_type = "vehicle-dominant" + else: + scene_type = "mixed activity" + + _cam_word = 'camera' if n_cams == 1 else 'cameras' + + if top_3: + top_act = humanize_activity_gerund(top_3[0][0]).lower() + correct_desc = ( + f"A {scene_type} scene across {n_cams} {_cam_word}, " + f"primarily featuring {top_act}" + ) + else: + correct_desc = f"A {scene_type} scene across {n_cams} {_cam_word}" + + # Generate plausible but wrong descriptions + wrong_descs = [] + if scene_type == "pedestrian-dominant": + wrong_descs.append( + f"A vehicle-focused scene with mostly parking and driving activity" + ) + else: + wrong_descs.append( + f"A scene dominated by people entering and exiting buildings" + ) + + _empty_cam_count = max(1, n_cams - 3) + wrong_descs.append( + f"An empty scene with minimal activity, captured on {_empty_cam_count} {'camera' if _empty_cam_count == 1 else 'cameras'}" + ) + wrong_descs.append( + f"A single-camera scene showing only indoor activities" + ) + + options = [correct_desc] + wrong_descs[:3] + rng.shuffle(options) + correct_idx = options.index(correct_desc) + + question = ( + f"Considering all {n_cams} {_cam_word} in this slot, " + f"which description best characterizes the overall scene?" + ) + + debug_info = { + "question_type": "scene_characterization", + "scene_analysis": analysis, + "scene_description": description, + "scene_type": scene_type, + } + + qa = { + "question_id": f"v8_summary_{len(qa_pairs)+1:03d}", + "category": "scene_summary", + "difficulty": "hard", + "question_template": question, + "options": options, + "correct_answer_index": correct_idx, + "correct_answer": options[correct_idx], + "requires_cameras": sorted(sg.cameras.keys()), + "requires_multi_camera": True, + "verification": { + "question_type": "scene_characterization", + "total_events": n_events, + "num_cameras": n_cams, + "person_events": n_person, + "vehicle_events": n_vehicle, + "scene_type": scene_type, + "top_activity": top_3[0][0] if top_3 else None, + "top_activity_count": top_3[0][1] if top_3 else 0, + }, + "debug_info": debug_info, + } + qa_pairs.append(qa) + + # Type 2: Busiest camera (if count > 1) + if count > 1 and analysis.get("busiest_camera"): + busiest = analysis["busiest_camera"] + busiest_count = analysis["busiest_camera_count"] + + other_cameras = [c for c in sg.cameras.keys() if c != busiest] + distractors = rng.sample(other_cameras, min(3, len(other_cameras))) + + options = [busiest] + distractors + rng.shuffle(options) + correct_idx = options.index(busiest) + + question = ( + f"Across all cameras in this scene, which camera captures " + f"the most activity events?" + ) + + qa2 = { + "question_id": f"v8_summary_{len(qa_pairs)+1:03d}", + "category": "scene_summary", + "difficulty": "hard", + "question_template": question, + "options": options, + "correct_answer_index": correct_idx, + "correct_answer": options[correct_idx], + "requires_cameras": sorted(sg.cameras.keys()), + "requires_multi_camera": True, + "verification": { + "question_type": "busiest_camera", + "correct_camera": busiest, + "event_count": busiest_count, + "all_camera_counts": analysis["camera_event_counts"], + }, + "debug_info": { + "question_type": "busiest_camera", + "camera_event_counts": analysis["camera_event_counts"], + }, + } + qa_pairs.append(qa2) + + if verbose: + print(f" Scene Summary: {len(qa_pairs)} questions generated " + f"(scene_type={analysis.get('scene_type', scene_type)}, " + f"{n_events} events, {n_cams} cameras)") + + return qa_pairs[:count] diff --git a/meva/scripts/v10/generate_spatial.py b/meva/scripts/v10/generate_spatial.py new file mode 100644 index 0000000..74389ae --- /dev/null +++ b/meva/scripts/v10/generate_spatial.py @@ -0,0 +1,286 @@ +""" +V8 generate_spatial.py — Spatial entity distance questions with MEVID descriptions. + +V8 CHANGES from V7: +- Entity descriptions from MEVID (GPT/YOLO) instead of actor ID aliases +- Questions use natural person descriptions for spatial references +""" + +import random +from pathlib import Path +from typing import Any, Dict, List, Optional, Set, Tuple + +import numpy as np + +from .parse_annotations import Event, find_clips_for_slot, DEFAULT_FRAMERATE +from .build_scene_graph import SceneGraph, Entity +from .entity_resolution import ResolvedGraph +from .person_descriptions import enrich_entities +from .activity_hierarchy import humanize_activity +from .utils.krtd import ( + load_camera_model, CameraModel, compute_entity_distance, + classify_proximity, INDOOR_CAMERAS, +) +from .utils.yaml_stream import get_bbox_at_frame + +DEFAULT_FPS = 30.0 + + +# ============================================================================ +# Spatial Candidate Finding (from V7, unchanged logic) +# ============================================================================ + +def _find_spatial_candidates(sg: SceneGraph, verbose: bool = False) -> List[Dict]: + """Find entity pairs with valid KRTD projections for spatial questions.""" + candidates = [] + + camera_models: Dict[str, CameraModel] = {} + for cam_id in sg.cameras: + if cam_id in INDOOR_CAMERAS: + continue + model = load_camera_model(cam_id) + if model is not None: + camera_models[cam_id] = model + + if verbose: + print(f" Spatial: {len(camera_models)} cameras with KRTD models") + + clips = find_clips_for_slot(sg.slot) + clip_by_camera = {c["camera_id"]: c for c in clips} + + entity_positions: Dict[str, Dict] = {} + + for eid, entity in sg.entities.items(): + if entity.camera_id not in camera_models: + continue + if entity.entity_type != "person": + continue + + model = camera_models[entity.camera_id] + mid_frame = (entity.first_frame + entity.last_frame) // 2 + + bbox = None + if entity.keyframe_bboxes: + closest_frame = min(entity.keyframe_bboxes.keys(), + key=lambda f: abs(int(f) - mid_frame)) + bbox = entity.keyframe_bboxes[closest_frame] + + if bbox is None and entity.camera_id in clip_by_camera: + clip = clip_by_camera[entity.camera_id] + geom_path = Path(clip["activities_file"]).with_name( + Path(clip["activities_file"]).name.replace(".activities.yml", ".geom.yml") + ) + if geom_path.exists(): + bbox = get_bbox_at_frame(geom_path, entity.actor_id, mid_frame, tolerance=15) + + if bbox is None: + continue + + pos = model.bbox_foot_to_world(bbox) + if pos is None: + continue + + entity_positions[eid] = { + "position": pos, + "frame": mid_frame, + "bbox": bbox, + "camera_id": entity.camera_id, + "entity": entity, + } + + if verbose: + print(f" Spatial: {len(entity_positions)} entities with 3D positions") + + entity_ids = sorted(entity_positions.keys()) + for i in range(len(entity_ids)): + for j in range(i + 1, len(entity_ids)): + eid_a = entity_ids[i] + eid_b = entity_ids[j] + + pos_a = entity_positions[eid_a] + pos_b = entity_positions[eid_b] + + distance = float(np.linalg.norm(pos_a["position"] - pos_b["position"])) + + if distance > 500: + continue + + proximity = classify_proximity(distance) + + candidates.append({ + "entity_a": eid_a, + "entity_b": eid_b, + "camera_a": pos_a["camera_id"], + "camera_b": pos_b["camera_id"], + "position_a": pos_a["position"].tolist(), + "position_b": pos_b["position"].tolist(), + "bbox_a": pos_a["bbox"], + "bbox_b": pos_b["bbox"], + "frame_a": pos_a["frame"], + "frame_b": pos_b["frame"], + "distance_m": round(distance, 2), + "proximity": proximity, + "entity_a_obj": pos_a["entity"], + "entity_b_obj": pos_b["entity"], + }) + + return candidates + + +# ============================================================================ +# Question Generation +# ============================================================================ + +def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, + entity_descs: Dict[str, str], + rng: random.Random, count: int = 2, + verbose: bool = False, + fallback_eids: Optional[Set[str]] = None) -> List[Dict]: + """ + Generate spatial entity distance questions with MEVID descriptions. + + V8: Uses entity_descs for person descriptions instead of actor ID aliases. + """ + candidates = _find_spatial_candidates(sg, verbose) + + if verbose: + print(f" Spatial: {len(candidates)} candidate pairs") + + if not candidates: + return [] + + # Filter out pairs with identical descriptions (indistinguishable entities) + filtered = [] + for c in candidates: + desc_a = entity_descs.get(c["entity_a"], "") + desc_b = entity_descs.get(c["entity_b"], "") + if desc_a and desc_b and desc_a == desc_b: + if verbose: + print(f" Filtering spatial pair: identical descriptions '{desc_a}'") + continue + filtered.append(c) + candidates = filtered + + # Filter out pairs where either entity has a fallback (non-visual) description + if fallback_eids: + before = len(candidates) + candidates = [ + c for c in candidates + if c["entity_a"] not in fallback_eids and c["entity_b"] not in fallback_eids + ] + if verbose and before != len(candidates): + print(f" Filtered {before - len(candidates)} spatial pairs (fallback descriptions)") + + # Sort by distance diversity + near = [c for c in candidates if c["proximity"] == "near"] + moderate = [c for c in candidates if c["proximity"] == "moderate"] + far = [c for c in candidates if c["proximity"] == "far"] + + rng.shuffle(near) + rng.shuffle(moderate) + rng.shuffle(far) + + selected = [] + for bucket in [near, moderate, far]: + if bucket and len(selected) < count: + selected.append(bucket[0]) + + remaining = near[1:] + moderate[1:] + far[1:] + rng.shuffle(remaining) + for c in remaining: + if len(selected) >= count: + break + selected.append(c) + + qa_pairs = [] + + for idx, cand in enumerate(selected[:count]): + ent_a = cand["entity_a_obj"] + ent_b = cand["entity_b_obj"] + proximity = cand["proximity"] + distance = cand["distance_m"] + + is_cross_camera = cand["camera_a"] != cand["camera_b"] + + # V8: Use MEVID descriptions + desc_a = entity_descs.get(cand["entity_a"], f"a person on camera {cand['camera_a']}") + desc_b = entity_descs.get(cand["entity_b"], f"a person on camera {cand['camera_b']}") + + if is_cross_camera: + question = ( + f"In the scene, how far apart are {desc_a} on camera {cand['camera_a']} " + f"and {desc_b} on camera {cand['camera_b']}?" + ) + else: + question = ( + f"How close are {desc_a} and {desc_b} " + f"in the scene visible on camera {cand['camera_a']}?" + ) + + options = [ + "They are near each other (within a few meters)", + "They are at a moderate distance (5-15 meters)", + "They are far apart (more than 15 meters)", + "They are at the same location", + ] + + if proximity == "near": + correct_idx = 0 + elif proximity == "moderate": + correct_idx = 1 + else: + correct_idx = 2 + + debug_info = { + "entity_a": { + "entity_id": cand["entity_a"], + "camera": cand["camera_a"], + "description": desc_a, + "bbox": cand["bbox_a"], + "frame": cand["frame_a"], + "timestamp": f"{ent_a.first_sec:.2f}-{ent_a.last_sec:.2f}s", + "world_pos_enu": cand["position_a"], + }, + "entity_b": { + "entity_id": cand["entity_b"], + "camera": cand["camera_b"], + "description": desc_b, + "bbox": cand["bbox_b"], + "frame": cand["frame_b"], + "timestamp": f"{ent_b.first_sec:.2f}-{ent_b.last_sec:.2f}s", + "world_pos_enu": cand["position_b"], + }, + "distance_meters": distance, + "proximity": proximity, + "projection_method": "krtd_bbox_foot", + } + + qa = { + "question_id": f"v8_spatial_{idx+1:03d}", + "category": "spatial", + "difficulty": "easy", + "question_template": question, + "options": options, + "correct_answer_index": correct_idx, + "correct_answer": options[correct_idx], + "requires_cameras": sorted(set([cand["camera_a"], cand["camera_b"]])), + "requires_multi_camera": is_cross_camera, + "verification": { + "entity_a": cand["entity_a"], + "entity_b": cand["entity_b"], + "entity_a_desc": desc_a, + "entity_b_desc": desc_b, + "world_pos_a_enu": cand["position_a"], + "world_pos_b_enu": cand["position_b"], + "distance_meters": distance, + "proximity": proximity, + "projection_method": "krtd_bbox_foot", + }, + "debug_info": debug_info, + } + qa_pairs.append(qa) + + if verbose: + print(f" Spatial: {len(qa_pairs)} questions generated") + + return qa_pairs diff --git a/meva/scripts/v10/generate_temporal.py b/meva/scripts/v10/generate_temporal.py new file mode 100644 index 0000000..3f91b75 --- /dev/null +++ b/meva/scripts/v10/generate_temporal.py @@ -0,0 +1,407 @@ +""" +V8 generate_temporal.py — Temporal cross-camera questions with MEVID person descriptions. + +V8 CHANGES from V7: +- Entity aliases replaced with MEVID person descriptions when available +- Questions prioritize events involving described persons +- Description-enriched question text for better naturalization +""" + +import random +from pathlib import Path +from typing import Any, Dict, List, Optional, Set, Tuple + +from .parse_annotations import Event +from .build_scene_graph import SceneGraph, Entity +from .entity_resolution import ResolvedGraph +from .person_descriptions import enrich_entities, get_mevid_persons_with_cameras +from .distractor_bank import get_distractors +from .activity_hierarchy import ( + are_related, get_relationship, get_relationship_strength, humanize_activity, +) +from .utils.mevid import find_mevid_persons_for_slot + +# ============================================================================ +# Constants +# ============================================================================ + +MIN_GAP = 3.0 +MAX_GAP = 15.0 +FALLBACK_MAX_GAP = 20.0 +DEFAULT_FPS = 30.0 + + +# ============================================================================ +# Connection Scoring (from V7, unchanged) +# ============================================================================ + +def _score_connection(event_a: Event, event_b: Event, + sg: SceneGraph, resolved: ResolvedGraph, + mevid_person_cameras: Dict[int, Set[str]]) -> Dict: + """Score connection strength between two events.""" + score = 0.0 + connection_type = "unrelated" + connection_strength = "weak" + mevid_validated = False + mevid_person_id = None + relationship = None + cluster_id = None + + for cluster in resolved.entity_clusters: + a_entities = set() + b_entities = set() + for eid in cluster.entities: + entity = sg.entities.get(eid) + if not entity: + continue + if entity.camera_id == event_a.camera_id: + for actor in event_a.actors: + if actor["actor_id"] == entity.actor_id: + a_entities.add(eid) + if entity.camera_id == event_b.camera_id: + for actor in event_b.actors: + if actor["actor_id"] == entity.actor_id: + b_entities.add(eid) + if a_entities and b_entities: + connection_type = "same_entity_cluster" + connection_strength = "strong" + score += 3.0 + cluster_id = cluster.cluster_id + break + + rel = get_relationship(event_a.activity, event_b.activity) + if rel: + relationship = rel + rel_score = get_relationship_strength(event_a.activity, event_b.activity) + score += rel_score * 2.0 + if connection_type == "unrelated": + connection_type = f"related_activities_{rel}" + connection_strength = "medium" if rel_score >= 0.7 else "weak" + + for pid, cameras in mevid_person_cameras.items(): + if event_a.camera_id in cameras and event_b.camera_id in cameras: + mevid_validated = True + mevid_person_id = pid + score += 1.5 + break + + if event_a.activity != event_b.activity: + score += 0.5 + + return { + "connection_type": connection_type, + "connection_strength": connection_strength, + "score": score, + "mevid_validated": mevid_validated, + "mevid_person_id": mevid_person_id, + "relationship": relationship, + "cluster_id": cluster_id, + } + + +def _build_debug_info(event: Event, sg: SceneGraph, + entity_descs: Dict[str, str]) -> Dict: + """Build debug info for one event, using MEVID descriptions.""" + clip_file = event.video_file + if clip_file.endswith(".avi"): + clip_file = clip_file.replace(".avi", ".mp4") + + desc = None + for eid, entity in sg.entities.items(): + if entity.camera_id == event.camera_id: + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + desc = entity_descs.get(eid, entity.alias) + break + if desc: + break + + return { + "camera": event.camera_id, + "activity": event.activity, + "actor_ids": [a["actor_id"] for a in event.actors], + "frame_range": [event.start_frame, event.end_frame], + "timestamp": f"{event.start_sec:.2f}-{event.end_sec:.2f}s", + "fps": DEFAULT_FPS, + "clip_file": clip_file, + "entity_description": desc, + } + + +def _get_event_description(event: Event, sg: SceneGraph, + entity_descs: Dict[str, str], + fallback_eids: Optional[Set[str]] = None) -> str: + """Get a human-readable description for an event, using MEVID if available. + + Prefers visual (non-fallback) descriptions. Falls back to 'someone {activity}' + if only fallback descriptions are available. + """ + from .person_descriptions import is_visual_description + short_act = humanize_activity(event.activity) + + # Try to get entity description — prefer visual descriptions + best_desc = None + for eid, entity in sg.entities.items(): + if entity.camera_id == event.camera_id: + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + desc = entity_descs.get(eid) + if desc: + if fallback_eids and eid in fallback_eids: + # Record fallback but keep searching for visual + if best_desc is None: + best_desc = desc + continue + # Found a visual description — use it + if short_act in desc: + return desc + return f"{desc} {short_act}" + + # If only fallback was found, use generic form + if best_desc and (not fallback_eids): + if short_act in best_desc: + return best_desc + return f"{best_desc} {short_act}" + + # Fallback: V7-style + return f"someone {short_act}" + + +def _short_option_label(desc: str, activity: str) -> str: + """Build a short label for an option from the event description. + + E.g. 'a person in gray top entering through a structure' -> + 'The person in gray top entering through a structure' + """ + label = desc.strip() + # Capitalize first letter for option text + if label.startswith("a "): + label = "The " + label[2:] + elif label.startswith("someone "): + label = "Someone " + label[8:] + else: + label = label[0].upper() + label[1:] + return label + + +# ============================================================================ +# Candidate Selection +# ============================================================================ + +def _find_temporal_candidates(events: List[Event], sg: SceneGraph, + resolved: ResolvedGraph, + mevid_person_cameras: Dict[int, Set[str]], + max_gap: float = MAX_GAP) -> List[Dict]: + """Find cross-camera event pairs within temporal gap constraints.""" + candidates = [] + seen = set() + + for i, ea in enumerate(events): + for j in range(i + 1, len(events)): + eb = events[j] + if ea.camera_id == eb.camera_id: + continue + + gap = eb.start_sec - ea.end_sec + gap_rev = ea.start_sec - eb.end_sec + + first, second, actual_gap = None, None, None + + if gap >= MIN_GAP and gap <= max_gap: + first, second, actual_gap = ea, eb, gap + elif gap_rev >= MIN_GAP and gap_rev <= max_gap: + first, second, actual_gap = eb, ea, gap_rev + else: + continue + + key = (first.activity, first.camera_id, second.activity, second.camera_id) + if key in seen: + continue + seen.add(key) + + conn = _score_connection(first, second, sg, resolved, mevid_person_cameras) + candidates.append({ + "event_a": first, + "event_b": second, + "gap_sec": round(actual_gap, 2), + **conn, + }) + + candidates.sort(key=lambda c: (-c["score"], c["gap_sec"])) + return candidates + + +# ============================================================================ +# Question Generation +# ============================================================================ + +def _event_has_visual_desc(event: Event, sg: SceneGraph, + fallback_eids: Set[str]) -> bool: + """Check if at least one actor in this event has a visual description.""" + for eid, entity in sg.entities.items(): + if entity.camera_id == event.camera_id: + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + if eid not in fallback_eids: + return True + return False + + +def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, + entity_descs: Dict[str, str], + rng: random.Random, count: int = 2, + verbose: bool = False, + fallback_eids: Optional[Set[str]] = None) -> List[Dict]: + """ + Generate temporal cross-camera questions with MEVID person descriptions. + + V8 changes: + - entity_descs parameter provides MEVID descriptions + - Question text uses natural person descriptions instead of actor IDs + - Prioritizes events involving described persons + """ + slot_cameras = list(sg.cameras.keys()) + mevid_person_cameras = find_mevid_persons_for_slot(sg.slot, slot_cameras) + + candidates = _find_temporal_candidates( + sg.events, sg, resolved, mevid_person_cameras, MAX_GAP + ) + + if len(candidates) < count: + candidates = _find_temporal_candidates( + sg.events, sg, resolved, mevid_person_cameras, FALLBACK_MAX_GAP + ) + + if verbose: + print(f" Temporal: {len(candidates)} candidate pairs") + + if not candidates: + return [] + + # Filter out candidates where EITHER event uses fallback (non-visual) descriptions + # Both events appear in the question text, so both must have visual descriptions + if fallback_eids: + visual_candidates = [ + c for c in candidates + if _event_has_visual_desc(c["event_a"], sg, fallback_eids) + and _event_has_visual_desc(c["event_b"], sg, fallback_eids) + ] + if verbose and len(visual_candidates) < len(candidates): + print(f" Filtered {len(candidates) - len(visual_candidates)} " + f"fallback-only pairs → {len(visual_candidates)} remaining") + candidates = visual_candidates + + if not candidates: + return [] + + # Diversify selection, preferring MEVID-validated + described events + used_pairs = set() + used_activities = set() + selected = [] + + # First pass: prefer MEVID-validated + for c in candidates: + if c["mevid_validated"] and len(selected) < count: + cam_pair = (c["event_a"].camera_id, c["event_b"].camera_id) + act_pair = (c["event_a"].activity, c["event_b"].activity) + if cam_pair not in used_pairs or act_pair not in used_activities: + used_pairs.add(cam_pair) + used_activities.add(act_pair) + selected.append(c) + + # Fill remaining from any candidates + for c in candidates: + if len(selected) >= count: + break + if c not in selected: + selected.append(c) + + # Generate QA pairs + qa_pairs = [] + + for idx, cand in enumerate(selected[:count]): + ea = cand["event_a"] + eb = cand["event_b"] + gap = cand["gap_sec"] + + desc_a = _get_event_description(ea, sg, entity_descs, fallback_eids) + desc_b = _get_event_description(eb, sg, entity_descs, fallback_eids) + + # Build short option labels from descriptions (no camera IDs) + short_a = _short_option_label(desc_a, ea.activity) + short_b = _short_option_label(desc_b, eb.activity) + + question = f"{desc_a} and {desc_b} -- which occurred first?" + + options = [ + f"{short_a} occurred first", + f"{short_b} occurred first", + "They occurred simultaneously", + "Cannot be determined", + ] + correct_idx = 0 + + if rng.random() < 0.5: + question = f"{desc_b} and {desc_a} -- which occurred first?" + options = [ + f"{short_b} occurred first", + f"{short_a} occurred first", + "They occurred simultaneously", + "Cannot be determined", + ] + correct_idx = 1 + + debug_info = { + "event_a": _build_debug_info(ea, sg, entity_descs), + "event_b": _build_debug_info(eb, sg, entity_descs), + "gap_sec": gap, + "connection_type": cand["connection_type"], + "connection_strength": cand["connection_strength"], + "connection_score": cand["score"], + "relationship": cand["relationship"], + "cluster_id": cand.get("cluster_id"), + "mevid_validated": cand["mevid_validated"], + "mevid_person_id": cand["mevid_person_id"], + } + + qa = { + "question_id": f"v8_temporal_{idx+1:03d}", + "category": "temporal", + "difficulty": "easy", + "question_template": question, + "options": options, + "correct_answer_index": correct_idx, + "correct_answer": options[correct_idx], + "requires_cameras": sorted(set([ea.camera_id, eb.camera_id])), + "requires_multi_camera": True, + "verification": { + "event_a": { + "activity": ea.activity, + "camera": ea.camera_id, + "start_sec": ea.start_sec, + "end_sec": ea.end_sec, + "actor_ids": [a["actor_id"] for a in ea.actors], + "description": desc_a, + }, + "event_b": { + "activity": eb.activity, + "camera": eb.camera_id, + "start_sec": eb.start_sec, + "end_sec": eb.end_sec, + "actor_ids": [a["actor_id"] for a in eb.actors], + "description": desc_b, + }, + "gap_sec": gap, + "entity_link": "mevid_validated" if cand["mevid_validated"] else "heuristic", + "same_person": cand["connection_type"] == "same_entity_cluster", + }, + "debug_info": debug_info, + } + qa_pairs.append(qa) + + if verbose: + mevid_count = sum(1 for q in qa_pairs + if q["debug_info"]["mevid_validated"]) + print(f" Temporal: {len(qa_pairs)} questions ({mevid_count} MEVID-validated)") + + return qa_pairs diff --git a/meva/scripts/v10/naturalize_v8_qa_v2.py b/meva/scripts/v10/naturalize_v8_qa_v2.py new file mode 100644 index 0000000..49b6f42 --- /dev/null +++ b/meva/scripts/v10/naturalize_v8_qa_v2.py @@ -0,0 +1,1220 @@ +#!/usr/bin/env python3 +""" +V8 Naturalization V2 — Pre-processes and naturalizes V8 template QA pairs. + +Key improvements over V1: +1. Pre-processing layer (FREE, no API call): + - Description simplification: "blue upper body garment" → "blue top" + - Camera reference removal from temporal/spatial question text + - Temporal anchors for disambiguation ("about 6 seconds in") + - Activity de-duplication ("enters scene enters scene" → "enters scene") + - Grammar fixes: capitalization, mid-sentence periods + - Event descriptions reconstructed from structured verification data + +2. Updated GPT prompts (optional GPT naturalization): + - Better few-shot examples reflecting cleaned templates + - Category-specific format guidance + - Post-processing validation + +3. Three modes: + --preprocess-only: Just pre-process templates (free, instant) + --dry-run: Show what would be sent to GPT + (default): Pre-process + GPT naturalization + +Usage: + # Pre-process only (free): + python3 scripts/v8/naturalize_v8_qa_v2.py --input data/qa_pairs/SLOT.v8.json --preprocess-only + + # Full pipeline (pre-process + GPT): + python3 scripts/v8/naturalize_v8_qa_v2.py --input data/qa_pairs/SLOT.v8.json + + # Dry-run: + python3 scripts/v8/naturalize_v8_qa_v2.py --input data/qa_pairs/SLOT.v8.json --dry-run +""" + +import json +import re +import time +import argparse +import os +import sys +from pathlib import Path +from typing import List, Dict, Any, Optional, Tuple + +# ============================================================================ +# Paths & Constants +# ============================================================================ + +QA_DIR = Path("/home/ah66742/data/qa_pairs") +LOG_DIR = Path("/home/ah66742/data/gpt_logs") + +DEFAULT_MODEL = "gpt-4o-mini" +DEFAULT_TEMPERATURE = 0.7 +MAX_RETRIES = 3 +RETRY_DELAY = 2.0 +CLIP_DURATION = 300.0 # 5-minute clips + + +# ============================================================================ +# Description Simplification (standalone, mirrors person_descriptions.py) +# ============================================================================ + +# Garment type simplifications +_GARMENT_SUBS = [ + (r"upper body garment with a hood", "hoodie"), + (r"upper body garment", "top"), + (r"lower body clothing", "pants"), + (r"lower body garment", "pants"), + (r"lower body pants", "pants"), + (r"lower body shorts", "shorts"), + (r"hooded jacket", "hoodie"), +] + +# Phrasing cleanups +_PHRASING_SUBS = [ + (r",\s*and they are\s+", ", "), + (r",\s*and is\s+", ", "), + (r"\.\s*The person appears to be [^\.]+\.?", ""), + (r",?\s*and they may be carrying personal belongings", ""), + (r",?\s*and they appear to have [^,\.]+", ""), + (r"\.\s*Their hair appears short[^\.]*\.?", ""), +] + +# Posture/action context to strip (not useful for identification) +_STRIP_PATTERNS = [ + r",?\s*sitting on a chair[^,\.]*", + r",?\s*with their back turned[^,\.]*", + r",?\s*while ascending a staircase[^,\.]*", + r",?\s*while holding a clipboard or some papers", + r",?\s*sitting\b[^,\.]*", + r",?\s*items on the table[^,\.]*", + r",?\s*appears to be looking[^,\.]*", +] + + +def simplify_description(desc: str) -> str: + """ + Simplify verbose GPT descriptions into natural short form. + + "wearing a blue upper body garment and blue lower body clothing, + with a black hoodie featuring a graphic design on the back." + → + "wearing a blue top and blue pants, with a black hoodie featuring + a graphic design on the back" + """ + if not desc: + return desc + + desc = desc.rstrip(". ") + + for pattern, replacement in _GARMENT_SUBS: + desc = re.sub(pattern, replacement, desc, flags=re.IGNORECASE) + + for pattern, replacement in _PHRASING_SUBS: + desc = re.sub(pattern, replacement, desc, flags=re.IGNORECASE) + + for pattern in _STRIP_PATTERNS: + desc = re.sub(pattern, "", desc, flags=re.IGNORECASE) + + # Clean up orphaned commas / double spaces + desc = re.sub(r",\s*,", ",", desc) + desc = re.sub(r"\s{2,}", " ", desc) + desc = desc.strip(", ") + desc = desc.rstrip(".") + + return desc + + +# ============================================================================ +# Activity Humanization (standalone, mirrors activity_hierarchy.py) +# ============================================================================ + +_GERUND_MAP = { + "opens": "opening", "closes": "closing", "enters": "entering", + "exits": "exiting", "reads": "reading", "carries": "carrying", + "picks": "picking", "puts": "putting", "sets": "setting", + "rides": "riding", "loads": "loading", "unloads": "unloading", + "talks": "talking", "stands": "standing", "walks": "walking", + "runs": "running", "sits": "sitting", "texts": "texting", + "pulls": "pulling", "pushes": "pushing", "interacts": "interacting", + "drops": "dropping", "embraces": "embracing", "uses": "using", + "makes": "making", "steals": "stealing", "starts": "starting", + "stops": "stopping", "turns": "turning", +} + +_NO_ARTICLE = frozenset({ + "up", "down", "on", "off", "out", "in", "to", "from", + "through", "with", "around", "right", "left", "a", + "an", "the", "into", "onto", "over", "away", +}) + + +def _humanize_activity(activity: str) -> str: + """person_opens_facility_door → opens facility door""" + for prefix in ("person_", "vehicle_", "hand_"): + if activity.startswith(prefix): + activity = activity[len(prefix):] + break + return activity.replace("_", " ") + + +def _humanize_gerund(activity: str) -> str: + """person_opens_facility_door → Opening a facility door""" + base = _humanize_activity(activity) + words = base.split() + if not words: + return base.capitalize() + + first = words[0] + gerund = _GERUND_MAP.get(first, first + "ing") + rest = " ".join(words[1:]) + + if rest: + first_rest = rest.split()[0] + if first_rest not in _NO_ARTICLE: + rest = "a " + rest + + result = f"{gerund} {rest}".strip() if rest else gerund + + # Fix missing articles in common phrases + result = re.sub(r'\bwith person\b', 'with a person', result) + result = re.sub(r'\bto person\b', 'to a person', result) + result = re.sub(r'\bthrough structure\b', 'through a structure', result) + result = re.sub(r'\bthrough door\b', 'through a door', result) + result = re.sub(r'\bin vehicle\b', 'in a vehicle', result) + result = re.sub(r'\bwith object\b', 'with an object', result) + result = re.sub(r'\bon phone\b', 'on a phone', result) + + return result.capitalize() + + +def _short_activity_label(activity: str) -> str: + """Short gerund label for options: person_opens_facility_door → opening a facility door""" + return _humanize_gerund(activity).lower() + + +# ============================================================================ +# Temporal Anchoring +# ============================================================================ + +def _temporal_anchor(sec: float, clip_duration: float = CLIP_DURATION) -> str: + """Generate a temporal anchor for event disambiguation within a 5-min clip.""" + if sec < 5: + return "at the very start" + elif sec < 30: + return f"about {int(round(sec))} seconds in" + elif sec < 60: + return f"roughly {int(round(sec))} seconds in" + elif sec < 120: + return f"around the {int(round(sec))}-second mark" + elif sec < 180: + return f"around {int(round(sec / 10)) * 10} seconds in" + elif sec < 250: + return f"around {int(round(sec / 10)) * 10} seconds in" + else: + return "near the end of the clip" + + +# ============================================================================ +# Appearance Detection +# ============================================================================ + +_APPEARANCE_WORDS = frozenset({ + "wearing", "shirt", "top", "pants", "jacket", "hoodie", "backpack", + "blue", "red", "green", "gray", "grey", "black", "white", "dark", "light", + "brown", "orange", "yellow", "purple", "pink", "navy", "beige", "tan", + "khaki", "camouflage", "striped", "patterned", "logo", "graphic", + "garment", "clothing", "jeans", "shorts", "dress", "skirt", "hat", "cap", + "glasses", "sunglasses", "scarf", "vest", "coat", "boots", "sneakers", + "bottle", "bag", "purse", "suitcase", "umbrella", +}) + + +def _has_appearance_info(desc: str) -> bool: + """Check if description contains visual appearance info (clothing/colors).""" + if not desc: + return False + words = set(desc.lower().split()) + return len(words & _APPEARANCE_WORDS) >= 2 + + +# ============================================================================ +# Person Description Extraction +# ============================================================================ + +def _extract_person_desc(entity_description: str, activity: str = "") -> str: + """ + Extract just the person appearance, stripping any embedded activity text. + + Input: "the person wearing a gray upper body garment... enters scene" + Output: "a person wearing a gray top and green pants, carrying a black backpack" + + Input: "a person interacts with person" (fallback, no appearance) + Output: "a person" + """ + if not entity_description: + return "a person" + + desc = entity_description.strip() + + # Check if this is a real appearance description vs. activity fallback + if not _has_appearance_info(desc): + return "a person" + + # Remove embedded activity text after the description + # Pattern: description ends with period, then activity follows + # e.g. "...backpack. enters scene through structure on camera G421" + activity_verbs = { + "enters", "exits", "opens", "closes", "picks", "puts", "carries", + "talks", "sits", "stands", "reads", "texts", "interacts", "embraces", + "rides", "loads", "unloads", "transfers", "drops", "pulls", "pushes", + "walks", "runs", "stops", "turns", "starts", + } + + # Split on periods; keep appearance parts, drop activity parts + parts = desc.split(".") + appearance_parts = [] + for part in parts: + part_stripped = part.strip() + if not part_stripped: + continue + first_word = part_stripped.split()[0].lower() if part_stripped.split() else "" + if first_word in activity_verbs: + break # Rest is activity description + appearance_parts.append(part_stripped) + + if appearance_parts: + desc = ". ".join(appearance_parts) + + # Strip "on camera GXXX" + desc = re.sub(r"\s*on camera G\d+", "", desc) + + # Simplify garment terminology and strip clutter + desc = simplify_description(desc) + + # Normalize prefix: "the person" → "a person" + for prefix in ["The person ", "the person "]: + if desc.startswith(prefix): + desc = "a person " + desc[len(prefix):] + break + + # Ensure starts with "a person" or "A person" + if not desc.lower().startswith(("a ", "the ")): + desc = "a person " + desc + + return desc + + +# ============================================================================ +# Per-Category Pre-processing +# ============================================================================ + +def _preprocess_temporal(qa: Dict, strip_camera_refs: bool = False) -> Dict: + """ + Reconstruct temporal question from structured verification data. + + Fixes: camera refs in question, description verbosity, activity doubling, + temporal ambiguity (adds timestamp anchors), capitalization. + + If strip_camera_refs=True (V3 mode), camera IDs are removed from the question + text — person descriptions (clothing colors, carried objects) serve as the + primary disambiguator instead. Camera refs are still kept in answer options. + """ + result = {k: v for k, v in qa.items()} + v = qa.get("verification", {}) + d = qa.get("debug_info", {}) + + if not v or "event_a" not in v or "event_b" not in v: + return result + + ev_a = v["event_a"] + ev_b = v["event_b"] + da = d.get("event_a", {}) + db_ = d.get("event_b", {}) + + # Get person descriptions from debug_info (enriched with MEVID) + desc_a = _extract_person_desc( + da.get("entity_description", ""), ev_a.get("activity", "") + ) + desc_b = _extract_person_desc( + db_.get("entity_description", ""), ev_b.get("activity", "") + ) + + # Get activities in gerund form + act_a = _short_activity_label(ev_a.get("activity", "")) + act_b = _short_activity_label(ev_b.get("activity", "")) + + cam_a = ev_a.get("camera", da.get("camera", "")) + cam_b = ev_b.get("camera", db_.get("camera", "")) + + # Build clean event descriptions + # V3 mode: strip camera refs from question text (person descriptions disambiguate) + # V2 mode: keep camera refs in question text + include_cam = not strip_camera_refs + + def _fmt_event(desc, act, cam, with_camera=True): + d = desc.rstrip('.') + cam_ref = f" on camera {cam}" if cam and with_camera else "" + if d.lower() in ("a person", "someone"): + return f"{d} {act}{cam_ref}" + return f"{d}, {act}{cam_ref}" + + clean_a = _fmt_event(desc_a, act_a, cam_a, with_camera=include_cam) + clean_b = _fmt_event(desc_b, act_b, cam_b, with_camera=include_cam) + + # Capitalize first letter + clean_a = clean_a[0].upper() + clean_a[1:] + clean_b = clean_b[0].upper() + clean_b[1:] + + # Determine mention order (preserve original answer randomization) + ci = qa["correct_answer_index"] + if ci == 0: + # Event A mentioned first AND occurred first → option 0 correct + desc_1, desc_2 = clean_a, clean_b + ev_1, ev_2 = ev_a, ev_b + else: + # Event B mentioned first but Event A occurred first → option 1 correct + desc_1, desc_2 = clean_b, clean_a + ev_1, ev_2 = ev_b, ev_a + + # Build clean question + question = ( + f"Consider two events in this multi-camera scene: " + f"(1) {desc_1}. (2) {desc_2}. " + f"Which event occurred first?" + ) + + # Build options using camera + activity labels + act_1 = _humanize_gerund(ev_1.get("activity", "event")) + act_2 = _humanize_gerund(ev_2.get("activity", "event")) + cam_1 = ev_1.get("camera", "") + cam_2 = ev_2.get("camera", "") + + # Use person descriptions to disambiguate events (no camera IDs in options) + # desc_1 / desc_2 are person appearance descriptions + activity + def _option_label(desc, act): + """Build a concise option label from event description.""" + d = desc.strip().rstrip('.') + if d.startswith("A "): + d = "The " + d[2:] + elif d.startswith("a "): + d = "The " + d[2:] + elif d.startswith("Someone "): + d = d # keep as-is + return d + + opt_1 = _option_label(desc_1, act_1) + opt_2 = _option_label(desc_2, act_2) + + options = [ + f"{opt_1} occurred first", + f"{opt_2} occurred first", + "They occurred simultaneously", + "Cannot be determined", + ] + + # Fix article agreement (a → an before vowels) + question = re.sub(r'\ba ([aeiouAEIOU])', r'an \1', question) + options = [re.sub(r'\ba ([aeiouAEIOU])', r'an \1', o) for o in options] + + result["question_template"] = question + result["options"] = options + result["correct_answer"] = options[ci] + + return result + + +def _preprocess_spatial(qa: Dict) -> Dict: + """Clean spatial question: simplify descriptions, remove camera refs.""" + result = {k: v for k, v in qa.items()} + v = qa.get("verification", {}) + + if not v: + return result + + # Get and simplify entity descriptions + desc_a = simplify_description(v.get("entity_a_desc", "a person")) + desc_b = simplify_description(v.get("entity_b_desc", "another person")) + + # Normalize prefixes + for prefix in ["The person ", "the person "]: + if desc_a.startswith(prefix): + desc_a = "the person " + desc_a[len(prefix):] + if desc_b.startswith(prefix): + desc_b = "the person " + desc_b[len(prefix):] + + desc_a = desc_a.rstrip(".") + desc_b = desc_b.rstrip(".") + + # Build question without camera reference + question = f"How close are {desc_a} and {desc_b} in the scene?" + question = question[0].upper() + question[1:] + # Fix article agreement (a → an before vowels) + question = re.sub(r'\ba ([aeiouAEIOU])', r'an \1', question) + + result["question_template"] = question + return result + + +def _preprocess_perception(qa: Dict) -> Dict: + """ + Clean perception question: simplify any embedded descriptions, fix grammar. + Camera refs kept since they're inherent to perception question types. + """ + result = {k: v for k, v in qa.items()} + v = qa.get("verification", {}) + q_type = v.get("question_type", "") + + template = qa.get("question_template", "") + + if q_type == "attribute_verification": + # "A person is visible on camera G423. What color are they wearing..." + # Simplify any embedded person description + person_desc = v.get("person_description", "") + if person_desc: + simplified = simplify_description(person_desc).rstrip(".") + # Template is already clean for this type — just ensure capitalization + elif q_type == "which_camera": + # "Which camera captures a carries heavy object event?" + # Make activity name more natural + alias = v.get("activity_alias", "") + if alias: + gerund = _humanize_gerund(v.get("activity", alias)) + template = f"Which camera captures {gerund.lower().lstrip('a ')}?" + template = template[0].upper() + template[1:] + + # General cleanup + template = simplify_description(template) + if template: + template = template[0].upper() + template[1:] + # Re-add question mark if simplification stripped it + if not template.endswith("?"): + template += "?" + + result["question_template"] = template + return result + + +def _preprocess_reid(qa: Dict) -> Dict: + """ + Clean re-ID question: simplify descriptions, fix grammar. + Camera refs kept since they're fundamental to re-identification. + """ + result = {k: v for k, v in qa.items()} + v = qa.get("verification", {}) + d = qa.get("debug_info", {}) + + if not v: + return result + + q_type = v.get("question_type", "") + desc = simplify_description(v.get("person_description", "a person")) + desc = desc.rstrip(".") + + # Normalize prefix + for prefix in ["the person ", "The person "]: + if desc.startswith(prefix): + desc = "a person " + desc[len(prefix):] + break + + if q_type == "which_camera_reid": + cam = v.get("source_camera", "") + question = ( + f"On camera {cam}, {desc} is visible. " + f"Which other camera also shows this same person?" + ) + elif q_type == "same_person_confirmation": + cam_a = v.get("camera_a", d.get("camera_a", "")) + cam_b = v.get("camera_b", d.get("camera_b", "")) + capitalized_desc = desc[0].upper() + desc[1:] if desc else desc + question = ( + f"{capitalized_desc} is observed on camera {cam_a}. " + f"Is this the same person visible on camera {cam_b}?" + ) + else: + # Fallback: simplify in place + question = simplify_description(qa.get("question_template", "")) + if question: + question = question[0].upper() + question[1:] + if question and not question.endswith("?"): + question += "?" + + result["question_template"] = question + return result + + +def _preprocess_scene_summary(qa: Dict) -> Dict: + """Clean scene summary question: minimal changes.""" + result = {k: v for k, v in qa.items()} + template = qa.get("question_template", "") + if template: + template = template[0].upper() + template[1:] + result["question_template"] = template + return result + + +# ============================================================================ +# Main Pre-processing Pipeline +# ============================================================================ + +def preprocess_all(input_data: Dict, verbose: bool = False, + version: str = "v2") -> Dict: + """ + Pre-process all QA pairs: simplify descriptions, remove camera refs, + add temporal anchors, fix grammar. FREE (no API call). + + version='v3' strips camera refs from temporal question text. + """ + output = {k: v for k, v in input_data.items() if k != "qa_pairs"} + output["version"] = "v8_preprocessed" + output["preprocessor"] = "naturalize_v8_qa_v2.py" + + preprocessed = [] + changes = {"temporal": 0, "spatial": 0, "perception": 0, + "re_identification": 0, "scene_summary": 0} + + for qa in input_data.get("qa_pairs", []): + cat = qa.get("category", "") + + if cat == "temporal": + cleaned = _preprocess_temporal(qa, strip_camera_refs=(version == "v3")) + elif cat == "spatial": + cleaned = _preprocess_spatial(qa) + elif cat == "perception": + cleaned = _preprocess_perception(qa) + elif cat == "re_identification": + cleaned = _preprocess_reid(qa) + elif cat == "scene_summary": + cleaned = _preprocess_scene_summary(qa) + else: + cleaned = qa.copy() + + # Track original template for comparison + if cleaned.get("question_template") != qa.get("question_template"): + cleaned["original_template"] = qa["question_template"] + changes[cat] = changes.get(cat, 0) + 1 + if cleaned.get("options") != qa.get("options"): + cleaned["original_options"] = qa["options"] + + preprocessed.append(cleaned) + + # Global fix: article agreement (a → an before vowels) in all text fields + for qa in preprocessed: + if "question_template" in qa: + qa["question_template"] = re.sub( + r'\ba ([aeiouAEIOU])', r'an \1', qa["question_template"] + ) + if "options" in qa: + qa["options"] = [ + re.sub(r'\ba ([aeiouAEIOU])', r'an \1', str(o)) + for o in qa["options"] + ] + if "correct_answer" in qa: + qa["correct_answer"] = re.sub( + r'\ba ([aeiouAEIOU])', r'an \1', str(qa["correct_answer"]) + ) + + output["qa_pairs"] = preprocessed + + if verbose: + total_changed = sum(changes.values()) + print(f"\n Pre-processing: {total_changed}/{len(preprocessed)} questions modified") + for cat, cnt in sorted(changes.items()): + if cnt > 0: + print(f" {cat}: {cnt} changed") + + return output + + +# ============================================================================ +# Updated GPT System Prompt (V2) +# ============================================================================ + +SYSTEM_PROMPT_V2 = """\ +You are a question naturalizer for a multi-camera surveillance video QA benchmark. + +Your task is to polish pre-processed template questions into fluent, natural English +suitable for a Video Question Answering (VQA) evaluation. The templates have already +been cleaned up — your job is to make them sound conversational while preserving all +factual content. + +Rules: +1. Rephrase the question to sound natural and conversational +2. Rephrase each option to sound natural, keeping the SAME meaning and order +3. Preserve person descriptions precisely (clothing colors, carried objects, distinctive features) +4. Preserve camera identifiers (e.g., "camera G299") when present — they tell the VLM where to look +5. Preserve event numbering (Event 1, Event 2) when present +6. Keep spatial terms unchanged (near, moderate, far, meters) +7. Keep "simultaneously" and "cannot be determined" as-is +8. Do NOT add information not present in the template +9. Do NOT reorder the options +10. Add a brief 1-sentence "reasoning" explaining why the correct answer is right + +Output format — respond with ONLY a JSON object: +{ + "question": "The naturalized question text", + "options": ["Option A", "Option B", "Option C", "Option D"], + "reasoning": "Brief explanation of why the answer is correct" +} +""" + +SYSTEM_PROMPT_V3 = """\ +You are a creative question writer for a multi-camera surveillance video QA benchmark. + +Your task: rewrite template questions into varied, natural English. Each question should +sound like a DIFFERENT person wrote it. Vary sentence structure, word choice, and phrasing +aggressively — avoid formulaic patterns like always starting with "In this scene..." or +"Looking at the cameras..." or "Two events are observed...". + +Rules: +1. VARY your phrasing — use different sentence openings, structures, and vocabulary each time +2. Preserve ALL factual content: person descriptions (clothing colors, carried objects), activities +3. Rephrase options naturally but keep the SAME meaning and order +4. Camera identifiers in answer options should be preserved +5. Keep spatial terms (near, moderate, far, meters) and "simultaneously"/"cannot be determined" +6. Do NOT add information not in the template +7. Do NOT reorder options +8. Add a 1-sentence "reasoning" for why the correct answer is right + +Phrasing variety examples (do NOT copy these verbatim — invent your own): +- "Two things happen in view of the cameras..." +- "Watch for these two events..." +- "Based on what the cameras recorded..." +- "Among the people visible..." +- Direct question without preamble: "Which happened first: ..." +- "The footage shows..." / "Can you tell..." / "What do you notice about..." +- Vary active/passive voice, question-first vs. description-first +- Sometimes be brief and direct, sometimes more descriptive + +Output format — respond with ONLY a JSON object: +{ + "question": "The creatively rephrased question", + "options": ["Option A", "Option B", "Option C", "Option D"], + "reasoning": "Brief explanation of why the answer is correct" +} +""" + +GRAMMAR_CHECKER_PROMPT = """\ +You are a meticulous copy editor. You receive a JSON object containing a VQA question, +options, and reasoning. Your ONLY job is to fix grammar, punctuation, and awkward phrasing. + +Rules: +1. Fix grammatical errors, run-on sentences, and punctuation mistakes +2. Do NOT change meaning, add information, or remove details +3. Do NOT reorder options +4. Do NOT change camera IDs, person descriptions, or spatial/temporal terms +5. Keep the same JSON structure +6. If the text is already grammatically correct, return it unchanged +7. Be conservative — only fix clear errors + +Output format — respond with ONLY a JSON object: +{ + "question": "The grammar-checked question", + "options": ["Option A", "Option B", "Option C", "Option D"], + "reasoning": "The grammar-checked reasoning" +} +""" + +# ============================================================================ +# Category-specific prompt examples (few-shot, V2) +# ============================================================================ + +CATEGORY_EXAMPLES_V3 = { + "temporal": { + "hint": "This is a temporal ordering question about two events. Person descriptions (clothing, objects) identify who is who — there are NO camera references in the question. VARY your phrasing creatively. Return ONLY {question, reasoning}.", + "example_input": 'Consider two events in this multi-camera scene: (1) A person wearing a gray top and green pants, carrying a black backpack, entering a scene through a structure. (2) A person in a blue top and green pants, interacting with a person. Which event occurred first?', + "example_output": '{"question": "Which of these happened first: a person in gray with green pants and a black backpack walking in through a structure, or a person in a blue top and green pants interacting with someone?", "reasoning": "The person in gray entered through the structure before the blue-topped person interacted with anyone."}', + }, + "spatial": { + "hint": "Spatial distance question about two people. Use their appearance descriptions to identify them. No camera references. VARY phrasing. Return ONLY {question, reasoning}.", + "example_input": 'How close are a person wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back and a person wearing a white hoodie with a Puma logo, camouflage pants, and a camouflage cap in the scene?', + "example_output": '{"question": "How far apart would you say the person in blue with the black graphic hoodie is from the one wearing a white Puma hoodie and camo pants?", "reasoning": "Their positions in the scene place them approximately 6 meters apart."}', + }, + "perception": { + "hint": "Perception question about activities or visual attributes. Camera references are part of the question — keep them. IMPORTANT: Preserve 'What activity...' and 'Which camera...' question structures EXACTLY — do NOT rephrase to 'Can you identify...' or 'Identify the camera...'. Only fix grammar and smooth descriptions. Return ONLY {question, reasoning}.", + "example_input": 'What activity is occurring on camera G423?', + "example_output": '{"question": "What activity is occurring on Camera G423?", "reasoning": "The activity visible on Camera G423 is a person opening a door."}', + }, + "re_identification": { + "hint": "Person re-identification across cameras. Camera refs are essential (use 'Camera Gxxx' format). Appearance descriptions must be precise. VARY phrasing. Return ONLY {question, reasoning}.", + "example_input": 'On Camera G419, a person wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back, is visible. Which other camera also shows this same person?', + "example_output": '{"question": "There is someone on Camera G419 in a blue top, blue pants, and a black hoodie with a graphic on the back. Can you spot the same person on any other camera?", "reasoning": "This person with the distinctive graphic hoodie shows up on both Camera G419 and Camera G423."}', + }, + "scene_summary": { + "hint": "Scene-level summary question. Keep camera counts and activity references. VARY phrasing. Return ONLY {question, reasoning}.", + "example_input": 'Considering all 8 camera feeds in this slot, which description best characterizes the overall scene?', + "example_output": '{"question": "What would you say best describes what is going on across all 8 camera feeds?", "reasoning": "Pedestrian activities dominate across all 8 feeds, with putting down objects being the most common."}', + }, + "event_ordering": { + "hint": "Event ordering question about chronological sequence. Rephrase the event list naturally — vary how you introduce the events and ask for the order. Do NOT add letter prefixes (A, B, C, D) to options. Return ONLY {question, reasoning}.", + "example_input": "Identify the correct chronological order of the following events: I. Someone opening a door II. A person walking through the courtyard. Which is the correct chronological order?", + "example_output": '{"question": "Several activities were captured across different camera feeds. Place these events in the order they occurred: I. A door being opened near the entrance II. Someone strolling through the courtyard What is the right sequence?", "reasoning": "The door was opened before the person walked through the courtyard."}', + }, + "causality": { + "hint": "Cause-effect reasoning question. Rephrase naturally — for forward causal, vary how you ask 'what happened next'; for backward, vary how you ask 'why did this happen'. Keep the causal logic intact. Return ONLY {question, reasoning}.", + "example_input": "After a person picks up object, what activity most likely followed?", + "example_output": '{"question": "Once the individual grabbed an item from the ground, what did they most likely do next?", "reasoning": "Picking up an object is commonly followed by putting it down in another location."}', + }, + "numerical": { + "hint": "Counting question about activities, entities, or cameras. Rephrase the counting query naturally — vary sentence structure but preserve the exact scope. Return ONLY {question, reasoning}.", + "example_input": "How many cameras capture at least one instance of talking to person?", + "example_output": '{"question": "Across the available camera feeds, on how many of them can you spot at least one conversation taking place?", "reasoning": "Conversations were observed on 5 of the available camera feeds."}', + }, +} + +CATEGORY_EXAMPLES_V2 = { + "temporal": { + "hint": "This is a temporal ordering question with two numbered events on specific cameras. Preserve the event numbers, person descriptions, and camera references exactly.", + "example_input": 'Consider two events in this multi-camera scene: (1) A person wearing a gray top and green pants, carrying a black backpack, entering a scene through a structure on camera G421. (2) A person interacting with a person on camera G330. Which event occurred first?', + "example_output": '{"question": "Two events are observed across the camera feeds: (1) A person in a gray top and green pants, carrying a black backpack, enters through a structure on camera G421. (2) A person interacts with another person on camera G330. Which of these events happened first?", "options": ["Entering a scene through a structure (camera G421) occurred first", "Interacting with a person (camera G330) occurred first", "They occurred simultaneously", "Cannot be determined"], "reasoning": "Based on the video evidence, the scene entry on camera G421 occurred before the interaction on camera G330."}', + }, + "spatial": { + "hint": "This is a spatial distance question about how far apart two people are. Person descriptions should be preserved naturally. No camera references in the question.", + "example_input": 'How close are the person wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back, and the person wearing a white hoodie with a Puma logo, camouflage pants, and a camouflage cap in the scene?', + "example_output": '{"question": "In the scene, how far apart are the person in blue clothes with a black graphic hoodie and the person in a white Puma hoodie with camouflage pants and cap?", "options": ["They are near each other (within a few meters)", "They are at a moderate distance (5-15 meters)", "They are far apart (more than 15 meters)", "They are at the same location"], "reasoning": "Based on their projected positions in the scene, these two individuals are approximately 6 meters apart, placing them at a moderate distance."}', + }, + "perception": { + "hint": "This is a perception question about activities or visual attributes. Camera references are part of the question structure — preserve them.", + "example_input": 'A person is visible on camera G423. What color are they wearing on their lower body?', + "example_output": '{"question": "Looking at camera G423, what color is the visible person wearing on their lower body?", "options": ["Gray", "Navy", "Blue", "Brown"], "reasoning": "The person on camera G423 is wearing blue pants, making Blue the correct answer."}', + }, + "re_identification": { + "hint": "This is a person re-identification question. Camera references are essential — preserve them. Preserve appearance descriptions precisely.", + "example_input": 'On camera G419, a person wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back, is visible. Which other camera also shows this same person?', + "example_output": '{"question": "A person in a blue top and blue pants with a black graphic hoodie is visible on camera G419. Which other camera also shows this same person?", "options": ["G423", "G299", "G328", "None of these cameras"], "reasoning": "The person wearing a blue top and pants with the distinctive black graphic hoodie appears on both camera G419 and camera G423."}', + }, + "scene_summary": { + "hint": "This is a scene-level summary question. Keep statistical terms, camera counts, and activity references.", + "example_input": 'Considering all 8 camera feeds in this slot, which description best characterizes the overall scene?', + "example_output": '{"question": "Looking at all 8 camera feeds together, which description best captures the overall activity in this scene?", "options": ["An empty scene with minimal activity, captured on 5 cameras", "A vehicle-focused scene with mostly parking and driving activity", "A single-camera scene showing only indoor activities", "A pedestrian-dominant scene across 8 cameras, primarily featuring putting down objects"], "reasoning": "The vast majority of events are pedestrian activities observed across all 8 cameras, with putting down objects being the most frequent activity."}', + }, +} + + +# ============================================================================ +# GPT Client +# ============================================================================ + +def _create_client(): + """Create OpenAI client.""" + import openai + return openai.OpenAI() + + +def _naturalize_one(client, question: Dict, model: str, + temperature: float, + system_prompt: str = None, + examples: Dict = None) -> Optional[Dict]: + """Send one pre-processed question to GPT for naturalization.""" + if system_prompt is None: + system_prompt = SYSTEM_PROMPT_V2 + if examples is None: + examples = CATEGORY_EXAMPLES_V2 + + category = question["category"] + template = question["question_template"] + options = question["options"] + verification = question.get("verification", {}) + + lookup_cat = question.get("subcategory", category) + cat_info = examples.get(lookup_cat, + examples.get(category, {})) + hint = cat_info.get("hint", "Rephrase this question naturally.") + example_in = cat_info.get("example_input", "") + example_out = cat_info.get("example_output", "") + + user_message = f"Category: {category}\n{hint}\n\n" + + if example_in and example_out: + user_message += f"Example:\n Input: {example_in}\n Output: {example_out}\n\n" + + user_message += f"Now naturalize this question:\n\nTemplate: {template}\n\nOptions:\n" + for i, opt in enumerate(options): + user_message += f" {chr(65+i)}) {opt}\n" + + # Add verification context for reasoning + if category == "temporal" and "gap_sec" in verification: + user_message += f"\nContext: The gap between events is {verification['gap_sec']}s.\n" + elif category == "spatial" and "distance_meters" in verification: + user_message += f"\nContext: Distance is {verification['distance_meters']}m.\n" + elif category == "re_identification": + user_message += "\nContext: Person identified via cross-camera appearance matching.\n" + + user_message += "\nRespond with ONLY the JSON object." + + for attempt in range(MAX_RETRIES): + try: + response = client.chat.completions.create( + model=model, + temperature=temperature, + response_format={"type": "json_object"}, + messages=[ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": user_message}, + ], + max_tokens=600, + ) + + result = json.loads(response.choices[0].message.content) + + if "question" not in result or "options" not in result: + print(f" WARNING: Missing fields, retry {attempt+1}") + continue + + if len(result["options"]) != len(options): + print(f" WARNING: Option count mismatch, retry {attempt+1}") + continue + + usage = { + "prompt_tokens": response.usage.prompt_tokens, + "completion_tokens": response.usage.completion_tokens, + "total_tokens": response.usage.total_tokens, + } + + return { + "naturalized_question": result["question"], + "naturalized_options": result["options"], + "reasoning": result.get("reasoning", ""), + "usage": usage, + } + + except json.JSONDecodeError: + print(f" WARNING: Invalid JSON response, retry {attempt+1}") + time.sleep(RETRY_DELAY) + except Exception as e: + print(f" WARNING: API error: {e}, retry {attempt+1}") + time.sleep(RETRY_DELAY * (attempt + 1)) + + return None + + +def _grammar_check_one(client, naturalized: Dict, model: str) -> Optional[Dict]: + """Send one naturalized question through grammar checker (pass 2).""" + user_message = json.dumps({ + "question": naturalized.get("naturalized_question", ""), + "options": naturalized.get("naturalized_options", []), + "reasoning": naturalized.get("reasoning", ""), + }, indent=2) + + for attempt in range(MAX_RETRIES): + try: + response = client.chat.completions.create( + model=model, + temperature=0.3, # Low temperature for conservative edits + response_format={"type": "json_object"}, + messages=[ + {"role": "system", "content": GRAMMAR_CHECKER_PROMPT}, + {"role": "user", "content": user_message}, + ], + max_tokens=600, + ) + + result = json.loads(response.choices[0].message.content) + + if "question" not in result or "options" not in result: + break # Fall back to naturalized version + + usage = { + "prompt_tokens": response.usage.prompt_tokens, + "completion_tokens": response.usage.completion_tokens, + "total_tokens": response.usage.total_tokens, + } + + return { + "question": result["question"], + "options": result["options"], + "reasoning": result.get("reasoning", ""), + "usage": usage, + } + + except Exception as e: + if attempt < MAX_RETRIES - 1: + time.sleep(RETRY_DELAY) + continue + + return None # Grammar check failed, caller uses naturalized version as-is + + +# ============================================================================ +# Batch Processing +# ============================================================================ + +def naturalize_batch(input_data: Dict, model: str, temperature: float, + verbose: bool = False, version: str = "v2") -> Dict: + """Pre-process + GPT naturalize all QA pairs.""" + # Step 1: Pre-process (free) — V3 strips camera refs from temporal Qs + preprocessed = preprocess_all(input_data, verbose=verbose, version=version) + + # Step 2: Select prompts based on version + if version == "v3": + sys_prompt = SYSTEM_PROMPT_V3 + cat_examples = CATEGORY_EXAMPLES_V3 + else: + sys_prompt = SYSTEM_PROMPT_V2 + cat_examples = CATEGORY_EXAMPLES_V2 + + # Step 3: GPT naturalize + client = _create_client() + qa_pairs = preprocessed["qa_pairs"] + total = len(qa_pairs) + + print(f"\n Naturalizing {total} pre-processed questions with {model} ({version})...") + + naturalized_pairs = [] + total_tokens = 0 + failures = 0 + + for i, q in enumerate(qa_pairs): + if verbose: + print(f" [{i+1}/{total}] {q['category']}: " + f"{q['question_template'][:60]}...") + + # --- Pass 1: Naturalization --- + result = _naturalize_one(client, q, model, temperature, + system_prompt=sys_prompt, examples=cat_examples) + + if result is None: + failures += 1 + nat_q = q.copy() + nat_q["naturalized_question"] = q["question_template"] + nat_q["naturalized_options"] = q["options"] + nat_q["reasoning"] = "" + nat_q["naturalization_failed"] = True + naturalized_pairs.append(nat_q) + continue + + nat_q = q.copy() + nat_q["naturalized_question"] = result["naturalized_question"] + nat_q["naturalized_options"] = result["naturalized_options"] + nat_q["reasoning"] = result["reasoning"] + total_tokens += result["usage"]["total_tokens"] + + # --- Pass 2: Grammar check --- + gc_result = _grammar_check_one(client, nat_q, model) + + if gc_result is not None: + nat_q["naturalized_question"] = gc_result["question"] + nat_q["naturalized_options"] = gc_result["options"] + nat_q["reasoning"] = gc_result["reasoning"] + nat_q["grammar_checked"] = True + total_tokens += gc_result["usage"]["total_tokens"] + else: + nat_q["grammar_checked"] = False + + naturalized_pairs.append(nat_q) + + if (i + 1) % 5 == 0: + print(f" Progress: {i+1}/{total} ({total_tokens} tokens)") + + version_tag = "v8_natural_v3" if version == "v3" else "v8_natural_v2" + + output = { + "slot": input_data["slot"], + "version": version_tag, + "generator": "naturalize_v8_qa_v2.py", + "preprocessor": f"{version}_preprocess", + "model": model, + "temperature": temperature, + "total_tokens": total_tokens, + "total_questions": len(naturalized_pairs), + "failures": failures, + "cameras": input_data.get("cameras", []), + "mevid_supported": input_data.get("mevid_supported", False), + "mevid_persons_in_slot": input_data.get("mevid_persons_in_slot", 0), + "category_counts": input_data.get("category_counts", {}), + "v8_stats": input_data.get("v8_stats", {}), + "qa_pairs": naturalized_pairs, + } + + return output + + +# ============================================================================ +# Dry Run +# ============================================================================ + +def dry_run(input_data: Dict): + """Show pre-processed templates and what would be sent to GPT.""" + preprocessed = preprocess_all(input_data, verbose=True) + qa_pairs = preprocessed["qa_pairs"] + + print(f"\n === DRY RUN — {len(qa_pairs)} pre-processed questions ===\n") + + for q in qa_pairs: + cat = q["category"] + subcat = q.get("subcategory", "") + original = q.get("original_template", q["question_template"]) + + print(f" [{cat}{' / ' + subcat if subcat else ''}]") + + if "original_template" in q: + print(f" BEFORE: {original[:100]}...") + print(f" AFTER: {q['question_template'][:100]}...") + else: + print(f" (no change): {q['question_template'][:100]}...") + + # Show options comparison + original_opts = q.get("original_options", q["options"]) + if original_opts != q["options"]: + print(f" OPTIONS BEFORE: {original_opts[0][:60]}...") + print(f" OPTIONS AFTER: {q['options'][0][:60]}...") + + for i, opt in enumerate(q["options"]): + marker = " *" if i == q.get("correct_answer_index") else "" + print(f" {chr(65+i)}) {opt}{marker}") + print() + + # Cost estimate + est_tokens = len(qa_pairs) * 400 # slightly more with examples + est_cost_mini = est_tokens * 0.4e-6 + est_cost_4o = est_tokens * 6e-6 + + print(f" === Cost Estimate (GPT naturalization) ===") + print(f" Questions: {len(qa_pairs)}") + print(f" Est. tokens: ~{est_tokens}") + print(f" gpt-4o-mini: ~${est_cost_mini:.4f}") + print(f" gpt-4o: ~${est_cost_4o:.4f}") + print() + print(f" TIP: Use --preprocess-only to get the pre-processed output for free.") + + +# ============================================================================ +# CLI +# ============================================================================ + +def main(): + parser = argparse.ArgumentParser( + description="V8 Naturalization — Pre-process + GPT naturalize (V2/V3)", + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + + parser.add_argument("--input", "-i", required=True, + help="Path to V8 QA JSON file") + parser.add_argument("--output", "-o", + help="Output path (default: auto-generated)") + parser.add_argument("--model", "-m", default=DEFAULT_MODEL, + help=f"GPT model (default: {DEFAULT_MODEL})") + parser.add_argument("--temperature", "-t", type=float, default=None, + help="Temperature (default: 0.7 for V2, 0.95 for V3)") + parser.add_argument("--v3", action="store_true", + help="V3 mode: more question variety, strip camera refs from temporal Qs") + parser.add_argument("--preprocess-only", action="store_true", + help="Only pre-process templates (no GPT call, FREE)") + parser.add_argument("--dry-run", action="store_true", + help="Show pre-processed templates and cost estimate") + parser.add_argument("--verbose", "-v", action="store_true") + parser.add_argument("--yes", "-y", action="store_true", + help="Skip confirmation prompt") + + args = parser.parse_args() + + # Resolve version and temperature + version = "v3" if args.v3 else "v2" + temperature = args.temperature if args.temperature is not None else ( + 0.95 if version == "v3" else DEFAULT_TEMPERATURE + ) + + input_path = Path(args.input) + if not input_path.exists(): + print(f"ERROR: Input not found: {input_path}") + return + + print(f"Loading: {input_path} (mode: {version}, temp: {temperature})") + with open(input_path) as f: + input_data = json.load(f) + + total = len(input_data.get("qa_pairs", [])) + print(f" Slot: {input_data.get('slot', 'N/A')}") + print(f" Version: {input_data.get('version', 'N/A')}") + print(f" Questions: {total}") + + # Mode 1: Pre-process only (free) + if args.preprocess_only: + result = preprocess_all(input_data, verbose=True, version=version) + + out_path = args.output or str(input_path).replace( + ".v8.json", ".v8.preprocessed.json") + with open(out_path, "w") as f: + json.dump(result, f, indent=2, default=str) + + print(f"\n Pre-processed output → {out_path}") + + # Show before/after for each question + print(f"\n === Before → After ===") + for q in result["qa_pairs"]: + if "original_template" in q: + print(f"\n [{q['category']}]") + print(f" BEFORE: {q['original_template'][:120]}") + print(f" AFTER: {q['question_template'][:120]}") + if "original_options" in q: + print(f" OPTS BEFORE: {q['original_options'][0][:80]}") + print(f" OPTS AFTER: {q['options'][0][:80]}") + + return + + # Mode 2: Dry run + if args.dry_run: + dry_run(input_data) + return + + # Mode 3: Full pipeline (pre-process + GPT) + if not os.environ.get("OPENAI_API_KEY"): + print("ERROR: OPENAI_API_KEY not set") + print(" TIP: Use --preprocess-only for free pre-processing without GPT.") + return + + if not args.yes: + print(f"\n Will pre-process + naturalize {total} questions with {args.model} ({version}, temp={temperature})") + resp = input(" Continue? [y/N] ").strip().lower() + if resp != "y": + print(" Aborted.") + return + + result = naturalize_batch(input_data, args.model, temperature, + verbose=args.verbose, version=version) + + print(f"\n === Results ===") + print(f" Naturalized: {total - result['failures']}/{total}") + print(f" Failures: {result['failures']}") + print(f" Total tokens: {result['total_tokens']}") + + suffix = ".v8.natural.v3.json" if version == "v3" else ".v8.natural.v2.json" + out_path = args.output or str(input_path).replace(".v8.json", suffix) + with open(out_path, "w") as f: + json.dump(result, f, indent=2, default=str) + print(f" Output: {out_path}") + + # Save GPT log + slot = input_data.get("slot", "unknown") + log_dir = LOG_DIR / slot + log_dir.mkdir(parents=True, exist_ok=True) + log_path = log_dir / f"naturalize_v8_{version}_{args.model}.json" + with open(log_path, "w") as f: + json.dump({ + "model": args.model, + "temperature": args.temperature, + "total_tokens": result["total_tokens"], + "questions_processed": total, + "failures": result["failures"], + }, f, indent=2) + print(f" Log: {log_path}") + + # Show samples + print(f"\n === Sample Naturalized Questions ===") + seen_cats = set() + for q in result["qa_pairs"]: + if q["category"] in seen_cats: + continue + seen_cats.add(q["category"]) + + print(f"\n [{q['category']}]") + orig = q.get("original_template", q.get("question_template", "")) + print(f" RAW: {orig[:80]}...") + print(f" PREPROC: {q.get('question_template', '')[:80]}...") + print(f" NATURAL: {q.get('naturalized_question', '')[:80]}...") + if q.get("reasoning"): + print(f" REASON: {q['reasoning'][:80]}...") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/naturalize_v8_qa_v3.py b/meva/scripts/v10/naturalize_v8_qa_v3.py new file mode 100644 index 0000000..ea51cad --- /dev/null +++ b/meva/scripts/v10/naturalize_v8_qa_v3.py @@ -0,0 +1,523 @@ +#!/usr/bin/env python3 +""" +V8 Naturalization V3 — Single-Pass Naturalizer (V9 Pipeline) + +Merges the 2-pass naturalize + grammar-check pipeline from V2 into a single +GPT call per question, halving API calls from 18 to 9 per slot. + +Key changes from V2: +1. SYSTEM_PROMPT_UNIFIED replaces SYSTEM_PROMPT_V3 + GRAMMAR_CHECKER_PROMPT +2. Single _naturalize_and_polish_one() replaces _naturalize_one() + _grammar_check_one() +3. Unified temperature 0.8 (midpoint of V2's 0.7 and V3's 0.95) +4. V3's creative variety + temporal camera-ref stripping is the default behavior +5. Output suffix: .v8.natural.v4.json, version tag: v8_natural_v4 + +Pre-processing functions are imported from naturalize_v8_qa_v2 (no duplication). + +Usage: + # Pre-process only (free): + python3 scripts/v8/naturalize_v8_qa_v3.py --input data/qa_pairs/SLOT.v8.json --preprocess-only + + # Full pipeline (pre-process + single-pass GPT): + python3 scripts/v8/naturalize_v8_qa_v3.py --input data/qa_pairs/SLOT.v8.json + + # Dry-run (show what would be sent to GPT): + python3 scripts/v8/naturalize_v8_qa_v3.py --input data/qa_pairs/SLOT.v8.json --dry-run +""" + +import json +import time +import re +import argparse +import os +import sys +from pathlib import Path +from typing import Dict, Optional + +# --------------------------------------------------------------------------- +# Import pre-processing functions from V2 (no duplication) +# --------------------------------------------------------------------------- +sys.path.insert(0, str(Path(__file__).resolve().parent)) +from naturalize_v8_qa_v2 import ( + preprocess_all, + simplify_description, + CATEGORY_EXAMPLES_V3, +) + +# ============================================================================ +# Paths & Constants +# ============================================================================ + +QA_DIR = Path("/home/ah66742/data/qa_pairs") +LOG_DIR = Path("/home/ah66742/data/gpt_logs") + +DEFAULT_MODEL = "gpt-4o-mini" +DEFAULT_TEMPERATURE = 0.8 +MAX_RETRIES = 3 +RETRY_DELAY = 2.0 + +# ============================================================================ +# Unified System Prompt (merged naturalizer + grammar checker) +# ============================================================================ + +SYSTEM_PROMPT_UNIFIED = """\ +You are a skilled question writer AND meticulous copy editor for a multi-camera \ +surveillance video QA benchmark. + +Your task: rewrite each template question into varied, natural English with \ +perfect grammar, punctuation, and phrasing — all in a single step. Each \ +question should sound like a DIFFERENT person wrote it. + +IMPORTANT: You rewrite ONLY the question text and provide a reasoning sentence. \ +You do NOT rewrite the answer options — those are deterministically generated \ +and must not be changed. + +## Creative Rephrasing Rules +1. VARY your phrasing — use different sentence openings, structures, and \ +vocabulary each time. Avoid formulaic patterns like always starting with \ +"In this scene..." or "Looking at the cameras..." or "Two events are observed..." +2. Preserve ALL factual content: person descriptions (clothing colors, carried \ +objects), activities, spatial terms (near, moderate, far, meters), \ +"simultaneously", and "cannot be determined" +3. NEVER include raw camera identifiers (e.g., G421, G330) in the question text. \ +Camera references like "Camera G421" are acceptable ONLY in perception and \ +re-identification questions where cameras are inherent to the question. +4. Do NOT add information not in the template +5. Do NOT reorder or modify the answer options in any way +6. For PERCEPTION questions with the format "What activity is occurring on camera X?" \ +or "Which camera captures a ... event?", preserve this exact phrasing structure. \ +Do NOT rephrase into "Can you identify..." or "Identify the camera that..." — \ +keep the direct "What activity..." / "Which camera..." wording. + +## Ontology Translation +6. Translate robotic activity labels and rigid bounding-box descriptions into \ +natural human prose. For example, change "enters scene through structure" to \ +"walks into the building", "person_opens_facility_door" to "opens a door", \ +and smooth out awkward clothing lists into natural descriptions. \ +Do NOT invent new details — only rephrase what is given. + +## Grammar & Polish Rules (apply simultaneously) +7. Fix ALL grammatical errors, run-on sentences, and punctuation mistakes +8. Ensure proper capitalization and sentence structure +9. Eliminate awkward phrasing, redundancy, and unclear references +10. Be conservative with meaning — only fix form, never alter facts + +## Reasoning +11. Add a 1-sentence "reasoning" for why the correct answer is right + +Phrasing variety examples (do NOT copy these verbatim — invent your own): +- "A man in a gray hoodie appears near the entrance..." +- "Which of these events took place first?" +- "Based on the footage, what happened after..." +- "The woman carrying a red backpack was seen..." +- Direct question without preamble: "Who was spotted on more than one camera?" +- "After reviewing the video, can you determine..." +- Vary active/passive voice, question-first vs. description-first +- Sometimes be brief and direct, sometimes more descriptive + +Output format — respond with ONLY a JSON object: +{ + "question": "The creatively rephrased and grammar-polished question", + "reasoning": "Brief explanation of why the correct answer is right" +} +""" + +# ============================================================================ +# GPT Client +# ============================================================================ + +def _create_client(): + """Create OpenAI client.""" + import openai + return openai.OpenAI() + + +# ============================================================================ +# Post-processing helpers +# ============================================================================ + +_LETTER_PREFIX_RE = re.compile(r'^[A-Da-d]\)\s*') + +def _strip_letter_prefixes(options: list) -> list: + """Remove GPT-baked letter prefixes like 'A) ', 'B) ' from option text.""" + return [_LETTER_PREFIX_RE.sub('', opt) for opt in options] + + +# ============================================================================ +# Single-Pass Naturalize + Polish +# ============================================================================ + +def _naturalize_and_polish_one( + client, + question: Dict, + model: str, + temperature: float, +) -> Optional[Dict]: + """ + Single GPT call that rephrases the question text and generates reasoning. + + GPT only touches question + reasoning. Options are frozen (deterministic). + """ + category = question["category"] + template = question["question_template"] + options = question["options"] + verification = question.get("verification", {}) + + # Select category-specific few-shot examples + lookup_cat = question.get("subcategory", category) + cat_info = CATEGORY_EXAMPLES_V3.get( + lookup_cat, CATEGORY_EXAMPLES_V3.get(category, {}) + ) + hint = cat_info.get("hint", "Rephrase this question naturally with perfect grammar.") + example_in = cat_info.get("example_input", "") + example_out = cat_info.get("example_output", "") + + # Build user message + user_message = f"Category: {category}\n{hint}\n\n" + + if example_in and example_out: + user_message += ( + f"Example:\n Input: {example_in}\n Output: {example_out}\n\n" + ) + + user_message += ( + f"Now rewrite ONLY the question text (do NOT rewrite the options):\n\n" + f"Template: {template}\n\nOptions (for context only — do NOT modify these):\n" + ) + for i, opt in enumerate(options): + user_message += f" {chr(65 + i)}) {opt}\n" + + # Add verification context for reasoning + if category == "temporal" and "gap_sec" in verification: + user_message += ( + f"\nContext: The gap between events is {verification['gap_sec']}s.\n" + ) + elif category == "spatial" and "distance_meters" in verification: + user_message += ( + f"\nContext: Distance is {verification['distance_meters']}m.\n" + ) + elif category == "best_camera": + correct_cam = verification.get("correct_camera", "") + entrance_time = verification.get("entrance_time_sec", 0) + user_message += ( + f"\nContext: Camera transition logic — first entrance on {correct_cam} " + f"at {entrance_time}s.\n" + ) + + user_message += ( + "\nRespond with ONLY a JSON object: " + "{\"question\": \"...\", \"reasoning\": \"...\"}" + ) + + for attempt in range(MAX_RETRIES): + try: + response = client.chat.completions.create( + model=model, + temperature=temperature, + response_format={"type": "json_object"}, + messages=[ + {"role": "system", "content": SYSTEM_PROMPT_UNIFIED}, + {"role": "user", "content": user_message}, + ], + max_tokens=400, + ) + + result = json.loads(response.choices[0].message.content) + + if "question" not in result: + print(f" WARNING: Missing 'question' field, retry {attempt + 1}") + continue + + usage = { + "prompt_tokens": response.usage.prompt_tokens, + "completion_tokens": response.usage.completion_tokens, + "total_tokens": response.usage.total_tokens, + } + + # Options are frozen — pass through from pre-processed input unchanged + return { + "naturalized_question": result["question"], + "naturalized_options": options, # frozen, no GPT rewriting + "reasoning": result.get("reasoning", ""), + "usage": usage, + } + + except json.JSONDecodeError: + print(f" WARNING: Invalid JSON response, retry {attempt + 1}") + time.sleep(RETRY_DELAY) + except Exception as e: + print(f" WARNING: API error: {e}, retry {attempt + 1}") + time.sleep(RETRY_DELAY * (attempt + 1)) + + return None + + +# ============================================================================ +# Batch Processing +# ============================================================================ + +def naturalize_batch( + input_data: Dict, + model: str, + temperature: float, + verbose: bool = False, +) -> Dict: + """Pre-process + single-pass GPT naturalize all QA pairs.""" + + # Step 1: Pre-process (free) — uses V3 mode (strips camera refs from temporal Qs) + preprocessed = preprocess_all(input_data, verbose=verbose, version="v3") + + # Step 2: GPT naturalize + polish (single pass) + client = _create_client() + qa_pairs = preprocessed["qa_pairs"] + total = len(qa_pairs) + + print(f"\n Naturalizing {total} questions with {model} " + f"(single-pass, temp={temperature})...") + + naturalized_pairs = [] + total_tokens = 0 + failures = 0 + + for i, q in enumerate(qa_pairs): + if verbose: + print(f" [{i + 1}/{total}] {q['category']}: " + f"{q['question_template'][:60]}...") + + result = _naturalize_and_polish_one(client, q, model, temperature) + + nat_q = q.copy() + + if result is None: + failures += 1 + nat_q["naturalized_question"] = q["question_template"] + nat_q["naturalized_options"] = q["options"] + nat_q["reasoning"] = "" + nat_q["naturalization_failed"] = True + else: + nat_q["naturalized_question"] = result["naturalized_question"] + nat_q["naturalized_options"] = result["naturalized_options"] + nat_q["reasoning"] = result["reasoning"] + total_tokens += result["usage"]["total_tokens"] + + naturalized_pairs.append(nat_q) + + if (i + 1) % 5 == 0: + print(f" Progress: {i + 1}/{total} ({total_tokens} tokens)") + + output = { + "slot": input_data["slot"], + "version": "final_naturalized", + "generator": "naturalize_final.py", + "preprocessor": "v3_preprocess", + "model": model, + "temperature": temperature, + "total_tokens": total_tokens, + "total_questions": len(naturalized_pairs), + "failures": failures, + "cameras": input_data.get("cameras", []), + "mevid_supported": input_data.get("mevid_supported", False), + "mevid_persons_in_slot": input_data.get("mevid_persons_in_slot", 0), + "category_counts": input_data.get("category_counts", {}), + "stats": input_data.get("stats", input_data.get("v8_stats", {})), + "qa_pairs": naturalized_pairs, + } + + return output + + +# ============================================================================ +# Dry Run +# ============================================================================ + +def dry_run(input_data: Dict): + """Show pre-processed templates and what would be sent to GPT.""" + preprocessed = preprocess_all(input_data, verbose=True, version="v3") + qa_pairs = preprocessed["qa_pairs"] + + print(f"\n === DRY RUN — {len(qa_pairs)} pre-processed questions ===\n") + + for q in qa_pairs: + cat = q["category"] + subcat = q.get("subcategory", "") + original = q.get("original_template", q["question_template"]) + + print(f" [{cat}{' / ' + subcat if subcat else ''}]") + + if "original_template" in q: + print(f" BEFORE: {original[:100]}...") + print(f" AFTER: {q['question_template'][:100]}...") + else: + print(f" (no change): {q['question_template'][:100]}...") + + # Show options comparison + original_opts = q.get("original_options", q["options"]) + if original_opts != q["options"]: + print(f" OPTIONS BEFORE: {original_opts[0][:60]}...") + print(f" OPTIONS AFTER: {q['options'][0][:60]}...") + + for i, opt in enumerate(q["options"]): + marker = " *" if i == q.get("correct_answer_index") else "" + print(f" {chr(65 + i)}) {opt}{marker}") + print() + + # Cost estimate — single pass, so 1x tokens + est_tokens = len(qa_pairs) * 450 # slightly larger prompt (merged instructions) + est_cost_mini = est_tokens * 0.4e-6 + est_cost_4o = est_tokens * 6e-6 + + print(f" === Cost Estimate (single-pass GPT) ===") + print(f" Questions: {len(qa_pairs)}") + print(f" API calls: {len(qa_pairs)} (single-pass, down from {len(qa_pairs) * 2} in V2)") + print(f" Est. tokens: ~{est_tokens}") + print(f" gpt-4o-mini: ~${est_cost_mini:.4f}") + print(f" gpt-4o: ~${est_cost_4o:.4f}") + print() + print(f" TIP: Use --preprocess-only to get the pre-processed output for free.") + + +# ============================================================================ +# CLI +# ============================================================================ + +def main(): + parser = argparse.ArgumentParser( + description="V8 Naturalization V3 — Single-Pass Naturalizer (V9 Pipeline)", + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + + parser.add_argument("--input", "-i", required=True, + help="Path to V8 QA JSON file") + parser.add_argument("--output", "-o", + help="Output path (default: auto-generated .v9.naturalized.json)") + parser.add_argument("--model", "-m", default=DEFAULT_MODEL, + help=f"GPT model (default: {DEFAULT_MODEL})") + parser.add_argument("--temperature", "-t", type=float, default=DEFAULT_TEMPERATURE, + help=f"Temperature (default: {DEFAULT_TEMPERATURE})") + parser.add_argument("--preprocess-only", action="store_true", + help="Only pre-process templates (no GPT call, FREE)") + parser.add_argument("--dry-run", action="store_true", + help="Show pre-processed templates and cost estimate") + parser.add_argument("--verbose", "-v", action="store_true") + parser.add_argument("--yes", "-y", action="store_true", + help="Skip confirmation prompt") + + args = parser.parse_args() + + input_path = Path(args.input) + if not input_path.exists(): + print(f"ERROR: Input not found: {input_path}") + return + + print(f"Loading: {input_path} (single-pass, temp: {args.temperature})") + with open(input_path) as f: + input_data = json.load(f) + + total = len(input_data.get("qa_pairs", [])) + print(f" Slot: {input_data.get('slot', 'N/A')}") + print(f" Version: {input_data.get('version', 'N/A')}") + print(f" Questions: {total}") + + # Mode 1: Pre-process only (free) + if args.preprocess_only: + result = preprocess_all(input_data, verbose=True, version="v3") + + out_path = args.output or str(input_path).replace( + ".v8.json", ".v8.preprocessed.json") + with open(out_path, "w") as f: + json.dump(result, f, indent=2, default=str) + + print(f"\n Pre-processed output -> {out_path}") + + # Show before/after for each question + print(f"\n === Before -> After ===") + for q in result["qa_pairs"]: + if "original_template" in q: + print(f"\n [{q['category']}]") + print(f" BEFORE: {q['original_template'][:120]}") + print(f" AFTER: {q['question_template'][:120]}") + if "original_options" in q: + print(f" OPTS BEFORE: {q['original_options'][0][:80]}") + print(f" OPTS AFTER: {q['options'][0][:80]}") + + return + + # Mode 2: Dry run + if args.dry_run: + dry_run(input_data) + return + + # Mode 3: Full pipeline (pre-process + single-pass GPT) + if not os.environ.get("OPENAI_API_KEY"): + print("ERROR: OPENAI_API_KEY not set") + print(" TIP: Use --preprocess-only for free pre-processing without GPT.") + return + + if not args.yes: + print(f"\n Will pre-process + naturalize {total} questions " + f"with {args.model} (single-pass, temp={args.temperature})") + print(f" API calls: {total} (down from {total * 2} in V2)") + resp = input(" Continue? [y/N] ").strip().lower() + if resp != "y": + print(" Aborted.") + return + + result = naturalize_batch( + input_data, args.model, args.temperature, verbose=args.verbose + ) + + print(f"\n === Results ===") + print(f" Naturalized: {total - result['failures']}/{total}") + print(f" Failures: {result['failures']}") + print(f" Total tokens: {result['total_tokens']}") + print(f" API calls: {total} (single-pass)") + + # Derive output path: .final.raw.json -> .final.naturalized.json + if args.output: + out_path = args.output + elif ".final.raw.json" in str(input_path): + out_path = str(input_path).replace(".final.raw.json", ".final.naturalized.json") + elif ".v9.raw.json" in str(input_path): + out_path = str(input_path).replace(".v9.raw.json", ".v9.naturalized.json") + else: + out_path = str(input_path).replace(".json", ".naturalized.json") + with open(out_path, "w") as f: + json.dump(result, f, indent=2, default=str) + print(f" Output: {out_path}") + + # Save GPT log + slot = input_data.get("slot", "unknown") + log_dir = LOG_DIR / slot + log_dir.mkdir(parents=True, exist_ok=True) + log_path = log_dir / f"naturalize_v8_v4_{args.model}.json" + with open(log_path, "w") as f: + json.dump({ + "model": args.model, + "temperature": args.temperature, + "total_tokens": result["total_tokens"], + "questions_processed": total, + "failures": result["failures"], + "api_calls": total, + "pipeline": "single-pass (v3)", + }, f, indent=2) + print(f" Log: {log_path}") + + # Show samples + print(f"\n === Sample Naturalized Questions ===") + seen_cats = set() + for q in result["qa_pairs"]: + if q["category"] in seen_cats: + continue + seen_cats.add(q["category"]) + + print(f"\n [{q['category']}]") + orig = q.get("original_template", q.get("question_template", "")) + print(f" RAW: {orig[:80]}...") + print(f" PREPROC: {q.get('question_template', '')[:80]}...") + print(f" NATURAL: {q.get('naturalized_question', '')[:80]}...") + if q.get("reasoning"): + print(f" REASON: {q['reasoning'][:80]}...") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/parse_annotations.py b/meva/scripts/v10/parse_annotations.py new file mode 100644 index 0000000..02781ff --- /dev/null +++ b/meva/scripts/v10/parse_annotations.py @@ -0,0 +1,264 @@ +""" +V6 parse_annotations.py — Step 1: Parse Kitware YAML annotations into raw events. + +Input: Slot name (e.g., "2018-03-11.11-25.school") +Output: List of Event dicts with activity, camera, frame range, actors. +""" + +import json +import re +from pathlib import Path +from typing import Any, Dict, List, Optional +from dataclasses import dataclass, asdict, field + +# ============================================================================ +# Paths +# ============================================================================ + +MEVA_ROOT = Path("/nas/mars/dataset/MEVA") +ANNOTATION_BASE = MEVA_ROOT / "meva-data-repo" / "annotation" / "DIVA-phase-2" / "MEVA" +KITWARE_ROOT = ANNOTATION_BASE / "kitware" +KITWARE_TRAINING_ROOT = ANNOTATION_BASE / "kitware-meva-training" +SLOT_INDEX_PATH = Path("/home/ah66742/data/slot_index.json") + +DEFAULT_FRAMERATE = 30.0 + + +# ============================================================================ +# Data Structures +# ============================================================================ + +@dataclass +class Event: + """A single annotated activity event.""" + event_id: str + activity: str + camera_id: str + site: str + start_frame: int + end_frame: int + start_sec: float + end_sec: float + duration_sec: float + actors: List[Dict[str, Any]] # [{actor_id, entity_type}] + video_file: str + annotation_source: str + + def to_dict(self) -> dict: + return asdict(self) + + +# ============================================================================ +# YAML Parsing +# ============================================================================ + +def _load_yaml_fast(path: Path) -> list: + """Load YAML using CSafeLoader for speed.""" + import yaml + try: + Loader = yaml.CSafeLoader + except AttributeError: + Loader = yaml.SafeLoader + with open(path) as f: + return yaml.load(f, Loader=Loader) or [] + + +def _parse_types_yml(path: Path) -> Dict[int, str]: + """Parse types.yml to get actor_id → entity_type mapping.""" + if not path.exists(): + return {} + type_map = {} + for entry in _load_yaml_fast(path): + t = entry.get("types", {}) + if t: + aid = t.get("id1") + cset = t.get("cset3", {}) + etype = next(iter(cset.keys()), "unknown") if cset else "unknown" + if aid is not None: + type_map[aid] = etype + return type_map + + +def _parse_activities_yml(path: Path, camera_id: str, site: str, + framerate: float, source: str) -> List[Event]: + """Parse a Kitware activities.yml file into Event objects.""" + if not path.exists(): + return [] + entries = _load_yaml_fast(path) + events = [] + + # Load types.yml for actor type resolution + types_path = path.with_name(path.name.replace(".activities.yml", ".types.yml")) + type_map = _parse_types_yml(types_path) + + for entry in entries: + act = entry.get("act", {}) + if not act: + continue + act2 = act.get("act2", {}) + activity_name = next(iter(act2.keys()), "unknown") + activity_id = act.get("id2", -1) + timespan = act.get("timespan", []) + if not timespan: + continue + tsr = timespan[0].get("tsr0", []) + if len(tsr) < 2: + continue + start_frame, end_frame = int(tsr[0]), int(tsr[1]) + start_sec = round(start_frame / framerate, 2) + end_sec = round(end_frame / framerate, 2) + + actors = [] + for actor_entry in act.get("actors", []): + aid = actor_entry.get("id1") + if aid is not None: + actors.append({ + "actor_id": aid, + "entity_type": type_map.get(aid, "unknown"), + }) + + clip_name = path.stem.replace(".activities", "") + event_id = f"{camera_id}_evt_{activity_id}" + events.append(Event( + event_id=event_id, + activity=activity_name, + camera_id=camera_id, + site=site, + start_frame=start_frame, + end_frame=end_frame, + start_sec=start_sec, + end_sec=end_sec, + duration_sec=round(end_sec - start_sec, 2), + actors=actors, + video_file=f"{clip_name}.r13.avi", + annotation_source=source, + )) + + return events + + +# ============================================================================ +# Slot-Level Annotation Discovery +# ============================================================================ + +CANONICAL_SLOTS_PATH = Path("/home/ah66742/data/canonical_slots.json") + +def _resolve_to_raw_slots(slot: str) -> List[str]: + """Resolve a slot name to raw slot names. + + With HH-MM slot format (no seconds), each slot is already canonical. + No indirection needed. + """ + return [slot] + + +def find_clips_for_slot(slot: str) -> List[Dict]: + """ + Find all annotation clips for a given slot using slot_index.json. + + Handles both raw slots and canonical slots (auto-resolves via canonical_slots.json). + Returns list of clip metadata dicts with paths to activities.yml files. + Priority: kitware > kitware-training (skip camera if already found in higher-priority source). + """ + if not SLOT_INDEX_PATH.exists(): + raise FileNotFoundError( + "slot_index.json not found. Run: python3 scripts/extract_logic_tuples.py --build-index" + ) + + with open(SLOT_INDEX_PATH) as f: + index = json.load(f) + + # Resolve canonical → raw slots if needed + if slot not in index: + raw_slots = _resolve_to_raw_slots(slot) + if not any(rs in index for rs in raw_slots): + raise ValueError(f"Slot '{slot}' not found in index ({len(index)} total slots)") + else: + raw_slots = [slot] + + # Merge clips from all raw slots, deduplicating by camera + clips = [] + cameras_seen = set() + + for raw_slot in raw_slots: + if raw_slot not in index: + continue + info = index[raw_slot] + + # Parse date/time/site from slot name: "2018-03-11.11-25.school" + slot_parts = raw_slot.split(".") + date = slot_parts[0] + slot_time = slot_parts[1] # HH-MM (no seconds) + site = slot_parts[2] if len(slot_parts) > 2 else "school" + hour = slot_time[:2] + + # Priority order + source_dirs = { + "kitware": KITWARE_ROOT, + "kitware-training": KITWARE_TRAINING_ROOT, + } + + for source_name, source_dir in source_dirs.items(): + if source_name not in info.get("sources", {}): + continue + ann_dir = source_dir / date / hour + if not ann_dir.exists(): + continue + + for cam_id in info["cameras"]: + if cam_id in cameras_seen: + continue + if cam_id not in info["sources"].get(source_name, []): + continue + + # Find matching activities.yml (minute-level match) + pattern = f"{date}.{slot_time}*{cam_id}*.activities.yml" + matches = list(ann_dir.glob(pattern)) + if matches: + act_file = matches[0] + clip_name = act_file.stem.replace(".activities", "") + cameras_seen.add(cam_id) + clips.append({ + "clip_name": clip_name, + "camera_id": cam_id, + "site": site, + "annotation_dir": str(ann_dir), + "annotation_source": source_name, + "framerate": DEFAULT_FRAMERATE, + "activities_file": str(act_file), + }) + + return clips + + +def parse_slot_events(slot: str, verbose: bool = False) -> List[Event]: + """ + Parse all annotation events for a slot. + + Args: + slot: Slot name e.g. "2018-03-11.11-25.school" + verbose: Print progress info + + Returns: + Sorted list of Event objects (chronological). + """ + clips = find_clips_for_slot(slot) + if verbose: + print(f" Found {len(clips)} clips: {[c['camera_id'] for c in clips]}") + + all_events = [] + for clip in clips: + events = _parse_activities_yml( + Path(clip["activities_file"]), + clip["camera_id"], + clip["site"], + clip["framerate"], + clip["annotation_source"], + ) + all_events.extend(events) + if verbose: + print(f" {clip['camera_id']}: {len(events)} events ({clip['annotation_source']})") + + # Sort chronologically + all_events.sort(key=lambda e: (e.start_sec, e.camera_id)) + return all_events diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py new file mode 100644 index 0000000..27329dd --- /dev/null +++ b/meva/scripts/v10/person_descriptions.py @@ -0,0 +1,464 @@ +""" +V8 person_descriptions.py — MEVID person description loading and entity enrichment. + +Loads the YOLO+GPT person database and injects natural-language person +descriptions into scene graph entities. This is the key V8 addition over V7. + +Description priority: + 1. GPT description (richest, from person_database_yolo.json) — simplified + 2. YOLO color summary (structured fallback) + 3. Activity-verb description (V7 style, no MEVID) +""" + +import re +import json +from pathlib import Path +from typing import Any, Dict, List, Optional, Set, Tuple + +from .build_scene_graph import SceneGraph, Entity +from .activity_hierarchy import humanize_activity + +# ============================================================================ +# Paths +# ============================================================================ + +PERSON_DB_PATH = Path("/home/ah66742/data/person_database_yolo.json") +PERSON_DB_ORIG_PATH = Path("/home/ah66742/data/person_database.json") +MEVID_SLOTS_PATH = Path("/home/ah66742/data/mevid_supported_slots.json") + + +# ============================================================================ +# Person Database Loading +# ============================================================================ + +_person_db_cache: Optional[Dict] = None +_person_db_orig_cache: Optional[Dict] = None + +def load_person_database() -> Dict: + """Load the YOLO+GPT person attribute database (cached).""" + global _person_db_cache + if _person_db_cache is not None: + return _person_db_cache + + if not PERSON_DB_PATH.exists(): + return {"persons": {}, "metadata": {}} + + with open(PERSON_DB_PATH) as f: + _person_db_cache = json.load(f) + return _person_db_cache + + +def _load_person_db_orig() -> Dict: + """Load the original person database with camera mappings (cached).""" + global _person_db_orig_cache + if _person_db_orig_cache is not None: + return _person_db_orig_cache + + if not PERSON_DB_ORIG_PATH.exists(): + return {"persons": {}} + + with open(PERSON_DB_ORIG_PATH) as f: + _person_db_orig_cache = json.load(f) + return _person_db_orig_cache + + +# ============================================================================ +# Description Simplification — Clean GPT's verbose formal language +# ============================================================================ + +# Garment type simplifications: "upper body garment" → "top", etc. +_GARMENT_SUBS = [ + (r"upper body garment with a hood", "hoodie"), + (r"upper body garment", "top"), + (r"lower body clothing", "pants"), + (r"lower body garment", "pants"), + (r"lower body pants", "pants"), + (r"lower body shorts", "shorts"), + (r"hooded jacket", "hoodie"), +] + +# Posture/action context to strip (not useful for identification) +_STRIP_PATTERNS = [ + r",?\s*sitting on a chair[^,\.]*", + r",?\s*with their back turned[^,\.]*", + r",?\s*while ascending a staircase[^,\.]*", + r",?\s*while holding a clipboard or some papers", + r",?\s*and they appear to have\s+", + r",?\s*sitting\b[^,\.]*", +] + +def simplify_description(desc: str) -> str: + """ + Simplify a GPT description into natural short form. + + "wearing a blue upper body garment and blue lower body clothing, + with a black hoodie featuring a graphic design on the back." + → + "wearing a blue top and blue pants, with a black hoodie featuring + a graphic design on the back" + """ + if not desc: + return desc + + # 1. Remove trailing period + desc = desc.rstrip(". ") + + # 2. Simplify garment types + for pattern, replacement in _GARMENT_SUBS: + desc = re.sub(pattern, replacement, desc, flags=re.IGNORECASE) + + # 3. Strip posture/action context + for pattern in _STRIP_PATTERNS: + desc = re.sub(pattern, "", desc, flags=re.IGNORECASE) + + # 4. Clean up orphaned commas / double spaces + desc = re.sub(r",\s*,", ",", desc) + desc = re.sub(r"\s{2,}", " ", desc) + desc = desc.strip(", ") + + # 5. Remove trailing period again (after stripping may leave one) + desc = desc.rstrip(".") + + return desc + + +def get_person_description(person_id: str, outfit_id: str = None) -> str: + """ + Get the best available description for a MEVID person. + + Priority: + 1. GPT description (natural language, simplified) + 2. YOLO color summary + 3. Generic "a person" + + Args: + person_id: MEVID person ID (e.g., "0008") + outfit_id: Optional outfit ID for outfit-specific colors + + Returns: + Description string like "a person in a dark hoodie and dark pants" + """ + db = load_person_database() + persons = db.get("persons", {}) + + if person_id not in persons: + return "a person" + + person = persons[person_id] + + # Priority 1: GPT description (simplified) + gpt_desc = person.get("gpt_description") + if gpt_desc: + desc = gpt_desc.strip() + # Remove leading boilerplate + for prefix in ["The person is ", "the person is ", "The person ", "the person "]: + if desc.startswith(prefix): + desc = desc[len(prefix):] + break + # Simplify formal language + desc = simplify_description(desc) + return f"a person {desc}" + + # Priority 2: YOLO color summary + upper = person.get("primary_upper_color", "unknown") + lower = person.get("primary_lower_color", "unknown") + + # Try outfit-specific colors if specified + if outfit_id and outfit_id in person.get("outfits", {}): + outfit = person["outfits"][outfit_id] + upper = outfit.get("upper_body_color", upper) + lower = outfit.get("lower_body_color", lower) + + if upper != "unknown" or lower != "unknown": + parts = [] + if upper != "unknown": + parts.append(f"{upper} top") + if lower != "unknown": + parts.append(f"{lower} pants") + return f"a person in {' and '.join(parts)}" + + # Priority 3: Generic + return "a person" + + +# ============================================================================ +# Visual Description Detection +# ============================================================================ + +_VISUAL_KEYWORDS = frozenset([ + "top", "pants", "wearing", "shirt", "jacket", "hoodie", "shorts", + "color", "blue", "red", "black", "white", "green", "gray", "grey", + "yellow", "brown", "orange", "purple", "pink", "navy", "dark", "light", + "backpack", "bag", "suitcase", "hat", "cap", "dress", "coat", +]) + + +def is_visual_description(desc: str) -> bool: + """Check if a description is based on visual appearance (clothing/color). + + Returns True for MEVID and geom-color descriptions like: + - "a person in a blue top and black pants" + - "a person wearing a dark hoodie" + + Returns False for activity-verb fallbacks like: + - "a person opens facility door" + - "a person carries object" + - "a person" + - "a vehicle" + - "someone walking" + """ + if not desc: + return False + desc_lower = desc.lower() + if desc_lower in ("a person", "a vehicle", "someone"): + return False + return any(kw in desc_lower for kw in _VISUAL_KEYWORDS) + + +def get_person_short_label(person_id: str) -> str: + """ + Get a short label for a person (for options / distractor text). + + Returns things like "person in blue jacket" (shorter than full GPT description). + """ + db = load_person_database() + persons = db.get("persons", {}) + + if person_id not in persons: + return f"Person #{person_id}" + + person = persons[person_id] + upper = person.get("primary_upper_color", "unknown") + lower = person.get("primary_lower_color", "unknown") + + objects = person.get("all_carried_objects", []) + + parts = [] + if upper != "unknown": + parts.append(f"{upper} top") + if lower != "unknown": + parts.append(f"{lower} bottom") + if objects: + parts.append(f"carrying {objects[0]}") + + if parts: + return f"person with {', '.join(parts)}" + return f"Person #{person_id}" + + +# ============================================================================ +# Slot Filtering — Only MEVID-Supported Slots +# ============================================================================ + +_mevid_slots_cache: Optional[Dict] = None + +def load_mevid_slots() -> Dict: + """Load the MEVID-supported slots data (cached).""" + global _mevid_slots_cache + if _mevid_slots_cache is not None: + return _mevid_slots_cache + + if not MEVID_SLOTS_PATH.exists(): + return {"slots": {}} + + with open(MEVID_SLOTS_PATH) as f: + _mevid_slots_cache = json.load(f) + return _mevid_slots_cache + + +def is_mevid_supported(slot: str) -> bool: + """Check if a slot has MEVID person support.""" + data = load_mevid_slots() + slots = data.get("slots", {}) + return slot in slots + + +def get_mevid_persons_for_slot(slot: str) -> List[str]: + """ + Get list of MEVID person IDs available for a slot. + + Reads from mevid_supported_slots.json which maps each slot to its + MEVID persons (built by aggregate_mevid_slots.py). + """ + data = load_mevid_slots() + slots = data.get("slots", {}) + slot_info = slots.get(slot, {}) + return sorted(slot_info.get("mevid_persons", [])) + + +def get_mevid_persons_with_cameras(slot: str) -> Dict[str, List[str]]: + """ + Get MEVID person IDs mapped to their cameras for this specific slot. + + Cross-references: + - mevid_supported_slots.json → which persons and cameras are in this slot + - person_database.json → which cameras each person globally appears on + + Returns: {person_id: [camera_ids_in_this_slot]} + """ + # Get slot info + slot_data = load_mevid_slots() + slots = slot_data.get("slots", {}) + slot_info = slots.get(slot, {}) + + mevid_persons = slot_info.get("mevid_persons", []) + mevid_cameras = set(slot_info.get("mevid_cameras", [])) + + if not mevid_persons or not mevid_cameras: + return {} + + # Get per-person camera lists from original person database + orig_db = _load_person_db_orig() + orig_persons = orig_db.get("persons", {}) + + result = {} + for pid in mevid_persons: + person_data = orig_persons.get(pid, {}) + person_cameras = set(person_data.get("cameras", {}).keys()) + # Intersect with this slot's MEVID cameras + cameras_in_slot = sorted(person_cameras & mevid_cameras) + if cameras_in_slot: + result[pid] = cameras_in_slot + + return result + + +# ============================================================================ +# Entity Enrichment — Inject MEVID Descriptions into Scene Graph +# ============================================================================ + +# Geom-extracted description bank directory +_GEOM_DESC_DIR = Path("/home/ah66742/data/entity_descriptions") + + +def _load_geom_descriptions(slot: str) -> Dict[str, str]: + """ + Load pre-extracted visual descriptions from extract_entity_descriptions.py. + These are HSV color-based descriptions from raw AVI + geom.yml bounding boxes. + Returns Dict[entity_id → description], e.g. "G330_actor_123" → "a person in a blue top and black pants" + """ + desc_path = _GEOM_DESC_DIR / f"{slot}.json" + if not desc_path.exists(): + return {} + try: + with open(desc_path) as f: + data = json.load(f) + return {eid: info["description"] for eid, info in data.get("actors", {}).items() + if info.get("description") and info["description"] != "a person"} + except (json.JSONDecodeError, KeyError): + return {} + + +def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: + """ + Enrich scene graph entities with visual descriptions. + + Priority: + 1. MEVID descriptions (GPT/YOLO from MEVID crops — highest quality) + 2. Geom-extracted descriptions (HSV color from raw AVI + geom.yml bbox) + 3. Activity-verb fallback ("a person walking") + + The geom-extracted layer covers ALL annotated actors (not just MEVID's ~10%), + giving every entity a color-based description for disambiguation. + + Args: + sg: Scene graph to enrich + verbose: Print enrichment details + + Returns: + Dict mapping entity_id → description string + """ + slot = sg.slot + person_cameras = get_mevid_persons_with_cameras(slot) + geom_descs = _load_geom_descriptions(slot) + + # Build reverse map: camera_id → [person_ids on this camera] + camera_persons: Dict[str, List[str]] = {} + for pid, cams in person_cameras.items(): + for cam in cams: + if cam not in camera_persons: + camera_persons[cam] = [] + camera_persons[cam].append(pid) + + entity_descriptions: Dict[str, str] = {} + mevid_count = 0 + geom_count = 0 + fallback_count = 0 + + # Track which MEVID persons have been assigned to avoid reuse + assigned_persons: Dict[str, Set[str]] = {} # camera → set of used person_ids + + for eid, entity in sg.entities.items(): + if entity.entity_type != "person": + entity_descriptions[eid] = "a vehicle" + continue + + cam = entity.camera_id + available_persons = camera_persons.get(cam, []) + + # Priority 1: MEVID person description + if available_persons: + used = assigned_persons.get(cam, set()) + unused = [p for p in available_persons if p not in used] + + if unused: + # Assign next available person + pid = unused[0] + desc = get_person_description(pid) + entity_descriptions[eid] = desc + + if cam not in assigned_persons: + assigned_persons[cam] = set() + assigned_persons[cam].add(pid) + + # Also store the MEVID person_id on the entity for re-ID questions + entity._mevid_person_id = pid + mevid_count += 1 + + if verbose: + print(f" {eid}: MEVID → {desc[:60]}...") + continue + + # Priority 2: Geom-extracted color description (from raw AVI + bbox) + if eid in geom_descs: + desc = geom_descs[eid] + entity_descriptions[eid] = desc + geom_count += 1 + if verbose: + print(f" {eid}: geom → {desc}") + continue + + # Priority 3: Activity-verb fallback (V7 style) + primary_activity = None + for evt in sg.events: + if evt.camera_id == entity.camera_id: + for actor in evt.actors: + if actor["actor_id"] == entity.actor_id: + primary_activity = evt.activity + break + if primary_activity: + break + + if primary_activity: + short_act = humanize_activity(primary_activity) + desc = f"a person {short_act}" + else: + desc = "a person" + + entity_descriptions[eid] = desc + fallback_count += 1 + + if verbose: + total = mevid_count + geom_count + fallback_count + print(f" Entity enrichment: {mevid_count} MEVID, {geom_count} geom-color, " + f"{fallback_count} fallback ({total} total)") + + # Build set of entity IDs that got fallback (non-visual) descriptions + fallback_eids = set() + for eid, desc in entity_descriptions.items(): + if not is_visual_description(desc): + fallback_eids.add(eid) + + return (entity_descriptions, + {"mevid": mevid_count, "geom": geom_count, "fallback": fallback_count}, + fallback_eids) diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py new file mode 100644 index 0000000..88ad1e6 --- /dev/null +++ b/meva/scripts/v10/run_pipeline.py @@ -0,0 +1,683 @@ +#!/usr/bin/env python3 +""" +FINAL run_pipeline.py — Main orchestrator for FINAL QA generation pipeline. + +7 categories (matching paper taxonomy): + temporal(2) + event_ordering(2) + perception(2) + spatial(2) + + summarization(1) + counting(1) + best_camera(2) = ~12 Qs/slot + +REMOVED from V9: re_identification, causality +ADDED: best_camera (Camera Transition Logic) + +Usage: + python3 scripts/final/run_pipeline.py --slot "2018-03-11.11-25-00.school" -v + python3 scripts/final/run_pipeline.py --list-slots + python3 scripts/final/run_pipeline.py --slot "2018-03-11.11-25-00.school" --no-save +""" + +import json +import argparse +import random +import sys +import time +from pathlib import Path +from typing import Dict, List, Any + +# Handle both direct execution and module execution +try: + from .parse_annotations import parse_slot_events, find_clips_for_slot + from .build_scene_graph import build_scene_graph + from .entity_resolution import resolve_entities + from .person_descriptions import ( + enrich_entities, is_mevid_supported, get_mevid_persons_for_slot, + get_mevid_persons_with_cameras, load_person_database, + ) + from .generate_temporal import generate_temporal_qa + from .generate_spatial import generate_spatial_qa + from .generate_perception import generate_perception_qa + from .generate_scene_summary import generate_scene_summary_qa + from .generate_event_ordering import generate_event_ordering_qa + from .generate_numerical import generate_numerical_qa + from .generate_best_camera import generate_best_camera_qa +except ImportError: + sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) + from scripts.final.parse_annotations import parse_slot_events, find_clips_for_slot + from scripts.final.build_scene_graph import build_scene_graph + from scripts.final.entity_resolution import resolve_entities + from scripts.final.person_descriptions import ( + enrich_entities, is_mevid_supported, get_mevid_persons_for_slot, + get_mevid_persons_with_cameras, load_person_database, + ) + from scripts.final.generate_temporal import generate_temporal_qa + from scripts.final.generate_spatial import generate_spatial_qa + from scripts.final.generate_perception import generate_perception_qa + from scripts.final.generate_scene_summary import generate_scene_summary_qa + from scripts.final.generate_event_ordering import generate_event_ordering_qa + from scripts.final.generate_numerical import generate_numerical_qa + from scripts.final.generate_best_camera import generate_best_camera_qa + + +# ============================================================================ +# Constants +# ============================================================================ + +OUTPUT_DIR = Path("/home/ah66742/data/qa_pairs") +MEVA_AVI_BASE = Path("/nas/mars/dataset/MEVA/avis") +CANONICAL_SLOTS_PATH = Path("/home/ah66742/data/canonical_slots.json") +RANDOM_SEED = 42 + +# 7 categories — target question counts per slot +TARGET_TEMPORAL = 2 +TARGET_EVENT_ORDERING = 2 +TARGET_PERCEPTION = 2 # includes attribute_verification if MEVID +TARGET_SPATIAL = 3 # increased: ~70% slot hit rate requires 3/slot for 500 total +TARGET_SUMMARIZATION = 1 # scene_summary (renamed for paper alignment) +TARGET_COUNTING = 2 # increased: need 500 total, ~75% slot success rate +TARGET_BEST_CAMERA = 3 # increased: Camera Transition Logic, ~70% hit rate +# Total target: ~12 questions per slot + + +# ============================================================================ +# Text Post-Processing +# ============================================================================ + +import re as _re + +def fix_articles(text: str) -> str: + """Fix 'a' → 'an' before vowel sounds (a orange → an orange).""" + return _re.sub(r'\ba ([aeiouAEIOU])', r'an \1', text) + + +# ============================================================================ +# Video Path Construction +# ============================================================================ + +def _build_video_paths(q: dict, slot: str) -> List[str]: + """Build absolute AVI paths for each camera in a QA pair. + + Derives from slot name + debug_info clip files: + slot = "2018-03-11.11-25-00.school" + clip = "2018-03-11.11-25-00.11-30-00.school.G330.mp4" + → /nas/mars/dataset/MEVA/avis/2018-03-11/11/2018-03-11.11-25-00.11-30-00.school.G330.r13.avi + """ + date = slot.split(".")[0] # "2018-03-11" + hour = slot.split(".")[1].split("-")[0] # "11" + + paths = [] + seen_clips = set() + + def _add_clip(clip: str): + """Helper to add a clip file to paths (deduped).""" + if not clip or clip in seen_clips: + return + seen_clips.add(clip) + stem = clip.replace(".mp4", "").replace(".avi", "") + avi_path = str(MEVA_AVI_BASE / date / hour / f"{stem}.r13.avi") + paths.append(avi_path) + + # Collect clip files from debug_info + debug = q.get("debug_info", {}) + + # 1. temporal: event_a, event_b (dict with clip_file) + for key in ["event_a", "event_b"]: + info = debug.get(key, {}) + if isinstance(info, dict): + _add_clip(info.get("clip_file", "")) + + # 2. perception / best_camera: representative_event (dict with clip_file) + rep = debug.get("representative_event", {}) + if isinstance(rep, dict): + _add_clip(rep.get("clip_file", "")) + + # 3. perception multi-cam: camera_1_event, camera_2_event, etc. + for key in debug: + if key.startswith("camera_") and key.endswith("_event"): + info = debug[key] + if isinstance(info, dict): + _add_clip(info.get("clip_file", "")) + + # 4. event_ordering: events (list of dicts with clip_file) + events_list = debug.get("events", []) + if isinstance(events_list, list): + for ev in events_list: + if isinstance(ev, dict): + _add_clip(ev.get("clip_file", "")) + + # 5. Legacy: ordered_events + for key in ["ordered_events"]: + info = debug.get(key, {}) + if isinstance(info, list): + for ev in info: + if isinstance(ev, dict): + _add_clip(ev.get("clip_file", "")) + elif isinstance(info, dict): + _add_clip(info.get("clip_file", "")) + + # Fallback: construct from requires_cameras + if not paths: + cameras = q.get("requires_cameras", []) + for cam in cameras: + avi_dir = MEVA_AVI_BASE / date / hour + if avi_dir.exists(): + import glob + pattern = str(avi_dir / f"*{cam}.r13.avi") + matches = sorted(glob.glob(pattern)) + for m in matches: + if m not in paths: + paths.append(m) + + return sorted(set(paths)) + + +# ============================================================================ +# Canonical Slot Resolution +# ============================================================================ + +def resolve_canonical_slot(slot: str) -> List[str]: + """Given a slot name, return the list of slots to process. + + With HH-MM slot format (no seconds), each slot name is already canonical. + The old canonical_slots.json indirection is no longer needed. + """ + return [slot] + + +# ============================================================================ +# Deduplication +# ============================================================================ + +def is_duplicate_within_slot(new_q: dict, existing_qs: list) -> bool: + """Prevent asking similar questions within the same slot.""" + for eq in existing_qs: + if eq["category"] != new_q["category"]: + continue + v_new = new_q.get("verification", {}) + v_old = eq.get("verification", {}) + + cat = new_q["category"] + + if cat == "temporal": + ea_new = v_new.get("event_a", {}).get("activity") + eb_new = v_new.get("event_b", {}).get("activity") + ea_old = v_old.get("event_a", {}).get("activity") + eb_old = v_old.get("event_b", {}).get("activity") + if ea_new and eb_new and ea_old and eb_old: + if ea_new == ea_old and eb_new == eb_old: + return True + + elif cat == "spatial": + if (v_new.get("entity_a") and + v_new.get("entity_a") == v_old.get("entity_a") and + v_new.get("entity_b") == v_old.get("entity_b")): + return True + + elif cat == "perception": + if v_new.get("question_type") == v_old.get("question_type"): + qt = v_new.get("question_type") + if qt == "which_camera" and v_new.get("activity") == v_old.get("activity"): + return True + elif qt == "activity_identification" and v_new.get("camera") == v_old.get("camera"): + return True + elif qt == "multi_camera_confirmation" and v_new.get("activity") == v_old.get("activity"): + return True + elif qt == "attribute_verification" and v_new.get("mevid_person_id") == v_old.get("mevid_person_id"): + return True + + elif cat == "summarization": + if v_new.get("question_type") == v_old.get("question_type"): + return True + + elif cat == "event_ordering": + new_events = v_new.get("ordered_events", []) + old_events = v_old.get("ordered_events", []) + if new_events and old_events: + new_acts = {e.get("activity") for e in new_events} + old_acts = {e.get("activity") for e in old_events} + if len(new_acts & old_acts) >= 3: + return True + + elif cat == "counting": + if (v_new.get("question_type") == v_old.get("question_type") and + v_new.get("activity") == v_old.get("activity")): + return True + + elif cat == "best_camera": + if (v_new.get("cluster_id") == v_old.get("cluster_id") and + v_new.get("question_type") == v_old.get("question_type")): + return True + + return False + + +# ============================================================================ +# Validation +# ============================================================================ + +def validate_temporal(q: dict) -> List[str]: + errors = [] + v = q.get("verification", {}) + ea = v.get("event_a", {}) + eb = v.get("event_b", {}) + if not ea or not eb: + errors.append("Missing event_a or event_b in verification") + return errors + if ea.get("camera") == eb.get("camera"): + errors.append(f"Same camera: {ea.get('camera')}") + gap = v.get("gap_sec", 0) + if gap < 3.0: + errors.append(f"Gap too small: {gap}s (min 3s)") + if gap > 20.0: + errors.append(f"Gap too large: {gap}s (max 20s)") + if ea.get("start_sec", 0) >= eb.get("start_sec", 0): + errors.append("Event A does not precede Event B") + return errors + + +def validate_spatial(q: dict) -> List[str]: + errors = [] + v = q.get("verification", {}) + d = v.get("distance_meters") + proximity = v.get("proximity") + if d is None: + errors.append("Missing distance_meters") + return errors + if proximity == "near" and d > 5.0: + errors.append(f"Near but distance={d}m (should be <=5m)") + elif proximity == "moderate" and (d <= 5.0 or d > 15.0): + errors.append(f"Moderate but distance={d}m (should be 5-15m)") + elif proximity == "far" and d <= 15.0: + errors.append(f"Far but distance={d}m (should be >15m)") + return errors + + +def validate_perception(q: dict) -> List[str]: + errors = [] + v = q.get("verification", {}) + if not v.get("question_type"): + errors.append("Missing question_type in verification") + return errors + + +def validate_summarization(q: dict) -> List[str]: + errors = [] + v = q.get("verification", {}) + if not v.get("question_type"): + errors.append("Missing question_type") + return errors + + +def validate_event_ordering(q: dict) -> List[str]: + errors = [] + v = q.get("verification", {}) + ordered = v.get("ordered_events", []) + if len(ordered) < 3: + errors.append(f"Too few events: {len(ordered)} (min 3)") + min_gap = v.get("min_gap_sec", 0) + if min_gap < 3.0: + errors.append(f"Min gap too small: {min_gap}s (min 3s)") + for i in range(len(ordered) - 1): + if ordered[i].get("start_sec", 0) >= ordered[i+1].get("start_sec", 0): + errors.append(f"Events not in chronological order at position {i}") + return errors + + +def validate_counting(q: dict) -> List[str]: + errors = [] + v = q.get("verification", {}) + if not v.get("question_type"): + errors.append("Missing question_type") + cnt = v.get("correct_count") + if cnt is not None and (cnt < 2 or cnt > 20): + errors.append(f"Count out of range: {cnt} (should be 2-20)") + return errors + + +def validate_best_camera(q: dict) -> List[str]: + errors = [] + v = q.get("verification", {}) + if not v.get("question_type"): + errors.append("Missing question_type") + if not v.get("correct_camera"): + errors.append("Missing correct_camera") + return errors + + +def validate_all(qa_pairs: List[dict]) -> Dict[str, List[str]]: + validators = { + "temporal": validate_temporal, + "spatial": validate_spatial, + "perception": validate_perception, + "summarization": validate_summarization, + "event_ordering": validate_event_ordering, + "counting": validate_counting, + "best_camera": validate_best_camera, + } + issues = {} + for q in qa_pairs: + cat = q.get("category", "") + if cat in validators: + errors = validators[cat](q) + if errors: + issues[q["question_id"]] = errors + return issues + + +# ============================================================================ +# Category Renaming (paper alignment) +# ============================================================================ + +def _rename_category(q: dict) -> dict: + """Rename internal category names to match paper taxonomy. + + scene_summary → summarization + numerical → counting + """ + cat = q.get("category", "") + if cat == "scene_summary": + q["category"] = "summarization" + elif cat == "numerical": + q["category"] = "counting" + return q + + +# ============================================================================ +# Main Pipeline +# ============================================================================ + +def run_pipeline(slot: str, verbose: bool = False, + seed: int = RANDOM_SEED, + require_mevid: bool = True) -> Dict[str, Any]: + """ + Run the complete FINAL QA generation pipeline on one slot. + + Steps: + 1. Parse annotations (Kitware YAML) + 2. Build entity-based scene graph + 3. Resolve cross-camera entities (MEVID + heuristic) + 3.5. Auto-extract entity descriptions if not yet done + 4. Enrich entities with visual descriptions + 5. Generate temporal questions (2) + 6. Generate event ordering questions (2) + 7. Generate perception questions (2) + 8. Generate spatial questions (2) + 9. Generate summarization questions (1) + 10. Generate counting questions (1) + 11. Generate best_camera questions (2) + 12. Validate and output + """ + t0 = time.time() + rng = random.Random(seed) + + if verbose: + print(f"{'=' * 60}") + print(f"FINAL Pipeline: {slot}") + print(f"{'=' * 60}") + + # Resolve canonical slot → raw slots + raw_slots = resolve_canonical_slot(slot) + if verbose and len(raw_slots) > 1: + print(f" Canonical slot → {len(raw_slots)} raw variants: {raw_slots}") + + # Check MEVID support + mevid_supported = is_mevid_supported(slot) + mevid_persons = get_mevid_persons_for_slot(slot) + + if require_mevid and not mevid_supported and not mevid_persons: + if verbose: + print(f" WARNING: Slot {slot} has no MEVID support") + print(f" Running anyway (descriptions will fallback to geom-color or activity-verb)") + + if verbose: + print(f" MEVID persons in slot: {len(mevid_persons)}") + + # Step 1: Parse annotations (merge across raw slots if canonical) + if verbose: + print(f"\nStep 1: Parsing annotations...") + events = [] + for raw_slot in raw_slots: + slot_events = parse_slot_events(raw_slot, verbose=verbose) + events.extend(slot_events) + if not events: + raise ValueError(f"No events found for slot {slot}") + + # Step 2: Build scene graph + if verbose: + print(f"\nStep 2: Building scene graph...") + sg = build_scene_graph(slot, events, verbose=verbose) + + # Step 3: Entity resolution + if verbose: + print(f"\nStep 3: Resolving entities...") + resolved = resolve_entities(sg, verbose=verbose) + + # Step 3.5: Auto-extract entity descriptions if not yet done + desc_path = Path("/home/ah66742/data/entity_descriptions") / f"{slot}.json" + if not desc_path.exists(): + if verbose: + print(f"\nStep 3.5: Extracting entity descriptions (YOLO+HSV)...") + try: + from scripts.final.extract_entity_descriptions import process_slot as extract_descs + result = extract_descs(slot, use_yolo=True, verbose=verbose) + desc_path.parent.mkdir(parents=True, exist_ok=True) + with open(desc_path, "w") as f: + json.dump(result, f, indent=2, default=str) + if verbose: + n_actors = len(result.get("actors", {})) + n_described = sum(1 for a in result.get("actors", {}).values() + if a.get("description", "a person") != "a person") + print(f" Extracted {n_described}/{n_actors} entity descriptions → {desc_path.name}") + except Exception as e: + if verbose: + print(f" WARNING: Entity description extraction failed: {e}") + print(f" Continuing with MEVID + activity-verb fallback only") + elif verbose: + print(f"\nStep 3.5: Entity descriptions already exist → {desc_path.name}") + + # Step 4: Enrich entities with visual descriptions + if verbose: + print(f"\nStep 4: Enriching entities with visual descriptions...") + entity_descs, desc_counts, fallback_eids = enrich_entities(sg, verbose=verbose) + + mevid_cnt = desc_counts["mevid"] + geom_cnt = desc_counts["geom"] + fallback_cnt = desc_counts["fallback"] + + if verbose: + print(f" {mevid_cnt} MEVID + {geom_cnt} geom-color + " + f"{fallback_cnt} fallback / {len(entity_descs)} total") + + # Step 5-11: Generate QA pairs (7 categories) + if verbose: + print(f"\nStep 5-11: Generating questions (7 categories)...") + + temporal_qa = generate_temporal_qa(sg, resolved, entity_descs, rng, + count=TARGET_TEMPORAL, verbose=verbose, + fallback_eids=fallback_eids) + ordering_qa = generate_event_ordering_qa(sg, resolved, entity_descs, rng, + count=TARGET_EVENT_ORDERING, verbose=verbose, + fallback_eids=fallback_eids) + perception_qa = generate_perception_qa(sg, resolved, entity_descs, rng, + count=TARGET_PERCEPTION, verbose=verbose) + spatial_qa = generate_spatial_qa(sg, resolved, entity_descs, rng, + count=TARGET_SPATIAL, verbose=verbose, + fallback_eids=fallback_eids) + summary_qa = generate_scene_summary_qa(sg, resolved, entity_descs, rng, + count=TARGET_SUMMARIZATION, verbose=verbose) + counting_qa = generate_numerical_qa(sg, resolved, entity_descs, rng, + count=TARGET_COUNTING, verbose=verbose) + best_camera_qa = generate_best_camera_qa(sg, resolved, entity_descs, rng, + count=TARGET_BEST_CAMERA, verbose=verbose) + + # Rename categories for paper alignment + for q in summary_qa: + _rename_category(q) + for q in counting_qa: + _rename_category(q) + + all_qa = (temporal_qa + ordering_qa + perception_qa + spatial_qa + + summary_qa + counting_qa + best_camera_qa) + + # Deduplication + unique_qa = [] + for q in all_qa: + if not is_duplicate_within_slot(q, unique_qa): + unique_qa.append(q) + + # Renumber question IDs sequentially + for i, q in enumerate(unique_qa): + q["question_id"] = f"final_{q['category']}_{i+1:03d}" + + # Fix article agreement (a → an before vowels) in all text fields + for q in unique_qa: + if "question_template" in q: + q["question_template"] = fix_articles(q["question_template"]) + if "options" in q: + q["options"] = [fix_articles(str(o)) for o in q["options"]] + if "correct_answer" in q: + q["correct_answer"] = fix_articles(str(q["correct_answer"])) + + # Add video paths to each QA pair + for q in unique_qa: + q["video_paths"] = _build_video_paths(q, slot) + + # Step 12: Validation + if verbose: + print(f"\nStep 12: Validating...") + issues = validate_all(unique_qa) + if verbose: + if issues: + print(f" Validation issues:") + for qid, errs in issues.items(): + for e in errs: + print(f" {qid}: {e}") + else: + print(f" All questions passed validation") + + # Build output + cameras_in_slot = sorted(sg.cameras.keys()) + person_cameras = get_mevid_persons_with_cameras(slot) + + # Category counts + cat_counts = {} + for q in unique_qa: + cat = q["category"] + cat_counts[cat] = cat_counts.get(cat, 0) + 1 + + # Stats + attr_verification = sum( + 1 for q in unique_qa + if q.get("subcategory") == "attribute_verification" + ) + + output = { + "slot": slot, + "version": "final", + "annotation_source": "kitware", + "entity_resolution_source": "mevid+heuristic", + "description_source": "mevid_yolo+geom_color", + "generator": "final_pipeline", + "seed": seed, + "cameras": cameras_in_slot, + "mevid_supported": mevid_supported or len(mevid_persons) > 0, + "mevid_persons_in_slot": len(mevid_persons), + "mevid_person_ids": sorted(mevid_persons), + "mevid_person_cameras": { + pid: sorted(cams) for pid, cams in person_cameras.items() + }, + "total_events": len(events), + "total_entities": len(sg.entities), + "cross_camera_clusters": len(resolved.entity_clusters), + "total_questions": len(unique_qa), + "category_counts": cat_counts, + "stats": { + "entities_with_mevid_descriptions": mevid_cnt, + "entities_with_geom_descriptions": geom_cnt, + "entities_with_fallback_descriptions": fallback_cnt, + "attribute_verification_questions": attr_verification, + "best_camera_questions": cat_counts.get("best_camera", 0), + "questions_with_debug_info": sum(1 for q in unique_qa if "debug_info" in q), + }, + "validation_issues": len(issues), + "generation_time_sec": round(time.time() - t0, 2), + "qa_pairs": unique_qa, + } + + if verbose: + print(f"\n{'=' * 60}") + print(f"DONE: {len(unique_qa)} questions generated in {output['generation_time_sec']}s") + for cat, cnt in sorted(cat_counts.items()): + print(f" {cat:25s}: {cnt}") + print(f" ---") + print(f" Cameras: {cameras_in_slot}") + print(f" Events: {len(events)}") + print(f" Entities: {len(sg.entities)} ({mevid_cnt} MEVID + {geom_cnt} geom)") + print(f" MEVID persons: {sorted(mevid_persons)}") + print(f" Cross-cam clusters: {len(resolved.entity_clusters)}") + print(f" Validation issues: {len(issues)}") + print(f"{'=' * 60}") + + return output + + +def list_canonical_slots(): + """List all canonical slots from canonical_slots.json.""" + if not CANONICAL_SLOTS_PATH.exists(): + print(f"ERROR: {CANONICAL_SLOTS_PATH} not found. Run slot audit first.") + sys.exit(1) + + with open(CANONICAL_SLOTS_PATH) as f: + canonical = json.load(f) + + multi = sum(1 for v in canonical.values() if v.get("multi_camera")) + cam_counts = [len(v.get("cameras", [])) for v in canonical.values()] + + print(f"Canonical slots: {len(canonical)} ({multi} multi-camera)") + print(f"Cameras: min={min(cam_counts)}, max={max(cam_counts)}, avg={sum(cam_counts)/len(cam_counts):.1f}") + print(f"\n{'Slot':45s} {'Cams':>5s} {'Clips':>6s} {'Variants':>9s}") + print("-" * 70) + + for slot in sorted(canonical.keys()): + info = canonical[slot] + n_cams = len(info.get("cameras", [])) + n_clips = info.get("clip_count", 0) + n_vars = len(info.get("raw_slots", [])) + cam_str = ",".join(info.get("cameras", [])) + print(f"{slot:45s} {n_cams:5d} {n_clips:6d} {n_vars:9d} [{cam_str}]") + + +def main(): + parser = argparse.ArgumentParser(description="FINAL QA Pipeline (7 categories)") + parser.add_argument("--slot", help="Slot name (e.g., 2018-03-11.11-25.school)") + parser.add_argument("-v", "--verbose", action="store_true", help="Verbose output") + parser.add_argument("--seed", type=int, default=RANDOM_SEED, help="Random seed") + parser.add_argument("--output", help="Output file path (default: data/qa_pairs/{slot}.final.raw.json)") + parser.add_argument("--no-save", action="store_true", help="Don't save to file, just print") + parser.add_argument("--list-slots", action="store_true", + help="List all canonical slots") + parser.add_argument("--no-require-mevid", action="store_true", + help="Process slot even without MEVID support") + args = parser.parse_args() + + if args.list_slots: + list_canonical_slots() + return + + if not args.slot: + parser.error("--slot is required (or use --list-slots)") + + output = run_pipeline(args.slot, verbose=args.verbose, seed=args.seed, + require_mevid=not args.no_require_mevid) + + # Save output + if not args.no_save: + OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + out_path = Path(args.output) if args.output else OUTPUT_DIR / f"{args.slot}.final.raw.json" + with open(out_path, "w") as f: + json.dump(output, f, indent=2, default=str) + print(f"\nSaved: {out_path}") + else: + print(json.dumps(output, indent=2, default=str)) + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/utils/__init__.py b/meva/scripts/v10/utils/__init__.py new file mode 100644 index 0000000..a3fa321 --- /dev/null +++ b/meva/scripts/v10/utils/__init__.py @@ -0,0 +1 @@ +"""V6 utility modules.""" diff --git a/meva/scripts/v10/utils/iou.py b/meva/scripts/v10/utils/iou.py new file mode 100644 index 0000000..aaf670c --- /dev/null +++ b/meva/scripts/v10/utils/iou.py @@ -0,0 +1,35 @@ +""" +V6 utils/iou.py — IoU (Intersection over Union) utilities for bounding box matching. +""" + +from typing import List, Optional + + +def compute_iou(bbox_a: List[int], bbox_b: List[int]) -> float: + """ + Compute IoU between two bounding boxes. + + Args: + bbox_a: [x1, y1, x2, y2] + bbox_b: [x1, y1, x2, y2] + + Returns: + IoU value [0.0, 1.0] + """ + x1 = max(bbox_a[0], bbox_b[0]) + y1 = max(bbox_a[1], bbox_b[1]) + x2 = min(bbox_a[2], bbox_b[2]) + y2 = min(bbox_a[3], bbox_b[3]) + + if x2 <= x1 or y2 <= y1: + return 0.0 + + inter = (x2 - x1) * (y2 - y1) + area_a = (bbox_a[2] - bbox_a[0]) * (bbox_a[3] - bbox_a[1]) + area_b = (bbox_b[2] - bbox_b[0]) * (bbox_b[3] - bbox_b[1]) + union = area_a + area_b - inter + + if union <= 0: + return 0.0 + + return inter / union diff --git a/meva/scripts/v10/utils/krtd.py b/meva/scripts/v10/utils/krtd.py new file mode 100644 index 0000000..65e8b69 --- /dev/null +++ b/meva/scripts/v10/utils/krtd.py @@ -0,0 +1,124 @@ +""" +V6 utils/krtd.py — KRTD camera calibration parsing and 3D projection. + +Ported from V4's CameraModel class with improvements for V6 pipeline. +""" + +import numpy as np +from pathlib import Path +from typing import Dict, List, Optional, Tuple + +KRTD_DIR = Path("/nas/mars/dataset/MEVA/meva-data-repo/metadata/camera-models/krtd") + +# Indoor cameras (local coordinate frame, NOT in shared ENU) +INDOOR_CAMERAS = {"G299", "G330"} + + +class CameraModel: + """ + KRTD camera calibration model. + + Projects 2D pixel coordinates to 3D world coordinates on the ground plane. + Uses the ENU (East-North-Up) coordinate system shared across outdoor cameras. + """ + + def __init__(self, krtd_path: Path): + self.path = krtd_path + self.K: np.ndarray = None # 3x3 intrinsic + self.R: np.ndarray = None # 3x3 rotation + self.T: np.ndarray = None # 3x1 translation + self.D: np.ndarray = None # distortion coefficients + self._parse(krtd_path) + + def _parse(self, path: Path): + with open(path) as f: + lines = [l.strip() for l in f if l.strip()] + self.K = np.array([[float(x) for x in lines[i].split()] for i in range(3)]) + self.R = np.array([[float(x) for x in lines[i].split()] for i in range(3, 6)]) + self.T = np.array([float(x) for x in lines[6].split()]) + if len(lines) > 7: + self.D = np.array([float(x) for x in lines[7].split()]) + + @property + def camera_center(self) -> np.ndarray: + """Camera center in world (ENU) coordinates: C = -R^T * T""" + return -self.R.T @ self.T + + def project_to_ground(self, u: float, v: float, ground_z: float = 0.0) -> Optional[np.ndarray]: + """ + Back-project pixel (u, v) onto the ground plane (ENU z = ground_z). + + Returns [east, north, up] in meters, or None if ray is parallel to ground. + """ + K_inv = np.linalg.inv(self.K) + d_cam = K_inv @ np.array([u, v, 1.0]) + d_world = self.R.T @ d_cam + C = self.camera_center + + if abs(d_world[2]) < 1e-10: + return None # ray parallel to ground + + t = (ground_z - C[2]) / d_world[2] + if t < 0: + return None # behind camera + + return C + t * d_world + + def bbox_foot_to_world(self, bbox: List[float], ground_z: float = 0.0) -> Optional[np.ndarray]: + """ + Project the bottom-center of a bounding box to world coordinates. + + bbox = [x1, y1, x2, y2] in pixel coordinates. + Returns [east, north, up] or None. + """ + x1, y1, x2, y2 = bbox + foot_u = (x1 + x2) / 2.0 # horizontal center + foot_v = max(y1, y2) # bottom of bbox + return self.project_to_ground(foot_u, foot_v, ground_z) + + +def load_camera_model(camera_id: str) -> Optional[CameraModel]: + """Load KRTD calibration for a camera. Returns None if not available.""" + if camera_id in INDOOR_CAMERAS: + return None + krtd_files = list(KRTD_DIR.glob(f"*.{camera_id}.krtd")) + if not krtd_files: + return None + try: + return CameraModel(krtd_files[0]) + except Exception: + return None + + +def load_all_camera_models(camera_ids: List[str]) -> Dict[str, CameraModel]: + """Load KRTD models for a list of cameras. Skips indoor / unavailable.""" + models = {} + for cam_id in camera_ids: + model = load_camera_model(cam_id) + if model is not None: + models[cam_id] = model + return models + + +def compute_entity_distance(model_a: CameraModel, bbox_a: List[float], + model_b: CameraModel, bbox_b: List[float]) -> Optional[float]: + """ + Compute 3D distance between two entities given their bounding boxes and camera models. + + Returns distance in meters, or None if projection fails. + """ + pos_a = model_a.bbox_foot_to_world(bbox_a) + pos_b = model_b.bbox_foot_to_world(bbox_b) + if pos_a is None or pos_b is None: + return None + return float(np.linalg.norm(pos_a - pos_b)) + + +def classify_proximity(distance_m: float) -> str: + """Classify distance into proximity buckets.""" + if distance_m <= 5.0: + return "near" + elif distance_m <= 15.0: + return "moderate" + else: + return "far" diff --git a/meva/scripts/v10/utils/mevid.py b/meva/scripts/v10/utils/mevid.py new file mode 100644 index 0000000..a6dd039 --- /dev/null +++ b/meva/scripts/v10/utils/mevid.py @@ -0,0 +1,175 @@ +""" +V6 utils/mevid.py — MEVID tracklet parsing and cross-camera person mapping. + +Parses MEVID annotation data to find: +1. All (person_id, camera_id) pairs in the dataset +2. Cross-camera person links (same person on 2+ cameras) +3. MEVID-supported slots (slots where cross-camera persons exist) +""" + +import re +from pathlib import Path +from collections import defaultdict +from typing import Dict, List, Set, Tuple, Optional + +MEVID_DATA_DIR = Path("/nas/mars/dataset/MEVA/mevid_data/mevid-v1-annotation-data") +MEVID_URLS = Path("/nas/mars/dataset/MEVA/mevid_data/mevid-v1-video-URLS.txt") + +# Regex for MEVID image filename: {PersonID}O{OutfitID}C{CameraID}T{TrackletID}F{Frame}.jpg +MEVID_NAME_RE = re.compile(r'^(\d{4})O(\d{3})C(\d+)T(\d{3})F(\d{5})\.jpg$') + +# Module-level cache for MEVID parsing (avoids re-reading files on every call) +_MEVID_PERSON_CAMERAS_CACHE: Optional[Dict[int, Set[str]]] = None + + +def parse_mevid_person_cameras() -> Dict[int, Set[str]]: + """ + Parse MEVID train_name.txt and test_name.txt to extract all (person_id, camera_id) pairs. + Results are cached after first call. + + Returns: + {person_id: {camera_id, ...}, ...} + Camera IDs are in MEVA format: "G424" (not "C424"). + """ + global _MEVID_PERSON_CAMERAS_CACHE + if _MEVID_PERSON_CAMERAS_CACHE is not None: + return _MEVID_PERSON_CAMERAS_CACHE + + person_cameras: Dict[int, Set[str]] = defaultdict(set) + + for fname in ["train_name.txt", "test_name.txt"]: + fpath = MEVID_DATA_DIR / fname + if not fpath.exists(): + continue + # Use set to avoid re-parsing the same (person, camera) pair + seen_keys = set() + with open(fpath) as f: + for line in f: + line = line.strip() + if not line: + continue + m = MEVID_NAME_RE.match(line) + if not m: + continue + person_id = int(m.group(1)) + camera_id = f"G{m.group(3)}" + key = (person_id, camera_id) + if key not in seen_keys: + seen_keys.add(key) + person_cameras[person_id].add(camera_id) + + _MEVID_PERSON_CAMERAS_CACHE = dict(person_cameras) + return _MEVID_PERSON_CAMERAS_CACHE + + +def parse_mevid_clips() -> List[Dict[str, str]]: + """ + Parse MEVID video URLs to get the list of MEVA clips used by MEVID. + + Returns list of dicts with keys: clip_name, date, start_time, end_time, site, camera_id + """ + if not MEVID_URLS.exists(): + return [] + + clips = [] + clip_re = re.compile( + r'(\d{4}-\d{2}-\d{2})\.(\d{2}-\d{2}-\d{2})\.(\d{2}-\d{2}-\d{2})\.(\w+)\.(G\d+)' + ) + + with open(MEVID_URLS) as f: + for line in f: + line = line.strip() + m = clip_re.search(line) + if m: + clips.append({ + "clip_name": f"{m.group(1)}.{m.group(2)}.{m.group(3)}.{m.group(4)}.{m.group(5)}", + "date": m.group(1), + "start_time": m.group(2), + "end_time": m.group(3), + "site": m.group(4), + "camera_id": m.group(5), + }) + return clips + + +def find_mevid_persons_for_slot(slot: str, slot_cameras: List[str]) -> Dict[int, Set[str]]: + """ + Find MEVID persons who appear on 2+ cameras within this slot's camera set. + + This is an approximation: MEVID tells us person X appears on camera Y globally, + but we can't confirm the specific time slot without extracted tracklet images. + For March dates within a single session day, this mapping is reliable. + + Args: + slot: Slot name e.g. "2018-03-11.11-25-00.school" + slot_cameras: List of camera IDs in this slot + + Returns: + {person_id: {camera_ids in this slot}, ...} + Only persons appearing on 2+ slot cameras are included. + """ + all_person_cameras = parse_mevid_person_cameras() + slot_camera_set = set(slot_cameras) + + result = {} + for person_id, cameras in all_person_cameras.items(): + overlap = cameras & slot_camera_set + if len(overlap) >= 2: + result[person_id] = overlap + + return result + + +def find_mevid_supported_slots(slot_index: Dict) -> List[Dict]: + """ + Find all slots in the index that have MEVID cross-camera person coverage. + + Returns list of {slot, cameras, mevid_persons_count, mevid_camera_overlap}. + """ + all_person_cameras = parse_mevid_person_cameras() + + supported = [] + for slot, info in slot_index.items(): + # Only March dates are on disk + if not slot.startswith("2018-03"): + continue + + slot_cameras = set(info.get("cameras", [])) + cross_persons = 0 + for person_id, cameras in all_person_cameras.items(): + if len(cameras & slot_cameras) >= 2: + cross_persons += 1 + + if cross_persons > 0: + supported.append({ + "slot": slot, + "cameras": info["cameras"], + "mevid_persons_count": cross_persons, + "mevid_camera_overlap": len(slot_cameras), + "sources": list(info.get("sources", {}).keys()), + }) + + supported.sort(key=lambda x: x["mevid_persons_count"], reverse=True) + return supported + + +def get_mevid_stats() -> Dict: + """Get summary statistics of MEVID data.""" + person_cameras = parse_mevid_person_cameras() + clips = parse_mevid_clips() + + cross_camera = sum(1 for cams in person_cameras.values() if len(cams) >= 2) + all_cameras = set() + for cams in person_cameras.values(): + all_cameras.update(cams) + + march_clips = [c for c in clips if c["date"].startswith("2018-03")] + + return { + "total_persons": len(person_cameras), + "cross_camera_persons": cross_camera, + "total_cameras": len(all_cameras), + "cameras": sorted(all_cameras), + "total_clips": len(clips), + "march_clips": len(march_clips), + } diff --git a/meva/scripts/v10/utils/yaml_stream.py b/meva/scripts/v10/utils/yaml_stream.py new file mode 100644 index 0000000..f4b2626 --- /dev/null +++ b/meva/scripts/v10/utils/yaml_stream.py @@ -0,0 +1,158 @@ +""" +V6 utils/yaml_stream.py — Memory-efficient geom.yml streaming parser. + +Parses geom.yml files line-by-line using regex, yielding {id1, ts0, g0} dicts +without loading the entire file into memory. This avoids OOM on large files (50MB+). +""" + +import re +from pathlib import Path +from typing import Dict, Generator, List, Optional, Set + + +def stream_geom_records(path: Path) -> Generator[Dict, None, None]: + """ + Stream-parse a geom.yml file line-by-line. + Yields dicts: {"id1": int, "ts0": int, "g0": [x1, y1, x2, y2]} + + Handles TWO Kitware geom.yml formats: + 1. kitware format (unquoted keys, fixed field order): + - { geom: {id1: NNN, id0: M, ts0: FFF, ts1: T.T, g0: X1 Y1 X2 Y2, ...} } + 2. kitware-meva-training format (Python dict notation, quoted keys, arbitrary order): + - {'geom': {'g0': '886 418 929 504', 'id0': 1, 'id1': 10, 'ts0': 1475}} + Also handles multi-line format (fallback). + """ + # Format 1: kitware inline (unquoted, id1 before ts0 before g0) + kitware_re = re.compile( + r'id1:\s*(\d+).*?ts0:\s*(\d+).*?g0:\s*(\d+\s+\d+\s+\d+\s+\d+)' + ) + + # Format 2: kitware-meva-training (quoted keys, any order) + # Extract fields individually since order varies + training_id1_re = re.compile(r"'id1':\s*(\d+)") + training_ts0_re = re.compile(r"'ts0':\s*(\d+)") + training_g0_re = re.compile(r"'g0':\s*'(\d+\s+\d+\s+\d+\s+\d+)'") + + # Fallback: multi-line parsing + current: Dict = {} + + with open(path) as f: + for line in f: + line = line.strip() + if not line: + continue + + # Try kitware inline format first (most common) + m = kitware_re.search(line) + if m: + yield { + 'id1': int(m.group(1)), + 'ts0': int(m.group(2)), + 'g0': [int(x) for x in m.group(3).split()], + } + continue + + # Try kitware-meva-training format (quoted keys, any field order) + m_id1 = training_id1_re.search(line) + m_ts0 = training_ts0_re.search(line) + m_g0 = training_g0_re.search(line) + if m_id1 and m_ts0 and m_g0: + yield { + 'id1': int(m_id1.group(1)), + 'ts0': int(m_ts0.group(1)), + 'g0': [int(x) for x in m_g0.group(1).split()], + } + continue + + # Fallback: multi-line format + m = re.match(r"'?id1'?:\s*(\d+)", line) + if m: + current['id1'] = int(m.group(1)) + continue + m = re.match(r"'?ts0'?:\s*(\d+)", line) + if m: + current['ts0'] = int(m.group(1)) + continue + m = re.match(r"'?g0'?:\s*['\"]?(\d+\s+\d+\s+\d+\s+\d+)", line) + if m: + current['g0'] = [int(x) for x in m.group(1).split()] + if 'id1' in current and 'ts0' in current: + yield dict(current) + current = {} + + +def get_actor_keyframe_bboxes(path: Path, actor_ids: Optional[Set[int]] = None, + sample_every: int = 1) -> Dict[int, Dict[int, List[int]]]: + """ + Extract bounding boxes for specific actors (or all actors). + + Args: + path: Path to geom.yml + actor_ids: Set of actor IDs to extract (None = all) + sample_every: Sample every Nth frame (default 1 = all frames) + + Returns: + {actor_id: {frame: [x1, y1, x2, y2], ...}, ...} + """ + result: Dict[int, Dict[int, List[int]]] = {} + for rec in stream_geom_records(path): + aid = rec['id1'] + if actor_ids is not None and aid not in actor_ids: + continue + frame = rec['ts0'] + if frame % sample_every != 0: + continue + if aid not in result: + result[aid] = {} + result[aid][frame] = rec['g0'] + return result + + +def get_actor_frame_range(path: Path) -> Dict[int, tuple]: + """ + Get (min_frame, max_frame) for each actor in a geom.yml. + Memory-efficient: only tracks frame extremes. + + Returns: + {actor_id: (first_frame, last_frame), ...} + """ + ranges: Dict[int, list] = {} + for rec in stream_geom_records(path): + aid = rec['id1'] + frame = rec['ts0'] + if aid not in ranges: + ranges[aid] = [frame, frame] + else: + if frame < ranges[aid][0]: + ranges[aid][0] = frame + if frame > ranges[aid][1]: + ranges[aid][1] = frame + return {aid: tuple(r) for aid, r in ranges.items()} + + +def get_bbox_at_frame(path: Path, actor_id: int, target_frame: int, + tolerance: int = 5) -> Optional[List[int]]: + """ + Get a single bbox for a specific actor at (or near) a target frame. + + Args: + path: Path to geom.yml + actor_id: Actor to look for + target_frame: Frame number to find + tolerance: Accept frames within ±tolerance + + Returns: + [x1, y1, x2, y2] or None + """ + best = None + best_dist = tolerance + 1 + for rec in stream_geom_records(path): + if rec['id1'] != actor_id: + continue + dist = abs(rec['ts0'] - target_frame) + if dist < best_dist: + best_dist = dist + best = rec['g0'] + if dist == 0: + break + return best From 2913fc30e0452858d0d76f331a45c091f4759f66 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Mon, 23 Feb 2026 17:04:19 -0600 Subject: [PATCH 02/26] v10: fix video paths, temporal selection, add supplementary data Bug fixes: - Fix .r13.r13 double-append in video_paths - Fix video_paths to use MP4 slot-grouped format (/mp4s/{date}/{hour}/{slot}/) - Fix counting/best_camera/spatial/summary having too many video_paths (was globbing entire hour directory, now uses clip_files from debug_info) - Fix best_camera using nonexistent event.clip_file (now uses event.video_file) Temporal quality: - Selection now prefers strong > medium > weak connection strength - Priority: strong+MEVID > strong > medium > any (score-sorted) Data files added: - slot_index.json, canonical_slots.json, geom_slot_index.json - person_database.json, person_database_yolo.json - mevid_supported_slots.json, annotated_activity_slots.txt - These are required by the v10 pipeline at runtime New: - render_question_validation.py (validation video renderer) - Updated run.sh to use v10 pipeline --- meva/.gitignore | 9 +- meva/data/annotated_activity_slots.txt | 1423 + meva/data/canonical_slots.json | 14473 +++++++ meva/data/geom_slot_index.json | 18678 +++++++++ meva/data/mevid_supported_slots.json | 33007 ++++++++++++++++ meva/data/person_database.json | 14331 +++++++ meva/data/person_database_yolo.json | 9200 +++++ meva/data/slot_index.json | 8797 ++++ meva/run.sh | 4 +- meva/scripts/v10/generate_best_camera.py | 6 +- meva/scripts/v10/generate_numerical.py | 11 + meva/scripts/v10/generate_scene_summary.py | 8 + meva/scripts/v10/generate_spatial.py | 17 + meva/scripts/v10/generate_temporal.py | 33 +- .../scripts/v10/render_question_validation.py | 414 + meva/scripts/v10/run_pipeline.py | 96 +- 16 files changed, 100453 insertions(+), 54 deletions(-) create mode 100644 meva/data/annotated_activity_slots.txt create mode 100644 meva/data/canonical_slots.json create mode 100644 meva/data/geom_slot_index.json create mode 100644 meva/data/mevid_supported_slots.json create mode 100644 meva/data/person_database.json create mode 100644 meva/data/person_database_yolo.json create mode 100644 meva/data/slot_index.json create mode 100644 meva/scripts/v10/render_question_validation.py diff --git a/meva/.gitignore b/meva/.gitignore index 8da094f..f27eb05 100644 --- a/meva/.gitignore +++ b/meva/.gitignore @@ -27,11 +27,18 @@ Thumbs.db # Data (local only, not committed) output/ data/qa_pairs/ +data/entity_descriptions/ +data/gpt_logs/ *.log -# Allow these specific preprocessing files +# Allow these specific data files needed by v10 pipeline !data/annotated_activity_slots.txt !data/slot_index.json +!data/canonical_slots.json +!data/geom_slot_index.json +!data/person_database.json +!data/person_database_yolo.json +!data/mevid_supported_slots.json # Jupyter .ipynb_checkpoints/ diff --git a/meva/data/annotated_activity_slots.txt b/meva/data/annotated_activity_slots.txt new file mode 100644 index 0000000..0a521b2 --- /dev/null +++ b/meva/data/annotated_activity_slots.txt @@ -0,0 +1,1423 @@ +========================================================================================== +MEVA ANNOTATED ACTIVITY SLOTS (Site-Aware) +Generated: 2026-02-22 19:35:49 +========================================================================================== + +SLOT FORMAT: {date}.{time}.{site} + - Each slot now groups cameras by both TIME and LOCATION (site) + - Sites: admin, bus, hospital, school + +ANNOTATION SOURCES LEGEND: +---------------------------------------- + [K] = kitware (EVALUATION level - fully audited) + [KT] = kitware-training (TRAINING level - reduced audit) + [N] = nist-json (NIST ActEV JSON format) + [CMU] = contrib/CMU-v2 (CMU contributor) + [IBM] = contrib/IBM-* (IBM person-person & person-vehicle) + [UMD] = contrib/UMD-* (UMD/IBM joint annotations) + +STATISTICS: +---------------------------------------- + Total annotated slots: 381 + Multi-camera annotated slots: 368 + +CLIPS BY SOURCE: +---------------------------------------- + kitware: 239 slots, 769 clips + kitware-training: 341 slots, 1443 clips + nist-json: 49 slots, 65 clips + +========================================================================================== +SLOT DETAILS (sorted by date/time/site) +========================================================================================== + +2018-03-05.13-10.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-05.13-10.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-05.13-10.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-05.13-10.school M [KT] (11 clips) + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G421, G423, G424 + +2018-03-05.13-15.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-05.13-15.bus M [K,KT] (6 clips) + kitware: G340, G505, G506 + kitware-training: G331, G508, G509 + +2018-03-05.13-15.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-05.13-15.school M [K,KT] (11 clips) + kitware: G328, G423, G424 + kitware-training: G299, G300, G330, G336, G339, G419, G420, G421 + +2018-03-05.13-20.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-05.13-20.bus M [K,KT] (6 clips) + kitware: G331, G340 + kitware-training: G505, G506, G508, G509 + +2018-03-05.13-20.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-05.13-20.school M [K,KT] (11 clips) + kitware: G328, G336, G419, G420, G423, G424 + kitware-training: G299, G300, G330, G339, G421 + +2018-03-05.14-00.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-05.14-00.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-05.14-00.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-05.14-00.school M [K,KT] (11 clips) + kitware: G420 + kitware-training: G299, G300, G328, G330, G336, G339, G419, G421, G423, G424 + +2018-03-05.14-05.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-05.14-05.bus M [K,KT] (6 clips) + kitware: G506 + kitware-training: G331, G340, G505, G508, G509 + +2018-03-05.14-05.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-05.14-05.school M [K,KT] (11 clips) + kitware: G328 + kitware-training: G299, G300, G330, G336, G339, G419, G420, G421, G423, G424 + +2018-03-05.14-10.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-05.14-10.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-05.14-10.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-05.14-10.school M [K,KT] (11 clips) + kitware: G330, G420, G421, G424 + kitware-training: G299, G300, G328, G336, G339, G419, G423 + +2018-03-07.10-55.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-07.10-55.bus M [K,KT] (6 clips) + kitware: G505, G508 + kitware-training: G331, G340, G506, G509 + +2018-03-07.10-55.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-07.10-55.school M [K,KT] (11 clips) + kitware: G328, G339, G419, G423, G424 + kitware-training: G299, G300, G330, G336, G420, G421 + +2018-03-07.11-00.admin M [K,KT] (2 clips) + kitware: G329 + kitware-training: G326 + +2018-03-07.11-00.bus M [K,KT] (6 clips) + kitware: G505, G506, G508, G509 + kitware-training: G331, G340 + +2018-03-07.11-00.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-07.11-00.school M [K,KT] (11 clips) + kitware: G300, G328, G336, G339, G419, G420, G421 + kitware-training: G299, G330, G423, G424 + +2018-03-07.11-05.admin M [K,KT] (2 clips) + kitware: G326 + kitware-training: G329 + +2018-03-07.11-05.bus M [K,KT] (6 clips) + kitware: G331, G340, G508 + kitware-training: G505, G506, G509 + +2018-03-07.11-05.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-07.11-05.school M [K,KT] (11 clips) + kitware: G300, G328, G339, G419 + kitware-training: G299, G330, G336, G420, G421, G423, G424 + +2018-03-07.11-10.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-07.11-10.bus M [K,KT] (6 clips) + kitware: G505, G506, G508 + kitware-training: G331, G340, G509 + +2018-03-07.11-10.hospital M [K,KT] (3 clips) + kitware: G341, G436 + kitware-training: G301 + +2018-03-07.11-10.school M [K,KT] (11 clips) + kitware: G299, G300, G339, G419, G420, G421 + kitware-training: G328, G330, G336, G423, G424 + +2018-03-07.16-50.admin M [K,N] (4 clips) + kitware: G326, G329 + nist-json: G326, G329 + +2018-03-07.16-50.bus M [K,KT,N] (7 clips) + kitware: G331, G340, G505, G506, G509 + kitware-training: G508 + nist-json: G331 + +2018-03-07.16-50.hospital M [K,KT,N] (4 clips) + kitware: G301 + kitware-training: G341, G436 + nist-json: G301 + +2018-03-07.16-50.school M [K,KT,N] (14 clips) + kitware: G300, G330, G419, G421, G423, G638 + kitware-training: G299, G328, G336, G339, G420, G424 + nist-json: G328, G336 + +2018-03-07.16-55.admin M [K,N] (3 clips) + kitware: G326, G329 + nist-json: G329 + +2018-03-07.16-55.bus M [K,KT,N] (7 clips) + kitware: G340, G505, G506, G509 + kitware-training: G331, G508 + nist-json: G340 + +2018-03-07.16-55.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-07.16-55.school M [K,KT] (12 clips) + kitware: G300, G328, G336, G419, G420, G421, G423, G424, G638 + kitware-training: G299, G330, G339 + +2018-03-07.17-00.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-07.17-00.bus M [K,KT] (6 clips) + kitware: G331, G505, G506, G508, G509 + kitware-training: G340 + +2018-03-07.17-00.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-07.17-00.school M [K,KT] (12 clips) + kitware: G638 + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G421, G423, G424 + +2018-03-07.17-05.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-07.17-05.bus M [K,KT,N] (8 clips) + kitware: G505, G508, G509 + kitware-training: G331, G340, G506 + nist-json: G331, G340 + +2018-03-07.17-05.hospital M [K,KT] (3 clips) + kitware: G341, G436 + kitware-training: G301 + +2018-03-07.17-05.school M [K,KT,N] (14 clips) + kitware: G336, G419, G420, G423, G424 + kitware-training: G299, G300, G328, G330, G339, G421, G638 + nist-json: G299, G336 + +2018-03-07.17-20.admin M [K,KT] (2 clips) + kitware: G329 + kitware-training: G326 + +2018-03-07.17-20.bus M [K,KT] (6 clips) + kitware: G331, G505, G506, G508 + kitware-training: G340, G509 + +2018-03-07.17-20.hospital M [K] (3 clips) + kitware: G301, G341, G436 + +2018-03-07.17-20.school M [K,KT] (12 clips) + kitware: G300, G336, G419, G420, G423, G424, G638 + kitware-training: G299, G328, G330, G339, G421 + +2018-03-07.17-25.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-07.17-25.bus M [K,KT] (6 clips) + kitware: G340, G505, G506, G508, G509 + kitware-training: G331 + +2018-03-07.17-25.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-07.17-25.school M [K,KT] (13 clips) + kitware: G300, G424, G638 + kitware-training: G299, G328, G330, G336, G339, G419, G420, G421, G423, G639 + +2018-03-07.17-30.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-07.17-30.bus M [K,KT,N] (7 clips) + kitware: G340, G505, G506, G508, G509 + kitware-training: G331 + nist-json: G505 + +2018-03-07.17-30.hospital M [K,KT] (3 clips) + kitware: G301, G341 + kitware-training: G436 + +2018-03-07.17-30.school M [K,KT] (13 clips) + kitware: G300, G419, G420, G421, G423, G638, G639 + kitware-training: G299, G328, G330, G336, G339, G424 + +2018-03-07.17-35.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-07.17-35.bus M [K] (6 clips) + kitware: G331, G340, G505, G506, G508, G509 + +2018-03-07.17-35.hospital M [K] (3 clips) + kitware: G301, G341, G436 + +2018-03-07.17-35.school M [K,KT,N] (14 clips) + kitware: G299, G300, G339, G419, G420, G421, G423, G638 + kitware-training: G328, G330, G336, G424, G639 + nist-json: G421 + +2018-03-09.10-10.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-09.10-10.bus M [K,KT,N] (7 clips) + kitware: G340, G505, G506, G508, G509 + kitware-training: G331 + nist-json: G340 + +2018-03-09.10-10.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-09.10-10.school M [K,KT,N] (14 clips) + kitware: G299, G300, G328, G336, G339, G419, G421, G423, G638, G639 + kitware-training: G330, G420, G424 + nist-json: G328 + +2018-03-09.10-15.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-09.10-15.bus M [K,KT] (6 clips) + kitware: G340, G505, G506 + kitware-training: G331, G508, G509 + +2018-03-09.10-15.hospital M [K,KT] (3 clips) + kitware: G301, G436 + kitware-training: G341 + +2018-03-09.10-15.school M [K,KT] (13 clips) + kitware: G299, G300, G328, G336, G421, G638 + kitware-training: G330, G339, G419, G420, G423, G424, G639 + +2018-03-09.10-20.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-09.10-20.bus M [K,KT] (6 clips) + kitware: G506 + kitware-training: G331, G340, G505, G508, G509 + +2018-03-09.10-20.hospital M [K,KT] (2 clips) + kitware: G436 + kitware-training: G301 + +2018-03-09.10-20.school M [K,KT] (13 clips) + kitware: G328, G336, G419, G420, G423, G424, G639 + kitware-training: G299, G300, G330, G339, G421, G638 + +2018-03-09.10-25.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-09.10-25.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-09.10-25.hospital M [K,KT] (2 clips) + kitware: G436 + kitware-training: G301 + +2018-03-09.10-25.school M [K,KT] (13 clips) + kitware: G299, G330, G336, G419, G420, G421, G423, G639 + kitware-training: G300, G328, G339, G424, G638 + +2018-03-09.10-30.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-09.10-30.bus M [K,KT] (6 clips) + kitware: G340, G505 + kitware-training: G331, G506, G508, G509 + +2018-03-09.10-30.hospital M [K,KT] (3 clips) + kitware: G301 + kitware-training: G341, G436 + +2018-03-09.10-30.school M [K,KT] (13 clips) + kitware: G328, G330, G419, G420, G423, G424 + kitware-training: G299, G300, G336, G339, G421, G638, G639 + +2018-03-09.10-35.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-09.10-35.bus M [K,KT] (6 clips) + kitware: G340, G505 + kitware-training: G331, G506, G508, G509 + +2018-03-09.10-35.hospital M [K] (3 clips) + kitware: G301, G341, G436 + +2018-03-09.10-35.school M [K,KT] (13 clips) + kitware: G328, G336, G339, G423, G424, G639 + kitware-training: G299, G300, G330, G419, G420, G421, G638 + +2018-03-09.10-40.admin M [K,KT] (2 clips) + kitware: G326 + kitware-training: G329 + +2018-03-09.10-40.bus M [K,KT] (6 clips) + kitware: G506 + kitware-training: G331, G340, G505, G508, G509 + +2018-03-09.10-40.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-09.10-40.school M [K,KT] (13 clips) + kitware: G330, G336, G339, G419 + kitware-training: G299, G300, G328, G420, G421, G423, G424, G638, G639 + +2018-03-11.11-15.hospital [K] (1 clips) + kitware: G436 + +2018-03-11.11-15.school M [K] (10 clips) + kitware: G299, G300, G328, G330, G336, G419, G420, G421, G424, G638 + +2018-03-11.11-20.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.11-20.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.11-20.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-11.11-20.school M [K,KT] (13 clips) + kitware: G299, G300, G328, G330, G336, G419, G420, G421, G423, G424, G638, G639 + kitware-training: G339 + +2018-03-11.11-25.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.11-25.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.11-25.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-11.11-25.school M [K,KT] (13 clips) + kitware: G299, G300, G328, G330, G336, G420, G421, G423, G424, G638 + kitware-training: G339, G419, G639 + +2018-03-11.11-30.admin M [K,KT] (2 clips) + kitware: G329 + kitware-training: G326 + +2018-03-11.11-30.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.11-30.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-11.11-30.school M [K,KT,N] (14 clips) + kitware: G300, G328, G330, G336, G419, G420, G421, G423, G424, G638 + kitware-training: G299, G339, G639 + nist-json: G421 + +2018-03-11.11-35.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.11-35.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.11-35.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-11.11-35.school M [K,KT,N] (14 clips) + kitware: G299, G300, G328, G330, G336, G419, G420, G421, G423, G424, G638 + kitware-training: G339, G639 + nist-json: G421 + +2018-03-11.11-40.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.11-40.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.11-40.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-11.11-40.school M [K,KT] (14 clips) + kitware: G299, G300, G328, G336, G419, G420, G423, G424, G474, G638 + kitware-training: G330, G339, G421, G639 + +2018-03-11.11-45.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.11-45.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.11-45.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-11.11-45.school M [K,KT] (14 clips) + kitware: G299, G300, G328, G330, G336, G419, G420, G421, G423, G424, G474, G638 + kitware-training: G339, G639 + +2018-03-11.11-50.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.11-50.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.11-50.hospital M [K,KT] (3 clips) + kitware: G341, G436 + kitware-training: G301 + +2018-03-11.11-50.school M [K,KT,N] (15 clips) + kitware: G299, G300, G328, G336, G419, G420, G421, G423, G424, G638, G639 + kitware-training: G330, G339 + nist-json: G300, G424 + +2018-03-11.11-55.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.11-55.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.11-55.hospital M [K,KT] (3 clips) + kitware: G341, G436 + kitware-training: G301 + +2018-03-11.11-55.school M [K,KT] (13 clips) + kitware: G299, G300, G328, G330, G336, G419, G420, G421, G423, G424, G638, G639 + kitware-training: G339 + +2018-03-11.12-00.school M [K] (3 clips) + kitware: G299, G336, G420 + +2018-03-11.13-50.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.13-50.bus M [K,KT] (6 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + +2018-03-11.13-50.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-11.13-50.school M [K,KT,N] (19 clips) + kitware: G339, G421, G423 + kitware-training: G299, G300, G328, G330, G336, G419, G420, G424, G638, G639 + nist-json: G299, G328, G330, G336, G339, G421 + +2018-03-11.13-55.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.13-55.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.13-55.hospital M [KT,N] (4 clips) + kitware-training: G301, G341, G436 + nist-json: G436 + +2018-03-11.13-55.school M [K,KT] (13 clips) + kitware: G339, G420, G638, G639 + kitware-training: G299, G300, G328, G330, G336, G419, G421, G423, G424 + +2018-03-11.14-00.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.14-00.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.14-00.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-11.14-00.school M [K,KT] (13 clips) + kitware: G423, G424 + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G421, G638, G639 + +2018-03-11.14-05.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.14-05.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.14-05.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-11.14-05.school M [K,KT] (13 clips) + kitware: G420, G423 + kitware-training: G299, G300, G328, G330, G336, G339, G419, G421, G424, G638, G639 + +2018-03-11.14-10.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.14-10.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.14-10.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-11.14-10.school M [KT] (13 clips) + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G421, G423, G424, G638, G639 + +2018-03-11.14-15.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.14-15.bus M [K,KT] (6 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + +2018-03-11.14-15.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-11.14-15.school M [K,KT] (13 clips) + kitware: G299, G339, G423, G638, G639 + kitware-training: G300, G328, G330, G336, G419, G420, G421, G424 + +2018-03-11.14-20.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.14-20.bus M [K,KT] (6 clips) + kitware: G340, G506, G508 + kitware-training: G331, G505, G509 + +2018-03-11.14-20.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-11.14-20.school M [K,KT] (13 clips) + kitware: G299, G330, G419, G420, G424 + kitware-training: G300, G328, G336, G339, G421, G423, G638, G639 + +2018-03-11.16-10.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-11.16-10.bus M [K] (5 clips) + kitware: G331, G340, G505, G506, G509 + +2018-03-11.16-10.hospital M [K] (2 clips) + kitware: G301, G341 + +2018-03-11.16-10.school [K] (1 clips) + kitware: G339 + +2018-03-11.16-15.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-11.16-15.bus M [K,KT] (6 clips) + kitware: G331, G340, G505, G506, G509 + kitware-training: G508 + +2018-03-11.16-15.hospital M [K] (4 clips) + kitware: G301, G341, G436, G479 + +2018-03-11.16-15.school M [K,KT,N] (14 clips) + kitware: G299, G300, G328, G336, G339, G419, G420, G421, G423, G424, G638 + kitware-training: G330, G639 + nist-json: G421 + +2018-03-11.16-20.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-11.16-20.bus M [K,KT] (6 clips) + kitware: G331, G340, G505, G506, G509 + kitware-training: G508 + +2018-03-11.16-20.hospital M [K] (4 clips) + kitware: G301, G341, G436, G479 + +2018-03-11.16-20.school M [K,KT,N] (13 clips) + kitware: G299, G300, G328, G330, G336, G419, G420, G421, G423, G424, G638 + kitware-training: G639 + nist-json: G300 + +2018-03-11.16-25.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-11.16-25.bus M [K,KT] (6 clips) + kitware: G331, G340, G505, G506, G509 + kitware-training: G508 + +2018-03-11.16-25.hospital M [K] (3 clips) + kitware: G301, G341, G436 + +2018-03-11.16-25.school M [K,N] (14 clips) + kitware: G299, G300, G328, G330, G336, G339, G419, G420, G421, G423, G424, G638, G639 + nist-json: G424 + +2018-03-11.16-30.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-11.16-30.bus M [K,KT] (7 clips) + kitware: G331, G340, G475, G505, G506, G509 + kitware-training: G508 + +2018-03-11.16-30.hospital M [K] (5 clips) + kitware: G301, G341, G436, G476, G479 + +2018-03-11.16-30.school M [K,KT] (14 clips) + kitware: G299, G300, G328, G330, G336, G339, G419, G420, G421, G423, G424, G474, G638 + kitware-training: G639 + +2018-03-11.16-35.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-11.16-35.bus M [K,KT] (6 clips) + kitware: G331, G340, G505, G506, G509 + kitware-training: G508 + +2018-03-11.16-35.hospital M [K] (4 clips) + kitware: G301, G341, G436, G479 + +2018-03-11.16-35.school M [K,KT] (13 clips) + kitware: G300, G328, G330, G336, G339, G419, G420, G421, G423, G424, G638 + kitware-training: G299, G639 + +2018-03-11.16-40.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-11.16-40.bus M [K,KT] (6 clips) + kitware: G331, G340, G505, G506, G509 + kitware-training: G508 + +2018-03-11.16-40.hospital M [K] (3 clips) + kitware: G301, G341, G436 + +2018-03-11.16-40.school M [K,KT] (13 clips) + kitware: G299, G300, G328, G330, G336, G339, G419, G420, G421, G423, G424, G638 + kitware-training: G639 + +2018-03-11.16-45.bus M [K] (3 clips) + kitware: G331, G505, G509 + +2018-03-11.16-45.school M [K] (4 clips) + kitware: G299, G330, G421, G423 + +2018-03-11.17-10.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-11.17-10.bus M [K,KT] (6 clips) + kitware: G505 + kitware-training: G331, G340, G506, G508, G509 + +2018-03-11.17-10.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-11.17-10.school M [K,KT] (13 clips) + kitware: G330, G339, G419, G421, G423, G424, G639 + kitware-training: G299, G300, G328, G336, G420, G638 + +2018-03-11.17-15.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-11.17-15.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.17-15.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-11.17-15.school M [K,KT] (12 clips) + kitware: G299, G336, G423 + kitware-training: G300, G330, G339, G419, G420, G421, G424, G638, G639 + +2018-03-11.17-20.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-11.17-20.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-11.17-20.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-11.17-20.school M [K,KT] (13 clips) + kitware: G328, G420, G423 + kitware-training: G299, G300, G330, G336, G339, G419, G421, G424, G638, G639 + +2018-03-11.17-25.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-11.17-25.bus M [K,KT] (6 clips) + kitware: G340, G506 + kitware-training: G331, G505, G508, G509 + +2018-03-11.17-25.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-11.17-25.school M [K,KT] (13 clips) + kitware: G299, G300, G328, G330, G336, G419, G423, G424, G638 + kitware-training: G339, G420, G421, G639 + +2018-03-12.10-00.admin M [KT,N] (2 clips) + kitware-training: G326 + nist-json: G326 + +2018-03-12.10-00.bus M [K,KT] (6 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + +2018-03-12.10-00.hospital M [K,KT,N] (4 clips) + kitware: G436 + kitware-training: G301, G341 + nist-json: G436 + +2018-03-12.10-00.school M [K,KT,N] (15 clips) + kitware: G299, G330, G420 + kitware-training: G300, G328, G336, G339, G419, G421, G423, G424, G638, G639 + nist-json: G339, G423 + +2018-03-12.10-05.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-12.10-05.bus M [K,KT] (6 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + +2018-03-12.10-05.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-12.10-05.school M [K,KT] (13 clips) + kitware: G299, G328, G330, G639 + kitware-training: G300, G336, G339, G419, G420, G421, G423, G424, G638 + +2018-03-12.10-10.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-12.10-10.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-12.10-10.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-12.10-10.school M [K,KT,N] (14 clips) + kitware: G421, G423 + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G424, G638, G639 + nist-json: G299 + +2018-03-12.10-15.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-12.10-15.bus M [K,KT] (6 clips) + kitware: G506 + kitware-training: G331, G340, G505, G508, G509 + +2018-03-12.10-15.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-12.10-15.school M [K,KT] (13 clips) + kitware: G299, G336, G424 + kitware-training: G300, G328, G330, G339, G419, G420, G421, G423, G638, G639 + +2018-03-12.10-20.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-12.10-20.bus M [K,KT] (6 clips) + kitware: G505 + kitware-training: G331, G340, G506, G508, G509 + +2018-03-12.10-20.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-12.10-20.school M [KT] (13 clips) + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G421, G423, G424, G638, G639 + +2018-03-12.10-25.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-12.10-25.bus M [K,KT] (6 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + +2018-03-12.10-25.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-12.10-25.school M [K,KT] (13 clips) + kitware: G299, G300, G328, G336, G421, G638 + kitware-training: G330, G339, G419, G420, G423, G424, G639 + +2018-03-12.10-30.admin M [K] (2 clips) + kitware: G326, G329 + +2018-03-12.10-30.bus M [K,KT] (6 clips) + kitware: G505 + kitware-training: G331, G340, G506, G508, G509 + +2018-03-12.10-30.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-12.10-30.school M [K,KT] (13 clips) + kitware: G330, G336, G421, G424 + kitware-training: G299, G300, G328, G339, G419, G420, G423, G638, G639 + +2018-03-12.10-40.admin M [K,KT] (2 clips) + kitware: G329 + kitware-training: G326 + +2018-03-12.10-40.bus M [K,KT] (6 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + +2018-03-12.10-40.hospital M [KT,N] (4 clips) + kitware-training: G301, G341, G436 + nist-json: G436 + +2018-03-12.10-40.school M [K,KT,N] (14 clips) + kitware: G299, G330, G339, G421, G638 + kitware-training: G300, G328, G336, G419, G420, G423, G424, G639 + nist-json: G328 + +2018-03-12.10-45.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-12.10-45.bus M [K,KT] (6 clips) + kitware: G505 + kitware-training: G331, G340, G506, G508, G509 + +2018-03-12.10-45.hospital M [K,KT] (3 clips) + kitware: G301, G436 + kitware-training: G341 + +2018-03-12.10-45.school M [K,KT,N] (16 clips) + kitware: G328, G330, G421, G639 + kitware-training: G299, G300, G336, G339, G419, G420, G423, G424, G638 + nist-json: G328, G424, G638 + +2018-03-12.10-50.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-12.10-50.bus M [K,KT] (6 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + +2018-03-12.10-50.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-12.10-50.school M [K,KT,N] (14 clips) + kitware: G299, G330, G423, G639 + kitware-training: G300, G328, G336, G339, G419, G420, G421, G424, G638 + nist-json: G423 + +2018-03-12.10-55.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-12.10-55.bus M [KT] (5 clips) + kitware-training: G331, G340, G505, G506, G508 + +2018-03-12.10-55.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-12.10-55.school M [K,KT] (13 clips) + kitware: G330, G421 + kitware-training: G299, G300, G328, G336, G339, G419, G420, G423, G424, G638, G639 + +2018-03-12.11-00.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-12.11-00.bus M [K,KT,N] (7 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + nist-json: G340 + +2018-03-12.11-00.hospital M [K,KT] (3 clips) + kitware: G341, G436 + kitware-training: G301 + +2018-03-12.11-00.school M [K,KT] (13 clips) + kitware: G423, G424, G639 + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G421, G638 + +2018-03-12.11-05.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-12.11-05.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-12.11-05.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-12.11-05.school M [K,KT] (13 clips) + kitware: G328, G330, G420, G423 + kitware-training: G299, G300, G336, G339, G419, G421, G424, G638, G639 + +2018-03-12.11-10.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-12.11-10.bus M [K,KT] (6 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + +2018-03-12.11-10.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-12.11-10.school M [K,KT,N] (14 clips) + kitware: G328, G336, G424, G638 + kitware-training: G299, G300, G330, G339, G419, G420, G421, G423, G639 + nist-json: G423 + +2018-03-13.15-50.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.15-50.bus M [K,KT] (6 clips) + kitware: G505, G506 + kitware-training: G331, G340, G508, G509 + +2018-03-13.15-50.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.15-50.school M [K,KT] (13 clips) + kitware: G336, G419, G421, G638 + kitware-training: G299, G300, G328, G330, G339, G420, G423, G424, G639 + +2018-03-13.15-55.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.15-55.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.15-55.hospital M [K,KT] (3 clips) + kitware: G301, G436 + kitware-training: G341 + +2018-03-13.15-55.school M [K,KT] (13 clips) + kitware: G299, G330, G424, G638 + kitware-training: G300, G328, G336, G339, G419, G420, G421, G423, G639 + +2018-03-13.16-00.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-13.16-00.bus M [K,KT] (6 clips) + kitware: G505 + kitware-training: G331, G340, G506, G508, G509 + +2018-03-13.16-00.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-13.16-00.school M [K,KT] (12 clips) + kitware: G336, G424, G638, G639 + kitware-training: G299, G300, G328, G330, G339, G419, G420, G423 + +2018-03-13.16-05.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.16-05.bus M [K,KT] (6 clips) + kitware: G505, G506 + kitware-training: G331, G340, G508, G509 + +2018-03-13.16-05.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.16-05.school M [K,KT] (13 clips) + kitware: G328, G336, G421, G424 + kitware-training: G299, G300, G330, G339, G419, G420, G423, G638, G639 + +2018-03-13.16-10.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.16-10.bus M [K,KT] (6 clips) + kitware: G506 + kitware-training: G331, G340, G505, G508, G509 + +2018-03-13.16-10.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.16-10.school M [K,KT] (13 clips) + kitware: G423, G424 + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G421, G638, G639 + +2018-03-13.16-15.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.16-15.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.16-15.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-13.16-15.school M [KT] (12 clips) + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G423, G424, G638, G639 + +2018-03-13.16-20.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.16-20.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.16-20.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.16-20.school M [K,KT] (13 clips) + kitware: G336, G339, G424 + kitware-training: G299, G300, G328, G330, G419, G420, G421, G423, G638, G639 + +2018-03-13.16-25.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.16-25.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.16-25.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.16-25.school M [KT] (12 clips) + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G423, G424, G638, G639 + +2018-03-13.16-30.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.16-30.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.16-30.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.16-30.school M [K,KT] (12 clips) + kitware: G423 + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G424, G638, G639 + +2018-03-13.17-05.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.17-05.bus M [K,KT] (6 clips) + kitware: G505 + kitware-training: G331, G340, G506, G508, G509 + +2018-03-13.17-05.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.17-05.school M [K,KT,N] (16 clips) + kitware: G299, G423, G424, G639 + kitware-training: G300, G328, G330, G336, G339, G419, G420, G421, G638 + nist-json: G328, G336, G421 + +2018-03-13.17-10.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.17-10.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.17-10.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-13.17-10.school M [K,KT] (13 clips) + kitware: G336, G421 + kitware-training: G299, G300, G328, G330, G339, G419, G420, G423, G424, G638, G639 + +2018-03-13.17-15.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.17-15.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.17-15.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.17-15.school M [K,KT] (12 clips) + kitware: G336, G424 + kitware-training: G299, G300, G328, G330, G339, G419, G420, G423, G638, G639 + +2018-03-13.17-20.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.17-20.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.17-20.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.17-20.school M [K,KT] (12 clips) + kitware: G336 + kitware-training: G299, G300, G328, G330, G339, G419, G420, G423, G424, G638, G639 + +2018-03-13.17-25.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-13.17-25.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.17-25.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-13.17-25.school M [K,KT,N] (14 clips) + kitware: G336, G421 + kitware-training: G299, G300, G328, G330, G339, G419, G420, G423, G424, G638, G639 + nist-json: G336 + +2018-03-13.17-30.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-13.17-30.bus M [KT,N] (7 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + nist-json: G340 + +2018-03-13.17-30.hospital M [KT,N] (4 clips) + kitware-training: G301, G341, G436 + nist-json: G341 + +2018-03-13.17-30.school M [KT] (13 clips) + kitware-training: G299, G300, G328, G330, G336, G339, G419, G420, G421, G423, G424, G638, G639 + +2018-03-13.17-35.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.17-35.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.17-35.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-13.17-35.school M [K,KT,N] (14 clips) + kitware: G330, G419 + kitware-training: G299, G300, G328, G336, G339, G420, G421, G423, G424, G638, G639 + nist-json: G299 + +2018-03-13.17-40.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-13.17-40.bus M [KT] (6 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + +2018-03-13.17-40.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-13.17-40.school M [K,KT,N] (13 clips) + kitware: G300 + kitware-training: G299, G328, G330, G336, G339, G419, G420, G423, G424, G638, G639 + nist-json: G300 + +2018-03-15.14-50.admin M [K,KT] (2 clips) + kitware: G329 + kitware-training: G326 + +2018-03-15.14-50.bus M [K,KT] (6 clips) + kitware: G340, G508 + kitware-training: G331, G505, G506, G509 + +2018-03-15.14-50.hospital M [KT,N] (4 clips) + kitware-training: G301, G341, G436 + nist-json: G341 + +2018-03-15.14-50.school M [K,KT,N] (14 clips) + kitware: G300, G420, G421 + kitware-training: G299, G328, G330, G336, G339, G419, G424, G638, G639 + nist-json: G424, G638 + +2018-03-15.14-55.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-15.14-55.bus M [K,KT] (6 clips) + kitware: G505 + kitware-training: G331, G340, G506, G508, G509 + +2018-03-15.14-55.hospital M [KT,N] (4 clips) + kitware-training: G301, G341, G436 + nist-json: G436 + +2018-03-15.14-55.school M [K,KT,N] (14 clips) + kitware: G300, G328, G336, G339, G421, G638, G639 + kitware-training: G299, G330, G419, G420, G423, G424 + nist-json: G421 + +2018-03-15.15-00.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-15.15-00.bus M [K,KT] (6 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + +2018-03-15.15-00.hospital M [K] (3 clips) + kitware: G301, G341, G436 + +2018-03-15.15-00.school M [K,KT] (13 clips) + kitware: G299, G330, G339 + kitware-training: G300, G328, G336, G419, G420, G421, G423, G424, G638, G639 + +2018-03-15.15-05.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-15.15-05.bus M [K,KT] (6 clips) + kitware: G508 + kitware-training: G331, G340, G505, G506, G509 + +2018-03-15.15-05.hospital M [KT] (2 clips) + kitware-training: G301, G341 + +2018-03-15.15-05.school M [K,KT] (12 clips) + kitware: G336, G339 + kitware-training: G299, G300, G328, G330, G419, G420, G421, G424, G638, G639 + +2018-03-15.15-10.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-15.15-10.bus M [KT,N] (5 clips) + kitware-training: G331, G506, G508, G509 + nist-json: G331 + +2018-03-15.15-10.hospital M [KT] (2 clips) + kitware-training: G301, G341 + +2018-03-15.15-10.school M [K,KT] (13 clips) + kitware: G336, G339, G421, G424 + kitware-training: G299, G300, G328, G330, G419, G420, G423, G638, G639 + +2018-03-15.15-15.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-15.15-15.bus M [KT,N] (7 clips) + kitware-training: G331, G340, G505, G506, G508, G509 + nist-json: G331 + +2018-03-15.15-15.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-15.15-15.school M [K,KT] (13 clips) + kitware: G300, G339, G421, G424, G638 + kitware-training: G299, G328, G330, G336, G419, G420, G423, G639 + +2018-03-15.15-30.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-15.15-30.bus M [K,KT,N] (7 clips) + kitware: G506 + kitware-training: G331, G340, G505, G508, G509 + nist-json: G340 + +2018-03-15.15-30.hospital M [K,KT] (3 clips) + kitware: G341 + kitware-training: G301, G436 + +2018-03-15.15-30.school M [K,KT] (11 clips) + kitware: G339, G421, G424 + kitware-training: G299, G300, G328, G330, G336, G419, G638, G639 + +2018-03-15.15-35.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-15.15-35.bus M [K,KT,N] (7 clips) + kitware: G340 + kitware-training: G331, G505, G506, G508, G509 + nist-json: G506 + +2018-03-15.15-35.hospital M [KT,N] (4 clips) + kitware-training: G301, G341, G436 + nist-json: G341 + +2018-03-15.15-35.school M [K,KT,N] (12 clips) + kitware: G328, G339, G421, G638 + kitware-training: G299, G300, G330, G336, G419, G424, G639 + nist-json: G300 + +2018-03-15.15-40.admin M [K,KT] (2 clips) + kitware: G326 + kitware-training: G329 + +2018-03-15.15-40.bus M [K,KT] (6 clips) + kitware: G508 + kitware-training: G331, G340, G505, G506, G509 + +2018-03-15.15-40.hospital M [KT] (3 clips) + kitware-training: G301, G341, G436 + +2018-03-15.15-40.school M [K,KT,N] (14 clips) + kitware: G339 + kitware-training: G299, G300, G328, G330, G336, G419, G420, G421, G423, G424, G638, G639 + nist-json: G638 + +2018-03-15.15-45.admin [KT] (1 clips) + kitware-training: G326 + +2018-03-15.15-45.bus M [K,KT,N] (7 clips) + kitware: G505, G506 + kitware-training: G331, G340, G508, G509 + nist-json: G506 + +2018-03-15.15-45.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-15.15-45.school M [K,KT,N] (14 clips) + kitware: G300, G336, G339, G638 + kitware-training: G299, G328, G330, G419, G420, G421, G423, G424, G639 + nist-json: G638 + +2018-03-15.15-50.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-15.15-50.bus M [K,KT] (6 clips) + kitware: G331, G508 + kitware-training: G340, G505, G506, G509 + +2018-03-15.15-50.hospital M [K,KT] (3 clips) + kitware: G301, G341 + kitware-training: G436 + +2018-03-15.15-50.school M [K,KT] (13 clips) + kitware: G336, G339 + kitware-training: G299, G300, G328, G330, G419, G420, G421, G423, G424, G638, G639 + +2018-03-15.15-55.admin M [KT] (2 clips) + kitware-training: G326, G329 + +2018-03-15.15-55.bus M [K,KT] (6 clips) + kitware: G331 + kitware-training: G340, G505, G506, G508, G509 + +2018-03-15.15-55.hospital M [K,KT] (3 clips) + kitware: G436 + kitware-training: G301, G341 + +2018-03-15.15-55.school M [K,KT] (12 clips) + kitware: G328, G336, G421, G424, G638, G639 + kitware-training: G299, G300, G330, G339, G419, G423 diff --git a/meva/data/canonical_slots.json b/meva/data/canonical_slots.json new file mode 100644 index 0000000..8dffd31 --- /dev/null +++ b/meva/data/canonical_slots.json @@ -0,0 +1,14473 @@ +{ + "2018-03-05.13-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-05.13-10-00.admin" + ] + }, + "2018-03-05.13-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-05.13-10-00.bus", + "2018-03-05.13-10-01.bus" + ] + }, + "2018-03-05.13-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-05.13-10-00.hospital" + ] + }, + "2018-03-05.13-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-05.13-10-00.school", + "2018-03-05.13-10-01.school" + ] + }, + "2018-03-05.13-15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-05.13-15-00.admin" + ] + }, + "2018-03-05.13-15-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-05.13-15-00.bus", + "2018-03-05.13-15-01.bus" + ] + }, + "2018-03-05.13-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-05.13-15-00.hospital" + ] + }, + "2018-03-05.13-15-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G328", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-05.13-15-00.school", + "2018-03-05.13-15-01.school" + ] + }, + "2018-03-05.13-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-05.13-20-00.admin" + ] + }, + "2018-03-05.13-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G340" + ], + "kitware-training": [ + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-05.13-20-00.bus", + "2018-03-05.13-20-01.bus" + ] + }, + "2018-03-05.13-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-05.13-20-00.hospital" + ] + }, + "2018-03-05.13-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G328", + "G336", + "G419", + "G420", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-05.13-20-00.school", + "2018-03-05.13-20-01.school" + ] + }, + "2018-03-05.14-00-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-05.14-00-00.admin" + ] + }, + "2018-03-05.14-00-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-05.14-00-00.bus", + "2018-03-05.14-00-01.bus" + ] + }, + "2018-03-05.14-00-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-05.14-00-00.hospital" + ] + }, + "2018-03-05.14-00-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G420" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-05.14-00-00.school", + "2018-03-05.14-00-01.school" + ] + }, + "2018-03-05.14-05-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-05.14-05-00.admin" + ] + }, + "2018-03-05.14-05-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-05.14-05-00.bus", + "2018-03-05.14-05-01.bus" + ] + }, + "2018-03-05.14-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-05.14-05-00.hospital" + ] + }, + "2018-03-05.14-05-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "kitware": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-05.14-05-00.school", + "2018-03-05.14-05-01.school" + ] + }, + "2018-03-05.14-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-05.14-10-00.admin" + ] + }, + "2018-03-05.14-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-05.14-10-00.bus", + "2018-03-05.14-10-01.bus" + ] + }, + "2018-03-05.14-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-05.14-10-00.hospital" + ] + }, + "2018-03-05.14-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G330", + "G420", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-05.14-10-00.school", + "2018-03-05.14-10-01.school" + ] + }, + "2018-03-07.10-55-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-07.10-55-00.admin", + "2018-03-07.10-55-01.admin" + ] + }, + "2018-03-07.10-55-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-07.10-55-00.bus", + "2018-03-07.10-55-01.bus", + "2018-03-07.10-55-06.bus" + ] + }, + "2018-03-07.10-55-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-07.10-55-00.hospital", + "2018-03-07.10-55-04.hospital", + "2018-03-07.10-55-07.hospital" + ] + }, + "2018-03-07.10-55-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G420", + "G421" + ], + "kitware": [ + "G328", + "G339", + "G419", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-07.10-55-00.school", + "2018-03-07.10-55-01.school", + "2018-03-07.10-55-05.school", + "2018-03-07.10-55-06.school", + "2018-03-07.10-55-07.school" + ] + }, + "2018-03-07.11-00-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-07.11-00-00.admin", + "2018-03-07.11-00-01.admin" + ] + }, + "2018-03-07.11-00-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G340" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-07.11-00-00.bus", + "2018-03-07.11-00-01.bus", + "2018-03-07.11-00-06.bus" + ] + }, + "2018-03-07.11-00-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-07.11-00-00.hospital", + "2018-03-07.11-00-04.hospital", + "2018-03-07.11-00-07.hospital" + ] + }, + "2018-03-07.11-00-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421" + ], + "kitware-training": [ + "G299", + "G330", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-07.11-00-00.school", + "2018-03-07.11-00-01.school", + "2018-03-07.11-00-05.school", + "2018-03-07.11-00-06.school", + "2018-03-07.11-00-07.school" + ] + }, + "2018-03-07.11-05-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-07.11-05-00.admin", + "2018-03-07.11-05-01.admin" + ] + }, + "2018-03-07.11-05-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G508" + ], + "kitware-training": [ + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-07.11-05-00.bus", + "2018-03-07.11-05-01.bus", + "2018-03-07.11-05-06.bus" + ] + }, + "2018-03-07.11-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-07.11-05-00.hospital", + "2018-03-07.11-05-04.hospital", + "2018-03-07.11-05-07.hospital" + ] + }, + "2018-03-07.11-05-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware-training": [ + "G299", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424" + ], + "kitware": [ + "G300", + "G328", + "G339", + "G419" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-07.11-05-00.school", + "2018-03-07.11-05-01.school", + "2018-03-07.11-05-05.school", + "2018-03-07.11-05-06.school", + "2018-03-07.11-05-07.school" + ] + }, + "2018-03-07.11-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-07.11-10-00.admin", + "2018-03-07.11-10-01.admin" + ] + }, + "2018-03-07.11-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-07.11-10-00.bus", + "2018-03-07.11-10-01.bus", + "2018-03-07.11-10-06.bus" + ] + }, + "2018-03-07.11-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-07.11-10-00.hospital", + "2018-03-07.11-10-04.hospital", + "2018-03-07.11-10-07.hospital" + ] + }, + "2018-03-07.11-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G339", + "G419", + "G420", + "G421" + ], + "kitware-training": [ + "G328", + "G330", + "G336", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-07.11-10-00.school", + "2018-03-07.11-10-01.school", + "2018-03-07.11-10-05.school", + "2018-03-07.11-10-06.school", + "2018-03-07.11-10-07.school" + ] + }, + "2018-03-07.16-50-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ], + "nist-json": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-07.16-50-00.admin", + "2018-03-07.16-50-01.admin" + ] + }, + "2018-03-07.16-50-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "nist-json": [ + "G331" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-07.16-50-00.bus", + "2018-03-07.16-50-01.bus" + ] + }, + "2018-03-07.16-50-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G341", + "G436" + ], + "contrib/UMD-v1-test": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware": [ + "G301" + ], + "nist-json": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-07.16-50-01.hospital", + "2018-03-07.16-50-05.hospital", + "2018-03-07.16-50-07.hospital" + ] + }, + "2018-03-07.16-50-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328", + "G421" + ], + "contrib/UMD-v1-train": [ + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "kitware": [ + "G300", + "G330", + "G419", + "G421", + "G423", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G336", + "G339", + "G420", + "G424" + ], + "nist-json": [ + "G328", + "G336" + ] + }, + "multi_camera": true, + "clip_count": 25, + "raw_slots": [ + "2018-03-07.16-50-00.school", + "2018-03-07.16-50-01.school", + "2018-03-07.16-50-06.school" + ] + }, + "2018-03-07.16-55-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ], + "nist-json": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-07.16-55-00.admin", + "2018-03-07.16-55-01.admin" + ] + }, + "2018-03-07.16-55-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G331", + "G508" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-07.16-55-00.bus", + "2018-03-07.16-55-01.bus" + ] + }, + "2018-03-07.16-55-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "contrib/UMD-v1-test": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-07.16-55-01.hospital", + "2018-03-07.16-55-05.hospital", + "2018-03-07.16-55-07.hospital" + ] + }, + "2018-03-07.16-55-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328", + "G421" + ], + "contrib/UMD-v1-train": [ + "G336", + "G339", + "G420", + "G423", + "G424", + "G638" + ], + "kitware": [ + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G339" + ] + }, + "multi_camera": true, + "clip_count": 20, + "raw_slots": [ + "2018-03-07.16-55-00.school", + "2018-03-07.16-55-01.school", + "2018-03-07.16-55-06.school" + ] + }, + "2018-03-07.17-00-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-07.17-00-00.admin", + "2018-03-07.17-00-01.admin" + ] + }, + "2018-03-07.17-00-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-07.17-00-00.bus", + "2018-03-07.17-00-01.bus" + ] + }, + "2018-03-07.17-00-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ], + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-07.17-00-01.hospital", + "2018-03-07.17-00-05.hospital", + "2018-03-07.17-00-07.hospital" + ] + }, + "2018-03-07.17-00-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328", + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G339", + "G423", + "G424", + "G638" + ], + "kitware": [ + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 20, + "raw_slots": [ + "2018-03-07.17-00-00.school", + "2018-03-07.17-00-01.school", + "2018-03-07.17-00-06.school" + ] + }, + "2018-03-07.17-05-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-07.17-05-00.admin", + "2018-03-07.17-05-01.admin" + ] + }, + "2018-03-07.17-05-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G505", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G340", + "G506" + ], + "nist-json": [ + "G331", + "G340" + ] + }, + "multi_camera": true, + "clip_count": 14, + "raw_slots": [ + "2018-03-07.17-05-00.bus", + "2018-03-07.17-05-01.bus" + ] + }, + "2018-03-07.17-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G341", + "G436" + ], + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-07.17-05-01.hospital", + "2018-03-07.17-05-05.hospital", + "2018-03-07.17-05-07.hospital" + ] + }, + "2018-03-07.17-05-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G328", + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "kitware": [ + "G336", + "G419", + "G420", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G421", + "G638" + ], + "nist-json": [ + "G299", + "G336" + ] + }, + "multi_camera": true, + "clip_count": 25, + "raw_slots": [ + "2018-03-07.17-05-00.school", + "2018-03-07.17-05-01.school", + "2018-03-07.17-05-06.school" + ] + }, + "2018-03-07.17-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-07.17-20-00.admin", + "2018-03-07.17-20-01.admin" + ] + }, + "2018-03-07.17-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G340", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-07.17-20-00.bus", + "2018-03-07.17-20-01.bus" + ] + }, + "2018-03-07.17-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ], + "contrib/UMD-v1-test": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-07.17-20-01.hospital", + "2018-03-07.17-20-05.hospital", + "2018-03-07.17-20-07.hospital" + ] + }, + "2018-03-07.17-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328", + "G421" + ], + "contrib/UMD-v1-train": [ + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "kitware": [ + "G300", + "G336", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G339", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 23, + "raw_slots": [ + "2018-03-07.17-20-00.school", + "2018-03-07.17-20-01.school", + "2018-03-07.17-20-06.school" + ] + }, + "2018-03-07.17-23-00.school": { + "cameras": [ + "G639" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G639" + ] + }, + "multi_camera": false, + "clip_count": 1, + "raw_slots": [ + "2018-03-07.17-23-58.school" + ] + }, + "2018-03-07.17-25-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-07.17-25-00.admin", + "2018-03-07.17-25-01.admin" + ] + }, + "2018-03-07.17-25-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-07.17-25-00.bus", + "2018-03-07.17-25-01.bus" + ] + }, + "2018-03-07.17-25-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-07.17-25-01.hospital", + "2018-03-07.17-25-05.hospital", + "2018-03-07.17-25-07.hospital" + ] + }, + "2018-03-07.17-25-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300", + "G336", + "G339", + "G424", + "G638" + ], + "kitware": [ + "G300", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 21, + "raw_slots": [ + "2018-03-07.17-25-00.school", + "2018-03-07.17-25-01.school", + "2018-03-07.17-25-03.school", + "2018-03-07.17-25-06.school", + "2018-03-07.17-25-10.school" + ] + }, + "2018-03-07.17-30-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-07.17-30-00.admin", + "2018-03-07.17-30-01.admin" + ] + }, + "2018-03-07.17-30-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ], + "nist-json": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-07.17-30-00.bus", + "2018-03-07.17-30-01.bus" + ] + }, + "2018-03-07.17-30-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G436" + ], + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G301", + "G341" + ], + "contrib/UMD-v1-val": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-07.17-30-01.hospital", + "2018-03-07.17-30-05.hospital", + "2018-03-07.17-30-07.hospital" + ] + }, + "2018-03-07.17-30-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G328", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "kitware": [ + "G300", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 25, + "raw_slots": [ + "2018-03-07.17-30-00.school", + "2018-03-07.17-30-01.school", + "2018-03-07.17-30-03.school", + "2018-03-07.17-30-06.school" + ] + }, + "2018-03-07.17-35-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-07.17-35-00.admin", + "2018-03-07.17-35-01.admin" + ] + }, + "2018-03-07.17-35-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-07.17-35-00.bus", + "2018-03-07.17-35-01.bus" + ] + }, + "2018-03-07.17-35-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ], + "contrib/UMD-v1-test": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-07.17-35-01.hospital", + "2018-03-07.17-35-05.hospital", + "2018-03-07.17-35-07.hospital" + ] + }, + "2018-03-07.17-35-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G328", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "kitware": [ + "G299", + "G300", + "G339", + "G419", + "G420", + "G421", + "G423", + "G638" + ], + "kitware-training": [ + "G328", + "G330", + "G336", + "G424", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 27, + "raw_slots": [ + "2018-03-07.17-35-00.school", + "2018-03-07.17-35-01.school", + "2018-03-07.17-35-03.school", + "2018-03-07.17-35-06.school" + ] + }, + "2018-03-09.10-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-09.10-10-01.admin" + ] + }, + "2018-03-09.10-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ], + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-09.10-10-00.bus", + "2018-03-09.10-10-01.bus" + ] + }, + "2018-03-09.10-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ], + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-09.10-10-01.hospital", + "2018-03-09.10-10-02.hospital" + ] + }, + "2018-03-09.10-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G328", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "kitware-training": [ + "G330", + "G420", + "G424" + ], + "nist-json": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 27, + "raw_slots": [ + "2018-03-09.10-10-00.school", + "2018-03-09.10-10-01.school" + ] + }, + "2018-03-09.10-15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-09.10-15-01.admin" + ] + }, + "2018-03-09.10-15-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-test": [ + "G340", + "G505" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-09.10-15-00.bus", + "2018-03-09.10-15-01.bus" + ] + }, + "2018-03-09.10-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware": [ + "G301", + "G436" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-09.10-15-01.hospital", + "2018-03-09.10-15-02.hospital" + ] + }, + "2018-03-09.10-15-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G328", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G421", + "G638" + ], + "kitware-training": [ + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 26, + "raw_slots": [ + "2018-03-09.10-15-00.school", + "2018-03-09.10-15-01.school" + ] + }, + "2018-03-09.10-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-09.10-20-01.admin" + ] + }, + "2018-03-09.10-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "contrib/UMD-v1-test": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-09.10-20-00.bus", + "2018-03-09.10-20-01.bus" + ] + }, + "2018-03-09.10-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ], + "contrib/UMD-v1-test": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-09.10-20-01.hospital", + "2018-03-09.10-20-02.hospital" + ] + }, + "2018-03-09.10-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G328", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G638" + ], + "kitware": [ + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G421", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 24, + "raw_slots": [ + "2018-03-09.10-20-00.school", + "2018-03-09.10-20-01.school" + ] + }, + "2018-03-09.10-25-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-09.10-25-01.admin" + ] + }, + "2018-03-09.10-25-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-test": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-09.10-25-00.bus", + "2018-03-09.10-25-01.bus" + ] + }, + "2018-03-09.10-25-00.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-09.10-25-01.hospital" + ] + }, + "2018-03-09.10-25-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G419", + "G423" + ], + "kitware": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G300", + "G328", + "G339", + "G424", + "G638" + ], + "contrib/CMU-v2": [ + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 22, + "raw_slots": [ + "2018-03-09.10-25-00.school", + "2018-03-09.10-25-01.school" + ] + }, + "2018-03-09.10-30-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-09.10-30-01.admin" + ] + }, + "2018-03-09.10-30-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340", + "G505" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-09.10-30-00.bus", + "2018-03-09.10-30-01.bus" + ] + }, + "2018-03-09.10-30-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G479" + ], + "kitware": [ + "G301" + ], + "kitware-training": [ + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-09.10-30-00.hospital", + "2018-03-09.10-30-01.hospital", + "2018-03-09.10-30-02.hospital" + ] + }, + "2018-03-09.10-30-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "kitware": [ + "G328", + "G330", + "G419", + "G420", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G339", + "G421", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 22, + "raw_slots": [ + "2018-03-09.10-30-00.school", + "2018-03-09.10-30-01.school" + ] + }, + "2018-03-09.10-35-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-09.10-35-01.admin" + ] + }, + "2018-03-09.10-35-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ], + "kitware": [ + "G340", + "G505" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-09.10-35-00.bus", + "2018-03-09.10-35-01.bus" + ] + }, + "2018-03-09.10-35-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-09.10-35-01.hospital", + "2018-03-09.10-35-02.hospital" + ] + }, + "2018-03-09.10-35-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G419", + "G420", + "G421", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 25, + "raw_slots": [ + "2018-03-09.10-35-00.school", + "2018-03-09.10-35-01.school" + ] + }, + "2018-03-09.10-40-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-09.10-40-01.admin" + ] + }, + "2018-03-09.10-40-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-09.10-40-00.bus", + "2018-03-09.10-40-01.bus" + ] + }, + "2018-03-09.10-40-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-09.10-40-01.hospital", + "2018-03-09.10-40-02.hospital" + ] + }, + "2018-03-09.10-40-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-v1-train": [ + "G330", + "G419", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G330", + "G336", + "G339", + "G419" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 32, + "raw_slots": [ + "2018-03-09.10-40-00.school", + "2018-03-09.10-40-01.school" + ] + }, + "2018-03-11.11-15-00.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "kitware": [ + "G436" + ] + }, + "multi_camera": false, + "clip_count": 1, + "raw_slots": [ + "2018-03-11.11-15-08.hospital" + ] + }, + "2018-03-11.11-15-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G424", + "G638" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-11.11-15-00.school", + "2018-03-11.11-15-01.school", + "2018-03-11.11-15-04.school" + ] + }, + "2018-03-11.11-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.11-20-00.admin", + "2018-03-11.11-20-01.admin" + ] + }, + "2018-03-11.11-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-11.11-20-00.bus", + "2018-03-11.11-20-01.bus", + "2018-03-11.11-20-08.bus" + ] + }, + "2018-03-11.11-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.11-20-08.hospital" + ] + }, + "2018-03-11.11-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/IBM-person-vehicle": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 37, + "raw_slots": [ + "2018-03-11.11-20-00.school", + "2018-03-11.11-20-01.school", + "2018-03-11.11-20-04.school" + ] + }, + "2018-03-11.11-25-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.11-25-00.admin", + "2018-03-11.11-25-01.admin" + ] + }, + "2018-03-11.11-25-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-11.11-25-00.bus", + "2018-03-11.11-25-01.bus", + "2018-03-11.11-25-08.bus" + ] + }, + "2018-03-11.11-25-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.11-25-08.hospital" + ] + }, + "2018-03-11.11-25-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299", + "G330" + ], + "contrib/IBM-person-vehicle": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G419", + "G639" + ], + "contrib/UMD-v1-train": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 41, + "raw_slots": [ + "2018-03-11.11-25-00.school", + "2018-03-11.11-25-01.school", + "2018-03-11.11-25-04.school" + ] + }, + "2018-03-11.11-30-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.11-30-00.admin", + "2018-03-11.11-30-01.admin" + ] + }, + "2018-03-11.11-30-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-11.11-30-00.bus", + "2018-03-11.11-30-01.bus", + "2018-03-11.11-30-08.bus" + ] + }, + "2018-03-11.11-30-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.11-30-08.hospital" + ] + }, + "2018-03-11.11-30-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424", + "G638" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G339", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 41, + "raw_slots": [ + "2018-03-11.11-30-00.school", + "2018-03-11.11-30-01.school", + "2018-03-11.11-30-04.school" + ] + }, + "2018-03-11.11-35-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.11-35-00.admin", + "2018-03-11.11-35-01.admin" + ] + }, + "2018-03-11.11-35-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-11.11-35-00.bus", + "2018-03-11.11-35-01.bus", + "2018-03-11.11-35-08.bus" + ] + }, + "2018-03-11.11-35-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.11-35-08.hospital" + ] + }, + "2018-03-11.11-35-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G299", + "G638" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 43, + "raw_slots": [ + "2018-03-11.11-35-00.school", + "2018-03-11.11-35-01.school", + "2018-03-11.11-35-04.school" + ] + }, + "2018-03-11.11-40-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.11-40-00.admin", + "2018-03-11.11-40-01.admin" + ] + }, + "2018-03-11.11-40-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.11-40-00.bus", + "2018-03-11.11-40-01.bus", + "2018-03-11.11-40-08.bus" + ] + }, + "2018-03-11.11-40-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-11.11-40-08.hospital" + ] + }, + "2018-03-11.11-40-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G419", + "G420", + "G421", + "G423" + ], + "contrib/UMD-v1-train": [ + "G330", + "G638" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G474", + "G638" + ], + "kitware-training": [ + "G330", + "G339", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 29, + "raw_slots": [ + "2018-03-11.11-40-00.school", + "2018-03-11.11-40-01.school", + "2018-03-11.11-40-02.school", + "2018-03-11.11-40-04.school" + ] + }, + "2018-03-11.11-45-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.11-45-00.admin", + "2018-03-11.11-45-01.admin" + ] + }, + "2018-03-11.11-45-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.11-45-00.bus", + "2018-03-11.11-45-01.bus", + "2018-03-11.11-45-08.bus" + ] + }, + "2018-03-11.11-45-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-11.11-45-08.hospital" + ] + }, + "2018-03-11.11-45-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G330", + "G419", + "G420", + "G421", + "G423", + "G638" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 31, + "raw_slots": [ + "2018-03-11.11-45-00.school", + "2018-03-11.11-45-01.school", + "2018-03-11.11-45-04.school" + ] + }, + "2018-03-11.11-50-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-11.11-50-00.admin", + "2018-03-11.11-50-01.admin" + ] + }, + "2018-03-11.11-50-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-11.11-50-00.bus", + "2018-03-11.11-50-01.bus", + "2018-03-11.11-50-08.bus" + ] + }, + "2018-03-11.11-50-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-11.11-50-08.hospital" + ] + }, + "2018-03-11.11-50-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/IBM-person-vehicle": [ + "G330", + "G424" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G330", + "G339" + ], + "nist-json": [ + "G300", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 44, + "raw_slots": [ + "2018-03-11.11-50-00.school", + "2018-03-11.11-50-01.school", + "2018-03-11.11-50-04.school" + ] + }, + "2018-03-11.11-55-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.11-55-00.admin", + "2018-03-11.11-55-01.admin" + ] + }, + "2018-03-11.11-55-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-11.11-55-00.bus", + "2018-03-11.11-55-01.bus", + "2018-03-11.11-55-08.bus" + ] + }, + "2018-03-11.11-55-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.11-55-08.hospital" + ] + }, + "2018-03-11.11-55-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 27, + "raw_slots": [ + "2018-03-11.11-55-00.school", + "2018-03-11.11-55-01.school", + "2018-03-11.11-55-04.school" + ] + }, + "2018-03-11.12-00-00.school": { + "cameras": [ + "G299", + "G336", + "G420" + ], + "sources": { + "kitware": [ + "G299", + "G336", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-11.12-00-00.school" + ] + }, + "2018-03-11.13-50-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.13-50-00.admin", + "2018-03-11.13-50-01.admin" + ] + }, + "2018-03-11.13-50-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 16, + "raw_slots": [ + "2018-03-11.13-50-00.bus", + "2018-03-11.13-50-01.bus", + "2018-03-11.13-50-08.bus" + ] + }, + "2018-03-11.13-50-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/UMD-IBM": [ + "G341", + "G436", + "G476" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-11.13-50-00.hospital", + "2018-03-11.13-50-08.hospital" + ] + }, + "2018-03-11.13-50-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G421" + ], + "kitware": [ + "G339", + "G421", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 46, + "raw_slots": [ + "2018-03-11.13-50-00.school", + "2018-03-11.13-50-01.school", + "2018-03-11.13-50-04.school" + ] + }, + "2018-03-11.13-55-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ], + "contrib/CMU-v2": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-11.13-55-00.admin", + "2018-03-11.13-55-01.admin" + ] + }, + "2018-03-11.13-55-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-11.13-55-00.bus", + "2018-03-11.13-55-01.bus", + "2018-03-11.13-55-08.bus" + ] + }, + "2018-03-11.13-55-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.13-55-08.hospital" + ] + }, + "2018-03-11.13-55-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330", + "G339" + ], + "kitware": [ + "G339", + "G420", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 27, + "raw_slots": [ + "2018-03-11.13-55-00.school", + "2018-03-11.13-55-01.school", + "2018-03-11.13-55-04.school" + ] + }, + "2018-03-11.14-00-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.14-00-00.admin", + "2018-03-11.14-00-01.admin" + ] + }, + "2018-03-11.14-00-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-11.14-00-00.bus", + "2018-03-11.14-00-01.bus", + "2018-03-11.14-00-08.bus" + ] + }, + "2018-03-11.14-00-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.14-00-08.hospital" + ] + }, + "2018-03-11.14-00-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/IBM-person-vehicle": [ + "G299", + "G330", + "G423" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638", + "G639" + ], + "kitware": [ + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 41, + "raw_slots": [ + "2018-03-11.14-00-00.school", + "2018-03-11.14-00-01.school", + "2018-03-11.14-00-02.school", + "2018-03-11.14-00-04.school" + ] + }, + "2018-03-11.14-05-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.14-05-00.admin", + "2018-03-11.14-05-01.admin" + ] + }, + "2018-03-11.14-05-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G340", + "G505" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-11.14-05-00.bus", + "2018-03-11.14-05-01.bus", + "2018-03-11.14-05-08.bus" + ] + }, + "2018-03-11.14-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.14-05-08.hospital" + ] + }, + "2018-03-11.14-05-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G420" + ], + "kitware": [ + "G420", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 39, + "raw_slots": [ + "2018-03-11.14-05-00.school", + "2018-03-11.14-05-01.school", + "2018-03-11.14-05-02.school", + "2018-03-11.14-05-04.school" + ] + }, + "2018-03-11.14-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.14-10-00.admin", + "2018-03-11.14-10-01.admin" + ] + }, + "2018-03-11.14-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-11.14-10-00.bus", + "2018-03-11.14-10-01.bus", + "2018-03-11.14-10-08.bus" + ] + }, + "2018-03-11.14-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.14-10-08.hospital" + ] + }, + "2018-03-11.14-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 36, + "raw_slots": [ + "2018-03-11.14-10-00.school", + "2018-03-11.14-10-01.school", + "2018-03-11.14-10-02.school", + "2018-03-11.14-10-04.school" + ] + }, + "2018-03-11.14-15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.14-15-00.admin", + "2018-03-11.14-15-01.admin" + ] + }, + "2018-03-11.14-15-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 16, + "raw_slots": [ + "2018-03-11.14-15-00.bus", + "2018-03-11.14-15-01.bus", + "2018-03-11.14-15-08.bus" + ] + }, + "2018-03-11.14-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.14-15-08.hospital" + ] + }, + "2018-03-11.14-15-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/IBM-person-vehicle": [ + "G299", + "G328" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G299", + "G339", + "G423", + "G638", + "G639" + ], + "kitware-training": [ + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 43, + "raw_slots": [ + "2018-03-11.14-15-00.school", + "2018-03-11.14-15-01.school", + "2018-03-11.14-15-02.school", + "2018-03-11.14-15-04.school" + ] + }, + "2018-03-11.14-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.14-20-00.admin", + "2018-03-11.14-20-01.admin" + ] + }, + "2018-03-11.14-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G505", + "G509" + ], + "kitware": [ + "G340", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 18, + "raw_slots": [ + "2018-03-11.14-20-00.bus", + "2018-03-11.14-20-01.bus", + "2018-03-11.14-20-08.bus" + ] + }, + "2018-03-11.14-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/UMD-IBM": [ + "G341", + "G436", + "G476" + ], + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-11.14-20-00.hospital", + "2018-03-11.14-20-08.hospital" + ] + }, + "2018-03-11.14-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G299", + "G330", + "G419", + "G420", + "G424" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G339", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 41, + "raw_slots": [ + "2018-03-11.14-20-00.school", + "2018-03-11.14-20-01.school", + "2018-03-11.14-20-02.school", + "2018-03-11.14-20-04.school" + ] + }, + "2018-03-11.16-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.16-10-01.admin" + ] + }, + "2018-03-11.16-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.16-10-00.bus", + "2018-03-11.16-10-01.bus", + "2018-03-11.16-10-08.bus" + ] + }, + "2018-03-11.16-10-00.hospital": { + "cameras": [ + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.16-10-08.hospital" + ] + }, + "2018-03-11.16-10-00.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "raw_slots": [ + "2018-03-11.16-10-01.school" + ] + }, + "2018-03-11.16-15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.16-15-01.admin" + ] + }, + "2018-03-11.16-15-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 15, + "raw_slots": [ + "2018-03-11.16-15-00.bus", + "2018-03-11.16-15-01.bus", + "2018-03-11.16-15-08.bus" + ] + }, + "2018-03-11.16-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/UMD-IBM": [ + "G341", + "G436", + "G476" + ], + "kitware": [ + "G301", + "G341", + "G436", + "G479" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-11.16-15-00.hospital", + "2018-03-11.16-15-08.hospital" + ] + }, + "2018-03-11.16-15-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G330", + "G639" + ], + "nist-json": [ + "G421" + ], + "contrib/IBM-person-person": [ + "G420" + ] + }, + "multi_camera": true, + "clip_count": 41, + "raw_slots": [ + "2018-03-11.16-15-00.school", + "2018-03-11.16-15-01.school", + "2018-03-11.16-15-02.school", + "2018-03-11.16-15-04.school" + ] + }, + "2018-03-11.16-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.16-20-01.admin" + ] + }, + "2018-03-11.16-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G506", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 15, + "raw_slots": [ + "2018-03-11.16-20-00.bus", + "2018-03-11.16-20-01.bus", + "2018-03-11.16-20-08.bus" + ] + }, + "2018-03-11.16-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/IBM-person-person": [ + "G476" + ], + "contrib/UMD-IBM": [ + "G341", + "G436", + "G476" + ], + "kitware": [ + "G301", + "G341", + "G436", + "G479" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-11.16-20-00.hospital", + "2018-03-11.16-20-08.hospital" + ] + }, + "2018-03-11.16-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299", + "G336" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G639" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 41, + "raw_slots": [ + "2018-03-11.16-20-00.school", + "2018-03-11.16-20-01.school", + "2018-03-11.16-20-02.school", + "2018-03-11.16-20-04.school" + ] + }, + "2018-03-11.16-25-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.16-25-01.admin" + ] + }, + "2018-03-11.16-25-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G340", + "G475", + "G505", + "G508" + ], + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 14, + "raw_slots": [ + "2018-03-11.16-25-00.bus", + "2018-03-11.16-25-01.bus", + "2018-03-11.16-25-08.bus" + ] + }, + "2018-03-11.16-25-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/UMD-IBM": [ + "G341", + "G436", + "G476" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-11.16-25-00.hospital", + "2018-03-11.16-25-08.hospital" + ] + }, + "2018-03-11.16-25-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G639" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G339", + "G424" + ], + "nist-json": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 41, + "raw_slots": [ + "2018-03-11.16-25-00.school", + "2018-03-11.16-25-01.school", + "2018-03-11.16-25-02.school", + "2018-03-11.16-25-04.school" + ] + }, + "2018-03-11.16-30-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.16-30-01.admin" + ] + }, + "2018-03-11.16-30-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G509" + ], + "contrib/UMD-IBM": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-11.16-30-00.bus", + "2018-03-11.16-30-01.bus", + "2018-03-11.16-30-08.bus" + ] + }, + "2018-03-11.16-30-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-11.16-30-00.hospital", + "2018-03-11.16-30-08.hospital", + "2018-03-11.16-30-09.hospital" + ] + }, + "2018-03-11.16-30-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "kitware-training": [ + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 36, + "raw_slots": [ + "2018-03-11.16-30-00.school", + "2018-03-11.16-30-01.school", + "2018-03-11.16-30-02.school", + "2018-03-11.16-30-04.school" + ] + }, + "2018-03-11.16-35-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.16-35-01.admin" + ] + }, + "2018-03-11.16-35-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G506" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-11.16-35-00.bus", + "2018-03-11.16-35-01.bus", + "2018-03-11.16-35-08.bus" + ] + }, + "2018-03-11.16-35-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/UMD-IBM": [ + "G341", + "G436", + "G476" + ], + "kitware": [ + "G301", + "G341", + "G436", + "G479" + ], + "contrib/IBM-person-person": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-11.16-35-00.hospital", + "2018-03-11.16-35-08.hospital" + ] + }, + "2018-03-11.16-35-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G424", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G639" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 42, + "raw_slots": [ + "2018-03-11.16-35-00.school", + "2018-03-11.16-35-01.school", + "2018-03-11.16-35-02.school", + "2018-03-11.16-35-04.school" + ] + }, + "2018-03-11.16-40-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.16-40-01.admin" + ] + }, + "2018-03-11.16-40-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G506" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G506" + ], + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-11.16-40-00.bus", + "2018-03-11.16-40-01.bus", + "2018-03-11.16-40-08.bus" + ] + }, + "2018-03-11.16-40-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G436", + "G476" + ], + "contrib/UMD-IBM": [ + "G341", + "G436", + "G476" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-11.16-40-00.hospital", + "2018-03-11.16-40-08.hospital" + ] + }, + "2018-03-11.16-40-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 38, + "raw_slots": [ + "2018-03-11.16-40-00.school", + "2018-03-11.16-40-01.school", + "2018-03-11.16-40-02.school", + "2018-03-11.16-40-04.school" + ] + }, + "2018-03-11.16-45-00.bus": { + "cameras": [ + "G331", + "G505", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-11.16-45-00.bus" + ] + }, + "2018-03-11.16-45-00.school": { + "cameras": [ + "G299", + "G330", + "G421", + "G423" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G421", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-11.16-45-00.school" + ] + }, + "2018-03-11.17-10-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "raw_slots": [ + "2018-03-11.17-10-01.admin" + ] + }, + "2018-03-11.17-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.17-10-00.bus", + "2018-03-11.17-10-01.bus", + "2018-03-11.17-10-08.bus" + ] + }, + "2018-03-11.17-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-11.17-10-08.hospital", + "2018-03-11.17-10-09.hospital" + ] + }, + "2018-03-11.17-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G330", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G336", + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-11.17-10-00.school", + "2018-03-11.17-10-01.school", + "2018-03-11.17-10-02.school", + "2018-03-11.17-10-04.school" + ] + }, + "2018-03-11.17-15-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "raw_slots": [ + "2018-03-11.17-15-01.admin" + ] + }, + "2018-03-11.17-15-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.17-15-00.bus", + "2018-03-11.17-15-01.bus", + "2018-03-11.17-15-08.bus" + ] + }, + "2018-03-11.17-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-11.17-15-08.hospital", + "2018-03-11.17-15-09.hospital" + ] + }, + "2018-03-11.17-15-00.school": { + "cameras": [ + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G336", + "G423" + ], + "kitware-training": [ + "G300", + "G330", + "G339", + "G419", + "G420", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-11.17-15-00.school", + "2018-03-11.17-15-01.school", + "2018-03-11.17-15-02.school", + "2018-03-11.17-15-04.school" + ] + }, + "2018-03-11.17-20-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "raw_slots": [ + "2018-03-11.17-20-01.admin" + ] + }, + "2018-03-11.17-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.17-20-00.bus", + "2018-03-11.17-20-01.bus", + "2018-03-11.17-20-08.bus" + ] + }, + "2018-03-11.17-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-11.17-20-08.hospital", + "2018-03-11.17-20-09.hospital" + ] + }, + "2018-03-11.17-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G328", + "G420", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-11.17-20-00.school", + "2018-03-11.17-20-01.school", + "2018-03-11.17-20-02.school", + "2018-03-11.17-20-04.school" + ] + }, + "2018-03-11.17-25-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-11.17-25-01.admin" + ] + }, + "2018-03-11.17-25-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ], + "kitware": [ + "G340", + "G506" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-11.17-25-00.bus", + "2018-03-11.17-25-01.bus", + "2018-03-11.17-25-08.bus" + ] + }, + "2018-03-11.17-25-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-11.17-25-08.hospital", + "2018-03-11.17-25-09.hospital" + ] + }, + "2018-03-11.17-25-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G420", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-11.17-25-00.school", + "2018-03-11.17-25-01.school", + "2018-03-11.17-25-02.school", + "2018-03-11.17-25-04.school" + ] + }, + "2018-03-12.10-00-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326" + ], + "nist-json": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-12.10-00-01.admin", + "2018-03-12.10-00-02.admin" + ] + }, + "2018-03-12.10-00-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340", + "G505", + "G506" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-12.10-00-00.bus", + "2018-03-12.10-00-01.bus" + ] + }, + "2018-03-12.10-00-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G436", + "G479" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-12.10-00-00.hospital" + ] + }, + "2018-03-12.10-00-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G299", + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G299", + "G330", + "G420" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G339", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 47, + "raw_slots": [ + "2018-03-12.10-00-00.school", + "2018-03-12.10-00-01.school", + "2018-03-12.10-00-02.school", + "2018-03-12.10-00-04.school", + "2018-03-12.10-00-05.school" + ] + }, + "2018-03-12.10-05-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-12.10-05-01.admin" + ] + }, + "2018-03-12.10-05-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-12.10-05-00.bus", + "2018-03-12.10-05-01.bus" + ] + }, + "2018-03-12.10-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G479" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-12.10-05-00.hospital" + ] + }, + "2018-03-12.10-05-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330", + "G419", + "G423" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G639" + ], + "kitware-training": [ + "G300", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 32, + "raw_slots": [ + "2018-03-12.10-05-00.school", + "2018-03-12.10-05-01.school", + "2018-03-12.10-05-02.school", + "2018-03-12.10-05-03.school", + "2018-03-12.10-05-04.school", + "2018-03-12.10-05-05.school" + ] + }, + "2018-03-12.10-10-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "raw_slots": [ + "2018-03-12.10-10-01.admin" + ] + }, + "2018-03-12.10-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-12.10-10-00.bus", + "2018-03-12.10-10-01.bus" + ] + }, + "2018-03-12.10-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G476" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-12.10-10-00.hospital" + ] + }, + "2018-03-12.10-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G299" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "kitware": [ + "G421", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 26, + "raw_slots": [ + "2018-03-12.10-10-00.school", + "2018-03-12.10-10-01.school", + "2018-03-12.10-10-02.school", + "2018-03-12.10-10-03.school", + "2018-03-12.10-10-04.school", + "2018-03-12.10-10-05.school" + ] + }, + "2018-03-12.10-15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-12.10-15-01.admin" + ] + }, + "2018-03-12.10-15-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-12.10-15-00.bus", + "2018-03-12.10-15-01.bus" + ] + }, + "2018-03-12.10-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "contrib/IBM-person-person": [ + "G341", + "G476" + ], + "contrib/IBM-person-vehicle": [ + "G341", + "G476" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-12.10-15-00.hospital" + ] + }, + "2018-03-12.10-15-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G423", + "G424", + "G474", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G336", + "G424" + ], + "kitware-training": [ + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 24, + "raw_slots": [ + "2018-03-12.10-15-00.school", + "2018-03-12.10-15-01.school", + "2018-03-12.10-15-02.school", + "2018-03-12.10-15-03.school", + "2018-03-12.10-15-04.school", + "2018-03-12.10-15-05.school" + ] + }, + "2018-03-12.10-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-12.10-20-01.admin" + ] + }, + "2018-03-12.10-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-12.10-20-00.bus", + "2018-03-12.10-20-01.bus" + ] + }, + "2018-03-12.10-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-12.10-20-00.hospital" + ] + }, + "2018-03-12.10-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G423" + ], + "contrib/UMD-v1-train": [ + "G330", + "G423" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 20, + "raw_slots": [ + "2018-03-12.10-20-00.school", + "2018-03-12.10-20-01.school", + "2018-03-12.10-20-02.school", + "2018-03-12.10-20-03.school", + "2018-03-12.10-20-04.school", + "2018-03-12.10-20-05.school" + ] + }, + "2018-03-12.10-25-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-12.10-25-01.admin" + ] + }, + "2018-03-12.10-25-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-12.10-25-00.bus", + "2018-03-12.10-25-01.bus" + ] + }, + "2018-03-12.10-25-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-12.10-25-00.hospital" + ] + }, + "2018-03-12.10-25-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G420", + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G423" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G421", + "G638" + ], + "kitware-training": [ + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 29, + "raw_slots": [ + "2018-03-12.10-25-00.school", + "2018-03-12.10-25-01.school", + "2018-03-12.10-25-02.school", + "2018-03-12.10-25-03.school", + "2018-03-12.10-25-04.school", + "2018-03-12.10-25-05.school" + ] + }, + "2018-03-12.10-30-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-12.10-30-00.admin", + "2018-03-12.10-30-01.admin" + ] + }, + "2018-03-12.10-30-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-12.10-30-00.bus", + "2018-03-12.10-30-01.bus" + ] + }, + "2018-03-12.10-30-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-12.10-30-00.hospital" + ] + }, + "2018-03-12.10-30-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299", + "G330" + ], + "kitware": [ + "G330", + "G336", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G339", + "G419", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 27, + "raw_slots": [ + "2018-03-12.10-30-00.school", + "2018-03-12.10-30-01.school", + "2018-03-12.10-30-02.school", + "2018-03-12.10-30-03.school", + "2018-03-12.10-30-04.school", + "2018-03-12.10-30-05.school" + ] + }, + "2018-03-12.10-40-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-12.10-40-00.admin", + "2018-03-12.10-40-01.admin" + ] + }, + "2018-03-12.10-40-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-12.10-40-00.bus", + "2018-03-12.10-40-01.bus" + ] + }, + "2018-03-12.10-40-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-12.10-40-00.hospital" + ] + }, + "2018-03-12.10-40-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G421" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G330", + "G339", + "G421", + "G638" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G639" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "nist-json": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 31, + "raw_slots": [ + "2018-03-12.10-40-00.school", + "2018-03-12.10-40-01.school", + "2018-03-12.10-40-02.school", + "2018-03-12.10-40-03.school", + "2018-03-12.10-40-04.school", + "2018-03-12.10-40-05.school" + ] + }, + "2018-03-12.10-45-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-12.10-45-00.admin", + "2018-03-12.10-45-01.admin" + ] + }, + "2018-03-12.10-45-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505", + "G506" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-12.10-45-00.bus", + "2018-03-12.10-45-01.bus" + ] + }, + "2018-03-12.10-45-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G436", + "G479" + ], + "kitware": [ + "G301", + "G436" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-12.10-45-00.hospital" + ] + }, + "2018-03-12.10-45-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G420" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G328", + "G330", + "G421", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "nist-json": [ + "G328", + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 33, + "raw_slots": [ + "2018-03-12.10-45-00.school", + "2018-03-12.10-45-01.school", + "2018-03-12.10-45-02.school", + "2018-03-12.10-45-03.school", + "2018-03-12.10-45-04.school", + "2018-03-12.10-45-05.school" + ] + }, + "2018-03-12.10-50-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-12.10-50-01.admin", + "2018-03-12.10-50-02.admin" + ] + }, + "2018-03-12.10-50-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-12.10-50-00.bus", + "2018-03-12.10-50-01.bus" + ] + }, + "2018-03-12.10-50-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436", + "G479" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-12.10-50-00.hospital" + ] + }, + "2018-03-12.10-50-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G638" + ], + "contrib/UMD-v1-train": [ + "G330", + "G339" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G330", + "G423", + "G639" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G638" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "nist-json": [ + "G423" + ] + }, + "multi_camera": true, + "clip_count": 31, + "raw_slots": [ + "2018-03-12.10-50-00.school", + "2018-03-12.10-50-01.school", + "2018-03-12.10-50-02.school", + "2018-03-12.10-50-03.school", + "2018-03-12.10-50-04.school", + "2018-03-12.10-50-05.school" + ] + }, + "2018-03-12.10-55-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-12.10-55-01.admin", + "2018-03-12.10-55-02.admin" + ] + }, + "2018-03-12.10-55-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506" + ], + "contrib/UMD-v1-val": [ + "G340" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-12.10-55-00.bus" + ] + }, + "2018-03-12.10-55-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-12.10-55-00.hospital" + ] + }, + "2018-03-12.10-55-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G330", + "G421" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G423" + ] + }, + "multi_camera": true, + "clip_count": 25, + "raw_slots": [ + "2018-03-12.10-55-00.school", + "2018-03-12.10-55-01.school", + "2018-03-12.10-55-02.school", + "2018-03-12.10-55-03.school", + "2018-03-12.10-55-04.school", + "2018-03-12.10-55-05.school" + ] + }, + "2018-03-12.11-00-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-12.11-00-01.admin" + ] + }, + "2018-03-12.11-00-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505", + "G506" + ], + "contrib/IBM-person-person": [ + "G475" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-12.11-00-00.bus", + "2018-03-12.11-00-01.bus" + ] + }, + "2018-03-12.11-00-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/IBM-person-person": [ + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G341", + "G476" + ], + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-12.11-00-00.hospital" + ] + }, + "2018-03-12.11-00-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G420", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638" + ], + "kitware": [ + "G423", + "G424", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 28, + "raw_slots": [ + "2018-03-12.11-00-00.school", + "2018-03-12.11-00-01.school", + "2018-03-12.11-00-02.school", + "2018-03-12.11-00-03.school", + "2018-03-12.11-00-04.school", + "2018-03-12.11-00-05.school" + ] + }, + "2018-03-12.11-05-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "raw_slots": [ + "2018-03-12.11-05-01.admin" + ] + }, + "2018-03-12.11-05-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-12.11-05-00.bus", + "2018-03-12.11-05-01.bus" + ] + }, + "2018-03-12.11-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-12.11-05-00.hospital" + ] + }, + "2018-03-12.11-05-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G336", + "G419", + "G420", + "G421", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299", + "G330" + ], + "kitware": [ + "G328", + "G330", + "G420", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G339", + "G419", + "G421", + "G424", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "contrib/UMD-v1-val": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 26, + "raw_slots": [ + "2018-03-12.11-05-00.school", + "2018-03-12.11-05-01.school", + "2018-03-12.11-05-02.school", + "2018-03-12.11-05-03.school", + "2018-03-12.11-05-04.school", + "2018-03-12.11-05-05.school" + ] + }, + "2018-03-12.11-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-12.11-10-01.admin" + ] + }, + "2018-03-12.11-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-12.11-10-00.bus" + ] + }, + "2018-03-12.11-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-12.11-10-00.hospital" + ] + }, + "2018-03-12.11-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G328", + "G336", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G419", + "G420", + "G421", + "G423", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G423" + ], + "nist-json": [ + "G423" + ] + }, + "multi_camera": true, + "clip_count": 26, + "raw_slots": [ + "2018-03-12.11-10-00.school", + "2018-03-12.11-10-01.school", + "2018-03-12.11-10-02.school", + "2018-03-12.11-10-03.school", + "2018-03-12.11-10-04.school", + "2018-03-12.11-10-05.school" + ] + }, + "2018-03-13.15-50-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-13.15-50-01.admin" + ] + }, + "2018-03-13.15-50-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G340", + "G505", + "G506" + ], + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 14, + "raw_slots": [ + "2018-03-13.15-50-00.bus", + "2018-03-13.15-50-04.bus" + ] + }, + "2018-03-13.15-50-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/UMD-IBM": [ + "G341", + "G436", + "G476" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-13.15-50-00.hospital", + "2018-03-13.15-50-02.hospital" + ] + }, + "2018-03-13.15-50-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G474", + "G639" + ], + "contrib/UMD-v1-train": [ + "G424", + "G638" + ], + "contrib/UMD-v1-val": [ + "G328", + "G421" + ], + "kitware": [ + "G336", + "G419", + "G421", + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G420", + "G423", + "G424", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 35, + "raw_slots": [ + "2018-03-13.15-50-00.school", + "2018-03-13.15-50-01.school", + "2018-03-13.15-50-02.school", + "2018-03-13.15-50-03.school", + "2018-03-13.15-50-05.school", + "2018-03-13.15-50-08.school" + ] + }, + "2018-03-13.15-55-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.15-55-01.admin" + ] + }, + "2018-03-13.15-55-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-13.15-55-00.bus", + "2018-03-13.15-55-04.bus" + ] + }, + "2018-03-13.15-55-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G476", + "G479" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "kitware": [ + "G301", + "G436" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 12, + "raw_slots": [ + "2018-03-13.15-55-00.hospital", + "2018-03-13.15-55-02.hospital" + ] + }, + "2018-03-13.15-55-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "contrib/IBM-person-person": [ + "G421", + "G474" + ], + "contrib/UMD-IBM": [ + "G299", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G336", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G299", + "G330", + "G424", + "G638" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 37, + "raw_slots": [ + "2018-03-13.15-55-00.school", + "2018-03-13.15-55-01.school", + "2018-03-13.15-55-02.school", + "2018-03-13.15-55-03.school", + "2018-03-13.15-55-05.school", + "2018-03-13.15-55-08.school" + ] + }, + "2018-03-13.16-00-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.16-00-01.admin" + ] + }, + "2018-03-13.16-00-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G340", + "G475", + "G505", + "G506" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 15, + "raw_slots": [ + "2018-03-13.16-00-00.bus", + "2018-03-13.16-00-05.bus" + ] + }, + "2018-03-13.16-00-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G479" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-13.16-00-00.hospital", + "2018-03-13.16-00-02.hospital" + ] + }, + "2018-03-13.16-00-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G300", + "G328", + "G336", + "G339", + "G424", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G424", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G336", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423" + ], + "contrib/UMD-v1-train": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 26, + "raw_slots": [ + "2018-03-13.16-00-00.school", + "2018-03-13.16-00-01.school", + "2018-03-13.16-00-02.school", + "2018-03-13.16-00-03.school", + "2018-03-13.16-00-05.school", + "2018-03-13.16-00-08.school" + ] + }, + "2018-03-13.16-05-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.16-05-01.admin" + ] + }, + "2018-03-13.16-05-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 19, + "raw_slots": [ + "2018-03-13.16-05-00.bus", + "2018-03-13.16-05-05.bus" + ] + }, + "2018-03-13.16-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/UMD-IBM": [ + "G341", + "G436", + "G476" + ], + "contrib/CMU-v2": [ + "G341" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-13.16-05-00.hospital", + "2018-03-13.16-05-02.hospital" + ] + }, + "2018-03-13.16-05-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G638" + ], + "kitware": [ + "G328", + "G336", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G419", + "G420", + "G423", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 31, + "raw_slots": [ + "2018-03-13.16-05-00.school", + "2018-03-13.16-05-01.school", + "2018-03-13.16-05-02.school", + "2018-03-13.16-05-03.school", + "2018-03-13.16-05-05.school", + "2018-03-13.16-05-08.school" + ] + }, + "2018-03-13.16-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.16-10-01.admin" + ] + }, + "2018-03-13.16-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G508" + ], + "contrib/IBM-person-person": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 14, + "raw_slots": [ + "2018-03-13.16-10-00.bus", + "2018-03-13.16-10-05.bus" + ] + }, + "2018-03-13.16-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436", + "G479" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-13.16-10-00.hospital", + "2018-03-13.16-10-02.hospital" + ] + }, + "2018-03-13.16-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "kitware": [ + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 34, + "raw_slots": [ + "2018-03-13.16-10-00.school", + "2018-03-13.16-10-01.school", + "2018-03-13.16-10-03.school", + "2018-03-13.16-10-05.school", + "2018-03-13.16-10-08.school" + ] + }, + "2018-03-13.16-15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.16-15-01.admin" + ] + }, + "2018-03-13.16-15-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G340", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 16, + "raw_slots": [ + "2018-03-13.16-15-00.bus", + "2018-03-13.16-15-05.bus" + ] + }, + "2018-03-13.16-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436", + "G476" + ], + "contrib/CMU-v2": [ + "G341" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-13.16-15-00.hospital", + "2018-03-13.16-15-02.hospital" + ] + }, + "2018-03-13.16-15-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G424", + "G638" + ], + "contrib/IBM-person-person": [ + "G336", + "G474" + ], + "contrib/UMD-IBM": [ + "G336", + "G421", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 23, + "raw_slots": [ + "2018-03-13.16-15-00.school", + "2018-03-13.16-15-01.school", + "2018-03-13.16-15-03.school", + "2018-03-13.16-15-05.school", + "2018-03-13.16-15-08.school" + ] + }, + "2018-03-13.16-16-00.school": { + "cameras": [ + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + }, + "multi_camera": false, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.16-16-02.school" + ] + }, + "2018-03-13.16-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.16-20-01.admin" + ] + }, + "2018-03-13.16-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506" + ], + "contrib/UMD-IBM": [ + "G340", + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 14, + "raw_slots": [ + "2018-03-13.16-20-00.bus", + "2018-03-13.16-20-05.bus" + ] + }, + "2018-03-13.16-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436", + "G479" + ], + "contrib/UMD-IBM": [ + "G301", + "G436", + "G479" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-13.16-20-00.hospital", + "2018-03-13.16-20-02.hospital" + ] + }, + "2018-03-13.16-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424" + ], + "contrib/IBM-person-person": [ + "G336", + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G336", + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "kitware": [ + "G336", + "G339", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 33, + "raw_slots": [ + "2018-03-13.16-20-00.school", + "2018-03-13.16-20-01.school", + "2018-03-13.16-20-03.school", + "2018-03-13.16-20-05.school", + "2018-03-13.16-20-08.school" + ] + }, + "2018-03-13.16-25-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-13.16-25-01.admin" + ] + }, + "2018-03-13.16-25-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-13.16-25-00.bus", + "2018-03-13.16-25-05.bus" + ] + }, + "2018-03-13.16-25-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-13.16-25-02.hospital" + ] + }, + "2018-03-13.16-25-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 32, + "raw_slots": [ + "2018-03-13.16-25-00.school", + "2018-03-13.16-25-01.school", + "2018-03-13.16-25-03.school", + "2018-03-13.16-25-05.school", + "2018-03-13.16-25-08.school" + ] + }, + "2018-03-13.16-26-00.school": { + "cameras": [ + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + }, + "multi_camera": false, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.16-26-28.school" + ] + }, + "2018-03-13.16-30-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-13.16-30-01.admin" + ] + }, + "2018-03-13.16-30-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-13.16-30-00.bus", + "2018-03-13.16-30-04.bus" + ] + }, + "2018-03-13.16-30-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-13.16-30-02.hospital", + "2018-03-13.16-30-03.hospital" + ] + }, + "2018-03-13.16-30-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G639" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 40, + "raw_slots": [ + "2018-03-13.16-30-00.school", + "2018-03-13.16-30-01.school", + "2018-03-13.16-30-03.school", + "2018-03-13.16-30-05.school", + "2018-03-13.16-30-08.school" + ] + }, + "2018-03-13.16-32-00.school": { + "cameras": [ + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ], + "contrib/UMD-v1-val": [ + "G421" + ] + }, + "multi_camera": false, + "clip_count": 3, + "raw_slots": [ + "2018-03-13.16-32-54.school" + ] + }, + "2018-03-13.17-05-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-13.17-05-01.admin" + ] + }, + "2018-03-13.17-05-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505" + ], + "contrib/UMD-IBM": [ + "G340", + "G475", + "G505", + "G506" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-13.17-05-00.bus", + "2018-03-13.17-05-05.bus" + ] + }, + "2018-03-13.17-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-13.17-05-02.hospital", + "2018-03-13.17-05-03.hospital" + ] + }, + "2018-03-13.17-05-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G336", + "G339", + "G420", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G299", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638" + ], + "nist-json": [ + "G328", + "G336", + "G421" + ], + "contrib/UMD-v1-train": [ + "G419" + ] + }, + "multi_camera": true, + "clip_count": 37, + "raw_slots": [ + "2018-03-13.17-05-00.school", + "2018-03-13.17-05-01.school", + "2018-03-13.17-05-03.school", + "2018-03-13.17-05-05.school", + "2018-03-13.17-05-08.school" + ] + }, + "2018-03-13.17-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.17-10-01.admin" + ] + }, + "2018-03-13.17-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340", + "G475", + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/CMU-v2": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-13.17-10-00.bus", + "2018-03-13.17-10-05.bus" + ] + }, + "2018-03-13.17-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341" + ], + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-13.17-10-02.hospital", + "2018-03-13.17-10-03.hospital" + ] + }, + "2018-03-13.17-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G330", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G336", + "G421" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 29, + "raw_slots": [ + "2018-03-13.17-10-00.school", + "2018-03-13.17-10-01.school", + "2018-03-13.17-10-03.school", + "2018-03-13.17-10-05.school", + "2018-03-13.17-10-08.school" + ] + }, + "2018-03-13.17-15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-13.17-15-01.admin" + ] + }, + "2018-03-13.17-15-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340", + "G475", + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/CMU-v2": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-13.17-15-00.bus", + "2018-03-13.17-15-05.bus" + ] + }, + "2018-03-13.17-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-13.17-15-02.hospital", + "2018-03-13.17-15-03.hospital" + ] + }, + "2018-03-13.17-15-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G638", + "G639" + ], + "kitware": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 29, + "raw_slots": [ + "2018-03-13.17-15-00.school", + "2018-03-13.17-15-01.school", + "2018-03-13.17-15-03.school", + "2018-03-13.17-15-05.school", + "2018-03-13.17-15-08.school" + ] + }, + "2018-03-13.17-16-00.school": { + "cameras": [ + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + }, + "multi_camera": false, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.17-16-48.school" + ] + }, + "2018-03-13.17-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.17-20-01.admin" + ] + }, + "2018-03-13.17-20-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340", + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/CMU-v2": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-13.17-20-00.bus", + "2018-03-13.17-20-05.bus" + ] + }, + "2018-03-13.17-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "contrib/UMD-v1-train": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-13.17-20-02.hospital", + "2018-03-13.17-20-03.hospital" + ] + }, + "2018-03-13.17-20-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G419", + "G420", + "G421", + "G424", + "G474", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G424", + "G474", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "kitware": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 32, + "raw_slots": [ + "2018-03-13.17-20-00.school", + "2018-03-13.17-20-01.school", + "2018-03-13.17-20-03.school", + "2018-03-13.17-20-05.school", + "2018-03-13.17-20-08.school", + "2018-03-13.17-20-14.school" + ] + }, + "2018-03-13.17-21-00.school": { + "cameras": [ + "G421" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G421" + ] + }, + "multi_camera": false, + "clip_count": 1, + "raw_slots": [ + "2018-03-13.17-21-20.school" + ] + }, + "2018-03-13.17-24-00.school": { + "cameras": [ + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + }, + "multi_camera": false, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.17-24-36.school" + ] + }, + "2018-03-13.17-25-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.17-25-01.admin" + ] + }, + "2018-03-13.17-25-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/IBM-person-person": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-13.17-25-00.bus", + "2018-03-13.17-25-05.bus" + ] + }, + "2018-03-13.17-25-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341" + ], + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-13.17-25-02.hospital", + "2018-03-13.17-25-03.hospital" + ] + }, + "2018-03-13.17-25-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G474" + ], + "contrib/UMD-IBM": [ + "G328", + "G330", + "G339", + "G419", + "G420", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G336", + "G421" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G419" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "nist-json": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 39, + "raw_slots": [ + "2018-03-13.17-25-00.school", + "2018-03-13.17-25-01.school", + "2018-03-13.17-25-03.school", + "2018-03-13.17-25-05.school", + "2018-03-13.17-25-08.school" + ] + }, + "2018-03-13.17-30-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-13.17-30-01.admin" + ] + }, + "2018-03-13.17-30-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "contrib/UMD-IBM": [ + "G340", + "G475" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-13.17-30-00.bus", + "2018-03-13.17-30-01.bus", + "2018-03-13.17-30-05.bus" + ] + }, + "2018-03-13.17-30-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/UMD-IBM": [ + "G436", + "G476" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G341" + ], + "contrib/IBM-person-person": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-13.17-30-00.hospital", + "2018-03-13.17-30-02.hospital", + "2018-03-13.17-30-03.hospital" + ] + }, + "2018-03-13.17-30-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G421", + "G424", + "G474" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 30, + "raw_slots": [ + "2018-03-13.17-30-00.school", + "2018-03-13.17-30-01.school", + "2018-03-13.17-30-03.school", + "2018-03-13.17-30-05.school", + "2018-03-13.17-30-08.school" + ] + }, + "2018-03-13.17-35-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.17-35-01.admin" + ] + }, + "2018-03-13.17-35-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/CMU-v2": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-13.17-35-00.bus", + "2018-03-13.17-35-01.bus", + "2018-03-13.17-35-05.bus" + ] + }, + "2018-03-13.17-35-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-13.17-35-02.hospital", + "2018-03-13.17-35-03.hospital" + ] + }, + "2018-03-13.17-35-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G421" + ], + "contrib/IBM-person-vehicle": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G639" + ], + "contrib/UMD-v1-train": [ + "G336", + "G638" + ], + "kitware": [ + "G330", + "G419" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G299" + ] + }, + "multi_camera": true, + "clip_count": 43, + "raw_slots": [ + "2018-03-13.17-35-00.school", + "2018-03-13.17-35-01.school", + "2018-03-13.17-35-03.school", + "2018-03-13.17-35-05.school", + "2018-03-13.17-35-08.school" + ] + }, + "2018-03-13.17-40-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.17-40-01.admin" + ] + }, + "2018-03-13.17-40-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 7, + "raw_slots": [ + "2018-03-13.17-40-00.bus", + "2018-03-13.17-40-01.bus", + "2018-03-13.17-40-05.bus" + ] + }, + "2018-03-13.17-40-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436", + "G479" + ], + "contrib/UMD-IBM": [ + "G301", + "G436", + "G479" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-13.17-40-00.hospital", + "2018-03-13.17-40-02.hospital", + "2018-03-13.17-40-03.hospital" + ] + }, + "2018-03-13.17-40-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G419", + "G420", + "G421", + "G423" + ], + "contrib/UMD-IBM": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G300" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 30, + "raw_slots": [ + "2018-03-13.17-40-00.school", + "2018-03-13.17-40-01.school", + "2018-03-13.17-40-03.school", + "2018-03-13.17-40-05.school", + "2018-03-13.17-40-08.school" + ] + }, + "2018-03-13.17-41-00.school": { + "cameras": [ + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/IBM-person-vehicle": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + }, + "multi_camera": false, + "clip_count": 3, + "raw_slots": [ + "2018-03-13.17-41-20.school" + ] + }, + "2018-03-13.17-42-00.school": { + "cameras": [ + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + }, + "multi_camera": false, + "clip_count": 2, + "raw_slots": [ + "2018-03-13.17-42-52.school" + ] + }, + "2018-03-15.14-50-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-15.14-50-01.admin" + ] + }, + "2018-03-15.14-50-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G340", + "G475", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware": [ + "G340", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 19, + "raw_slots": [ + "2018-03-15.14-50-00.bus", + "2018-03-15.14-50-01.bus", + "2018-03-15.14-50-04.bus" + ] + }, + "2018-03-15.14-50-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/IBM-person-vehicle": [ + "G476" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-15.14-50-00.hospital", + "2018-03-15.14-50-06.hospital", + "2018-03-15.14-50-07.hospital" + ] + }, + "2018-03-15.14-50-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424", + "G638" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware": [ + "G300", + "G420", + "G421" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G424", + "G638" + ], + "contrib/UMD-v1-val": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 33, + "raw_slots": [ + "2018-03-15.14-50-00.school", + "2018-03-15.14-50-01.school", + "2018-03-15.14-50-03.school" + ] + }, + "2018-03-15.14-55-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 2, + "raw_slots": [ + "2018-03-15.14-55-01.admin" + ] + }, + "2018-03-15.14-55-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 15, + "raw_slots": [ + "2018-03-15.14-55-00.bus", + "2018-03-15.14-55-01.bus", + "2018-03-15.14-55-04.bus" + ] + }, + "2018-03-15.14-55-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G436", + "G476" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-15.14-55-00.hospital", + "2018-03-15.14-55-06.hospital", + "2018-03-15.14-55-07.hospital" + ] + }, + "2018-03-15.14-55-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G336", + "G419", + "G420", + "G421", + "G424", + "G638" + ], + "contrib/IBM-person-person": [ + "G421", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G328", + "G419", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware": [ + "G300", + "G328", + "G336", + "G339", + "G421", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G330", + "G419", + "G420", + "G423", + "G424" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 30, + "raw_slots": [ + "2018-03-15.14-55-00.school", + "2018-03-15.14-55-01.school", + "2018-03-15.14-55-03.school" + ] + }, + "2018-03-15.15-00-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-15.15-00-01.admin" + ] + }, + "2018-03-15.15-00-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-15.15-00-00.bus", + "2018-03-15.15-00-01.bus", + "2018-03-15.15-00-04.bus" + ] + }, + "2018-03-15.15-00-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware": [ + "G301", + "G341", + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-15.15-00-06.hospital", + "2018-03-15.15-00-07.hospital" + ] + }, + "2018-03-15.15-00-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G300", + "G336", + "G420", + "G421", + "G424" + ], + "contrib/IBM-person-person": [ + "G299", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G299", + "G330", + "G339" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 24, + "raw_slots": [ + "2018-03-15.15-00-00.school", + "2018-03-15.15-00-01.school", + "2018-03-15.15-00-03.school" + ] + }, + "2018-03-15.15-05-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/IBM-person-vehicle": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 5, + "raw_slots": [ + "2018-03-15.15-05-01.admin" + ] + }, + "2018-03-15.15-05-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-15.15-05-00.bus", + "2018-03-15.15-05-01.bus", + "2018-03-15.15-05-04.bus" + ] + }, + "2018-03-15.15-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "kitware-training": [ + "G301", + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-15.15-05-00.hospital", + "2018-03-15.15-05-06.hospital", + "2018-03-15.15-05-07.hospital" + ] + }, + "2018-03-15.15-05-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G638" + ], + "contrib/UMD-v1-train": [ + "G419" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G336", + "G339" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 29, + "raw_slots": [ + "2018-03-15.15-05-00.school", + "2018-03-15.15-05-01.school", + "2018-03-15.15-05-03.school" + ] + }, + "2018-03-15.15-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-15.15-10-01.admin" + ] + }, + "2018-03-15.15-10-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G340", + "G475", + "G506" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ], + "nist-json": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 17, + "raw_slots": [ + "2018-03-15.15-10-00.bus", + "2018-03-15.15-10-01.bus", + "2018-03-15.15-10-04.bus" + ] + }, + "2018-03-15.15-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "contrib/IBM-person-vehicle": [ + "G341", + "G476" + ], + "kitware-training": [ + "G301", + "G341" + ], + "contrib/UMD-v1-train": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-15.15-10-00.hospital", + "2018-03-15.15-10-06.hospital", + "2018-03-15.15-10-07.hospital" + ] + }, + "2018-03-15.15-10-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G421", + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G424", + "G638" + ], + "kitware": [ + "G336", + "G339", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 30, + "raw_slots": [ + "2018-03-15.15-10-00.school", + "2018-03-15.15-10-01.school", + "2018-03-15.15-10-03.school" + ] + }, + "2018-03-15.15-15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "raw_slots": [ + "2018-03-15.15-15-01.admin" + ] + }, + "2018-03-15.15-15-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "nist-json": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 15, + "raw_slots": [ + "2018-03-15.15-15-00.bus", + "2018-03-15.15-15-01.bus", + "2018-03-15.15-15-04.bus" + ] + }, + "2018-03-15.15-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-15.15-15-00.hospital", + "2018-03-15.15-15-06.hospital", + "2018-03-15.15-15-07.hospital" + ] + }, + "2018-03-15.15-15-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G300", + "G328", + "G330", + "G336", + "G339", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G300", + "G336", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G300", + "G339", + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 28, + "raw_slots": [ + "2018-03-15.15-15-00.school", + "2018-03-15.15-15-01.school", + "2018-03-15.15-15-03.school" + ] + }, + "2018-03-15.15-30-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-15.15-30-01.admin" + ] + }, + "2018-03-15.15-30-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 17, + "raw_slots": [ + "2018-03-15.15-30-00.bus", + "2018-03-15.15-30-01.bus", + "2018-03-15.15-30-04.bus" + ] + }, + "2018-03-15.15-30-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/IBM-person-vehicle": [ + "G436", + "G476" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 9, + "raw_slots": [ + "2018-03-15.15-30-00.hospital", + "2018-03-15.15-30-06.hospital", + "2018-03-15.15-30-07.hospital" + ] + }, + "2018-03-15.15-30-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G424" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 26, + "raw_slots": [ + "2018-03-15.15-30-00.school", + "2018-03-15.15-30-01.school", + "2018-03-15.15-30-03.school" + ] + }, + "2018-03-15.15-35-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-15.15-35-01.admin" + ] + }, + "2018-03-15.15-35-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G506" + ], + "nist-json": [ + "G506" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 16, + "raw_slots": [ + "2018-03-15.15-35-00.bus", + "2018-03-15.15-35-01.bus", + "2018-03-15.15-35-04.bus" + ] + }, + "2018-03-15.15-35-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/IBM-person-vehicle": [ + "G436", + "G476" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G341" + ], + "contrib/IBM-person-person": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-15.15-35-00.hospital", + "2018-03-15.15-35-06.hospital", + "2018-03-15.15-35-07.hospital" + ] + }, + "2018-03-15.15-35-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G336", + "G424", + "G474" + ], + "contrib/IBM-person-vehicle": [ + "G328", + "G336", + "G423", + "G424", + "G474", + "G639" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G328", + "G339", + "G421", + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G424", + "G639" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 35, + "raw_slots": [ + "2018-03-15.15-35-00.school", + "2018-03-15.15-35-01.school", + "2018-03-15.15-35-03.school" + ] + }, + "2018-03-15.15-40-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-15.15-40-01.admin" + ] + }, + "2018-03-15.15-40-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "contrib/IBM-person-person": [ + "G331" + ], + "contrib/IBM-person-vehicle": [ + "G331", + "G509" + ], + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 14, + "raw_slots": [ + "2018-03-15.15-40-00.bus", + "2018-03-15.15-40-01.bus", + "2018-03-15.15-40-04.bus" + ] + }, + "2018-03-15.15-40-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "contrib/IBM-person-vehicle": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 10, + "raw_slots": [ + "2018-03-15.15-40-00.hospital", + "2018-03-15.15-40-06.hospital", + "2018-03-15.15-40-07.hospital" + ] + }, + "2018-03-15.15-40-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G336", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G419", + "G424", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G638" + ] + }, + "multi_camera": true, + "clip_count": 34, + "raw_slots": [ + "2018-03-15.15-40-00.school", + "2018-03-15.15-40-01.school", + "2018-03-15.15-40-03.school" + ] + }, + "2018-03-15.15-45-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "raw_slots": [ + "2018-03-15.15-45-01.admin" + ] + }, + "2018-03-15.15-45-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G475", + "G506", + "G508" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G508", + "G509" + ], + "nist-json": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 19, + "raw_slots": [ + "2018-03-15.15-45-00.bus", + "2018-03-15.15-45-01.bus", + "2018-03-15.15-45-04.bus" + ] + }, + "2018-03-15.15-45-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "contrib/IBM-person-person": [ + "G476" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G301", + "G341" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 11, + "raw_slots": [ + "2018-03-15.15-45-00.hospital", + "2018-03-15.15-45-06.hospital", + "2018-03-15.15-45-07.hospital" + ] + }, + "2018-03-15.15-45-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G300", + "G336", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G300", + "G336", + "G339", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423", + "G424", + "G639" + ], + "nist-json": [ + "G638" + ] + }, + "multi_camera": true, + "clip_count": 30, + "raw_slots": [ + "2018-03-15.15-45-00.school", + "2018-03-15.15-45-01.school", + "2018-03-15.15-45-02.school", + "2018-03-15.15-45-03.school" + ] + }, + "2018-03-15.15-50-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "raw_slots": [ + "2018-03-15.15-50-01.admin" + ] + }, + "2018-03-15.15-50-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G505", + "G508" + ], + "contrib/IBM-person-vehicle": [ + "G475", + "G506" + ], + "contrib/UMD-IBM": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware": [ + "G331", + "G508" + ], + "kitware-training": [ + "G340", + "G505", + "G506", + "G509" + ], + "contrib/IBM-person-person": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 22, + "raw_slots": [ + "2018-03-15.15-50-00.bus", + "2018-03-15.15-50-01.bus", + "2018-03-15.15-50-04.bus" + ] + }, + "2018-03-15.15-50-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "contrib/IBM-person-person": [ + "G476" + ], + "contrib/IBM-person-vehicle": [ + "G341", + "G436", + "G476" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "kitware": [ + "G301", + "G341" + ], + "kitware-training": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 17, + "raw_slots": [ + "2018-03-15.15-50-00.hospital", + "2018-03-15.15-50-06.hospital", + "2018-03-15.15-50-07.hospital" + ] + }, + "2018-03-15.15-50-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G336", + "G339" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 44, + "raw_slots": [ + "2018-03-15.15-50-00.school", + "2018-03-15.15-50-01.school", + "2018-03-15.15-50-03.school" + ] + }, + "2018-03-15.15-55-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "raw_slots": [ + "2018-03-15.15-55-01.admin" + ] + }, + "2018-03-15.15-55-00.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G508" + ], + "kitware": [ + "G331" + ], + "kitware-training": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/IBM-person-person": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 13, + "raw_slots": [ + "2018-03-15.15-55-00.bus", + "2018-03-15.15-55-01.bus", + "2018-03-15.15-55-04.bus" + ] + }, + "2018-03-15.15-55-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "kitware-training": [ + "G301", + "G341" + ], + "kitware": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "raw_slots": [ + "2018-03-15.15-55-00.hospital", + "2018-03-15.15-55-06.hospital", + "2018-03-15.15-55-07.hospital" + ] + }, + "2018-03-15.15-55-00.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G420", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G328", + "G336", + "G421", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G419", + "G423" + ], + "contrib/UMD-v1-val": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 30, + "raw_slots": [ + "2018-03-15.15-55-00.school", + "2018-03-15.15-55-01.school", + "2018-03-15.15-55-03.school" + ] + } +} \ No newline at end of file diff --git a/meva/data/geom_slot_index.json b/meva/data/geom_slot_index.json new file mode 100644 index 0000000..fa68775 --- /dev/null +++ b/meva/data/geom_slot_index.json @@ -0,0 +1,18678 @@ +{ + "slots": { + "2018-03-05.13-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-05.13-10-00.bus": { + "cameras": [ + "G340", + "G505", + "G506" + ], + "sources": { + "kitware-training": [ + "G340", + "G505", + "G506" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 4 + }, + "2018-03-05.13-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 16 + }, + "2018-03-05.13-10-00.school": { + "cameras": [ + "G299", + "G300", + "G330", + "G336", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 7, + "geom_usable_actors": 25 + }, + "2018-03-05.13-10-01.bus": { + "cameras": [ + "G331", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 30 + }, + "2018-03-05.13-10-01.school": { + "cameras": [ + "G328", + "G339", + "G419", + "G420" + ], + "sources": { + "kitware-training": [ + "G328", + "G339", + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 22 + }, + "2018-03-05.13-15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-05.13-15-00.bus": { + "cameras": [ + "G340", + "G505", + "G506" + ], + "sources": { + "kitware": [ + "G340", + "G505", + "G506" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 96 + }, + "2018-03-05.13-15-00.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 30 + }, + "2018-03-05.13-15-00.school": { + "cameras": [ + "G423", + "G424", + "G299", + "G300", + "G330", + "G336", + "G421" + ], + "sources": { + "kitware": [ + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 7, + "geom_usable_actors": 69 + }, + "2018-03-05.13-15-01.bus": { + "cameras": [ + "G331", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 53 + }, + "2018-03-05.13-15-01.school": { + "cameras": [ + "G328", + "G339", + "G419", + "G420" + ], + "sources": { + "kitware": [ + "G328" + ], + "kitware-training": [ + "G339", + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 59 + }, + "2018-03-05.13-20-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 7 + }, + "2018-03-05.13-20-00.bus": { + "cameras": [ + "G340", + "G506" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 62 + }, + "2018-03-05.13-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 92 + }, + "2018-03-05.13-20-00.school": { + "cameras": [ + "G336", + "G423", + "G424", + "G299", + "G300", + "G330", + "G421" + ], + "sources": { + "kitware": [ + "G336", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 7, + "geom_usable_actors": 182 + }, + "2018-03-05.13-20-01.bus": { + "cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G331" + ], + "kitware-training": [ + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 44 + }, + "2018-03-05.13-20-01.school": { + "cameras": [ + "G328", + "G419", + "G420", + "G339" + ], + "sources": { + "kitware": [ + "G328", + "G419", + "G420" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 185 + }, + "2018-03-05.14-00-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 4 + }, + "2018-03-05.14-00-00.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G508" + ], + "sources": { + "kitware-training": [ + "G340", + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 1 + }, + "2018-03-05.14-00-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 2 + }, + "2018-03-05.14-00-00.school": { + "cameras": [ + "G420", + "G299", + "G300", + "G330", + "G336", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G420" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 8, + "geom_usable_actors": 204 + }, + "2018-03-05.14-00-01.bus": { + "cameras": [ + "G331", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-05.14-00-01.school": { + "cameras": [ + "G328", + "G339", + "G419" + ], + "sources": { + "kitware-training": [ + "G328", + "G339", + "G419" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 27 + }, + "2018-03-05.14-05-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-05.14-05-00.bus": { + "cameras": [ + "G506", + "G340", + "G505", + "G508" + ], + "sources": { + "kitware": [ + "G506" + ], + "kitware-training": [ + "G340", + "G505", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 11 + }, + "2018-03-05.14-05-00.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 3 + }, + "2018-03-05.14-05-00.school": { + "cameras": [ + "G299", + "G300", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 8, + "geom_usable_actors": 203 + }, + "2018-03-05.14-05-01.bus": { + "cameras": [ + "G331", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-05.14-05-01.school": { + "cameras": [ + "G328", + "G339", + "G419" + ], + "sources": { + "kitware": [ + "G328" + ], + "kitware-training": [ + "G339", + "G419" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 9 + }, + "2018-03-05.14-10-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-05.14-10-00.bus": { + "cameras": [ + "G340", + "G505", + "G506" + ], + "sources": { + "kitware-training": [ + "G340", + "G505", + "G506" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 7 + }, + "2018-03-05.14-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 17 + }, + "2018-03-05.14-10-00.school": { + "cameras": [ + "G330", + "G420", + "G421", + "G424", + "G299", + "G300", + "G336", + "G423" + ], + "sources": { + "kitware": [ + "G330", + "G420", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 8, + "geom_usable_actors": 175 + }, + "2018-03-05.14-10-01.bus": { + "cameras": [ + "G331", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 0 + }, + "2018-03-05.14-10-01.school": { + "cameras": [ + "G328", + "G339", + "G419" + ], + "sources": { + "kitware-training": [ + "G328", + "G339", + "G419" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 46 + }, + "2018-03-07.10-55-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware-training": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 9 + }, + "2018-03-07.11-00-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 12 + }, + "2018-03-07.11-00-00.bus": { + "cameras": [ + "G508", + "G331" + ], + "sources": { + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 227 + }, + "2018-03-07.11-00-00.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "kitware-training": [ + "G436" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 251 + }, + "2018-03-07.11-00-00.school": { + "cameras": [ + "G420", + "G299", + "G330", + "G423" + ], + "sources": { + "kitware": [ + "G420" + ], + "kitware-training": [ + "G299", + "G330", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 41 + }, + "2018-03-07.11-00-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-07.11-00-01.bus": { + "cameras": [ + "G505", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 170 + }, + "2018-03-07.11-00-01.school": { + "cameras": [ + "G328", + "G419", + "G421" + ], + "sources": { + "kitware": [ + "G328", + "G419", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 502 + }, + "2018-03-07.11-00-04.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 149 + }, + "2018-03-07.11-00-05.school": { + "cameras": [ + "G424" + ], + "sources": { + "kitware-training": [ + "G424" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 197 + }, + "2018-03-07.11-00-06.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 59 + }, + "2018-03-07.11-00-06.school": { + "cameras": [ + "G300", + "G336" + ], + "sources": { + "kitware": [ + "G300", + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 156 + }, + "2018-03-07.11-00-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "kitware-training": [ + "G301" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-07.11-00-07.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 163 + }, + "2018-03-07.11-05-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 18 + }, + "2018-03-07.11-05-00.bus": { + "cameras": [ + "G331", + "G508" + ], + "sources": { + "kitware": [ + "G331", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 202 + }, + "2018-03-07.11-05-00.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "kitware-training": [ + "G436" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 108 + }, + "2018-03-07.11-05-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G423" + ], + "sources": { + "kitware-training": [ + "G299", + "G330", + "G420", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 13 + }, + "2018-03-07.11-05-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware-training": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 27 + }, + "2018-03-07.11-05-01.bus": { + "cameras": [ + "G505", + "G506", + "G509" + ], + "sources": { + "kitware-training": [ + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 95 + }, + "2018-03-07.11-05-01.school": { + "cameras": [ + "G328", + "G419", + "G421" + ], + "sources": { + "kitware": [ + "G328", + "G419" + ], + "kitware-training": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 329 + }, + "2018-03-07.11-05-04.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 95 + }, + "2018-03-07.11-05-05.school": { + "cameras": [ + "G424" + ], + "sources": { + "kitware-training": [ + "G424" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 199 + }, + "2018-03-07.11-05-06.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 143 + }, + "2018-03-07.11-05-06.school": { + "cameras": [ + "G300", + "G336" + ], + "sources": { + "kitware": [ + "G300" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 143 + }, + "2018-03-07.11-05-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "kitware-training": [ + "G301" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-07.11-05-07.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 102 + }, + "2018-03-07.11-10-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 17 + }, + "2018-03-07.11-10-00.bus": { + "cameras": [ + "G508", + "G331" + ], + "sources": { + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 133 + }, + "2018-03-07.11-10-00.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "kitware": [ + "G436" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 103 + }, + "2018-03-07.11-10-00.school": { + "cameras": [ + "G299", + "G420", + "G330", + "G423" + ], + "sources": { + "kitware": [ + "G299", + "G420" + ], + "kitware-training": [ + "G330", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 24 + }, + "2018-03-07.11-10-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 23 + }, + "2018-03-07.11-10-01.bus": { + "cameras": [ + "G505", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 135 + }, + "2018-03-07.11-10-01.school": { + "cameras": [ + "G419", + "G421", + "G328" + ], + "sources": { + "kitware": [ + "G419", + "G421" + ], + "kitware-training": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 345 + }, + "2018-03-07.11-10-04.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 68 + }, + "2018-03-07.11-10-05.school": { + "cameras": [ + "G424" + ], + "sources": { + "kitware-training": [ + "G424" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 120 + }, + "2018-03-07.11-10-06.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 68 + }, + "2018-03-07.11-10-06.school": { + "cameras": [ + "G300", + "G336" + ], + "sources": { + "kitware": [ + "G300" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 117 + }, + "2018-03-07.11-10-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "kitware-training": [ + "G301" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-07.11-10-07.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 73 + }, + "2018-03-07.16-50-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ], + "nist-json": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-07.16-50-00.bus": { + "cameras": [ + "G340", + "G331", + "G509", + "G506" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G340", + "G506", + "G509" + ], + "nist-json": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 4, + "geom_usable_actors": 280 + }, + "2018-03-07.16-50-00.school": { + "cameras": [ + "G421", + "G330", + "G419", + "G638", + "G299" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G419", + "G638" + ], + "kitware": [ + "G330", + "G419", + "G421", + "G638" + ], + "kitware-training": [ + "G299" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 5, + "geom_usable_actors": 273 + }, + "2018-03-07.16-50-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ], + "nist-json": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-07.16-50-01.bus": { + "cameras": [ + "G505", + "G508" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "contrib/UMD-v1-train": [ + "G508" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 20 + }, + "2018-03-07.16-50-01.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 296 + }, + "2018-03-07.16-50-01.school": { + "cameras": [ + "G328", + "G420", + "G423" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G420", + "G423" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G328", + "G420" + ], + "nist-json": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 77 + }, + "2018-03-07.16-50-05.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 36 + }, + "2018-03-07.16-50-06.school": { + "cameras": [ + "G300", + "G336", + "G339", + "G424" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300", + "G336", + "G339", + "G424" + ], + "kitware": [ + "G300" + ], + "kitware-training": [ + "G336", + "G339", + "G424" + ], + "nist-json": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 4, + "geom_usable_actors": 606 + }, + "2018-03-07.16-50-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware": [ + "G301" + ], + "nist-json": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-07.17-00-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 12 + }, + "2018-03-07.17-00-00.bus": { + "cameras": [ + "G340", + "G331", + "G508", + "G509", + "G506" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 487 + }, + "2018-03-07.17-00-00.school": { + "cameras": [ + "G421", + "G330", + "G638", + "G299", + "G419" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G638" + ], + "kitware": [ + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G419", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 5, + "geom_usable_actors": 310 + }, + "2018-03-07.17-00-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 9 + }, + "2018-03-07.17-00-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 139 + }, + "2018-03-07.17-00-01.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 162 + }, + "2018-03-07.17-00-01.school": { + "cameras": [ + "G328", + "G423", + "G420" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware-training": [ + "G328", + "G420", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 63 + }, + "2018-03-07.17-00-05.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 154 + }, + "2018-03-07.17-00-06.school": { + "cameras": [ + "G336", + "G339", + "G424", + "G300" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G336", + "G339", + "G424" + ], + "kitware-training": [ + "G300", + "G336", + "G339", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 4, + "geom_usable_actors": 722 + }, + "2018-03-07.17-00-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "kitware-training": [ + "G301" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-07.17-05-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-07.17-05-00.bus": { + "cameras": [ + "G340", + "G331", + "G508", + "G509", + "G506" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G340", + "G506" + ], + "nist-json": [ + "G331", + "G340" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 5, + "geom_usable_actors": 274 + }, + "2018-03-07.17-05-00.school": { + "cameras": [ + "G299", + "G421", + "G330", + "G336", + "G419", + "G638" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G419", + "G638" + ], + "kitware": [ + "G336", + "G419" + ], + "kitware-training": [ + "G299", + "G330", + "G421", + "G638" + ], + "nist-json": [ + "G299", + "G336" + ] + }, + "multi_camera": true, + "clip_count": 14, + "geom_cameras": 6, + "geom_usable_actors": 524 + }, + "2018-03-07.17-05-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-07.17-05-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 17 + }, + "2018-03-07.17-05-01.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 120 + }, + "2018-03-07.17-05-01.school": { + "cameras": [ + "G328", + "G420", + "G423" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G420", + "G423" + ], + "kitware": [ + "G420", + "G423" + ], + "kitware-training": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 32 + }, + "2018-03-07.17-05-05.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 65 + }, + "2018-03-07.17-05-06.school": { + "cameras": [ + "G339", + "G424", + "G300" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G424" + ], + "kitware": [ + "G424" + ], + "kitware-training": [ + "G300", + "G339" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 205 + }, + "2018-03-07.17-05-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "kitware-training": [ + "G301" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-07.17-20-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-07.17-20-00.bus": { + "cameras": [ + "G340", + "G331", + "G508", + "G509", + "G506" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G506", + "G508" + ], + "kitware-training": [ + "G340", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 317 + }, + "2018-03-07.17-20-00.school": { + "cameras": [ + "G421", + "G330", + "G336", + "G638", + "G299" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G638" + ], + "kitware": [ + "G336", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 5, + "geom_usable_actors": 373 + }, + "2018-03-07.17-20-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-07.17-20-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 24 + }, + "2018-03-07.17-20-01.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 175 + }, + "2018-03-07.17-20-01.school": { + "cameras": [ + "G328", + "G419", + "G420", + "G423" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G419", + "G420", + "G423" + ], + "kitware": [ + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 4, + "geom_usable_actors": 55 + }, + "2018-03-07.17-20-05.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 37 + }, + "2018-03-07.17-20-06.school": { + "cameras": [ + "G300", + "G339", + "G424" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300", + "G339", + "G424" + ], + "kitware": [ + "G300", + "G424" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 355 + }, + "2018-03-07.17-20-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-07.17-25-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 9 + }, + "2018-03-07.17-25-00.bus": { + "cameras": [ + "G340", + "G331", + "G508", + "G509", + "G506" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 282 + }, + "2018-03-07.17-25-00.school": { + "cameras": [ + "G421", + "G336", + "G638", + "G299", + "G330", + "G419" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G336", + "G638" + ], + "kitware": [ + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G419", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 6, + "geom_usable_actors": 482 + }, + "2018-03-07.17-25-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 7 + }, + "2018-03-07.17-25-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 36 + }, + "2018-03-07.17-25-01.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 226 + }, + "2018-03-07.17-25-01.school": { + "cameras": [ + "G328", + "G420", + "G423" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "kitware-training": [ + "G328", + "G420", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 3, + "geom_usable_actors": 34 + }, + "2018-03-07.17-25-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-07.17-25-05.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 43 + }, + "2018-03-07.17-25-06.school": { + "cameras": [ + "G339", + "G424" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G424" + ], + "kitware": [ + "G424" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 481 + }, + "2018-03-07.17-25-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "kitware-training": [ + "G301" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-07.17-25-10.school": { + "cameras": [ + "G639" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G639" + ], + "kitware-training": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-07.17-30-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 16 + }, + "2018-03-07.17-30-00.bus": { + "cameras": [ + "G340", + "G331", + "G508", + "G509", + "G506" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 524 + }, + "2018-03-07.17-30-00.school": { + "cameras": [ + "G299", + "G421", + "G639", + "G336", + "G638", + "G330" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G336", + "G638" + ], + "kitware": [ + "G421", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G330", + "G336" + ] + }, + "multi_camera": true, + "clip_count": 11, + "geom_cameras": 6, + "geom_usable_actors": 599 + }, + "2018-03-07.17-30-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 12 + }, + "2018-03-07.17-30-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ], + "nist-json": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 189 + }, + "2018-03-07.17-30-01.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 194 + }, + "2018-03-07.17-30-01.school": { + "cameras": [ + "G328", + "G419", + "G420", + "G423" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G419", + "G420", + "G423" + ], + "kitware": [ + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 4, + "geom_usable_actors": 63 + }, + "2018-03-07.17-30-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 1 + }, + "2018-03-07.17-30-05.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 113 + }, + "2018-03-07.17-30-06.school": { + "cameras": [ + "G339", + "G424" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G424" + ], + "kitware-training": [ + "G339", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 775 + }, + "2018-03-07.17-30-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-07.17-35-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 13 + }, + "2018-03-07.17-35-00.bus": { + "cameras": [ + "G340", + "G331", + "G508", + "G509", + "G506" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 211 + }, + "2018-03-07.17-35-00.school": { + "cameras": [ + "G299", + "G421", + "G639", + "G330", + "G336", + "G638" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G638" + ], + "kitware": [ + "G299", + "G421", + "G638" + ], + "kitware-training": [ + "G330", + "G336", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 6, + "geom_usable_actors": 392 + }, + "2018-03-07.17-35-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 11 + }, + "2018-03-07.17-35-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 30 + }, + "2018-03-07.17-35-01.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 133 + }, + "2018-03-07.17-35-01.school": { + "cameras": [ + "G328", + "G419", + "G420", + "G423" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G419", + "G420", + "G423" + ], + "kitware": [ + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 4, + "geom_usable_actors": 71 + }, + "2018-03-07.17-35-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-07.17-35-05.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 55 + }, + "2018-03-07.17-35-06.school": { + "cameras": [ + "G339", + "G424" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G424" + ], + "kitware": [ + "G339" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 306 + }, + "2018-03-07.17-35-07.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 3 + }, + "2018-03-09.10-10-00.bus": { + "cameras": [ + "G508", + "G509", + "G506", + "G331" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 4, + "geom_usable_actors": 11 + }, + "2018-03-09.10-10-00.school": { + "cameras": [ + "G299", + "G328", + "G421", + "G639", + "G300", + "G330", + "G336", + "G419", + "G423", + "G424" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G328", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300", + "G330", + "G336", + "G419", + "G423", + "G424" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G330", + "G424" + ], + "nist-json": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 21, + "geom_cameras": 10, + "geom_usable_actors": 1220 + }, + "2018-03-09.10-10-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 47 + }, + "2018-03-09.10-10-01.bus": { + "cameras": [ + "G340", + "G505" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "kitware": [ + "G340", + "G505" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 54 + }, + "2018-03-09.10-10-01.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 127 + }, + "2018-03-09.10-10-01.school": { + "cameras": [ + "G339", + "G420", + "G638" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G420", + "G638" + ], + "kitware": [ + "G339", + "G638" + ], + "kitware-training": [ + "G420" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 105 + }, + "2018-03-09.10-10-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 10 + }, + "2018-03-09.10-15-00.bus": { + "cameras": [ + "G506", + "G331", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 4, + "geom_usable_actors": 1 + }, + "2018-03-09.10-15-00.school": { + "cameras": [ + "G299", + "G421", + "G639", + "G300", + "G330", + "G336", + "G419", + "G423", + "G424" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300", + "G330", + "G336", + "G419", + "G423", + "G424" + ], + "kitware": [ + "G299", + "G300", + "G336", + "G421" + ], + "kitware-training": [ + "G330", + "G419", + "G423", + "G424", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 18, + "geom_cameras": 9, + "geom_usable_actors": 3201 + }, + "2018-03-09.10-15-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 16 + }, + "2018-03-09.10-15-01.bus": { + "cameras": [ + "G340", + "G505" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "kitware": [ + "G340", + "G505" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 34 + }, + "2018-03-09.10-15-01.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 67 + }, + "2018-03-09.10-15-01.school": { + "cameras": [ + "G328", + "G339", + "G420", + "G638" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G339", + "G420", + "G638" + ], + "kitware": [ + "G328", + "G638" + ], + "kitware-training": [ + "G339", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 4, + "geom_usable_actors": 137 + }, + "2018-03-09.10-15-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-09.10-20-00.bus": { + "cameras": [ + "G506", + "G331", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 4, + "geom_usable_actors": 0 + }, + "2018-03-09.10-20-00.school": { + "cameras": [ + "G299", + "G421", + "G639", + "G330", + "G336", + "G419", + "G423", + "G424", + "G300" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G419", + "G423" + ], + "kitware": [ + "G336", + "G419", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 16, + "geom_cameras": 9, + "geom_usable_actors": 777 + }, + "2018-03-09.10-20-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-09.10-20-01.bus": { + "cameras": [ + "G505", + "G340" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware-training": [ + "G340", + "G505" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-09.10-20-01.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 8 + }, + "2018-03-09.10-20-01.school": { + "cameras": [ + "G328", + "G339", + "G420", + "G638" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G339", + "G420", + "G638" + ], + "kitware": [ + "G328", + "G420" + ], + "kitware-training": [ + "G339", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 4, + "geom_usable_actors": 24 + }, + "2018-03-09.10-25-00.bus": { + "cameras": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 5, + "geom_usable_actors": 0 + }, + "2018-03-09.10-25-00.school": { + "cameras": [ + "G299", + "G421", + "G639", + "G330", + "G336", + "G419", + "G423", + "G300" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G419", + "G423" + ], + "kitware": [ + "G299", + "G330", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 15, + "geom_cameras": 8, + "geom_usable_actors": 317 + }, + "2018-03-09.10-25-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-09.10-25-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware-training": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-09.10-25-01.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 9 + }, + "2018-03-09.10-25-01.school": { + "cameras": [ + "G420", + "G638", + "G328", + "G339", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G420", + "G638" + ], + "kitware": [ + "G420" + ], + "kitware-training": [ + "G328", + "G339", + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 5, + "geom_usable_actors": 5 + }, + "2018-03-09.10-30-00.bus": { + "cameras": [ + "G340", + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 5, + "geom_usable_actors": 0 + }, + "2018-03-09.10-30-00.school": { + "cameras": [ + "G299", + "G330", + "G419", + "G421", + "G423", + "G300", + "G336", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G419", + "G421", + "G423" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "kitware": [ + "G330", + "G419", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 14, + "geom_cameras": 8, + "geom_usable_actors": 235 + }, + "2018-03-09.10-30-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 7 + }, + "2018-03-09.10-30-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "kitware": [ + "G505" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 1 + }, + "2018-03-09.10-30-01.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G301" + ], + "kitware": [ + "G301" + ], + "kitware-training": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 12 + }, + "2018-03-09.10-30-01.school": { + "cameras": [ + "G328", + "G420", + "G424", + "G339", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ], + "kitware": [ + "G328", + "G420", + "G424" + ], + "kitware-training": [ + "G339", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 5, + "geom_usable_actors": 33 + }, + "2018-03-09.10-30-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-09.10-35-00.bus": { + "cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 0 + }, + "2018-03-09.10-35-00.school": { + "cameras": [ + "G299", + "G330", + "G336", + "G419", + "G421", + "G423", + "G639", + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G336", + "G423", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G419", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 16, + "geom_cameras": 8, + "geom_usable_actors": 976 + }, + "2018-03-09.10-35-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 11 + }, + "2018-03-09.10-35-01.bus": { + "cameras": [ + "G340", + "G505" + ], + "sources": { + "kitware": [ + "G340", + "G505" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 29 + }, + "2018-03-09.10-35-01.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 33 + }, + "2018-03-09.10-35-01.school": { + "cameras": [ + "G328", + "G420", + "G424", + "G638", + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420", + "G424", + "G638" + ], + "kitware": [ + "G328", + "G339", + "G424" + ], + "kitware-training": [ + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 5, + "geom_usable_actors": 94 + }, + "2018-03-09.10-35-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-09.10-40-00.bus": { + "cameras": [ + "G475", + "G506", + "G331", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 4, + "geom_usable_actors": 5 + }, + "2018-03-09.10-40-00.school": { + "cameras": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G421", + "G423", + "G474", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G421", + "G423", + "G474", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-v1-train": [ + "G330", + "G419" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G330", + "G336", + "G419" + ], + "kitware-training": [ + "G299", + "G300", + "G421", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 21, + "geom_cameras": 8, + "geom_usable_actors": 727 + }, + "2018-03-09.10-40-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 24 + }, + "2018-03-09.10-40-01.bus": { + "cameras": [ + "G340", + "G505" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505" + ], + "kitware-training": [ + "G340", + "G505" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 68 + }, + "2018-03-09.10-40-01.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 140 + }, + "2018-03-09.10-40-01.school": { + "cameras": [ + "G328", + "G339", + "G420", + "G424", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G339", + "G420", + "G424", + "G638" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G339" + ], + "kitware-training": [ + "G328", + "G420", + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 11, + "geom_cameras": 5, + "geom_usable_actors": 403 + }, + "2018-03-09.10-40-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 1 + }, + "2018-03-11.11-15-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421" + ], + "sources": { + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 7, + "geom_usable_actors": 496 + }, + "2018-03-11.11-15-01.school": { + "cameras": [ + "G424", + "G638" + ], + "sources": { + "kitware": [ + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 152 + }, + "2018-03-11.11-15-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 40 + }, + "2018-03-11.11-15-08.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "kitware": [ + "G436" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 36 + }, + "2018-03-11.11-20-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 12 + }, + "2018-03-11.11-20-00.bus": { + "cameras": [ + "G508", + "G506", + "G331" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/UMD-IBM": [ + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 10 + }, + "2018-03-11.11-20-00.school": { + "cameras": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474", + "G639", + "G328", + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474", + "G639" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/IBM-person-vehicle": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474", + "G639" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 28, + "geom_cameras": 9, + "geom_usable_actors": 1813 + }, + "2018-03-11.11-20-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-11.11-20-01.bus": { + "cameras": [ + "G509", + "G505" + ], + "sources": { + "contrib/CMU-v2": [ + "G509" + ], + "contrib/UMD-IBM": [ + "G505", + "G509" + ], + "kitware-training": [ + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 8 + }, + "2018-03-11.11-20-01.school": { + "cameras": [ + "G638", + "G339", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G638" + ], + "contrib/UMD-IBM": [ + "G339", + "G424", + "G638" + ], + "kitware": [ + "G424", + "G638" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 29 + }, + "2018-03-11.11-20-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-11.11-20-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-20-08.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 34 + }, + "2018-03-11.11-25-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 26 + }, + "2018-03-11.11-25-00.bus": { + "cameras": [ + "G506", + "G508", + "G475", + "G331" + ], + "sources": { + "contrib/CMU-v2": [ + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G475", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 1 + }, + "2018-03-11.11-25-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G474" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G474" + ], + "contrib/IBM-person-person": [ + "G299", + "G330" + ], + "contrib/IBM-person-vehicle": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G420", + "G421", + "G423" + ], + "kitware-training": [ + "G419" + ] + }, + "multi_camera": true, + "clip_count": 28, + "geom_cameras": 8, + "geom_usable_actors": 1232 + }, + "2018-03-11.11-25-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 18 + }, + "2018-03-11.11-25-01.bus": { + "cameras": [ + "G505", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 10 + }, + "2018-03-11.11-25-01.school": { + "cameras": [ + "G339", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G339", + "G424", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G424", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware": [ + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 4, + "geom_usable_actors": 69 + }, + "2018-03-11.11-25-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-25-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 13 + }, + "2018-03-11.11-25-08.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 11 + }, + "2018-03-11.11-30-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 11 + }, + "2018-03-11.11-30-00.bus": { + "cameras": [ + "G506", + "G508", + "G331" + ], + "sources": { + "contrib/CMU-v2": [ + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 4 + }, + "2018-03-11.11-30-00.school": { + "cameras": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474", + "G328" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ], + "kitware": [ + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G299" + ] + }, + "multi_camera": true, + "clip_count": 21, + "geom_cameras": 7, + "geom_usable_actors": 726 + }, + "2018-03-11.11-30-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-11.11-30-01.bus": { + "cameras": [ + "G505", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 6 + }, + "2018-03-11.11-30-01.school": { + "cameras": [ + "G421", + "G424", + "G638", + "G639", + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G424", + "G638" + ], + "contrib/UMD-IBM": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 17, + "geom_cameras": 5, + "geom_usable_actors": 142 + }, + "2018-03-11.11-30-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 27 + }, + "2018-03-11.11-30-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-11.11-30-08.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 32 + }, + "2018-03-11.11-35-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware-training": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-35-00.bus": { + "cameras": [ + "G508", + "G475", + "G506", + "G331" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/UMD-IBM": [ + "G475", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 1 + }, + "2018-03-11.11-35-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ], + "contrib/IBM-person-vehicle": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 24, + "geom_cameras": 7, + "geom_usable_actors": 334 + }, + "2018-03-11.11-35-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-35-01.bus": { + "cameras": [ + "G505", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G509" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 5 + }, + "2018-03-11.11-35-01.school": { + "cameras": [ + "G421", + "G424", + "G638", + "G639", + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G638" + ], + "contrib/UMD-IBM": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 16, + "geom_cameras": 5, + "geom_usable_actors": 80 + }, + "2018-03-11.11-35-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 21 + }, + "2018-03-11.11-35-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-11.11-35-08.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 32 + }, + "2018-03-11.11-40-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware-training": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-40-00.bus": { + "cameras": [ + "G331", + "G506", + "G508" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 0 + }, + "2018-03-11.11-40-00.school": { + "cameras": [ + "G299", + "G330", + "G419", + "G420", + "G328", + "G336", + "G474" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G328", + "G336", + "G419", + "G420", + "G474" + ], + "kitware-training": [ + "G330" + ] + }, + "multi_camera": true, + "clip_count": 15, + "geom_cameras": 7, + "geom_usable_actors": 333 + }, + "2018-03-11.11-40-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-40-01.bus": { + "cameras": [ + "G505", + "G509" + ], + "sources": { + "kitware-training": [ + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.11-40-01.school": { + "cameras": [ + "G421", + "G638", + "G639", + "G424", + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 25 + }, + "2018-03-11.11-40-02.school": { + "cameras": [ + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G423" + ], + "contrib/UMD-IBM": [ + "G423" + ], + "kitware": [ + "G423" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 38 + }, + "2018-03-11.11-40-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-40-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-40-08.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 0 + }, + "2018-03-11.11-45-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware-training": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-45-00.bus": { + "cameras": [ + "G331", + "G506", + "G508" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 0 + }, + "2018-03-11.11-45-00.school": { + "cameras": [ + "G299", + "G330", + "G419", + "G420", + "G423", + "G328", + "G336", + "G474" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G419", + "G420", + "G423" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ] + }, + "multi_camera": true, + "clip_count": 19, + "geom_cameras": 8, + "geom_usable_actors": 1019 + }, + "2018-03-11.11-45-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-45-01.bus": { + "cameras": [ + "G505", + "G509" + ], + "sources": { + "kitware-training": [ + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.11-45-01.school": { + "cameras": [ + "G421", + "G638", + "G639", + "G424", + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G638" + ], + "contrib/UMD-IBM": [ + "G421", + "G638", + "G639" + ], + "kitware": [ + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 64 + }, + "2018-03-11.11-45-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-45-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.11-45-08.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 3 + }, + "2018-03-11.11-50-00.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-11.11-50-00.bus": { + "cameras": [ + "G506", + "G475", + "G331", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G506" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 1 + }, + "2018-03-11.11-50-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G419", + "G420", + "G423", + "G474", + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G419", + "G420", + "G423", + "G474" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/IBM-person-vehicle": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G474" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware": [ + "G299", + "G328", + "G336", + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G330" + ] + }, + "multi_camera": true, + "clip_count": 24, + "geom_cameras": 7, + "geom_usable_actors": 2145 + }, + "2018-03-11.11-50-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-11.11-50-01.bus": { + "cameras": [ + "G505", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 1 + }, + "2018-03-11.11-50-01.school": { + "cameras": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G421", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G339" + ], + "nist-json": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 17, + "geom_cameras": 5, + "geom_usable_actors": 150 + }, + "2018-03-11.11-50-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 27 + }, + "2018-03-11.11-50-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-11.11-50-08.hospital": { + "cameras": [ + "G436", + "G341", + "G301" + ], + "sources": { + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 3, + "geom_usable_actors": 9 + }, + "2018-03-11.12-00-00.school": { + "cameras": [ + "G299", + "G336", + "G420" + ], + "sources": { + "kitware": [ + "G299", + "G336", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 244 + }, + "2018-03-11.13-50-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-11.13-50-00.bus": { + "cameras": [ + "G509", + "G475", + "G331" + ], + "sources": { + "contrib/CMU-v2": [ + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G509" + ], + "kitware-training": [ + "G331", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 3 + }, + "2018-03-11.13-50-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G638" + ], + "nist-json": [ + "G299", + "G330" + ] + }, + "multi_camera": true, + "clip_count": 16, + "geom_cameras": 4, + "geom_usable_actors": 306 + }, + "2018-03-11.13-50-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 14 + }, + "2018-03-11.13-50-01.bus": { + "cameras": [ + "G505", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 3, + "geom_usable_actors": 21 + }, + "2018-03-11.13-50-01.school": { + "cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "kitware": [ + "G339", + "G421", + "G423" + ], + "kitware-training": [ + "G328", + "G336", + "G419", + "G424", + "G639" + ], + "nist-json": [ + "G328", + "G336", + "G339", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 28, + "geom_cameras": 8, + "geom_usable_actors": 296 + }, + "2018-03-11.13-50-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-11.13-50-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 9 + }, + "2018-03-11.13-50-08.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 111 + }, + "2018-03-11.14-00-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-11.14-00-00.bus": { + "cameras": [ + "G331", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.14-00-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/IBM-person-vehicle": [ + "G299", + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 17, + "geom_cameras": 4, + "geom_usable_actors": 622 + }, + "2018-03-11.14-00-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-11.14-00-01.bus": { + "cameras": [ + "G505", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 1 + }, + "2018-03-11.14-00-01.school": { + "cameras": [ + "G336", + "G419", + "G421", + "G423", + "G639", + "G339", + "G328" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G423" + ], + "contrib/UMD-IBM": [ + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 19, + "geom_cameras": 7, + "geom_usable_actors": 107 + }, + "2018-03-11.14-00-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 23 + }, + "2018-03-11.14-00-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-11.14-00-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 3 + }, + "2018-03-11.14-00-08.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 43 + }, + "2018-03-11.14-05-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.14-05-00.bus": { + "cameras": [ + "G331", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.14-05-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G420" + ], + "kitware": [ + "G420" + ], + "kitware-training": [ + "G299", + "G330", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 15, + "geom_cameras": 4, + "geom_usable_actors": 284 + }, + "2018-03-11.14-05-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware-training": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.14-05-01.bus": { + "cameras": [ + "G505", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 2 + }, + "2018-03-11.14-05-01.school": { + "cameras": [ + "G328", + "G336", + "G419", + "G421", + "G423", + "G639", + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 20, + "geom_cameras": 7, + "geom_usable_actors": 115 + }, + "2018-03-11.14-05-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.14-05-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.14-05-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-11.14-05-08.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 21 + }, + "2018-03-11.14-10-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.14-10-00.bus": { + "cameras": [ + "G475", + "G331", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "kitware-training": [ + "G331", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.14-10-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G474", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 4, + "geom_usable_actors": 761 + }, + "2018-03-11.14-10-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware-training": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.14-10-01.bus": { + "cameras": [ + "G505", + "G506", + "G508" + ], + "sources": { + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 3, + "geom_usable_actors": 2 + }, + "2018-03-11.14-10-01.school": { + "cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 19, + "geom_cameras": 7, + "geom_usable_actors": 74 + }, + "2018-03-11.14-10-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-11.14-10-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-11.14-10-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-11.14-10-08.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 23 + }, + "2018-03-11.14-15-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-11.14-15-00.bus": { + "cameras": [ + "G475", + "G509", + "G331" + ], + "sources": { + "contrib/CMU-v2": [ + "G475", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G509" + ], + "kitware-training": [ + "G331", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 2 + }, + "2018-03-11.14-15-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/IBM-person-vehicle": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G420", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G299", + "G638" + ], + "kitware-training": [ + "G330", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 16, + "geom_cameras": 4, + "geom_usable_actors": 1611 + }, + "2018-03-11.14-15-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 7 + }, + "2018-03-11.14-15-01.bus": { + "cameras": [ + "G505", + "G508", + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G508" + ], + "contrib/UMD-IBM": [ + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 7 + }, + "2018-03-11.14-15-01.school": { + "cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "kitware": [ + "G339", + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G336", + "G419", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 22, + "geom_cameras": 7, + "geom_usable_actors": 322 + }, + "2018-03-11.14-15-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 24 + }, + "2018-03-11.14-15-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 9 + }, + "2018-03-11.14-15-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 13 + }, + "2018-03-11.14-15-08.hospital": { + "cameras": [ + "G436", + "G341", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 58 + }, + "2018-03-11.14-20-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.14-20-00.bus": { + "cameras": [ + "G475", + "G509", + "G331" + ], + "sources": { + "contrib/CMU-v2": [ + "G475", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G509" + ], + "kitware-training": [ + "G331", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 5 + }, + "2018-03-11.14-20-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "kitware": [ + "G299", + "G330", + "G420" + ], + "kitware-training": [ + "G638" + ] + }, + "multi_camera": true, + "clip_count": 15, + "geom_cameras": 4, + "geom_usable_actors": 148 + }, + "2018-03-11.14-20-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware-training": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.14-20-01.bus": { + "cameras": [ + "G505", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G505", + "G506", + "G508" + ], + "kitware": [ + "G506", + "G508" + ], + "kitware-training": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 3, + "geom_usable_actors": 32 + }, + "2018-03-11.14-20-01.school": { + "cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "kitware": [ + "G419" + ], + "kitware-training": [ + "G328", + "G336", + "G339", + "G421", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 22, + "geom_cameras": 7, + "geom_usable_actors": 97 + }, + "2018-03-11.14-20-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 40 + }, + "2018-03-11.14-20-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.14-20-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 10 + }, + "2018-03-11.14-20-08.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 48 + }, + "2018-03-11.16-10-00.bus": { + "cameras": [ + "G331", + "G505", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 17 + }, + "2018-03-11.16-10-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 20 + }, + "2018-03-11.16-10-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "kitware": [ + "G506" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 3 + }, + "2018-03-11.16-10-01.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 46 + }, + "2018-03-11.16-10-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-11.16-10-08.hospital": { + "cameras": [ + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 15 + }, + "2018-03-11.16-15-00.bus": { + "cameras": [ + "G331", + "G505", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G509" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G509" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 3, + "geom_usable_actors": 26 + }, + "2018-03-11.16-15-00.hospital": { + "cameras": [ + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G476" + ], + "contrib/UMD-IBM": [ + "G476" + ], + "kitware": [ + "G479" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.16-15-00.school": { + "cameras": [ + "G299", + "G330", + "G421", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G421", + "G638" + ], + "kitware-training": [ + "G330", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 18, + "geom_cameras": 5, + "geom_usable_actors": 1274 + }, + "2018-03-11.16-15-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 12 + }, + "2018-03-11.16-15-01.bus": { + "cameras": [ + "G508", + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/UMD-IBM": [ + "G506", + "G508" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 8 + }, + "2018-03-11.16-15-01.school": { + "cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-person": [ + "G420" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 19, + "geom_cameras": 6, + "geom_usable_actors": 161 + }, + "2018-03-11.16-15-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 25 + }, + "2018-03-11.16-15-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.16-15-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-11.16-15-08.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 86 + }, + "2018-03-11.16-20-00.bus": { + "cameras": [ + "G331", + "G509", + "G505" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G509" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G509" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 7 + }, + "2018-03-11.16-20-00.hospital": { + "cameras": [ + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G476" + ], + "contrib/IBM-person-person": [ + "G476" + ], + "contrib/UMD-IBM": [ + "G476" + ], + "kitware": [ + "G479" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.16-20-00.school": { + "cameras": [ + "G299", + "G330", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G423", + "G638" + ], + "kitware-training": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 20, + "geom_cameras": 6, + "geom_usable_actors": 764 + }, + "2018-03-11.16-20-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 24 + }, + "2018-03-11.16-20-01.bus": { + "cameras": [ + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G506", + "G508" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 8 + }, + "2018-03-11.16-20-01.school": { + "cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G419", + "G420" + ], + "kitware": [ + "G328", + "G336", + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 14, + "geom_cameras": 4, + "geom_usable_actors": 162 + }, + "2018-03-11.16-20-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 43 + }, + "2018-03-11.16-20-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-11.16-20-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-11.16-20-08.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 45 + }, + "2018-03-11.16-25-00.bus": { + "cameras": [ + "G331", + "G505", + "G509", + "G475" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G505" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 7 + }, + "2018-03-11.16-25-00.school": { + "cameras": [ + "G299", + "G330", + "G421", + "G474", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G421", + "G474" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G421", + "G639" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 4, + "geom_usable_actors": 503 + }, + "2018-03-11.16-25-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.16-25-01.bus": { + "cameras": [ + "G508", + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/UMD-IBM": [ + "G508" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 3 + }, + "2018-03-11.16-25-01.school": { + "cameras": [ + "G336", + "G339", + "G419", + "G420", + "G423", + "G328" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 18, + "geom_cameras": 6, + "geom_usable_actors": 94 + }, + "2018-03-11.16-25-02.school": { + "cameras": [ + "G424", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G424", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424", + "G638" + ], + "nist-json": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 2, + "geom_usable_actors": 50 + }, + "2018-03-11.16-25-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 13 + }, + "2018-03-11.16-25-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-11.16-25-08.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 14 + }, + "2018-03-11.16-30-00.bus": { + "cameras": [ + "G331", + "G475", + "G505", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G475", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 0 + }, + "2018-03-11.16-30-00.hospital": { + "cameras": [ + "G476", + "G479" + ], + "sources": { + "kitware": [ + "G476", + "G479" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.16-30-00.school": { + "cameras": [ + "G299", + "G330", + "G639", + "G421", + "G474" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G639" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G474" + ], + "kitware-training": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 5, + "geom_usable_actors": 206 + }, + "2018-03-11.16-30-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.16-30-01.bus": { + "cameras": [ + "G506", + "G508" + ], + "sources": { + "contrib/UMD-IBM": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.16-30-01.school": { + "cameras": [ + "G328", + "G339", + "G419", + "G420", + "G423", + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G339", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ], + "contrib/UMD-IBM": [ + "G328", + "G339", + "G419", + "G420", + "G423" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 17, + "geom_cameras": 6, + "geom_usable_actors": 55 + }, + "2018-03-11.16-30-02.school": { + "cameras": [ + "G424", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424", + "G638" + ], + "kitware": [ + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 11 + }, + "2018-03-11.16-30-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 3 + }, + "2018-03-11.16-30-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.16-30-08.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-11.16-30-09.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.16-35-00.bus": { + "cameras": [ + "G331", + "G505", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 1 + }, + "2018-03-11.16-35-00.hospital": { + "cameras": [ + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G476" + ], + "contrib/UMD-IBM": [ + "G476" + ], + "kitware": [ + "G479" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.16-35-00.school": { + "cameras": [ + "G299", + "G330", + "G421", + "G474", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G421", + "G474", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G474", + "G639" + ], + "kitware": [ + "G330", + "G421" + ], + "kitware-training": [ + "G299", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 14, + "geom_cameras": 4, + "geom_usable_actors": 1786 + }, + "2018-03-11.16-35-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 3 + }, + "2018-03-11.16-35-01.bus": { + "cameras": [ + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 4 + }, + "2018-03-11.16-35-01.school": { + "cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423", + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 21, + "geom_cameras": 7, + "geom_usable_actors": 379 + }, + "2018-03-11.16-35-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 65 + }, + "2018-03-11.16-35-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-11.16-35-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-11.16-35-08.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 80 + }, + "2018-03-11.16-40-00.bus": { + "cameras": [ + "G331", + "G505", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G505" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 21 + }, + "2018-03-11.16-40-00.school": { + "cameras": [ + "G299", + "G330", + "G423", + "G474", + "G639", + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G423", + "G474", + "G639" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G423", + "G474", + "G639" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G423" + ], + "kitware-training": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 16, + "geom_cameras": 5, + "geom_usable_actors": 582 + }, + "2018-03-11.16-40-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 12 + }, + "2018-03-11.16-40-01.bus": { + "cameras": [ + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 7 + }, + "2018-03-11.16-40-01.school": { + "cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 18, + "geom_cameras": 6, + "geom_usable_actors": 77 + }, + "2018-03-11.16-40-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 34 + }, + "2018-03-11.16-40-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.16-40-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-11.16-40-08.hospital": { + "cameras": [ + "G436", + "G341", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 39 + }, + "2018-03-11.16-45-00.bus": { + "cameras": [ + "G331", + "G505", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 4 + }, + "2018-03-11.16-45-00.school": { + "cameras": [ + "G299", + "G330", + "G421", + "G423" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G421", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 150 + }, + "2018-03-11.17-10-00.bus": { + "cameras": [ + "G505", + "G331", + "G508" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 13 + }, + "2018-03-11.17-10-00.school": { + "cameras": [ + "G330", + "G421", + "G423", + "G639", + "G299", + "G328" + ], + "sources": { + "kitware": [ + "G330", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G299", + "G328" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 6, + "geom_usable_actors": 790 + }, + "2018-03-11.17-10-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 10 + }, + "2018-03-11.17-10-01.bus": { + "cameras": [ + "G506", + "G509" + ], + "sources": { + "kitware-training": [ + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 8 + }, + "2018-03-11.17-10-01.school": { + "cameras": [ + "G339", + "G419", + "G336", + "G420", + "G638" + ], + "sources": { + "kitware": [ + "G339", + "G419" + ], + "kitware-training": [ + "G336", + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 5, + "geom_usable_actors": 294 + }, + "2018-03-11.17-10-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "kitware": [ + "G424" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 81 + }, + "2018-03-11.17-10-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 12 + }, + "2018-03-11.17-10-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 15 + }, + "2018-03-11.17-10-08.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 158 + }, + "2018-03-11.17-10-09.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-11.17-15-00.bus": { + "cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 3 + }, + "2018-03-11.17-15-00.school": { + "cameras": [ + "G299", + "G423", + "G330", + "G421", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G423" + ], + "kitware-training": [ + "G330", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 5, + "geom_usable_actors": 1384 + }, + "2018-03-11.17-15-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-11.17-15-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "kitware-training": [ + "G506" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.17-15-01.school": { + "cameras": [ + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "sources": { + "kitware": [ + "G336" + ], + "kitware-training": [ + "G339", + "G419", + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 5, + "geom_usable_actors": 67 + }, + "2018-03-11.17-15-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "kitware-training": [ + "G424" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 13 + }, + "2018-03-11.17-15-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-11.17-15-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 3 + }, + "2018-03-11.17-15-08.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 10 + }, + "2018-03-11.17-15-09.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.17-20-00.bus": { + "cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 2 + }, + "2018-03-11.17-20-00.school": { + "cameras": [ + "G328", + "G423", + "G299", + "G330", + "G421", + "G639" + ], + "sources": { + "kitware": [ + "G328", + "G423" + ], + "kitware-training": [ + "G299", + "G330", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 6, + "geom_usable_actors": 1074 + }, + "2018-03-11.17-20-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.17-20-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "kitware-training": [ + "G506" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.17-20-01.school": { + "cameras": [ + "G420", + "G336", + "G339", + "G419", + "G638" + ], + "sources": { + "kitware": [ + "G420" + ], + "kitware-training": [ + "G336", + "G339", + "G419", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 5, + "geom_usable_actors": 85 + }, + "2018-03-11.17-20-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "kitware-training": [ + "G424" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.17-20-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-11.17-20-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.17-20-08.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 46 + }, + "2018-03-11.17-20-09.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-11.17-25-00.bus": { + "cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 3 + }, + "2018-03-11.17-25-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G423", + "G421", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G328", + "G330", + "G423" + ], + "kitware-training": [ + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 6, + "geom_usable_actors": 1697 + }, + "2018-03-11.17-25-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 16 + }, + "2018-03-11.17-25-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "kitware": [ + "G506" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-11.17-25-01.school": { + "cameras": [ + "G336", + "G419", + "G638", + "G339", + "G420" + ], + "sources": { + "kitware": [ + "G336", + "G419", + "G638" + ], + "kitware-training": [ + "G339", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 5, + "geom_usable_actors": 186 + }, + "2018-03-11.17-25-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "kitware": [ + "G424" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 64 + }, + "2018-03-11.17-25-04.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-11.17-25-08.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-11.17-25-08.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 103 + }, + "2018-03-11.17-25-09.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-00-00.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G331", + "G508" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340", + "G505", + "G506" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 5, + "geom_usable_actors": 13 + }, + "2018-03-12.10-00-00.hospital": { + "cameras": [ + "G436", + "G301", + "G479", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G436", + "G479" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 74 + }, + "2018-03-12.10-00-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G474" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420" + ], + "contrib/IBM-person-vehicle": [ + "G299", + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G420", + "G474" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G299", + "G330", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 3, + "geom_usable_actors": 160 + }, + "2018-03-12.10-00-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-00-01.school": { + "cameras": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "contrib/UMD-IBM": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware-training": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "nist-json": [ + "G423" + ] + }, + "multi_camera": true, + "clip_count": 21, + "geom_cameras": 6, + "geom_usable_actors": 265 + }, + "2018-03-12.10-00-02.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ], + "nist-json": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-12.10-00-02.school": { + "cameras": [ + "G336", + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339" + ], + "contrib/UMD-IBM": [ + "G336", + "G339" + ], + "kitware-training": [ + "G336", + "G339" + ], + "nist-json": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 2, + "geom_usable_actors": 36 + }, + "2018-03-12.10-00-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 47 + }, + "2018-03-12.10-00-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 14 + }, + "2018-03-12.10-05-00.bus": { + "cameras": [ + "G505", + "G340", + "G331", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 4, + "geom_usable_actors": 18 + }, + "2018-03-12.10-05-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G479" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 77 + }, + "2018-03-12.10-05-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G474" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G330" + ], + "kitware-training": [ + "G420" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 3, + "geom_usable_actors": 584 + }, + "2018-03-12.10-05-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 15 + }, + "2018-03-12.10-05-01.bus": { + "cameras": [ + "G506", + "G509" + ], + "sources": { + "kitware-training": [ + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 3 + }, + "2018-03-12.10-05-01.school": { + "cameras": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G639" + ], + "contrib/UMD-v1-train": [ + "G419", + "G423" + ], + "kitware": [ + "G328", + "G639" + ], + "kitware-training": [ + "G419", + "G421", + "G423", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 15, + "geom_cameras": 6, + "geom_usable_actors": 597 + }, + "2018-03-12.10-05-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 25 + }, + "2018-03-12.10-05-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 12 + }, + "2018-03-12.10-05-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 51 + }, + "2018-03-12.10-05-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-10-00.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 5, + "geom_usable_actors": 7 + }, + "2018-03-12.10-10-00.hospital": { + "cameras": [ + "G301", + "G341", + "G476", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G476" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 3, + "geom_usable_actors": 20 + }, + "2018-03-12.10-10-00.school": { + "cameras": [ + "G299", + "G330", + "G474", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G474" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware-training": [ + "G299", + "G330", + "G420" + ], + "nist-json": [ + "G299" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 3, + "geom_usable_actors": 628 + }, + "2018-03-12.10-10-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-10-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-10-01.school": { + "cameras": [ + "G328", + "G423", + "G638", + "G421", + "G419", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G423", + "G638" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "kitware": [ + "G421", + "G423" + ], + "kitware-training": [ + "G328", + "G419", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 6, + "geom_usable_actors": 225 + }, + "2018-03-12.10-10-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 10 + }, + "2018-03-12.10-10-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-12.10-10-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 17 + }, + "2018-03-12.10-10-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-12.10-15-00.bus": { + "cameras": [ + "G506", + "G331", + "G340", + "G505", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 5, + "geom_usable_actors": 2 + }, + "2018-03-12.10-15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "contrib/IBM-person-person": [ + "G341", + "G476" + ], + "contrib/IBM-person-vehicle": [ + "G341", + "G476" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 3, + "geom_usable_actors": 95 + }, + "2018-03-12.10-15-00.school": { + "cameras": [ + "G299", + "G330", + "G474", + "G420", + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G474" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299" + ], + "kitware-training": [ + "G330", + "G420", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 4, + "geom_usable_actors": 596 + }, + "2018-03-12.10-15-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-12.10-15-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-15-01.school": { + "cameras": [ + "G423", + "G639", + "G328", + "G419", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G419", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 5, + "geom_usable_actors": 128 + }, + "2018-03-12.10-15-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "kitware": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 35 + }, + "2018-03-12.10-15-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 16 + }, + "2018-03-12.10-15-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 34 + }, + "2018-03-12.10-15-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-12.10-20-00.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 5, + "geom_usable_actors": 3 + }, + "2018-03-12.10-20-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 3 + }, + "2018-03-12.10-20-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 4, + "geom_usable_actors": 640 + }, + "2018-03-12.10-20-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-12.10-20-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-20-01.school": { + "cameras": [ + "G423", + "G328", + "G419", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G423" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware-training": [ + "G328", + "G419", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 5, + "geom_usable_actors": 152 + }, + "2018-03-12.10-20-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "kitware-training": [ + "G336" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-20-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-12.10-20-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "kitware-training": [ + "G424" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-20-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-25-00.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 5, + "geom_usable_actors": 27 + }, + "2018-03-12.10-25-00.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 3, + "geom_usable_actors": 15 + }, + "2018-03-12.10-25-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G420" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G638" + ], + "kitware-training": [ + "G330", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 11, + "geom_cameras": 4, + "geom_usable_actors": 1434 + }, + "2018-03-12.10-25-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 4 + }, + "2018-03-12.10-25-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-25-01.school": { + "cameras": [ + "G328", + "G419", + "G421", + "G423", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware": [ + "G328", + "G421" + ], + "kitware-training": [ + "G419", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 5, + "geom_usable_actors": 347 + }, + "2018-03-12.10-25-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 3 + }, + "2018-03-12.10-25-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 13 + }, + "2018-03-12.10-25-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 13 + }, + "2018-03-12.10-25-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-12.10-30-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 12 + }, + "2018-03-12.10-30-00.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 5, + "geom_usable_actors": 29 + }, + "2018-03-12.10-30-00.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 3, + "geom_usable_actors": 64 + }, + "2018-03-12.10-30-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G299", + "G330" + ], + "kitware": [ + "G330", + "G421" + ], + "kitware-training": [ + "G299", + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 5, + "geom_usable_actors": 114 + }, + "2018-03-12.10-30-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 15 + }, + "2018-03-12.10-30-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-30-01.school": { + "cameras": [ + "G328", + "G423", + "G639", + "G419" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G419", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 4, + "geom_usable_actors": 141 + }, + "2018-03-12.10-30-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 40 + }, + "2018-03-12.10-30-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 12 + }, + "2018-03-12.10-30-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 58 + }, + "2018-03-12.10-30-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-12.10-40-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 7 + }, + "2018-03-12.10-40-00.bus": { + "cameras": [ + "G340", + "G475", + "G505", + "G506", + "G331", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 5, + "geom_usable_actors": 41 + }, + "2018-03-12.10-40-00.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 47 + }, + "2018-03-12.10-40-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G421" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G638" + ], + "kitware-training": [ + "G420" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 5, + "geom_usable_actors": 318 + }, + "2018-03-12.10-40-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 15 + }, + "2018-03-12.10-40-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-40-01.school": { + "cameras": [ + "G328", + "G419", + "G423", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G423", + "G639" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "kitware-training": [ + "G328", + "G419", + "G423", + "G639" + ], + "nist-json": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 4, + "geom_usable_actors": 340 + }, + "2018-03-12.10-40-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 22 + }, + "2018-03-12.10-40-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 20 + }, + "2018-03-12.10-40-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 30 + }, + "2018-03-12.10-40-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-12.10-45-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-45-00.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G331", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505", + "G506" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 5, + "geom_usable_actors": 17 + }, + "2018-03-12.10-45-00.hospital": { + "cameras": [ + "G436", + "G479", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436", + "G479" + ], + "kitware": [ + "G301", + "G436" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 76 + }, + "2018-03-12.10-45-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G420" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G330", + "G421" + ], + "kitware-training": [ + "G299", + "G420", + "G638" + ], + "nist-json": [ + "G638" + ] + }, + "multi_camera": true, + "clip_count": 15, + "geom_cameras": 5, + "geom_usable_actors": 787 + }, + "2018-03-12.10-45-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "kitware-training": [ + "G329" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-45-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-45-01.school": { + "cameras": [ + "G328", + "G419", + "G423", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G423", + "G639" + ], + "kitware": [ + "G328", + "G639" + ], + "kitware-training": [ + "G419", + "G423" + ], + "nist-json": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 4, + "geom_usable_actors": 225 + }, + "2018-03-12.10-45-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 33 + }, + "2018-03-12.10-45-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 12 + }, + "2018-03-12.10-45-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ], + "nist-json": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 19 + }, + "2018-03-12.10-45-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 10 + }, + "2018-03-12.10-50-00.bus": { + "cameras": [ + "G340", + "G475", + "G505", + "G506", + "G331", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 5, + "geom_usable_actors": 34 + }, + "2018-03-12.10-50-00.hospital": { + "cameras": [ + "G301", + "G436", + "G479", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436", + "G479" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 18 + }, + "2018-03-12.10-50-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G330" + ], + "kitware-training": [ + "G420", + "G421", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 14, + "geom_cameras": 5, + "geom_usable_actors": 721 + }, + "2018-03-12.10-50-01.admin": { + "cameras": [ + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-12.10-50-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-50-01.school": { + "cameras": [ + "G328", + "G419", + "G423", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G423" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "kitware": [ + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G419" + ], + "nist-json": [ + "G423" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 4, + "geom_usable_actors": 139 + }, + "2018-03-12.10-50-02.admin": { + "cameras": [ + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-12.10-50-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-12.10-50-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-12.10-50-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 14 + }, + "2018-03-12.10-50-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.10-55-01.school": { + "cameras": [ + "G420", + "G423", + "G328", + "G419", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G420", + "G423" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "kitware-training": [ + "G328", + "G419", + "G420", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 1, + "geom_usable_actors": 1 + }, + "2018-03-12.11-00-00.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G475", + "G331", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505", + "G506" + ], + "contrib/IBM-person-person": [ + "G475" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 11, + "geom_cameras": 5, + "geom_usable_actors": 34 + }, + "2018-03-12.11-00-00.hospital": { + "cameras": [ + "G341", + "G436", + "G476", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/IBM-person-person": [ + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G341", + "G476" + ], + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 3, + "geom_usable_actors": 92 + }, + "2018-03-12.11-00-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G474", + "G638", + "G421" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G421", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 5, + "geom_usable_actors": 679 + }, + "2018-03-12.11-00-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-12.11-00-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.11-00-01.school": { + "cameras": [ + "G328", + "G423", + "G639", + "G419" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G423" + ], + "kitware": [ + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G419" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 4, + "geom_usable_actors": 119 + }, + "2018-03-12.11-00-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 35 + }, + "2018-03-12.11-00-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/IBM-person-vehicle": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 18 + }, + "2018-03-12.11-00-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 50 + }, + "2018-03-12.11-00-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.11-05-00.bus": { + "cameras": [ + "G475", + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 5, + "geom_usable_actors": 14 + }, + "2018-03-12.11-05-00.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 3, + "geom_usable_actors": 11 + }, + "2018-03-12.11-05-00.school": { + "cameras": [ + "G299", + "G419", + "G420", + "G421", + "G638", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G419", + "G420", + "G421", + "G638" + ], + "contrib/IBM-person-person": [ + "G299", + "G330" + ], + "kitware": [ + "G330", + "G420" + ], + "kitware-training": [ + "G299", + "G419", + "G421", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 6, + "geom_usable_actors": 1145 + }, + "2018-03-12.11-05-01.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.11-05-01.bus": { + "cameras": [ + "G509" + ], + "sources": { + "kitware-training": [ + "G509" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-12.11-05-01.school": { + "cameras": [ + "G328", + "G639", + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G639" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware": [ + "G328", + "G423" + ], + "kitware-training": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 360 + }, + "2018-03-12.11-05-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 7 + }, + "2018-03-12.11-05-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-12.11-05-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 41 + }, + "2018-03-12.11-05-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 7 + }, + "2018-03-12.11-10-00.bus": { + "cameras": [ + "G505", + "G340", + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 6, + "geom_usable_actors": 51 + }, + "2018-03-12.11-10-00.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 3, + "geom_usable_actors": 87 + }, + "2018-03-12.11-10-00.school": { + "cameras": [ + "G421", + "G474", + "G638", + "G299", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 4, + "geom_usable_actors": 66 + }, + "2018-03-12.11-10-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 16 + }, + "2018-03-12.11-10-01.school": { + "cameras": [ + "G328", + "G420", + "G423", + "G419", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G423" + ], + "kitware": [ + "G328" + ], + "kitware-training": [ + "G419", + "G420", + "G423", + "G639" + ], + "nist-json": [ + "G423" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 217 + }, + "2018-03-12.11-10-02.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "kitware": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 32 + }, + "2018-03-12.11-10-03.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 38 + }, + "2018-03-12.11-10-04.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 21 + }, + "2018-03-12.11-10-05.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-13.15-50-00.bus": { + "cameras": [ + "G331", + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G506" + ], + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 11, + "geom_cameras": 5, + "geom_usable_actors": 23 + }, + "2018-03-13.15-50-00.school": { + "cameras": [ + "G328", + "G421", + "G423", + "G474", + "G638", + "G330", + "G639", + "G299" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G421", + "G423", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G330", + "G423", + "G474", + "G639" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "contrib/UMD-v1-val": [ + "G328", + "G421" + ], + "kitware": [ + "G421", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 19, + "geom_cameras": 7, + "geom_usable_actors": 529 + }, + "2018-03-13.15-50-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 10 + }, + "2018-03-13.15-50-01.school": { + "cameras": [ + "G419", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware": [ + "G419" + ], + "kitware-training": [ + "G420" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 87 + }, + "2018-03-13.15-50-02.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 81 + }, + "2018-03-13.15-50-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 48 + }, + "2018-03-13.15-50-03.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336" + ], + "kitware": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 38 + }, + "2018-03-13.15-50-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 29 + }, + "2018-03-13.15-50-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 30 + }, + "2018-03-13.15-50-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 1 + }, + "2018-03-13.16-00-00.bus": { + "cameras": [ + "G331", + "G505", + "G475", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G475", + "G505", + "G506" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 5, + "geom_usable_actors": 34 + }, + "2018-03-13.16-00-00.school": { + "cameras": [ + "G328", + "G639", + "G474", + "G638", + "G299", + "G330", + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 6, + "geom_usable_actors": 39 + }, + "2018-03-13.16-00-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.16-00-01.school": { + "cameras": [ + "G419", + "G420" + ], + "sources": { + "kitware-training": [ + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.16-00-02.hospital": { + "cameras": [ + "G301", + "G436", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G301" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 308 + }, + "2018-03-13.16-00-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 46 + }, + "2018-03-13.16-00-03.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "kitware": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 101 + }, + "2018-03-13.16-00-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 20 + }, + "2018-03-13.16-00-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 88 + }, + "2018-03-13.16-00-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 11 + }, + "2018-03-13.16-05-00.bus": { + "cameras": [ + "G331", + "G475", + "G505", + "G508", + "G509", + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 16, + "geom_cameras": 5, + "geom_usable_actors": 37 + }, + "2018-03-13.16-05-00.school": { + "cameras": [ + "G328", + "G421", + "G639", + "G638", + "G299", + "G330", + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G421", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G421", + "G638" + ], + "kitware": [ + "G328", + "G421" + ], + "kitware-training": [ + "G299", + "G330", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 7, + "geom_usable_actors": 36 + }, + "2018-03-13.16-05-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.16-05-01.school": { + "cameras": [ + "G419", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 4 + }, + "2018-03-13.16-05-02.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 132 + }, + "2018-03-13.16-05-02.school": { + "cameras": [ + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "kitware": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 83 + }, + "2018-03-13.16-05-03.school": { + "cameras": [ + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336" + ], + "kitware": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 100 + }, + "2018-03-13.16-05-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 9 + }, + "2018-03-13.16-05-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 62 + }, + "2018-03-13.16-05-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.16-10-00.bus": { + "cameras": [ + "G508", + "G506", + "G475", + "G505", + "G509", + "G331" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/IBM-person-person": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 5, + "geom_usable_actors": 93 + }, + "2018-03-13.16-10-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G421", + "G423" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G421", + "G423", + "G474", + "G638" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G421", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 18, + "geom_cameras": 7, + "geom_usable_actors": 67 + }, + "2018-03-13.16-10-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.16-10-01.school": { + "cameras": [ + "G419", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 11 + }, + "2018-03-13.16-10-02.hospital": { + "cameras": [ + "G301", + "G436", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 3, + "geom_usable_actors": 119 + }, + "2018-03-13.16-10-03.school": { + "cameras": [ + "G424", + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware": [ + "G424" + ], + "kitware-training": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 333 + }, + "2018-03-13.16-10-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 24 + }, + "2018-03-13.16-10-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-13.16-10-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.16-15-00.bus": { + "cameras": [ + "G508", + "G509", + "G475", + "G505", + "G331", + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 5, + "geom_usable_actors": 59 + }, + "2018-03-13.16-15-00.school": { + "cameras": [ + "G421", + "G638", + "G474", + "G299", + "G328", + "G330", + "G423", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G638" + ], + "contrib/IBM-person-person": [ + "G474" + ], + "contrib/UMD-IBM": [ + "G421", + "G474", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 6, + "geom_usable_actors": 16 + }, + "2018-03-13.16-15-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.16-15-01.school": { + "cameras": [ + "G419", + "G420" + ], + "sources": { + "kitware-training": [ + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.16-15-02.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 3, + "geom_usable_actors": 194 + }, + "2018-03-13.16-15-03.school": { + "cameras": [ + "G424", + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 242 + }, + "2018-03-13.16-15-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "contrib/UMD-v1-val": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 7 + }, + "2018-03-13.16-15-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.16-15-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.16-20-00.bus": { + "cameras": [ + "G475", + "G505", + "G506", + "G331", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G475", + "G505", + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 11, + "geom_cameras": 5, + "geom_usable_actors": 8 + }, + "2018-03-13.16-20-00.school": { + "cameras": [ + "G328", + "G421", + "G638", + "G474", + "G299", + "G330", + "G423", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G421" + ], + "contrib/IBM-person-person": [ + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G421", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 15, + "geom_cameras": 7, + "geom_usable_actors": 376 + }, + "2018-03-13.16-20-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.16-20-01.school": { + "cameras": [ + "G419", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 86 + }, + "2018-03-13.16-20-02.hospital": { + "cameras": [ + "G301", + "G436", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 3, + "geom_usable_actors": 212 + }, + "2018-03-13.16-20-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "kitware": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 2, + "geom_usable_actors": 315 + }, + "2018-03-13.16-20-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 17 + }, + "2018-03-13.16-20-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 43 + }, + "2018-03-13.16-20-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.16-25-00.bus": { + "cameras": [ + "G505", + "G475", + "G506", + "G331", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 5, + "geom_usable_actors": 6 + }, + "2018-03-13.16-25-00.school": { + "cameras": [ + "G328", + "G421", + "G423", + "G474", + "G638", + "G639", + "G299", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 19, + "geom_cameras": 6, + "geom_usable_actors": 52 + }, + "2018-03-13.16-25-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.16-25-01.school": { + "cameras": [ + "G419", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 40 + }, + "2018-03-13.16-25-02.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 3, + "geom_usable_actors": 2 + }, + "2018-03-13.16-25-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 4 + }, + "2018-03-13.16-25-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-13.16-25-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.16-25-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.16-30-00.bus": { + "cameras": [ + "G505", + "G506", + "G475", + "G331", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 2 + }, + "2018-03-13.16-30-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G421", + "G474", + "G638", + "G639", + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G639" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 22, + "geom_cameras": 6, + "geom_usable_actors": 500 + }, + "2018-03-13.16-30-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 1 + }, + "2018-03-13.16-30-01.school": { + "cameras": [ + "G419", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 143 + }, + "2018-03-13.16-30-02.hospital": { + "cameras": [ + "G341", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 7 + }, + "2018-03-13.16-30-03.hospital": { + "cameras": [ + "G301" + ], + "sources": { + "kitware-training": [ + "G301" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.16-30-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 59 + }, + "2018-03-13.16-30-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-13.16-30-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 17 + }, + "2018-03-13.16-30-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 26 + }, + "2018-03-13.17-05-00.bus": { + "cameras": [ + "G475", + "G505", + "G506", + "G331", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G475", + "G505" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 5, + "geom_usable_actors": 22 + }, + "2018-03-13.17-05-00.school": { + "cameras": [ + "G328", + "G420", + "G421", + "G474", + "G638", + "G639", + "G299", + "G423", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G420", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G299", + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G330", + "G420", + "G421", + "G638" + ], + "nist-json": [ + "G328", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 23, + "geom_cameras": 8, + "geom_usable_actors": 468 + }, + "2018-03-13.17-05-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.17-05-01.school": { + "cameras": [ + "G419" + ], + "sources": { + "contrib/CMU-v2": [ + "G419" + ], + "contrib/UMD-v1-train": [ + "G419" + ], + "kitware-training": [ + "G419" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 50 + }, + "2018-03-13.17-05-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-05-03.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 57 + }, + "2018-03-13.17-05-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware": [ + "G424" + ], + "kitware-training": [ + "G336" + ], + "nist-json": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 2, + "geom_usable_actors": 132 + }, + "2018-03-13.17-05-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 14 + }, + "2018-03-13.17-05-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 52 + }, + "2018-03-13.17-05-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-10-00.bus": { + "cameras": [ + "G475", + "G505", + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-IBM": [ + "G475", + "G505" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 5, + "geom_usable_actors": 2 + }, + "2018-03-13.17-10-00.school": { + "cameras": [ + "G328", + "G330", + "G420", + "G421", + "G423", + "G474", + "G638", + "G639", + "G299" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G330", + "G420", + "G421", + "G423", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G330", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G421" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 20, + "geom_cameras": 8, + "geom_usable_actors": 417 + }, + "2018-03-13.17-10-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.17-10-01.school": { + "cameras": [ + "G419" + ], + "sources": { + "kitware-training": [ + "G419" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-10-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-10-03.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 188 + }, + "2018-03-13.17-10-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-v1-train": [ + "G336", + "G424" + ], + "kitware": [ + "G336" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 250 + }, + "2018-03-13.17-10-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 18 + }, + "2018-03-13.17-10-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-13.17-10-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-15-00.bus": { + "cameras": [ + "G475", + "G505", + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-IBM": [ + "G475", + "G505" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 5, + "geom_usable_actors": 15 + }, + "2018-03-13.17-15-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G474", + "G638", + "G420", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 20, + "geom_cameras": 7, + "geom_usable_actors": 63 + }, + "2018-03-13.17-15-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 4 + }, + "2018-03-13.17-15-01.school": { + "cameras": [ + "G419" + ], + "sources": { + "kitware-training": [ + "G419" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-15-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-15-03.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 88 + }, + "2018-03-13.17-15-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 163 + }, + "2018-03-13.17-15-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 21 + }, + "2018-03-13.17-15-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 9 + }, + "2018-03-13.17-15-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 19 + }, + "2018-03-13.17-20-00.bus": { + "cameras": [ + "G505", + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 5, + "geom_usable_actors": 20 + }, + "2018-03-13.17-20-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G420", + "G474", + "G639", + "G638", + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G420", + "G474", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G420", + "G474", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 20, + "geom_cameras": 7, + "geom_usable_actors": 83 + }, + "2018-03-13.17-20-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.17-20-01.school": { + "cameras": [ + "G419" + ], + "sources": { + "contrib/CMU-v2": [ + "G419" + ], + "contrib/UMD-IBM": [ + "G419" + ], + "kitware-training": [ + "G419" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-13.17-20-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-20-03.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 204 + }, + "2018-03-13.17-20-03.school": { + "cameras": [ + "G424", + "G336" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware": [ + "G336" + ], + "kitware-training": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 230 + }, + "2018-03-13.17-20-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-13.17-20-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 18 + }, + "2018-03-13.17-20-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-25-00.bus": { + "cameras": [ + "G506", + "G331", + "G505", + "G508", + "G509" + ], + "sources": { + "contrib/IBM-person-person": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 5, + "geom_usable_actors": 88 + }, + "2018-03-13.17-25-00.school": { + "cameras": [ + "G330", + "G420", + "G421", + "G474", + "G638", + "G639", + "G328", + "G299", + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G330", + "G420", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G474" + ], + "contrib/UMD-IBM": [ + "G328", + "G330", + "G420", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G421" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 23, + "geom_cameras": 8, + "geom_usable_actors": 103 + }, + "2018-03-13.17-25-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-25-01.school": { + "cameras": [ + "G419" + ], + "sources": { + "contrib/CMU-v2": [ + "G419" + ], + "contrib/IBM-person-vehicle": [ + "G419" + ], + "contrib/UMD-IBM": [ + "G419" + ], + "kitware-training": [ + "G419" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-13.17-25-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-13.17-25-03.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 160 + }, + "2018-03-13.17-25-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "kitware": [ + "G336" + ], + "kitware-training": [ + "G424" + ], + "nist-json": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 2, + "geom_usable_actors": 252 + }, + "2018-03-13.17-25-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 10 + }, + "2018-03-13.17-25-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 14 + }, + "2018-03-13.17-25-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 5 + }, + "2018-03-13.17-30-00.bus": { + "cameras": [ + "G475", + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "contrib/UMD-IBM": [ + "G475" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 4, + "geom_usable_actors": 34 + }, + "2018-03-13.17-30-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G421", + "G474", + "G638", + "G639", + "G420", + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G421", + "G474" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G421", + "G474", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 20, + "geom_cameras": 8, + "geom_usable_actors": 54 + }, + "2018-03-13.17-30-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-30-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware-training": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 38 + }, + "2018-03-13.17-30-01.school": { + "cameras": [ + "G419" + ], + "sources": { + "kitware-training": [ + "G419" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-30-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ], + "nist-json": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 30 + }, + "2018-03-13.17-30-03.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 109 + }, + "2018-03-13.17-30-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 2, + "geom_usable_actors": 151 + }, + "2018-03-13.17-30-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 21 + }, + "2018-03-13.17-30-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-13.17-30-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-35-00.bus": { + "cameras": [ + "G506", + "G331", + "G508", + "G509" + ], + "sources": { + "contrib/UMD-IBM": [ + "G506" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 4, + "geom_usable_actors": 3 + }, + "2018-03-13.17-35-00.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G421" + ], + "contrib/IBM-person-vehicle": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G639" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G330" + ], + "kitware-training": [ + "G299", + "G328", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "nist-json": [ + "G299" + ] + }, + "multi_camera": true, + "clip_count": 27, + "geom_cameras": 8, + "geom_usable_actors": 414 + }, + "2018-03-13.17-35-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.17-35-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 13 + }, + "2018-03-13.17-35-01.school": { + "cameras": [ + "G419", + "G474" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G474" + ], + "contrib/UMD-IBM": [ + "G419", + "G474" + ], + "kitware": [ + "G419" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 1, + "geom_usable_actors": 34 + }, + "2018-03-13.17-35-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-35-03.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 84 + }, + "2018-03-13.17-35-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "kitware-training": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 191 + }, + "2018-03-13.17-35-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 15 + }, + "2018-03-13.17-35-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 39 + }, + "2018-03-13.17-35-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-13.17-40-00.bus": { + "cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 4, + "geom_usable_actors": 0 + }, + "2018-03-13.17-40-00.school": { + "cameras": [ + "G299", + "G420", + "G421", + "G423", + "G328", + "G638", + "G639", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G420", + "G421", + "G423" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 18, + "geom_cameras": 7, + "geom_usable_actors": 72 + }, + "2018-03-13.17-40-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-13.17-40-01.bus": { + "cameras": [ + "G505" + ], + "sources": { + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 1 + }, + "2018-03-13.17-40-01.school": { + "cameras": [ + "G419" + ], + "sources": { + "contrib/CMU-v2": [ + "G419" + ], + "contrib/UMD-IBM": [ + "G419" + ], + "kitware-training": [ + "G419" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 18 + }, + "2018-03-13.17-40-02.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "kitware-training": [ + "G341" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-13.17-40-03.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 14 + }, + "2018-03-13.17-40-03.school": { + "cameras": [ + "G336", + "G424" + ], + "sources": { + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 7 + }, + "2018-03-13.17-40-05.bus": { + "cameras": [ + "G340" + ], + "sources": { + "kitware-training": [ + "G340" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-13.17-40-05.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware-training": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 2 + }, + "2018-03-13.17-40-08.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 3 + }, + "2018-03-15.14-50-00.bus": { + "cameras": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G475", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 4, + "geom_usable_actors": 149 + }, + "2018-03-15.14-50-00.school": { + "cameras": [ + "G299", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424", + "G638" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware": [ + "G421" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 26, + "geom_cameras": 9, + "geom_usable_actors": 696 + }, + "2018-03-15.14-50-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 18 + }, + "2018-03-15.14-50-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 95 + }, + "2018-03-15.14-50-01.school": { + "cameras": [ + "G328", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware": [ + "G420" + ], + "kitware-training": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 65 + }, + "2018-03-15.14-50-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 10 + }, + "2018-03-15.14-50-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 64 + }, + "2018-03-15.14-50-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ], + "nist-json": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 104 + }, + "2018-03-15.14-50-07.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 161 + }, + "2018-03-15.15-00-00.bus": { + "cameras": [ + "G331", + "G475", + "G508", + "G509", + "G505" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 4, + "geom_usable_actors": 176 + }, + "2018-03-15.15-00-00.school": { + "cameras": [ + "G336", + "G421", + "G424", + "G299", + "G423", + "G638", + "G330", + "G339", + "G419", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G421", + "G424" + ], + "contrib/IBM-person-person": [ + "G299", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G299", + "G330", + "G339" + ], + "kitware-training": [ + "G336", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 19, + "geom_cameras": 10, + "geom_usable_actors": 667 + }, + "2018-03-15.15-00-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-15.15-00-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 83 + }, + "2018-03-15.15-00-01.school": { + "cameras": [ + "G420", + "G328" + ], + "sources": { + "contrib/CMU-v2": [ + "G420" + ], + "kitware-training": [ + "G328", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 79 + }, + "2018-03-15.15-00-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 15 + }, + "2018-03-15.15-00-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 42 + }, + "2018-03-15.15-00-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 89 + }, + "2018-03-15.15-00-07.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G301", + "G436" + ], + "kitware": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 162 + }, + "2018-03-15.15-05-00.bus": { + "cameras": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 9, + "geom_cameras": 4, + "geom_usable_actors": 154 + }, + "2018-03-15.15-05-00.school": { + "cameras": [ + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639", + "G299" + ], + "sources": { + "contrib/CMU-v2": [ + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G638" + ], + "contrib/UMD-v1-train": [ + "G419" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G336", + "G339" + ], + "kitware-training": [ + "G299", + "G330", + "G419", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 24, + "geom_cameras": 9, + "geom_usable_actors": 349 + }, + "2018-03-15.15-05-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/IBM-person-vehicle": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 26 + }, + "2018-03-15.15-05-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 58 + }, + "2018-03-15.15-05-01.school": { + "cameras": [ + "G328", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "kitware-training": [ + "G328", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 76 + }, + "2018-03-15.15-05-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-15.15-05-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 51 + }, + "2018-03-15.15-05-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 52 + }, + "2018-03-15.15-05-07.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 0 + }, + "2018-03-15.15-10-00.bus": { + "cameras": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G475" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ], + "nist-json": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 12, + "geom_cameras": 3, + "geom_usable_actors": 160 + }, + "2018-03-15.15-10-00.school": { + "cameras": [ + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639", + "G299", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G421", + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G424", + "G638" + ], + "kitware": [ + "G336", + "G339", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G330", + "G419", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 25, + "geom_cameras": 10, + "geom_usable_actors": 570 + }, + "2018-03-15.15-10-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 26 + }, + "2018-03-15.15-10-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 68 + }, + "2018-03-15.15-10-01.school": { + "cameras": [ + "G328", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "kitware-training": [ + "G328", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 62 + }, + "2018-03-15.15-10-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "kitware-training": [ + "G300" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 8 + }, + "2018-03-15.15-10-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 126 + }, + "2018-03-15.15-10-07.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-15.15-15-00.bus": { + "cameras": [ + "G331", + "G475", + "G508", + "G509", + "G505" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ], + "nist-json": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 11, + "geom_cameras": 4, + "geom_usable_actors": 161 + }, + "2018-03-15.15-15-00.school": { + "cameras": [ + "G330", + "G336", + "G339", + "G421", + "G424", + "G474", + "G638", + "G639", + "G299", + "G419", + "G423" + ], + "sources": { + "contrib/CMU-v2": [ + "G330", + "G336", + "G339", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339", + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G419", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 22, + "geom_cameras": 10, + "geom_usable_actors": 561 + }, + "2018-03-15.15-15-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 2, + "geom_usable_actors": 0 + }, + "2018-03-15.15-15-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 81 + }, + "2018-03-15.15-15-01.school": { + "cameras": [ + "G328", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G328" + ], + "kitware-training": [ + "G328", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 20 + }, + "2018-03-15.15-15-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/IBM-person-vehicle": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 10 + }, + "2018-03-15.15-15-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 27 + }, + "2018-03-15.15-15-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 55 + }, + "2018-03-15.15-15-07.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 171 + }, + "2018-03-15.15-30-00.bus": { + "cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 4, + "geom_usable_actors": 101 + }, + "2018-03-15.15-30-00.school": { + "cameras": [ + "G336", + "G421", + "G424", + "G474", + "G638", + "G339", + "G299", + "G330", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G421", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G424" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 18, + "geom_cameras": 8, + "geom_usable_actors": 502 + }, + "2018-03-15.15-30-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 13 + }, + "2018-03-15.15-30-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 114 + }, + "2018-03-15.15-30-01.school": { + "cameras": [ + "G328", + "G419", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G420" + ], + "kitware-training": [ + "G328", + "G419" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 70 + }, + "2018-03-15.15-30-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-v1-train": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 20 + }, + "2018-03-15.15-30-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ], + "kitware-training": [ + "G340" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 39 + }, + "2018-03-15.15-30-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 121 + }, + "2018-03-15.15-30-07.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 148 + }, + "2018-03-15.15-35-00.bus": { + "cameras": [ + "G331", + "G475", + "G508", + "G509", + "G505" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 4, + "geom_usable_actors": 105 + }, + "2018-03-15.15-35-00.school": { + "cameras": [ + "G299", + "G336", + "G339", + "G421", + "G423", + "G474", + "G638", + "G639", + "G424", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G336", + "G339", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G336", + "G424", + "G474" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G423", + "G424", + "G474", + "G639" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339", + "G421", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G424", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 26, + "geom_cameras": 8, + "geom_usable_actors": 721 + }, + "2018-03-15.15-35-01.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 2, + "geom_usable_actors": 9 + }, + "2018-03-15.15-35-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G506" + ], + "kitware-training": [ + "G506" + ], + "nist-json": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 51 + }, + "2018-03-15.15-35-01.school": { + "cameras": [ + "G328", + "G419", + "G420" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G420" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ], + "kitware": [ + "G328" + ], + "kitware-training": [ + "G419" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 60 + }, + "2018-03-15.15-35-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 51 + }, + "2018-03-15.15-35-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 15 + }, + "2018-03-15.15-35-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ], + "nist-json": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 66 + }, + "2018-03-15.15-35-07.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 186 + }, + "2018-03-15.15-40-00.bus": { + "cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G508", + "G509" + ], + "contrib/IBM-person-person": [ + "G331" + ], + "contrib/IBM-person-vehicle": [ + "G331", + "G509" + ], + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 11, + "geom_cameras": 4, + "geom_usable_actors": 132 + }, + "2018-03-15.15-40-00.school": { + "cameras": [ + "G299", + "G330", + "G336", + "G339", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G339", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G336", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G421", + "G423", + "G424", + "G638" + ], + "nist-json": [ + "G638" + ] + }, + "multi_camera": true, + "clip_count": 24, + "geom_cameras": 8, + "geom_usable_actors": 745 + }, + "2018-03-15.15-40-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 2, + "geom_usable_actors": 14 + }, + "2018-03-15.15-40-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "kitware-training": [ + "G506" + ] + }, + "multi_camera": false, + "clip_count": 1, + "geom_cameras": 1, + "geom_usable_actors": 66 + }, + "2018-03-15.15-40-01.school": { + "cameras": [ + "G328", + "G419", + "G420", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G420" + ], + "contrib/IBM-person-vehicle": [ + "G419" + ], + "kitware-training": [ + "G328", + "G419", + "G420", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 8, + "geom_cameras": 4, + "geom_usable_actors": 149 + }, + "2018-03-15.15-40-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 18 + }, + "2018-03-15.15-40-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 45 + }, + "2018-03-15.15-40-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 58 + }, + "2018-03-15.15-40-07.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 194 + }, + "2018-03-15.15-45-00.bus": { + "cameras": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G475", + "G508" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 13, + "geom_cameras": 4, + "geom_usable_actors": 200 + }, + "2018-03-15.15-45-00.school": { + "cameras": [ + "G336", + "G339", + "G421", + "G423", + "G424", + "G474", + "G638", + "G299", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G336", + "G339", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G421", + "G423", + "G424" + ], + "nist-json": [ + "G638" + ] + }, + "multi_camera": true, + "clip_count": 21, + "geom_cameras": 8, + "geom_usable_actors": 788 + }, + "2018-03-15.15-45-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 6 + }, + "2018-03-15.15-45-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G506" + ], + "kitware": [ + "G506" + ], + "nist-json": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 154 + }, + "2018-03-15.15-45-01.school": { + "cameras": [ + "G328", + "G420", + "G419" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "kitware-training": [ + "G328", + "G419", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 3, + "geom_usable_actors": 64 + }, + "2018-03-15.15-45-02.school": { + "cameras": [ + "G639" + ], + "sources": { + "contrib/IBM-person-vehicle": [ + "G639" + ], + "kitware-training": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 14 + }, + "2018-03-15.15-45-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/IBM-person-vehicle": [ + "G300" + ], + "kitware": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 4 + }, + "2018-03-15.15-45-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 67 + }, + "2018-03-15.15-45-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 78 + }, + "2018-03-15.15-45-07.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 5, + "geom_cameras": 2, + "geom_usable_actors": 275 + }, + "2018-03-15.15-50-00.bus": { + "cameras": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508" + ], + "contrib/IBM-person-vehicle": [ + "G475" + ], + "contrib/UMD-IBM": [ + "G331", + "G475", + "G505", + "G508" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware": [ + "G331", + "G508" + ], + "kitware-training": [ + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 15, + "geom_cameras": 4, + "geom_usable_actors": 89 + }, + "2018-03-15.15-50-00.school": { + "cameras": [ + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G299", + "G330" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G420", + "G423", + "G424", + "G638" + ], + "contrib/UMD-IBM": [ + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G336", + "G339" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G421", + "G423", + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 32, + "geom_cameras": 9, + "geom_usable_actors": 554 + }, + "2018-03-15.15-50-01.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 6, + "geom_cameras": 2, + "geom_usable_actors": 30 + }, + "2018-03-15.15-50-01.bus": { + "cameras": [ + "G506" + ], + "sources": { + "contrib/IBM-person-person": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 58 + }, + "2018-03-15.15-50-01.school": { + "cameras": [ + "G328", + "G419", + "G639" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419" + ], + "contrib/IBM-person-vehicle": [ + "G419", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G419", + "G639" + ], + "kitware-training": [ + "G328", + "G419", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 10, + "geom_cameras": 3, + "geom_usable_actors": 58 + }, + "2018-03-15.15-50-03.school": { + "cameras": [ + "G300" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 2, + "geom_cameras": 1, + "geom_usable_actors": 13 + }, + "2018-03-15.15-50-04.bus": { + "cameras": [ + "G340" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 3, + "geom_cameras": 1, + "geom_usable_actors": 36 + }, + "2018-03-15.15-50-06.hospital": { + "cameras": [ + "G341" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G341" + ], + "contrib/UMD-IBM": [ + "G341" + ], + "kitware": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 4, + "geom_cameras": 1, + "geom_usable_actors": 74 + }, + "2018-03-15.15-50-07.hospital": { + "cameras": [ + "G301", + "G436" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G436" + ], + "kitware": [ + "G301" + ], + "kitware-training": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 7, + "geom_cameras": 2, + "geom_usable_actors": 140 + } + }, + "stats": { + "total_canonical_slots": 929, + "slots_with_geom": 814, + "coverage_percent": 87.6, + "total_cameras": 2028, + "total_usable_actors": 89739, + "avg_actors_per_slot": 110 + } +} \ No newline at end of file diff --git a/meva/data/mevid_supported_slots.json b/meva/data/mevid_supported_slots.json new file mode 100644 index 0000000..85765f5 --- /dev/null +++ b/meva/data/mevid_supported_slots.json @@ -0,0 +1,33007 @@ +{ + "metadata": { + "extracted_persons": [ + 8, + 10, + 32, + 40, + 46, + 48, + 52, + 53, + 54, + 74, + 76, + 80, + 97, + 110, + 202, + 211, + 229, + 238, + 260, + 268, + 271, + 280, + 292 + ], + "total_persons": 23, + "cameras": [ + "G299", + "G300", + "G326", + "G328", + "G329", + "G330", + "G331", + "G336", + "G339", + "G340", + "G341", + "G419", + "G420", + "G421", + "G423", + "G424", + "G436", + "G505", + "G506", + "G507", + "G508", + "G509", + "G638", + "G639" + ], + "total_cameras": 24, + "total_slots": 887 + }, + "by_site": { + "admin": [ + "2018-03-05.13-10-00.admin", + "2018-03-05.13-15-00.admin", + "2018-03-05.13-20-00.admin", + "2018-03-05.14-00-00.admin", + "2018-03-05.14-05-00.admin", + "2018-03-05.14-10-00.admin", + "2018-03-07.10-55-00.admin", + "2018-03-07.10-55-01.admin", + "2018-03-07.11-00-00.admin", + "2018-03-07.11-00-01.admin", + "2018-03-07.11-05-00.admin", + "2018-03-07.11-05-01.admin", + "2018-03-07.11-10-00.admin", + "2018-03-07.11-10-01.admin", + "2018-03-07.16-50-00.admin", + "2018-03-07.16-50-01.admin", + "2018-03-07.16-55-00.admin", + "2018-03-07.16-55-01.admin", + "2018-03-07.17-00-00.admin", + "2018-03-07.17-00-01.admin", + "2018-03-07.17-05-00.admin", + "2018-03-07.17-05-01.admin", + "2018-03-07.17-20-00.admin", + "2018-03-07.17-20-01.admin", + "2018-03-07.17-25-00.admin", + "2018-03-07.17-25-01.admin", + "2018-03-07.17-30-00.admin", + "2018-03-07.17-30-01.admin", + "2018-03-07.17-35-00.admin", + "2018-03-07.17-35-01.admin", + "2018-03-09.10-10-01.admin", + "2018-03-09.10-15-01.admin", + "2018-03-09.10-20-01.admin", + "2018-03-09.10-25-01.admin", + "2018-03-09.10-30-01.admin", + "2018-03-09.10-35-01.admin", + "2018-03-09.10-40-01.admin", + "2018-03-11.11-20-00.admin", + "2018-03-11.11-20-01.admin", + "2018-03-11.11-25-00.admin", + "2018-03-11.11-25-01.admin", + "2018-03-11.11-30-00.admin", + "2018-03-11.11-30-01.admin", + "2018-03-11.11-35-00.admin", + "2018-03-11.11-35-01.admin", + "2018-03-11.11-40-00.admin", + "2018-03-11.11-40-01.admin", + "2018-03-11.11-45-00.admin", + "2018-03-11.11-45-01.admin", + "2018-03-11.11-50-00.admin", + "2018-03-11.11-50-01.admin", + "2018-03-11.11-55-00.admin", + "2018-03-11.11-55-01.admin", + "2018-03-11.13-50-00.admin", + "2018-03-11.13-50-01.admin", + "2018-03-11.13-55-00.admin", + "2018-03-11.13-55-01.admin", + "2018-03-11.14-00-00.admin", + "2018-03-11.14-00-01.admin", + "2018-03-11.14-05-00.admin", + "2018-03-11.14-05-01.admin", + "2018-03-11.14-10-00.admin", + "2018-03-11.14-10-01.admin", + "2018-03-11.14-15-00.admin", + "2018-03-11.14-15-01.admin", + "2018-03-11.14-20-00.admin", + "2018-03-11.14-20-01.admin", + "2018-03-11.16-10-01.admin", + "2018-03-11.16-15-01.admin", + "2018-03-11.16-20-01.admin", + "2018-03-11.16-25-01.admin", + "2018-03-11.16-30-01.admin", + "2018-03-11.16-35-01.admin", + "2018-03-11.16-40-01.admin", + "2018-03-11.17-10-01.admin", + "2018-03-11.17-15-01.admin", + "2018-03-11.17-20-01.admin", + "2018-03-11.17-25-01.admin", + "2018-03-12.10-00-01.admin", + "2018-03-12.10-00-02.admin", + "2018-03-12.10-05-01.admin", + "2018-03-12.10-10-01.admin", + "2018-03-12.10-15-01.admin", + "2018-03-12.10-20-01.admin", + "2018-03-12.10-25-01.admin", + "2018-03-12.10-30-00.admin", + "2018-03-12.10-30-01.admin", + "2018-03-12.10-40-00.admin", + "2018-03-12.10-40-01.admin", + "2018-03-12.10-45-00.admin", + "2018-03-12.10-45-01.admin", + "2018-03-12.10-50-01.admin", + "2018-03-12.10-50-02.admin", + "2018-03-12.10-55-01.admin", + "2018-03-12.10-55-02.admin", + "2018-03-12.11-00-01.admin", + "2018-03-12.11-05-01.admin", + "2018-03-12.11-10-01.admin", + "2018-03-13.15-50-01.admin", + "2018-03-13.15-55-01.admin", + "2018-03-13.16-00-01.admin", + "2018-03-13.16-05-01.admin", + "2018-03-13.16-10-01.admin", + "2018-03-13.16-15-01.admin", + "2018-03-13.16-20-01.admin", + "2018-03-13.16-25-01.admin", + "2018-03-13.16-30-01.admin", + "2018-03-13.17-05-01.admin", + "2018-03-13.17-10-01.admin", + "2018-03-13.17-15-01.admin", + "2018-03-13.17-20-01.admin", + "2018-03-13.17-25-01.admin", + "2018-03-13.17-30-01.admin", + "2018-03-13.17-35-01.admin", + "2018-03-13.17-40-01.admin", + "2018-03-15.14-50-01.admin", + "2018-03-15.14-55-01.admin", + "2018-03-15.15-00-01.admin", + "2018-03-15.15-05-01.admin", + "2018-03-15.15-10-01.admin", + "2018-03-15.15-15-01.admin", + "2018-03-15.15-30-01.admin", + "2018-03-15.15-35-01.admin", + "2018-03-15.15-40-01.admin", + "2018-03-15.15-45-01.admin", + "2018-03-15.15-50-01.admin", + "2018-03-15.15-55-01.admin" + ], + "bus": [ + "2018-03-05.13-10-00.bus", + "2018-03-05.13-10-01.bus", + "2018-03-05.13-15-00.bus", + "2018-03-05.13-15-01.bus", + "2018-03-05.13-20-00.bus", + "2018-03-05.13-20-01.bus", + "2018-03-05.14-00-00.bus", + "2018-03-05.14-00-01.bus", + "2018-03-05.14-05-00.bus", + "2018-03-05.14-05-01.bus", + "2018-03-05.14-10-00.bus", + "2018-03-05.14-10-01.bus", + "2018-03-07.10-55-00.bus", + "2018-03-07.10-55-01.bus", + "2018-03-07.10-55-06.bus", + "2018-03-07.11-00-00.bus", + "2018-03-07.11-00-01.bus", + "2018-03-07.11-00-06.bus", + "2018-03-07.11-05-00.bus", + "2018-03-07.11-05-01.bus", + "2018-03-07.11-05-06.bus", + "2018-03-07.11-10-00.bus", + "2018-03-07.11-10-01.bus", + "2018-03-07.11-10-06.bus", + "2018-03-07.16-50-00.bus", + "2018-03-07.16-50-01.bus", + "2018-03-07.16-55-00.bus", + "2018-03-07.16-55-01.bus", + "2018-03-07.17-00-00.bus", + "2018-03-07.17-00-01.bus", + "2018-03-07.17-05-00.bus", + "2018-03-07.17-05-01.bus", + "2018-03-07.17-20-00.bus", + "2018-03-07.17-20-01.bus", + "2018-03-07.17-25-00.bus", + "2018-03-07.17-25-01.bus", + "2018-03-07.17-30-00.bus", + "2018-03-07.17-30-01.bus", + "2018-03-07.17-35-00.bus", + "2018-03-07.17-35-01.bus", + "2018-03-09.10-10-00.bus", + "2018-03-09.10-10-01.bus", + "2018-03-09.10-15-00.bus", + "2018-03-09.10-15-01.bus", + "2018-03-09.10-20-00.bus", + "2018-03-09.10-20-01.bus", + "2018-03-09.10-25-00.bus", + "2018-03-09.10-25-01.bus", + "2018-03-09.10-30-00.bus", + "2018-03-09.10-30-01.bus", + "2018-03-09.10-35-00.bus", + "2018-03-09.10-35-01.bus", + "2018-03-09.10-40-00.bus", + "2018-03-09.10-40-01.bus", + "2018-03-11.11-20-00.bus", + "2018-03-11.11-20-01.bus", + "2018-03-11.11-20-08.bus", + "2018-03-11.11-25-00.bus", + "2018-03-11.11-25-01.bus", + "2018-03-11.11-25-08.bus", + "2018-03-11.11-30-00.bus", + "2018-03-11.11-30-01.bus", + "2018-03-11.11-30-08.bus", + "2018-03-11.11-35-00.bus", + "2018-03-11.11-35-01.bus", + "2018-03-11.11-35-08.bus", + "2018-03-11.11-40-00.bus", + "2018-03-11.11-40-01.bus", + "2018-03-11.11-40-08.bus", + "2018-03-11.11-45-00.bus", + "2018-03-11.11-45-01.bus", + "2018-03-11.11-45-08.bus", + "2018-03-11.11-50-00.bus", + "2018-03-11.11-50-01.bus", + "2018-03-11.11-50-08.bus", + "2018-03-11.11-55-00.bus", + "2018-03-11.11-55-01.bus", + "2018-03-11.11-55-08.bus", + "2018-03-11.13-50-00.bus", + "2018-03-11.13-50-01.bus", + "2018-03-11.13-50-08.bus", + "2018-03-11.13-55-00.bus", + "2018-03-11.13-55-01.bus", + "2018-03-11.13-55-08.bus", + "2018-03-11.14-00-00.bus", + "2018-03-11.14-00-01.bus", + "2018-03-11.14-00-08.bus", + "2018-03-11.14-05-00.bus", + "2018-03-11.14-05-01.bus", + "2018-03-11.14-05-08.bus", + "2018-03-11.14-10-00.bus", + "2018-03-11.14-10-01.bus", + "2018-03-11.14-10-08.bus", + "2018-03-11.14-15-00.bus", + "2018-03-11.14-15-01.bus", + "2018-03-11.14-15-08.bus", + "2018-03-11.14-20-00.bus", + "2018-03-11.14-20-01.bus", + "2018-03-11.14-20-08.bus", + "2018-03-11.16-10-00.bus", + "2018-03-11.16-10-01.bus", + "2018-03-11.16-10-08.bus", + "2018-03-11.16-15-00.bus", + "2018-03-11.16-15-01.bus", + "2018-03-11.16-15-08.bus", + "2018-03-11.16-20-00.bus", + "2018-03-11.16-20-01.bus", + "2018-03-11.16-20-08.bus", + "2018-03-11.16-25-00.bus", + "2018-03-11.16-25-01.bus", + "2018-03-11.16-25-08.bus", + "2018-03-11.16-30-00.bus", + "2018-03-11.16-30-01.bus", + "2018-03-11.16-30-08.bus", + "2018-03-11.16-35-00.bus", + "2018-03-11.16-35-01.bus", + "2018-03-11.16-35-08.bus", + "2018-03-11.16-40-00.bus", + "2018-03-11.16-40-01.bus", + "2018-03-11.16-40-08.bus", + "2018-03-11.16-45-00.bus", + "2018-03-11.17-10-00.bus", + "2018-03-11.17-10-01.bus", + "2018-03-11.17-10-08.bus", + "2018-03-11.17-15-00.bus", + "2018-03-11.17-15-01.bus", + "2018-03-11.17-15-08.bus", + "2018-03-11.17-20-00.bus", + "2018-03-11.17-20-01.bus", + "2018-03-11.17-20-08.bus", + "2018-03-11.17-25-00.bus", + "2018-03-11.17-25-01.bus", + "2018-03-11.17-25-08.bus", + "2018-03-12.10-00-00.bus", + "2018-03-12.10-00-01.bus", + "2018-03-12.10-05-00.bus", + "2018-03-12.10-05-01.bus", + "2018-03-12.10-10-00.bus", + "2018-03-12.10-10-01.bus", + "2018-03-12.10-15-00.bus", + "2018-03-12.10-15-01.bus", + "2018-03-12.10-20-00.bus", + "2018-03-12.10-20-01.bus", + "2018-03-12.10-25-00.bus", + "2018-03-12.10-25-01.bus", + "2018-03-12.10-30-00.bus", + "2018-03-12.10-30-01.bus", + "2018-03-12.10-40-00.bus", + "2018-03-12.10-40-01.bus", + "2018-03-12.10-45-00.bus", + "2018-03-12.10-45-01.bus", + "2018-03-12.10-50-00.bus", + "2018-03-12.10-50-01.bus", + "2018-03-12.10-55-00.bus", + "2018-03-12.11-00-00.bus", + "2018-03-12.11-00-01.bus", + "2018-03-12.11-05-00.bus", + "2018-03-12.11-05-01.bus", + "2018-03-12.11-10-00.bus", + "2018-03-13.15-50-00.bus", + "2018-03-13.15-50-04.bus", + "2018-03-13.15-55-00.bus", + "2018-03-13.15-55-04.bus", + "2018-03-13.16-00-00.bus", + "2018-03-13.16-00-05.bus", + "2018-03-13.16-05-00.bus", + "2018-03-13.16-05-05.bus", + "2018-03-13.16-10-00.bus", + "2018-03-13.16-10-05.bus", + "2018-03-13.16-15-00.bus", + "2018-03-13.16-15-05.bus", + "2018-03-13.16-20-00.bus", + "2018-03-13.16-20-05.bus", + "2018-03-13.16-25-00.bus", + "2018-03-13.16-25-05.bus", + "2018-03-13.16-30-00.bus", + "2018-03-13.16-30-04.bus", + "2018-03-13.17-05-00.bus", + "2018-03-13.17-05-05.bus", + "2018-03-13.17-10-00.bus", + "2018-03-13.17-10-05.bus", + "2018-03-13.17-15-00.bus", + "2018-03-13.17-15-05.bus", + "2018-03-13.17-20-00.bus", + "2018-03-13.17-20-05.bus", + "2018-03-13.17-25-00.bus", + "2018-03-13.17-25-05.bus", + "2018-03-13.17-30-00.bus", + "2018-03-13.17-30-01.bus", + "2018-03-13.17-30-05.bus", + "2018-03-13.17-35-00.bus", + "2018-03-13.17-35-01.bus", + "2018-03-13.17-35-05.bus", + "2018-03-13.17-40-00.bus", + "2018-03-13.17-40-01.bus", + "2018-03-13.17-40-05.bus", + "2018-03-15.14-50-00.bus", + "2018-03-15.14-50-01.bus", + "2018-03-15.14-50-04.bus", + "2018-03-15.14-55-00.bus", + "2018-03-15.14-55-01.bus", + "2018-03-15.14-55-04.bus", + "2018-03-15.15-00-00.bus", + "2018-03-15.15-00-01.bus", + "2018-03-15.15-00-04.bus", + "2018-03-15.15-05-00.bus", + "2018-03-15.15-05-01.bus", + "2018-03-15.15-05-04.bus", + "2018-03-15.15-10-00.bus", + "2018-03-15.15-10-01.bus", + "2018-03-15.15-10-04.bus", + "2018-03-15.15-15-00.bus", + "2018-03-15.15-15-01.bus", + "2018-03-15.15-15-04.bus", + "2018-03-15.15-30-00.bus", + "2018-03-15.15-30-01.bus", + "2018-03-15.15-30-04.bus", + "2018-03-15.15-35-00.bus", + "2018-03-15.15-35-01.bus", + "2018-03-15.15-35-04.bus", + "2018-03-15.15-40-00.bus", + "2018-03-15.15-40-01.bus", + "2018-03-15.15-40-04.bus", + "2018-03-15.15-45-00.bus", + "2018-03-15.15-45-01.bus", + "2018-03-15.15-45-04.bus", + "2018-03-15.15-50-00.bus", + "2018-03-15.15-50-01.bus", + "2018-03-15.15-50-04.bus", + "2018-03-15.15-55-00.bus", + "2018-03-15.15-55-01.bus", + "2018-03-15.15-55-04.bus" + ], + "hospital": [ + "2018-03-05.13-10-00.hospital", + "2018-03-05.13-15-00.hospital", + "2018-03-05.13-20-00.hospital", + "2018-03-05.14-00-00.hospital", + "2018-03-05.14-05-00.hospital", + "2018-03-05.14-10-00.hospital", + "2018-03-07.10-55-00.hospital", + "2018-03-07.10-55-04.hospital", + "2018-03-07.11-00-00.hospital", + "2018-03-07.11-00-04.hospital", + "2018-03-07.11-05-00.hospital", + "2018-03-07.11-05-04.hospital", + "2018-03-07.11-10-00.hospital", + "2018-03-07.11-10-04.hospital", + "2018-03-07.16-50-01.hospital", + "2018-03-07.16-50-05.hospital", + "2018-03-07.16-55-01.hospital", + "2018-03-07.16-55-05.hospital", + "2018-03-07.17-00-01.hospital", + "2018-03-07.17-00-05.hospital", + "2018-03-07.17-05-01.hospital", + "2018-03-07.17-05-05.hospital", + "2018-03-07.17-20-01.hospital", + "2018-03-07.17-20-05.hospital", + "2018-03-07.17-25-01.hospital", + "2018-03-07.17-25-05.hospital", + "2018-03-07.17-30-01.hospital", + "2018-03-07.17-30-05.hospital", + "2018-03-07.17-35-01.hospital", + "2018-03-07.17-35-05.hospital", + "2018-03-09.10-10-01.hospital", + "2018-03-09.10-10-02.hospital", + "2018-03-09.10-15-01.hospital", + "2018-03-09.10-15-02.hospital", + "2018-03-09.10-20-01.hospital", + "2018-03-09.10-20-02.hospital", + "2018-03-09.10-25-01.hospital", + "2018-03-09.10-30-01.hospital", + "2018-03-09.10-30-02.hospital", + "2018-03-09.10-35-01.hospital", + "2018-03-09.10-35-02.hospital", + "2018-03-09.10-40-01.hospital", + "2018-03-09.10-40-02.hospital", + "2018-03-11.11-15-08.hospital", + "2018-03-11.11-20-08.hospital", + "2018-03-11.11-25-08.hospital", + "2018-03-11.11-30-08.hospital", + "2018-03-11.11-35-08.hospital", + "2018-03-11.11-40-08.hospital", + "2018-03-11.11-45-08.hospital", + "2018-03-11.11-50-08.hospital", + "2018-03-11.11-55-08.hospital", + "2018-03-11.13-50-08.hospital", + "2018-03-11.13-55-08.hospital", + "2018-03-11.14-00-08.hospital", + "2018-03-11.14-05-08.hospital", + "2018-03-11.14-10-08.hospital", + "2018-03-11.14-15-08.hospital", + "2018-03-11.14-20-08.hospital", + "2018-03-11.16-10-08.hospital", + "2018-03-11.16-15-08.hospital", + "2018-03-11.16-20-08.hospital", + "2018-03-11.16-25-08.hospital", + "2018-03-11.16-30-08.hospital", + "2018-03-11.16-30-09.hospital", + "2018-03-11.16-35-08.hospital", + "2018-03-11.16-40-08.hospital", + "2018-03-11.17-10-08.hospital", + "2018-03-11.17-10-09.hospital", + "2018-03-11.17-15-08.hospital", + "2018-03-11.17-15-09.hospital", + "2018-03-11.17-20-08.hospital", + "2018-03-11.17-20-09.hospital", + "2018-03-11.17-25-08.hospital", + "2018-03-11.17-25-09.hospital", + "2018-03-12.10-00-00.hospital", + "2018-03-12.10-05-00.hospital", + "2018-03-12.10-10-00.hospital", + "2018-03-12.10-15-00.hospital", + "2018-03-12.10-20-00.hospital", + "2018-03-12.10-25-00.hospital", + "2018-03-12.10-30-00.hospital", + "2018-03-12.10-40-00.hospital", + "2018-03-12.10-45-00.hospital", + "2018-03-12.10-50-00.hospital", + "2018-03-12.10-55-00.hospital", + "2018-03-12.11-00-00.hospital", + "2018-03-12.11-05-00.hospital", + "2018-03-12.11-10-00.hospital", + "2018-03-13.15-50-02.hospital", + "2018-03-13.15-55-02.hospital", + "2018-03-13.16-00-02.hospital", + "2018-03-13.16-05-02.hospital", + "2018-03-13.16-10-02.hospital", + "2018-03-13.16-15-02.hospital", + "2018-03-13.16-20-02.hospital", + "2018-03-13.16-25-02.hospital", + "2018-03-13.16-30-02.hospital", + "2018-03-13.17-05-02.hospital", + "2018-03-13.17-05-03.hospital", + "2018-03-13.17-10-02.hospital", + "2018-03-13.17-10-03.hospital", + "2018-03-13.17-15-02.hospital", + "2018-03-13.17-15-03.hospital", + "2018-03-13.17-20-02.hospital", + "2018-03-13.17-20-03.hospital", + "2018-03-13.17-25-02.hospital", + "2018-03-13.17-25-03.hospital", + "2018-03-13.17-30-02.hospital", + "2018-03-13.17-30-03.hospital", + "2018-03-13.17-35-02.hospital", + "2018-03-13.17-35-03.hospital", + "2018-03-13.17-40-02.hospital", + "2018-03-13.17-40-03.hospital", + "2018-03-15.14-50-06.hospital", + "2018-03-15.14-50-07.hospital", + "2018-03-15.14-55-06.hospital", + "2018-03-15.14-55-07.hospital", + "2018-03-15.15-00-06.hospital", + "2018-03-15.15-00-07.hospital", + "2018-03-15.15-05-06.hospital", + "2018-03-15.15-05-07.hospital", + "2018-03-15.15-10-06.hospital", + "2018-03-15.15-10-07.hospital", + "2018-03-15.15-15-06.hospital", + "2018-03-15.15-15-07.hospital", + "2018-03-15.15-30-06.hospital", + "2018-03-15.15-30-07.hospital", + "2018-03-15.15-35-06.hospital", + "2018-03-15.15-35-07.hospital", + "2018-03-15.15-40-06.hospital", + "2018-03-15.15-40-07.hospital", + "2018-03-15.15-45-06.hospital", + "2018-03-15.15-45-07.hospital", + "2018-03-15.15-50-06.hospital", + "2018-03-15.15-50-07.hospital", + "2018-03-15.15-55-06.hospital", + "2018-03-15.15-55-07.hospital" + ], + "school": [ + "2018-03-05.13-10-00.school", + "2018-03-05.13-10-01.school", + "2018-03-05.13-15-00.school", + "2018-03-05.13-15-01.school", + "2018-03-05.13-20-00.school", + "2018-03-05.13-20-01.school", + "2018-03-05.14-00-00.school", + "2018-03-05.14-00-01.school", + "2018-03-05.14-05-00.school", + "2018-03-05.14-05-01.school", + "2018-03-05.14-10-00.school", + "2018-03-05.14-10-01.school", + "2018-03-07.10-55-00.school", + "2018-03-07.10-55-01.school", + "2018-03-07.10-55-05.school", + "2018-03-07.10-55-06.school", + "2018-03-07.10-55-07.school", + "2018-03-07.11-00-00.school", + "2018-03-07.11-00-01.school", + "2018-03-07.11-00-05.school", + "2018-03-07.11-00-06.school", + "2018-03-07.11-00-07.school", + "2018-03-07.11-05-00.school", + "2018-03-07.11-05-01.school", + "2018-03-07.11-05-05.school", + "2018-03-07.11-05-06.school", + "2018-03-07.11-05-07.school", + "2018-03-07.11-10-00.school", + "2018-03-07.11-10-01.school", + "2018-03-07.11-10-05.school", + "2018-03-07.11-10-06.school", + "2018-03-07.11-10-07.school", + "2018-03-07.16-50-00.school", + "2018-03-07.16-50-01.school", + "2018-03-07.16-50-06.school", + "2018-03-07.16-55-00.school", + "2018-03-07.16-55-01.school", + "2018-03-07.16-55-06.school", + "2018-03-07.17-00-00.school", + "2018-03-07.17-00-01.school", + "2018-03-07.17-00-06.school", + "2018-03-07.17-05-00.school", + "2018-03-07.17-05-01.school", + "2018-03-07.17-05-06.school", + "2018-03-07.17-20-00.school", + "2018-03-07.17-20-01.school", + "2018-03-07.17-20-06.school", + "2018-03-07.17-23-58.school", + "2018-03-07.17-25-00.school", + "2018-03-07.17-25-01.school", + "2018-03-07.17-25-03.school", + "2018-03-07.17-25-06.school", + "2018-03-07.17-25-10.school", + "2018-03-07.17-30-00.school", + "2018-03-07.17-30-01.school", + "2018-03-07.17-30-03.school", + "2018-03-07.17-30-06.school", + "2018-03-07.17-35-00.school", + "2018-03-07.17-35-01.school", + "2018-03-07.17-35-03.school", + "2018-03-07.17-35-06.school", + "2018-03-09.10-10-00.school", + "2018-03-09.10-10-01.school", + "2018-03-09.10-15-00.school", + "2018-03-09.10-15-01.school", + "2018-03-09.10-20-00.school", + "2018-03-09.10-20-01.school", + "2018-03-09.10-25-00.school", + "2018-03-09.10-25-01.school", + "2018-03-09.10-30-00.school", + "2018-03-09.10-30-01.school", + "2018-03-09.10-35-00.school", + "2018-03-09.10-35-01.school", + "2018-03-09.10-40-00.school", + "2018-03-09.10-40-01.school", + "2018-03-11.11-15-00.school", + "2018-03-11.11-15-01.school", + "2018-03-11.11-15-04.school", + "2018-03-11.11-20-00.school", + "2018-03-11.11-20-01.school", + "2018-03-11.11-20-04.school", + "2018-03-11.11-25-00.school", + "2018-03-11.11-25-01.school", + "2018-03-11.11-25-04.school", + "2018-03-11.11-30-00.school", + "2018-03-11.11-30-01.school", + "2018-03-11.11-30-04.school", + "2018-03-11.11-35-00.school", + "2018-03-11.11-35-01.school", + "2018-03-11.11-35-04.school", + "2018-03-11.11-40-00.school", + "2018-03-11.11-40-01.school", + "2018-03-11.11-40-02.school", + "2018-03-11.11-40-04.school", + "2018-03-11.11-45-00.school", + "2018-03-11.11-45-01.school", + "2018-03-11.11-45-04.school", + "2018-03-11.11-50-00.school", + "2018-03-11.11-50-01.school", + "2018-03-11.11-50-04.school", + "2018-03-11.11-55-00.school", + "2018-03-11.11-55-01.school", + "2018-03-11.11-55-04.school", + "2018-03-11.12-00-00.school", + "2018-03-11.13-50-00.school", + "2018-03-11.13-50-01.school", + "2018-03-11.13-50-04.school", + "2018-03-11.13-55-00.school", + "2018-03-11.13-55-01.school", + "2018-03-11.13-55-04.school", + "2018-03-11.14-00-00.school", + "2018-03-11.14-00-01.school", + "2018-03-11.14-00-02.school", + "2018-03-11.14-00-04.school", + "2018-03-11.14-05-00.school", + "2018-03-11.14-05-01.school", + "2018-03-11.14-05-02.school", + "2018-03-11.14-05-04.school", + "2018-03-11.14-10-00.school", + "2018-03-11.14-10-01.school", + "2018-03-11.14-10-02.school", + "2018-03-11.14-10-04.school", + "2018-03-11.14-15-00.school", + "2018-03-11.14-15-01.school", + "2018-03-11.14-15-02.school", + "2018-03-11.14-15-04.school", + "2018-03-11.14-20-00.school", + "2018-03-11.14-20-01.school", + "2018-03-11.14-20-02.school", + "2018-03-11.14-20-04.school", + "2018-03-11.16-10-01.school", + "2018-03-11.16-15-00.school", + "2018-03-11.16-15-01.school", + "2018-03-11.16-15-02.school", + "2018-03-11.16-15-04.school", + "2018-03-11.16-20-00.school", + "2018-03-11.16-20-01.school", + "2018-03-11.16-20-02.school", + "2018-03-11.16-20-04.school", + "2018-03-11.16-25-00.school", + "2018-03-11.16-25-01.school", + "2018-03-11.16-25-02.school", + "2018-03-11.16-25-04.school", + "2018-03-11.16-30-00.school", + "2018-03-11.16-30-01.school", + "2018-03-11.16-30-02.school", + "2018-03-11.16-30-04.school", + "2018-03-11.16-35-00.school", + "2018-03-11.16-35-01.school", + "2018-03-11.16-35-02.school", + "2018-03-11.16-35-04.school", + "2018-03-11.16-40-00.school", + "2018-03-11.16-40-01.school", + "2018-03-11.16-40-02.school", + "2018-03-11.16-40-04.school", + "2018-03-11.16-45-00.school", + "2018-03-11.17-10-00.school", + "2018-03-11.17-10-01.school", + "2018-03-11.17-10-02.school", + "2018-03-11.17-10-04.school", + "2018-03-11.17-15-00.school", + "2018-03-11.17-15-01.school", + "2018-03-11.17-15-02.school", + "2018-03-11.17-15-04.school", + "2018-03-11.17-20-00.school", + "2018-03-11.17-20-01.school", + "2018-03-11.17-20-02.school", + "2018-03-11.17-20-04.school", + "2018-03-11.17-25-00.school", + "2018-03-11.17-25-01.school", + "2018-03-11.17-25-02.school", + "2018-03-11.17-25-04.school", + "2018-03-12.10-00-00.school", + "2018-03-12.10-00-01.school", + "2018-03-12.10-00-02.school", + "2018-03-12.10-00-04.school", + "2018-03-12.10-00-05.school", + "2018-03-12.10-05-00.school", + "2018-03-12.10-05-01.school", + "2018-03-12.10-05-02.school", + "2018-03-12.10-05-03.school", + "2018-03-12.10-05-04.school", + "2018-03-12.10-05-05.school", + "2018-03-12.10-10-00.school", + "2018-03-12.10-10-01.school", + "2018-03-12.10-10-02.school", + "2018-03-12.10-10-03.school", + "2018-03-12.10-10-04.school", + "2018-03-12.10-10-05.school", + "2018-03-12.10-15-00.school", + "2018-03-12.10-15-01.school", + "2018-03-12.10-15-02.school", + "2018-03-12.10-15-03.school", + "2018-03-12.10-15-04.school", + "2018-03-12.10-15-05.school", + "2018-03-12.10-20-00.school", + "2018-03-12.10-20-01.school", + "2018-03-12.10-20-02.school", + "2018-03-12.10-20-03.school", + "2018-03-12.10-20-04.school", + "2018-03-12.10-20-05.school", + "2018-03-12.10-25-00.school", + "2018-03-12.10-25-01.school", + "2018-03-12.10-25-02.school", + "2018-03-12.10-25-03.school", + "2018-03-12.10-25-04.school", + "2018-03-12.10-25-05.school", + "2018-03-12.10-30-00.school", + "2018-03-12.10-30-01.school", + "2018-03-12.10-30-02.school", + "2018-03-12.10-30-03.school", + "2018-03-12.10-30-04.school", + "2018-03-12.10-30-05.school", + "2018-03-12.10-40-00.school", + "2018-03-12.10-40-01.school", + "2018-03-12.10-40-02.school", + "2018-03-12.10-40-03.school", + "2018-03-12.10-40-04.school", + "2018-03-12.10-40-05.school", + "2018-03-12.10-45-00.school", + "2018-03-12.10-45-01.school", + "2018-03-12.10-45-02.school", + "2018-03-12.10-45-03.school", + "2018-03-12.10-45-04.school", + "2018-03-12.10-45-05.school", + "2018-03-12.10-50-00.school", + "2018-03-12.10-50-01.school", + "2018-03-12.10-50-02.school", + "2018-03-12.10-50-03.school", + "2018-03-12.10-50-04.school", + "2018-03-12.10-50-05.school", + "2018-03-12.10-55-00.school", + "2018-03-12.10-55-01.school", + "2018-03-12.10-55-02.school", + "2018-03-12.10-55-03.school", + "2018-03-12.10-55-04.school", + "2018-03-12.10-55-05.school", + "2018-03-12.11-00-00.school", + "2018-03-12.11-00-01.school", + "2018-03-12.11-00-02.school", + "2018-03-12.11-00-03.school", + "2018-03-12.11-00-04.school", + "2018-03-12.11-00-05.school", + "2018-03-12.11-05-00.school", + "2018-03-12.11-05-01.school", + "2018-03-12.11-05-02.school", + "2018-03-12.11-05-03.school", + "2018-03-12.11-05-04.school", + "2018-03-12.11-05-05.school", + "2018-03-12.11-10-00.school", + "2018-03-12.11-10-01.school", + "2018-03-12.11-10-02.school", + "2018-03-12.11-10-03.school", + "2018-03-12.11-10-04.school", + "2018-03-12.11-10-05.school", + "2018-03-13.15-50-00.school", + "2018-03-13.15-50-01.school", + "2018-03-13.15-50-02.school", + "2018-03-13.15-50-03.school", + "2018-03-13.15-50-05.school", + "2018-03-13.15-50-08.school", + "2018-03-13.15-55-00.school", + "2018-03-13.15-55-01.school", + "2018-03-13.15-55-02.school", + "2018-03-13.15-55-03.school", + "2018-03-13.15-55-05.school", + "2018-03-13.15-55-08.school", + "2018-03-13.16-00-00.school", + "2018-03-13.16-00-01.school", + "2018-03-13.16-00-02.school", + "2018-03-13.16-00-03.school", + "2018-03-13.16-00-05.school", + "2018-03-13.16-00-08.school", + "2018-03-13.16-05-00.school", + "2018-03-13.16-05-01.school", + "2018-03-13.16-05-02.school", + "2018-03-13.16-05-03.school", + "2018-03-13.16-05-05.school", + "2018-03-13.16-05-08.school", + "2018-03-13.16-10-00.school", + "2018-03-13.16-10-01.school", + "2018-03-13.16-10-03.school", + "2018-03-13.16-10-05.school", + "2018-03-13.16-10-08.school", + "2018-03-13.16-15-00.school", + "2018-03-13.16-15-01.school", + "2018-03-13.16-15-03.school", + "2018-03-13.16-15-05.school", + "2018-03-13.16-15-08.school", + "2018-03-13.16-16-02.school", + "2018-03-13.16-20-00.school", + "2018-03-13.16-20-01.school", + "2018-03-13.16-20-03.school", + "2018-03-13.16-20-05.school", + "2018-03-13.16-20-08.school", + "2018-03-13.16-25-00.school", + "2018-03-13.16-25-01.school", + "2018-03-13.16-25-03.school", + "2018-03-13.16-25-05.school", + "2018-03-13.16-25-08.school", + "2018-03-13.16-26-28.school", + "2018-03-13.16-30-00.school", + "2018-03-13.16-30-01.school", + "2018-03-13.16-30-03.school", + "2018-03-13.16-30-05.school", + "2018-03-13.16-30-08.school", + "2018-03-13.16-32-54.school", + "2018-03-13.17-05-00.school", + "2018-03-13.17-05-01.school", + "2018-03-13.17-05-03.school", + "2018-03-13.17-05-05.school", + "2018-03-13.17-05-08.school", + "2018-03-13.17-10-00.school", + "2018-03-13.17-10-01.school", + "2018-03-13.17-10-03.school", + "2018-03-13.17-10-05.school", + "2018-03-13.17-10-08.school", + "2018-03-13.17-15-00.school", + "2018-03-13.17-15-01.school", + "2018-03-13.17-15-03.school", + "2018-03-13.17-15-05.school", + "2018-03-13.17-15-08.school", + "2018-03-13.17-16-48.school", + "2018-03-13.17-20-00.school", + "2018-03-13.17-20-01.school", + "2018-03-13.17-20-03.school", + "2018-03-13.17-20-05.school", + "2018-03-13.17-20-08.school", + "2018-03-13.17-20-14.school", + "2018-03-13.17-21-20.school", + "2018-03-13.17-24-36.school", + "2018-03-13.17-25-00.school", + "2018-03-13.17-25-01.school", + "2018-03-13.17-25-03.school", + "2018-03-13.17-25-05.school", + "2018-03-13.17-25-08.school", + "2018-03-13.17-30-00.school", + "2018-03-13.17-30-01.school", + "2018-03-13.17-30-03.school", + "2018-03-13.17-30-05.school", + "2018-03-13.17-30-08.school", + "2018-03-13.17-35-00.school", + "2018-03-13.17-35-01.school", + "2018-03-13.17-35-03.school", + "2018-03-13.17-35-05.school", + "2018-03-13.17-35-08.school", + "2018-03-13.17-40-00.school", + "2018-03-13.17-40-01.school", + "2018-03-13.17-40-03.school", + "2018-03-13.17-40-05.school", + "2018-03-13.17-40-08.school", + "2018-03-13.17-41-20.school", + "2018-03-13.17-42-52.school", + "2018-03-15.14-50-00.school", + "2018-03-15.14-50-01.school", + "2018-03-15.14-50-03.school", + "2018-03-15.14-55-00.school", + "2018-03-15.14-55-01.school", + "2018-03-15.14-55-03.school", + "2018-03-15.15-00-00.school", + "2018-03-15.15-00-01.school", + "2018-03-15.15-00-03.school", + "2018-03-15.15-05-00.school", + "2018-03-15.15-05-01.school", + "2018-03-15.15-05-03.school", + "2018-03-15.15-10-00.school", + "2018-03-15.15-10-01.school", + "2018-03-15.15-10-03.school", + "2018-03-15.15-15-00.school", + "2018-03-15.15-15-01.school", + "2018-03-15.15-15-03.school", + "2018-03-15.15-30-00.school", + "2018-03-15.15-30-01.school", + "2018-03-15.15-30-03.school", + "2018-03-15.15-35-00.school", + "2018-03-15.15-35-01.school", + "2018-03-15.15-35-03.school", + "2018-03-15.15-40-00.school", + "2018-03-15.15-40-01.school", + "2018-03-15.15-40-03.school", + "2018-03-15.15-45-00.school", + "2018-03-15.15-45-01.school", + "2018-03-15.15-45-02.school", + "2018-03-15.15-45-03.school", + "2018-03-15.15-50-00.school", + "2018-03-15.15-50-01.school", + "2018-03-15.15-50-03.school", + "2018-03-15.15-55-00.school", + "2018-03-15.15-55-01.school", + "2018-03-15.15-55-03.school" + ] + }, + "slots": { + "2018-03-05.13-10-00.admin": { + "date": "2018-03-05", + "time": "13-10-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-05.13-10-00.bus": { + "date": "2018-03-05", + "time": "13-10-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G340", + "G505", + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G340", + "G505", + "G506" + ] + } + }, + "2018-03-05.13-10-00.hospital": { + "date": "2018-03-05", + "time": "13-10-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-05.13-10-00.school": { + "date": "2018-03-05", + "time": "13-10-00", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G421", + "G423", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G421", + "G423", + "G424" + ] + } + }, + "2018-03-05.13-10-01.bus": { + "date": "2018-03-05", + "time": "13-10-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-05.13-10-01.school": { + "date": "2018-03-05", + "time": "13-10-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G339", + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware-training": [ + "G328", + "G339", + "G419", + "G420" + ] + } + }, + "2018-03-05.13-15-00.admin": { + "date": "2018-03-05", + "time": "13-15-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-05.13-15-00.bus": { + "date": "2018-03-05", + "time": "13-15-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G340", + "G505", + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G340", + "G505", + "G506" + ] + } + }, + "2018-03-05.13-15-00.hospital": { + "date": "2018-03-05", + "time": "13-15-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-05.13-15-00.school": { + "date": "2018-03-05", + "time": "13-15-00", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G421", + "G423", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G421" + ] + } + }, + "2018-03-05.13-15-01.bus": { + "date": "2018-03-05", + "time": "13-15-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-05.13-15-01.school": { + "date": "2018-03-05", + "time": "13-15-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G339", + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware": [ + "G328" + ], + "kitware-training": [ + "G339", + "G419", + "G420" + ] + } + }, + "2018-03-05.13-20-00.admin": { + "date": "2018-03-05", + "time": "13-20-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-05.13-20-00.bus": { + "date": "2018-03-05", + "time": "13-20-00", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G340", + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-05.13-20-00.hospital": { + "date": "2018-03-05", + "time": "13-20-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-05.13-20-00.school": { + "date": "2018-03-05", + "time": "13-20-00", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G421", + "G423", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G336", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G421" + ] + } + }, + "2018-03-05.13-20-01.bus": { + "date": "2018-03-05", + "time": "13-20-01", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G331" + ], + "kitware-training": [ + "G505", + "G508", + "G509" + ] + } + }, + "2018-03-05.13-20-01.school": { + "date": "2018-03-05", + "time": "13-20-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G339", + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware": [ + "G328", + "G419", + "G420" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-05.14-00-00.admin": { + "date": "2018-03-05", + "time": "14-00-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-05.14-00-00.bus": { + "date": "2018-03-05", + "time": "14-00-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware-training": [ + "G340", + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-05.14-00-00.hospital": { + "date": "2018-03-05", + "time": "14-00-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-05.14-00-00.school": { + "date": "2018-03-05", + "time": "14-00-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G420" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G421", + "G423", + "G424" + ] + } + }, + "2018-03-05.14-00-01.bus": { + "date": "2018-03-05", + "time": "14-00-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G331", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G331", + "G509" + ] + } + }, + "2018-03-05.14-00-01.school": { + "date": "2018-03-05", + "time": "14-00-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G339", + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware-training": [ + "G328", + "G339", + "G419" + ] + } + }, + "2018-03-05.14-05-00.admin": { + "date": "2018-03-05", + "time": "14-05-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-05.14-05-00.bus": { + "date": "2018-03-05", + "time": "14-05-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G506" + ], + "kitware-training": [ + "G340", + "G505", + "G508" + ] + } + }, + "2018-03-05.14-05-00.hospital": { + "date": "2018-03-05", + "time": "14-05-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-05.14-05-00.school": { + "date": "2018-03-05", + "time": "14-05-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424" + ] + } + }, + "2018-03-05.14-05-01.bus": { + "date": "2018-03-05", + "time": "14-05-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G331", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G331", + "G509" + ] + } + }, + "2018-03-05.14-05-01.school": { + "date": "2018-03-05", + "time": "14-05-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G339", + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware": [ + "G328" + ], + "kitware-training": [ + "G339", + "G419" + ] + } + }, + "2018-03-05.14-10-00.admin": { + "date": "2018-03-05", + "time": "14-10-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-05.14-10-00.bus": { + "date": "2018-03-05", + "time": "14-10-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G340", + "G505", + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G340", + "G505", + "G506" + ] + } + }, + "2018-03-05.14-10-00.hospital": { + "date": "2018-03-05", + "time": "14-10-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-05.14-10-00.school": { + "date": "2018-03-05", + "time": "14-10-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G330", + "G420", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G423" + ] + } + }, + "2018-03-05.14-10-01.bus": { + "date": "2018-03-05", + "time": "14-10-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-05.14-10-01.school": { + "date": "2018-03-05", + "time": "14-10-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G339", + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware-training": [ + "G328", + "G339", + "G419" + ] + } + }, + "2018-03-07.10-55-00.admin": { + "date": "2018-03-07", + "time": "10-55-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-07.10-55-00.bus": { + "date": "2018-03-07", + "time": "10-55-00", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G331", + "G508" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0211", + "0271", + "0280" + ], + "sources": { + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331" + ] + } + }, + "2018-03-07.10-55-00.hospital": { + "date": "2018-03-07", + "time": "10-55-00", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G436" + ] + } + }, + "2018-03-07.10-55-00.school": { + "date": "2018-03-07", + "time": "10-55-00", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G299", + "G330", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "kitware-training": [ + "G299", + "G330", + "G420" + ] + } + }, + "2018-03-07.10-55-01.admin": { + "date": "2018-03-07", + "time": "10-55-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-07.10-55-01.bus": { + "date": "2018-03-07", + "time": "10-55-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G506", + "G509" + ] + } + }, + "2018-03-07.10-55-01.school": { + "date": "2018-03-07", + "time": "10-55-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G421", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware": [ + "G328", + "G419", + "G423" + ], + "kitware-training": [ + "G421" + ] + } + }, + "2018-03-07.10-55-04.hospital": { + "date": "2018-03-07", + "time": "10-55-04", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G341" + ] + } + }, + "2018-03-07.10-55-05.school": { + "date": "2018-03-07", + "time": "10-55-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware": [ + "G424" + ] + } + }, + "2018-03-07.10-55-06.bus": { + "date": "2018-03-07", + "time": "10-55-06", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-07.10-55-06.school": { + "date": "2018-03-07", + "time": "10-55-06", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G300", + "G336" + ], + "mevid_persons": [ + "0010", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware-training": [ + "G300", + "G336" + ] + } + }, + "2018-03-07.10-55-07.school": { + "date": "2018-03-07", + "time": "10-55-07", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G339" + ] + } + }, + "2018-03-07.11-00-00.admin": { + "date": "2018-03-07", + "time": "11-00-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware": [ + "G329" + ] + } + }, + "2018-03-07.11-00-00.bus": { + "date": "2018-03-07", + "time": "11-00-00", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G331", + "G508" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0211", + "0271", + "0280" + ], + "sources": { + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331" + ] + } + }, + "2018-03-07.11-00-00.hospital": { + "date": "2018-03-07", + "time": "11-00-00", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G436" + ] + } + }, + "2018-03-07.11-00-00.school": { + "date": "2018-03-07", + "time": "11-00-00", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "kitware": [ + "G420" + ], + "kitware-training": [ + "G299", + "G330", + "G423" + ] + } + }, + "2018-03-07.11-00-01.admin": { + "date": "2018-03-07", + "time": "11-00-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-07.11-00-01.bus": { + "date": "2018-03-07", + "time": "11-00-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G505", + "G506", + "G509" + ] + } + }, + "2018-03-07.11-00-01.school": { + "date": "2018-03-07", + "time": "11-00-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G419", + "G421" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware": [ + "G328", + "G419", + "G421" + ] + } + }, + "2018-03-07.11-00-04.hospital": { + "date": "2018-03-07", + "time": "11-00-04", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G341" + ] + } + }, + "2018-03-07.11-00-05.school": { + "date": "2018-03-07", + "time": "11-00-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-07.11-00-06.bus": { + "date": "2018-03-07", + "time": "11-00-06", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-07.11-00-06.school": { + "date": "2018-03-07", + "time": "11-00-06", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G300", + "G336" + ], + "mevid_persons": [ + "0010", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G300", + "G336" + ] + } + }, + "2018-03-07.11-00-07.school": { + "date": "2018-03-07", + "time": "11-00-07", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G339" + ] + } + }, + "2018-03-07.11-05-00.admin": { + "date": "2018-03-07", + "time": "11-05-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G326" + ] + } + }, + "2018-03-07.11-05-00.bus": { + "date": "2018-03-07", + "time": "11-05-00", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G331", + "G508" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0211", + "0271", + "0280" + ], + "sources": { + "kitware": [ + "G331", + "G508" + ] + } + }, + "2018-03-07.11-05-00.hospital": { + "date": "2018-03-07", + "time": "11-05-00", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G436" + ] + } + }, + "2018-03-07.11-05-00.school": { + "date": "2018-03-07", + "time": "11-05-00", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "kitware-training": [ + "G299", + "G330", + "G420", + "G423" + ] + } + }, + "2018-03-07.11-05-01.admin": { + "date": "2018-03-07", + "time": "11-05-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-07.11-05-01.bus": { + "date": "2018-03-07", + "time": "11-05-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G505", + "G506", + "G509" + ] + } + }, + "2018-03-07.11-05-01.school": { + "date": "2018-03-07", + "time": "11-05-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G419", + "G421" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware": [ + "G328", + "G419" + ], + "kitware-training": [ + "G421" + ] + } + }, + "2018-03-07.11-05-04.hospital": { + "date": "2018-03-07", + "time": "11-05-04", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G341" + ] + } + }, + "2018-03-07.11-05-05.school": { + "date": "2018-03-07", + "time": "11-05-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-07.11-05-06.bus": { + "date": "2018-03-07", + "time": "11-05-06", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware": [ + "G340" + ] + } + }, + "2018-03-07.11-05-06.school": { + "date": "2018-03-07", + "time": "11-05-06", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G300", + "G336" + ], + "mevid_persons": [ + "0010", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G300" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-07.11-05-07.school": { + "date": "2018-03-07", + "time": "11-05-07", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G339" + ] + } + }, + "2018-03-07.11-10-00.admin": { + "date": "2018-03-07", + "time": "11-10-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G326" + ] + } + }, + "2018-03-07.11-10-00.bus": { + "date": "2018-03-07", + "time": "11-10-00", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G331", + "G508" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0211", + "0271", + "0280" + ], + "sources": { + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331" + ] + } + }, + "2018-03-07.11-10-00.hospital": { + "date": "2018-03-07", + "time": "11-10-00", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G436" + ] + } + }, + "2018-03-07.11-10-00.school": { + "date": "2018-03-07", + "time": "11-10-00", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "kitware": [ + "G299", + "G420" + ], + "kitware-training": [ + "G330", + "G423" + ] + } + }, + "2018-03-07.11-10-01.admin": { + "date": "2018-03-07", + "time": "11-10-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware": [ + "G329" + ] + } + }, + "2018-03-07.11-10-01.bus": { + "date": "2018-03-07", + "time": "11-10-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-07.11-10-01.school": { + "date": "2018-03-07", + "time": "11-10-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G419", + "G421" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110" + ], + "sources": { + "kitware": [ + "G419", + "G421" + ], + "kitware-training": [ + "G328" + ] + } + }, + "2018-03-07.11-10-04.hospital": { + "date": "2018-03-07", + "time": "11-10-04", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G341" + ] + } + }, + "2018-03-07.11-10-05.school": { + "date": "2018-03-07", + "time": "11-10-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-07.11-10-06.bus": { + "date": "2018-03-07", + "time": "11-10-06", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-07.11-10-06.school": { + "date": "2018-03-07", + "time": "11-10-06", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G300", + "G336" + ], + "mevid_persons": [ + "0010", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G300" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-07.11-10-07.school": { + "date": "2018-03-07", + "time": "11-10-07", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G339" + ] + } + }, + "2018-03-07.16-50-00.admin": { + "date": "2018-03-07", + "time": "16-50-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ], + "nist-json": [ + "G329" + ] + } + }, + "2018-03-07.16-50-00.bus": { + "date": "2018-03-07", + "time": "16-50-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G340", + "G506", + "G509" + ], + "nist-json": [ + "G331" + ] + } + }, + "2018-03-07.16-50-00.school": { + "date": "2018-03-07", + "time": "16-50-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G419", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0271" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G419", + "G638" + ], + "kitware": [ + "G330", + "G419", + "G421", + "G638" + ], + "kitware-training": [ + "G299" + ] + } + }, + "2018-03-07.16-50-01.admin": { + "date": "2018-03-07", + "time": "16-50-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ], + "nist-json": [ + "G326" + ] + } + }, + "2018-03-07.16-50-01.bus": { + "date": "2018-03-07", + "time": "16-50-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0076", + "0080", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "contrib/UMD-v1-train": [ + "G508" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G508" + ] + } + }, + "2018-03-07.16-50-01.hospital": { + "date": "2018-03-07", + "time": "16-50-01", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G436" + ] + } + }, + "2018-03-07.16-50-01.school": { + "date": "2018-03-07", + "time": "16-50-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G420", + "G423" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G328", + "G420" + ], + "nist-json": [ + "G328" + ] + } + }, + "2018-03-07.16-50-05.hospital": { + "date": "2018-03-07", + "time": "16-50-05", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-07.16-50-06.school": { + "date": "2018-03-07", + "time": "16-50-06", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G300", + "G336", + "G339", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300", + "G336", + "G339", + "G424" + ], + "kitware": [ + "G300" + ], + "kitware-training": [ + "G336", + "G339", + "G424" + ], + "nist-json": [ + "G336" + ] + } + }, + "2018-03-07.16-55-00.admin": { + "date": "2018-03-07", + "time": "16-55-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ], + "nist-json": [ + "G329" + ] + } + }, + "2018-03-07.16-55-00.bus": { + "date": "2018-03-07", + "time": "16-55-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G506", + "G509" + ], + "kitware-training": [ + "G331" + ], + "nist-json": [ + "G340" + ] + } + }, + "2018-03-07.16-55-00.school": { + "date": "2018-03-07", + "time": "16-55-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G419", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0271" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G419", + "G421", + "G638" + ], + "kitware-training": [ + "G299", + "G330" + ] + } + }, + "2018-03-07.16-55-01.admin": { + "date": "2018-03-07", + "time": "16-55-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + } + }, + "2018-03-07.16-55-01.bus": { + "date": "2018-03-07", + "time": "16-55-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0076", + "0080", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "contrib/UMD-v1-train": [ + "G508" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G508" + ] + } + }, + "2018-03-07.16-55-01.hospital": { + "date": "2018-03-07", + "time": "16-55-01", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G436" + ] + } + }, + "2018-03-07.16-55-01.school": { + "date": "2018-03-07", + "time": "16-55-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G420", + "G423" + ], + "kitware": [ + "G328", + "G420", + "G423" + ] + } + }, + "2018-03-07.16-55-05.hospital": { + "date": "2018-03-07", + "time": "16-55-05", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-07.16-55-06.school": { + "date": "2018-03-07", + "time": "16-55-06", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G300", + "G336", + "G339", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G336", + "G339", + "G424" + ], + "kitware": [ + "G300", + "G336", + "G424" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-07.17-00-00.admin": { + "date": "2018-03-07", + "time": "17-00-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + } + }, + "2018-03-07.17-00-00.bus": { + "date": "2018-03-07", + "time": "17-00-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-07.17-00-00.school": { + "date": "2018-03-07", + "time": "17-00-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G419", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0271" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G638" + ], + "kitware": [ + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G419", + "G421" + ] + } + }, + "2018-03-07.17-00-01.admin": { + "date": "2018-03-07", + "time": "17-00-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + } + }, + "2018-03-07.17-00-01.bus": { + "date": "2018-03-07", + "time": "17-00-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + } + }, + "2018-03-07.17-00-01.hospital": { + "date": "2018-03-07", + "time": "17-00-01", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G436" + ] + } + }, + "2018-03-07.17-00-01.school": { + "date": "2018-03-07", + "time": "17-00-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware-training": [ + "G328", + "G420", + "G423" + ] + } + }, + "2018-03-07.17-00-05.hospital": { + "date": "2018-03-07", + "time": "17-00-05", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + } + }, + "2018-03-07.17-00-06.school": { + "date": "2018-03-07", + "time": "17-00-06", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G300", + "G336", + "G339", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G336", + "G339", + "G424" + ], + "kitware-training": [ + "G300", + "G336", + "G339", + "G424" + ] + } + }, + "2018-03-07.17-05-00.admin": { + "date": "2018-03-07", + "time": "17-05-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + } + }, + "2018-03-07.17-05-00.bus": { + "date": "2018-03-07", + "time": "17-05-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G340", + "G506" + ], + "nist-json": [ + "G331", + "G340" + ] + } + }, + "2018-03-07.17-05-00.school": { + "date": "2018-03-07", + "time": "17-05-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G419", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G419", + "G638" + ], + "kitware": [ + "G336", + "G419" + ], + "kitware-training": [ + "G299", + "G330", + "G421", + "G638" + ], + "nist-json": [ + "G299", + "G336" + ] + } + }, + "2018-03-07.17-05-01.admin": { + "date": "2018-03-07", + "time": "17-05-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + } + }, + "2018-03-07.17-05-01.bus": { + "date": "2018-03-07", + "time": "17-05-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + } + }, + "2018-03-07.17-05-01.hospital": { + "date": "2018-03-07", + "time": "17-05-01", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ] + } + }, + "2018-03-07.17-05-01.school": { + "date": "2018-03-07", + "time": "17-05-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G420", + "G423" + ], + "kitware": [ + "G420", + "G423" + ], + "kitware-training": [ + "G328" + ] + } + }, + "2018-03-07.17-05-05.hospital": { + "date": "2018-03-07", + "time": "17-05-05", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + } + }, + "2018-03-07.17-05-06.school": { + "date": "2018-03-07", + "time": "17-05-06", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G300", + "G339", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G424" + ], + "kitware": [ + "G424" + ], + "kitware-training": [ + "G300", + "G339" + ] + } + }, + "2018-03-07.17-20-00.admin": { + "date": "2018-03-07", + "time": "17-20-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + } + }, + "2018-03-07.17-20-00.bus": { + "date": "2018-03-07", + "time": "17-20-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G506", + "G508" + ], + "kitware-training": [ + "G340", + "G509" + ] + } + }, + "2018-03-07.17-20-00.school": { + "date": "2018-03-07", + "time": "17-20-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G638" + ], + "kitware": [ + "G336", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G421" + ] + } + }, + "2018-03-07.17-20-01.admin": { + "date": "2018-03-07", + "time": "17-20-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-07.17-20-01.bus": { + "date": "2018-03-07", + "time": "17-20-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + } + }, + "2018-03-07.17-20-01.hospital": { + "date": "2018-03-07", + "time": "17-20-01", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ] + } + }, + "2018-03-07.17-20-01.school": { + "date": "2018-03-07", + "time": "17-20-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G419", + "G420", + "G423" + ], + "kitware": [ + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G328" + ] + } + }, + "2018-03-07.17-20-05.hospital": { + "date": "2018-03-07", + "time": "17-20-05", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + } + }, + "2018-03-07.17-20-06.school": { + "date": "2018-03-07", + "time": "17-20-06", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G300", + "G339", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300", + "G339", + "G424" + ], + "kitware": [ + "G300", + "G424" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-07.17-23-58.school": { + "date": "2018-03-07", + "time": "17-23-58", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G639" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G639" + ] + } + }, + "2018-03-07.17-25-00.admin": { + "date": "2018-03-07", + "time": "17-25-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + } + }, + "2018-03-07.17-25-00.bus": { + "date": "2018-03-07", + "time": "17-25-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ] + } + }, + "2018-03-07.17-25-00.school": { + "date": "2018-03-07", + "time": "17-25-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G419", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G336", + "G638" + ], + "kitware": [ + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G419", + "G421" + ] + } + }, + "2018-03-07.17-25-01.admin": { + "date": "2018-03-07", + "time": "17-25-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + } + }, + "2018-03-07.17-25-01.bus": { + "date": "2018-03-07", + "time": "17-25-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + } + }, + "2018-03-07.17-25-01.hospital": { + "date": "2018-03-07", + "time": "17-25-01", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ] + } + }, + "2018-03-07.17-25-01.school": { + "date": "2018-03-07", + "time": "17-25-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "kitware-training": [ + "G328", + "G420", + "G423" + ] + } + }, + "2018-03-07.17-25-03.school": { + "date": "2018-03-07", + "time": "17-25-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-07.17-25-05.hospital": { + "date": "2018-03-07", + "time": "17-25-05", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-07.17-25-06.school": { + "date": "2018-03-07", + "time": "17-25-06", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G339", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G424" + ], + "kitware": [ + "G424" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-07.17-25-10.school": { + "date": "2018-03-07", + "time": "17-25-10", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G639" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G639" + ], + "kitware-training": [ + "G639" + ] + } + }, + "2018-03-07.17-30-00.admin": { + "date": "2018-03-07", + "time": "17-30-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + } + }, + "2018-03-07.17-30-00.bus": { + "date": "2018-03-07", + "time": "17-30-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G340", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ] + } + }, + "2018-03-07.17-30-00.school": { + "date": "2018-03-07", + "time": "17-30-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G421", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G336", + "G638" + ], + "kitware": [ + "G421", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G330", + "G336" + ] + } + }, + "2018-03-07.17-30-01.admin": { + "date": "2018-03-07", + "time": "17-30-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + } + }, + "2018-03-07.17-30-01.bus": { + "date": "2018-03-07", + "time": "17-30-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ], + "nist-json": [ + "G505" + ] + } + }, + "2018-03-07.17-30-01.hospital": { + "date": "2018-03-07", + "time": "17-30-01", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G436" + ] + } + }, + "2018-03-07.17-30-01.school": { + "date": "2018-03-07", + "time": "17-30-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G419", + "G420", + "G423" + ], + "kitware": [ + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G328" + ] + } + }, + "2018-03-07.17-30-03.school": { + "date": "2018-03-07", + "time": "17-30-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-07.17-30-05.hospital": { + "date": "2018-03-07", + "time": "17-30-05", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + } + }, + "2018-03-07.17-30-06.school": { + "date": "2018-03-07", + "time": "17-30-06", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G339", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G424" + ], + "kitware-training": [ + "G339", + "G424" + ] + } + }, + "2018-03-07.17-35-00.admin": { + "date": "2018-03-07", + "time": "17-35-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + } + }, + "2018-03-07.17-35-00.bus": { + "date": "2018-03-07", + "time": "17-35-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-07.17-35-00.school": { + "date": "2018-03-07", + "time": "17-35-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G421", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G638" + ], + "kitware": [ + "G299", + "G421", + "G638" + ], + "kitware-training": [ + "G330", + "G336", + "G639" + ], + "nist-json": [ + "G421" + ] + } + }, + "2018-03-07.17-35-01.admin": { + "date": "2018-03-07", + "time": "17-35-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + } + }, + "2018-03-07.17-35-01.bus": { + "date": "2018-03-07", + "time": "17-35-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware": [ + "G505" + ] + } + }, + "2018-03-07.17-35-01.hospital": { + "date": "2018-03-07", + "time": "17-35-01", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ] + } + }, + "2018-03-07.17-35-01.school": { + "date": "2018-03-07", + "time": "17-35-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G419", + "G420", + "G423" + ], + "kitware": [ + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G328" + ] + } + }, + "2018-03-07.17-35-03.school": { + "date": "2018-03-07", + "time": "17-35-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-07.17-35-05.hospital": { + "date": "2018-03-07", + "time": "17-35-05", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + } + }, + "2018-03-07.17-35-06.school": { + "date": "2018-03-07", + "time": "17-35-06", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G339", + "G424" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G424" + ], + "kitware": [ + "G339" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-09.10-10-00.bus": { + "date": "2018-03-09", + "time": "10-10-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ] + } + }, + "2018-03-09.10-10-00.school": { + "date": "2018-03-09", + "time": "10-10-00", + "site": "school", + "all_cameras": 10, + "mevid_cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G328", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300", + "G330", + "G336", + "G419", + "G423", + "G424" + ], + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G330", + "G424" + ], + "nist-json": [ + "G328" + ] + } + }, + "2018-03-09.10-10-01.admin": { + "date": "2018-03-09", + "time": "10-10-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-09.10-10-01.bus": { + "date": "2018-03-09", + "time": "10-10-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G340", + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "kitware": [ + "G340", + "G505" + ], + "nist-json": [ + "G340" + ] + } + }, + "2018-03-09.10-10-01.hospital": { + "date": "2018-03-09", + "time": "10-10-01", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-09.10-10-01.school": { + "date": "2018-03-09", + "time": "10-10-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G339", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G339", + "G420", + "G638" + ], + "kitware": [ + "G339", + "G638" + ], + "kitware-training": [ + "G420" + ] + } + }, + "2018-03-09.10-10-02.hospital": { + "date": "2018-03-09", + "time": "10-10-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ], + "kitware": [ + "G341" + ] + } + }, + "2018-03-09.10-15-00.bus": { + "date": "2018-03-09", + "time": "10-15-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-09.10-15-00.school": { + "date": "2018-03-09", + "time": "10-15-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G300", + "G330", + "G336", + "G419", + "G423", + "G424" + ], + "kitware": [ + "G299", + "G300", + "G336", + "G421" + ], + "kitware-training": [ + "G330", + "G419", + "G423", + "G424", + "G639" + ] + } + }, + "2018-03-09.10-15-01.admin": { + "date": "2018-03-09", + "time": "10-15-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-09.10-15-01.bus": { + "date": "2018-03-09", + "time": "10-15-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G340", + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G340", + "G505" + ], + "kitware": [ + "G340", + "G505" + ] + } + }, + "2018-03-09.10-15-01.hospital": { + "date": "2018-03-09", + "time": "10-15-01", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware": [ + "G301", + "G436" + ] + } + }, + "2018-03-09.10-15-01.school": { + "date": "2018-03-09", + "time": "10-15-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G339", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G339", + "G420", + "G638" + ], + "kitware": [ + "G328", + "G638" + ], + "kitware-training": [ + "G339", + "G420" + ] + } + }, + "2018-03-09.10-15-02.hospital": { + "date": "2018-03-09", + "time": "10-15-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-09.10-20-00.bus": { + "date": "2018-03-09", + "time": "10-20-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-09.10-20-00.school": { + "date": "2018-03-09", + "time": "10-20-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G419", + "G423" + ], + "kitware": [ + "G336", + "G419", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G421" + ] + } + }, + "2018-03-09.10-20-01.admin": { + "date": "2018-03-09", + "time": "10-20-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-09.10-20-01.bus": { + "date": "2018-03-09", + "time": "10-20-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G340", + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware-training": [ + "G340", + "G505" + ] + } + }, + "2018-03-09.10-20-01.hospital": { + "date": "2018-03-09", + "time": "10-20-01", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-09.10-20-01.school": { + "date": "2018-03-09", + "time": "10-20-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G339", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G328" + ], + "contrib/UMD-v1-train": [ + "G339", + "G420", + "G638" + ], + "kitware": [ + "G328", + "G420" + ], + "kitware-training": [ + "G339", + "G638" + ] + } + }, + "2018-03-09.10-20-02.hospital": { + "date": "2018-03-09", + "time": "10-20-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G341" + ] + } + }, + "2018-03-09.10-25-00.bus": { + "date": "2018-03-09", + "time": "10-25-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271", + "0280" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-09.10-25-00.school": { + "date": "2018-03-09", + "time": "10-25-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G299", + "G421", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330", + "G336", + "G419", + "G423" + ], + "kitware": [ + "G299", + "G330", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-09.10-25-01.admin": { + "date": "2018-03-09", + "time": "10-25-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-09.10-25-01.bus": { + "date": "2018-03-09", + "time": "10-25-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-test": [ + "G505" + ], + "kitware-training": [ + "G505" + ] + } + }, + "2018-03-09.10-25-01.hospital": { + "date": "2018-03-09", + "time": "10-25-01", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-09.10-25-01.school": { + "date": "2018-03-09", + "time": "10-25-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G339", + "G420", + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G420", + "G638" + ], + "kitware": [ + "G420" + ], + "kitware-training": [ + "G328", + "G339", + "G424", + "G638" + ] + } + }, + "2018-03-09.10-30-00.bus": { + "date": "2018-03-09", + "time": "10-30-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271", + "0280" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-09.10-30-00.school": { + "date": "2018-03-09", + "time": "10-30-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G419", + "G421", + "G423" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "kitware": [ + "G330", + "G419", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G421", + "G639" + ] + } + }, + "2018-03-09.10-30-01.admin": { + "date": "2018-03-09", + "time": "10-30-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-09.10-30-01.bus": { + "date": "2018-03-09", + "time": "10-30-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G505" + ] + } + }, + "2018-03-09.10-30-01.hospital": { + "date": "2018-03-09", + "time": "10-30-01", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301" + ], + "kitware": [ + "G301" + ], + "kitware-training": [ + "G436" + ] + } + }, + "2018-03-09.10-30-01.school": { + "date": "2018-03-09", + "time": "10-30-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G339", + "G420", + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ], + "kitware": [ + "G328", + "G420", + "G424" + ], + "kitware-training": [ + "G339", + "G638" + ] + } + }, + "2018-03-09.10-30-02.hospital": { + "date": "2018-03-09", + "time": "10-30-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-09.10-35-00.bus": { + "date": "2018-03-09", + "time": "10-35-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-09.10-35-00.school": { + "date": "2018-03-09", + "time": "10-35-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G336", + "G423", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G419", + "G421" + ] + } + }, + "2018-03-09.10-35-01.admin": { + "date": "2018-03-09", + "time": "10-35-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-09.10-35-01.bus": { + "date": "2018-03-09", + "time": "10-35-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G340", + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G340", + "G505" + ] + } + }, + "2018-03-09.10-35-01.hospital": { + "date": "2018-03-09", + "time": "10-35-01", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G301", + "G436" + ] + } + }, + "2018-03-09.10-35-01.school": { + "date": "2018-03-09", + "time": "10-35-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G339", + "G420", + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420", + "G424", + "G638" + ], + "kitware": [ + "G328", + "G339", + "G424" + ], + "kitware-training": [ + "G420", + "G638" + ] + } + }, + "2018-03-09.10-35-02.hospital": { + "date": "2018-03-09", + "time": "10-35-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G341" + ] + } + }, + "2018-03-09.10-40-00.bus": { + "date": "2018-03-09", + "time": "10-40-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-09.10-40-00.school": { + "date": "2018-03-09", + "time": "10-40-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G421", + "G423", + "G474", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-v1-train": [ + "G330", + "G419" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G330", + "G336", + "G419" + ], + "kitware-training": [ + "G299", + "G300", + "G421", + "G423", + "G639" + ] + } + }, + "2018-03-09.10-40-01.admin": { + "date": "2018-03-09", + "time": "10-40-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-09.10-40-01.bus": { + "date": "2018-03-09", + "time": "10-40-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G340", + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505" + ], + "kitware-training": [ + "G340", + "G505" + ] + } + }, + "2018-03-09.10-40-01.hospital": { + "date": "2018-03-09", + "time": "10-40-01", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-09.10-40-01.school": { + "date": "2018-03-09", + "time": "10-40-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G339", + "G420", + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G339", + "G420", + "G424", + "G638" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G339" + ], + "kitware-training": [ + "G328", + "G420", + "G424", + "G638" + ] + } + }, + "2018-03-09.10-40-02.hospital": { + "date": "2018-03-09", + "time": "10-40-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G341" + ] + } + }, + "2018-03-11.11-15-00.school": { + "date": "2018-03-11", + "time": "11-15-00", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421" + ] + } + }, + "2018-03-11.11-15-01.school": { + "date": "2018-03-11", + "time": "11-15-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware": [ + "G424", + "G638" + ] + } + }, + "2018-03-11.11-15-04.school": { + "date": "2018-03-11", + "time": "11-15-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.11-15-08.hospital": { + "date": "2018-03-11", + "time": "11-15-08", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G436" + ] + } + }, + "2018-03-11.11-20-00.admin": { + "date": "2018-03-11", + "time": "11-20-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.11-20-00.bus": { + "date": "2018-03-11", + "time": "11-20-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/UMD-IBM": [ + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + } + }, + "2018-03-11.11-20-00.school": { + "date": "2018-03-11", + "time": "11-20-00", + "site": "school", + "all_cameras": 10, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474", + "G639" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/IBM-person-vehicle": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474", + "G639" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G639" + ] + } + }, + "2018-03-11.11-20-01.admin": { + "date": "2018-03-11", + "time": "11-20-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.11-20-01.bus": { + "date": "2018-03-11", + "time": "11-20-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G509" + ], + "contrib/UMD-IBM": [ + "G505", + "G509" + ], + "kitware-training": [ + "G505", + "G509" + ] + } + }, + "2018-03-11.11-20-01.school": { + "date": "2018-03-11", + "time": "11-20-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G339", + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G638" + ], + "contrib/UMD-IBM": [ + "G339", + "G424", + "G638" + ], + "kitware": [ + "G424", + "G638" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-11.11-20-04.school": { + "date": "2018-03-11", + "time": "11-20-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.11-20-08.bus": { + "date": "2018-03-11", + "time": "11-20-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.11-20-08.hospital": { + "date": "2018-03-11", + "time": "11-20-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-11.11-25-00.admin": { + "date": "2018-03-11", + "time": "11-25-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.11-25-00.bus": { + "date": "2018-03-11", + "time": "11-25-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G475", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + } + }, + "2018-03-11.11-25-00.school": { + "date": "2018-03-11", + "time": "11-25-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G474" + ], + "contrib/IBM-person-person": [ + "G299", + "G330" + ], + "contrib/IBM-person-vehicle": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G420", + "G421", + "G423" + ], + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-11.11-25-01.admin": { + "date": "2018-03-11", + "time": "11-25-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.11-25-01.bus": { + "date": "2018-03-11", + "time": "11-25-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G509" + ] + } + }, + "2018-03-11.11-25-01.school": { + "date": "2018-03-11", + "time": "11-25-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G339", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G339", + "G424", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G424", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware": [ + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ] + } + }, + "2018-03-11.11-25-04.school": { + "date": "2018-03-11", + "time": "11-25-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.11-25-08.bus": { + "date": "2018-03-11", + "time": "11-25-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.11-25-08.hospital": { + "date": "2018-03-11", + "time": "11-25-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-11.11-30-00.admin": { + "date": "2018-03-11", + "time": "11-30-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware": [ + "G329" + ] + } + }, + "2018-03-11.11-30-00.bus": { + "date": "2018-03-11", + "time": "11-30-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + } + }, + "2018-03-11.11-30-00.school": { + "date": "2018-03-11", + "time": "11-30-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ], + "kitware": [ + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G299" + ] + } + }, + "2018-03-11.11-30-01.admin": { + "date": "2018-03-11", + "time": "11-30-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.11-30-01.bus": { + "date": "2018-03-11", + "time": "11-30-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G509" + ] + } + }, + "2018-03-11.11-30-01.school": { + "date": "2018-03-11", + "time": "11-30-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G424", + "G638" + ], + "contrib/UMD-IBM": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ], + "nist-json": [ + "G421" + ] + } + }, + "2018-03-11.11-30-04.school": { + "date": "2018-03-11", + "time": "11-30-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.11-30-08.bus": { + "date": "2018-03-11", + "time": "11-30-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.11-30-08.hospital": { + "date": "2018-03-11", + "time": "11-30-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-11.11-35-00.admin": { + "date": "2018-03-11", + "time": "11-35-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.11-35-00.bus": { + "date": "2018-03-11", + "time": "11-35-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/UMD-IBM": [ + "G475", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + } + }, + "2018-03-11.11-35-00.school": { + "date": "2018-03-11", + "time": "11-35-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ], + "contrib/IBM-person-vehicle": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ] + } + }, + "2018-03-11.11-35-01.admin": { + "date": "2018-03-11", + "time": "11-35-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.11-35-01.bus": { + "date": "2018-03-11", + "time": "11-35-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G509" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G509" + ] + } + }, + "2018-03-11.11-35-01.school": { + "date": "2018-03-11", + "time": "11-35-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G638" + ], + "contrib/UMD-IBM": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ], + "nist-json": [ + "G421" + ] + } + }, + "2018-03-11.11-35-04.school": { + "date": "2018-03-11", + "time": "11-35-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.11-35-08.bus": { + "date": "2018-03-11", + "time": "11-35-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.11-35-08.hospital": { + "date": "2018-03-11", + "time": "11-35-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-11.11-40-00.admin": { + "date": "2018-03-11", + "time": "11-40-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.11-40-00.bus": { + "date": "2018-03-11", + "time": "11-40-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508" + ] + } + }, + "2018-03-11.11-40-00.school": { + "date": "2018-03-11", + "time": "11-40-00", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G328", + "G336", + "G419", + "G420", + "G474" + ], + "kitware-training": [ + "G330" + ] + } + }, + "2018-03-11.11-40-01.admin": { + "date": "2018-03-11", + "time": "11-40-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.11-40-01.bus": { + "date": "2018-03-11", + "time": "11-40-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G505", + "G509" + ] + } + }, + "2018-03-11.11-40-01.school": { + "date": "2018-03-11", + "time": "11-40-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G421", + "G639" + ] + } + }, + "2018-03-11.11-40-02.school": { + "date": "2018-03-11", + "time": "11-40-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G423" + ], + "mevid_persons": [ + "0008", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G423" + ], + "contrib/UMD-IBM": [ + "G423" + ], + "kitware": [ + "G423" + ] + } + }, + "2018-03-11.11-40-04.school": { + "date": "2018-03-11", + "time": "11-40-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.11-40-08.bus": { + "date": "2018-03-11", + "time": "11-40-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.11-40-08.hospital": { + "date": "2018-03-11", + "time": "11-40-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-11.11-45-00.admin": { + "date": "2018-03-11", + "time": "11-45-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.11-45-00.bus": { + "date": "2018-03-11", + "time": "11-45-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508" + ] + } + }, + "2018-03-11.11-45-00.school": { + "date": "2018-03-11", + "time": "11-45-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G419", + "G420", + "G423" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ] + } + }, + "2018-03-11.11-45-01.admin": { + "date": "2018-03-11", + "time": "11-45-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.11-45-01.bus": { + "date": "2018-03-11", + "time": "11-45-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G505", + "G509" + ] + } + }, + "2018-03-11.11-45-01.school": { + "date": "2018-03-11", + "time": "11-45-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G638" + ], + "contrib/UMD-IBM": [ + "G421", + "G638", + "G639" + ], + "kitware": [ + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ] + } + }, + "2018-03-11.11-45-04.school": { + "date": "2018-03-11", + "time": "11-45-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.11-45-08.bus": { + "date": "2018-03-11", + "time": "11-45-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.11-45-08.hospital": { + "date": "2018-03-11", + "time": "11-45-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-11.11-50-00.admin": { + "date": "2018-03-11", + "time": "11-50-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.11-50-00.bus": { + "date": "2018-03-11", + "time": "11-50-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G506" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + } + }, + "2018-03-11.11-50-00.school": { + "date": "2018-03-11", + "time": "11-50-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G419", + "G420", + "G423", + "G474" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/IBM-person-vehicle": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G474" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware": [ + "G299", + "G328", + "G336", + "G419", + "G420", + "G423" + ], + "kitware-training": [ + "G330" + ] + } + }, + "2018-03-11.11-50-01.admin": { + "date": "2018-03-11", + "time": "11-50-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.11-50-01.bus": { + "date": "2018-03-11", + "time": "11-50-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G509" + ] + } + }, + "2018-03-11.11-50-01.school": { + "date": "2018-03-11", + "time": "11-50-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G421", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G339" + ], + "nist-json": [ + "G424" + ] + } + }, + "2018-03-11.11-50-04.school": { + "date": "2018-03-11", + "time": "11-50-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ], + "nist-json": [ + "G300" + ] + } + }, + "2018-03-11.11-50-08.bus": { + "date": "2018-03-11", + "time": "11-50-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.11-50-08.hospital": { + "date": "2018-03-11", + "time": "11-50-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-11.11-55-00.admin": { + "date": "2018-03-11", + "time": "11-55-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.11-55-00.bus": { + "date": "2018-03-11", + "time": "11-55-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G506", + "G508" + ] + } + }, + "2018-03-11.11-55-00.school": { + "date": "2018-03-11", + "time": "11-55-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G474" + ], + "kitware": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423" + ] + } + }, + "2018-03-11.11-55-01.admin": { + "date": "2018-03-11", + "time": "11-55-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.11-55-01.bus": { + "date": "2018-03-11", + "time": "11-55-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G505", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G509" + ], + "kitware-training": [ + "G505", + "G509" + ] + } + }, + "2018-03-11.11-55-01.school": { + "date": "2018-03-11", + "time": "11-55-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "kitware": [ + "G421", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-11.11-55-04.school": { + "date": "2018-03-11", + "time": "11-55-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.11-55-08.bus": { + "date": "2018-03-11", + "time": "11-55-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.11-55-08.hospital": { + "date": "2018-03-11", + "time": "11-55-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-11.12-00-00.school": { + "date": "2018-03-11", + "time": "12-00-00", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G299", + "G336", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G299", + "G336", + "G420" + ] + } + }, + "2018-03-11.13-50-00.admin": { + "date": "2018-03-11", + "time": "13-50-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.13-50-00.bus": { + "date": "2018-03-11", + "time": "13-50-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0229", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G509" + ], + "kitware-training": [ + "G331", + "G509" + ] + } + }, + "2018-03-11.13-50-00.school": { + "date": "2018-03-11", + "time": "13-50-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G638" + ], + "nist-json": [ + "G299", + "G330" + ] + } + }, + "2018-03-11.13-50-01.admin": { + "date": "2018-03-11", + "time": "13-50-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.13-50-01.bus": { + "date": "2018-03-11", + "time": "13-50-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-11.13-50-01.school": { + "date": "2018-03-11", + "time": "13-50-01", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "kitware": [ + "G339", + "G421", + "G423" + ], + "kitware-training": [ + "G328", + "G336", + "G419", + "G424", + "G639" + ], + "nist-json": [ + "G328", + "G336", + "G339", + "G421" + ] + } + }, + "2018-03-11.13-50-04.school": { + "date": "2018-03-11", + "time": "13-50-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.13-50-08.bus": { + "date": "2018-03-11", + "time": "13-50-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.13-50-08.hospital": { + "date": "2018-03-11", + "time": "13-50-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-11.13-55-00.admin": { + "date": "2018-03-11", + "time": "13-55-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.13-55-00.bus": { + "date": "2018-03-11", + "time": "13-55-00", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G331", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0229", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G509" + ], + "kitware-training": [ + "G331", + "G509" + ] + } + }, + "2018-03-11.13-55-00.school": { + "date": "2018-03-11", + "time": "13-55-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G420", + "G638" + ], + "kitware-training": [ + "G299", + "G330" + ] + } + }, + "2018-03-11.13-55-01.admin": { + "date": "2018-03-11", + "time": "13-55-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.13-55-01.bus": { + "date": "2018-03-11", + "time": "13-55-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-11.13-55-01.school": { + "date": "2018-03-11", + "time": "13-55-01", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware": [ + "G339", + "G639" + ], + "kitware-training": [ + "G328", + "G336", + "G419", + "G421", + "G423", + "G424" + ] + } + }, + "2018-03-11.13-55-04.school": { + "date": "2018-03-11", + "time": "13-55-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.13-55-08.bus": { + "date": "2018-03-11", + "time": "13-55-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.13-55-08.hospital": { + "date": "2018-03-11", + "time": "13-55-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G436" + ] + } + }, + "2018-03-11.14-00-00.admin": { + "date": "2018-03-11", + "time": "14-00-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.14-00-00.bus": { + "date": "2018-03-11", + "time": "14-00-00", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G331", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G331", + "G509" + ] + } + }, + "2018-03-11.14-00-00.school": { + "date": "2018-03-11", + "time": "14-00-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/IBM-person-vehicle": [ + "G299", + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G638" + ] + } + }, + "2018-03-11.14-00-01.admin": { + "date": "2018-03-11", + "time": "14-00-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.14-00-01.bus": { + "date": "2018-03-11", + "time": "14-00-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-11.14-00-01.school": { + "date": "2018-03-11", + "time": "14-00-01", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G423" + ], + "contrib/UMD-IBM": [ + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G639" + ] + } + }, + "2018-03-11.14-00-02.school": { + "date": "2018-03-11", + "time": "14-00-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-11.14-00-04.school": { + "date": "2018-03-11", + "time": "14-00-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.14-00-08.bus": { + "date": "2018-03-11", + "time": "14-00-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.14-00-08.hospital": { + "date": "2018-03-11", + "time": "14-00-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-11.14-05-00.admin": { + "date": "2018-03-11", + "time": "14-05-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.14-05-00.bus": { + "date": "2018-03-11", + "time": "14-05-00", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G331", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G331", + "G509" + ] + } + }, + "2018-03-11.14-05-00.school": { + "date": "2018-03-11", + "time": "14-05-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G420" + ], + "kitware": [ + "G420" + ], + "kitware-training": [ + "G299", + "G330", + "G638" + ] + } + }, + "2018-03-11.14-05-01.admin": { + "date": "2018-03-11", + "time": "14-05-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.14-05-01.bus": { + "date": "2018-03-11", + "time": "14-05-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-11.14-05-01.school": { + "date": "2018-03-11", + "time": "14-05-01", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G639" + ] + } + }, + "2018-03-11.14-05-02.school": { + "date": "2018-03-11", + "time": "14-05-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-11.14-05-04.school": { + "date": "2018-03-11", + "time": "14-05-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.14-05-08.bus": { + "date": "2018-03-11", + "time": "14-05-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.14-05-08.hospital": { + "date": "2018-03-11", + "time": "14-05-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-11.14-10-00.admin": { + "date": "2018-03-11", + "time": "14-10-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.14-10-00.bus": { + "date": "2018-03-11", + "time": "14-10-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0229", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "kitware-training": [ + "G331", + "G509" + ] + } + }, + "2018-03-11.14-10-00.school": { + "date": "2018-03-11", + "time": "14-10-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G474", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G638" + ] + } + }, + "2018-03-11.14-10-01.admin": { + "date": "2018-03-11", + "time": "14-10-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.14-10-01.bus": { + "date": "2018-03-11", + "time": "14-10-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-11.14-10-01.school": { + "date": "2018-03-11", + "time": "14-10-01", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ] + } + }, + "2018-03-11.14-10-02.school": { + "date": "2018-03-11", + "time": "14-10-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-11.14-10-04.school": { + "date": "2018-03-11", + "time": "14-10-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.14-10-08.bus": { + "date": "2018-03-11", + "time": "14-10-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.14-10-08.hospital": { + "date": "2018-03-11", + "time": "14-10-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-11.14-15-00.admin": { + "date": "2018-03-11", + "time": "14-15-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.14-15-00.bus": { + "date": "2018-03-11", + "time": "14-15-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0229", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G475", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G509" + ], + "kitware-training": [ + "G331", + "G509" + ] + } + }, + "2018-03-11.14-15-00.school": { + "date": "2018-03-11", + "time": "14-15-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/IBM-person-vehicle": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G420", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G299", + "G638" + ], + "kitware-training": [ + "G330", + "G420" + ] + } + }, + "2018-03-11.14-15-01.admin": { + "date": "2018-03-11", + "time": "14-15-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.14-15-01.bus": { + "date": "2018-03-11", + "time": "14-15-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G508" + ], + "contrib/UMD-IBM": [ + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-11.14-15-01.school": { + "date": "2018-03-11", + "time": "14-15-01", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "kitware": [ + "G339", + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G336", + "G419", + "G421" + ] + } + }, + "2018-03-11.14-15-02.school": { + "date": "2018-03-11", + "time": "14-15-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-11.14-15-04.school": { + "date": "2018-03-11", + "time": "14-15-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.14-15-08.bus": { + "date": "2018-03-11", + "time": "14-15-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.14-15-08.hospital": { + "date": "2018-03-11", + "time": "14-15-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-11.14-20-00.admin": { + "date": "2018-03-11", + "time": "14-20-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.14-20-00.bus": { + "date": "2018-03-11", + "time": "14-20-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G509" + ], + "mevid_persons": [ + "0008", + "0032", + "0046", + "0053", + "0076", + "0202", + "0229", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G475", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G509" + ], + "kitware-training": [ + "G331", + "G509" + ] + } + }, + "2018-03-11.14-20-00.school": { + "date": "2018-03-11", + "time": "14-20-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "kitware": [ + "G299", + "G330", + "G420" + ], + "kitware-training": [ + "G638" + ] + } + }, + "2018-03-11.14-20-01.admin": { + "date": "2018-03-11", + "time": "14-20-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-11.14-20-01.bus": { + "date": "2018-03-11", + "time": "14-20-01", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G505", + "G506", + "G508" + ], + "kitware": [ + "G506", + "G508" + ], + "kitware-training": [ + "G505" + ] + } + }, + "2018-03-11.14-20-01.school": { + "date": "2018-03-11", + "time": "14-20-01", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G639" + ], + "kitware": [ + "G419" + ], + "kitware-training": [ + "G328", + "G336", + "G339", + "G421", + "G423", + "G639" + ] + } + }, + "2018-03-11.14-20-02.school": { + "date": "2018-03-11", + "time": "14-20-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-11.14-20-04.school": { + "date": "2018-03-11", + "time": "14-20-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.14-20-08.bus": { + "date": "2018-03-11", + "time": "14-20-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.14-20-08.hospital": { + "date": "2018-03-11", + "time": "14-20-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-11.16-10-00.bus": { + "date": "2018-03-11", + "time": "16-10-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G505", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-11.16-10-01.admin": { + "date": "2018-03-11", + "time": "16-10-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-11.16-10-01.bus": { + "date": "2018-03-11", + "time": "16-10-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "kitware": [ + "G506" + ] + } + }, + "2018-03-11.16-10-01.school": { + "date": "2018-03-11", + "time": "16-10-01", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G339" + ] + } + }, + "2018-03-11.16-10-08.bus": { + "date": "2018-03-11", + "time": "16-10-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.16-10-08.hospital": { + "date": "2018-03-11", + "time": "16-10-08", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G301", + "G341" + ] + } + }, + "2018-03-11.16-15-00.bus": { + "date": "2018-03-11", + "time": "16-15-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G505", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G509" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G509" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-11.16-15-00.school": { + "date": "2018-03-11", + "time": "16-15-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G421", + "G638" + ], + "kitware-training": [ + "G330", + "G639" + ], + "nist-json": [ + "G421" + ] + } + }, + "2018-03-11.16-15-01.admin": { + "date": "2018-03-11", + "time": "16-15-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-11.16-15-01.bus": { + "date": "2018-03-11", + "time": "16-15-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/UMD-IBM": [ + "G506", + "G508" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + } + }, + "2018-03-11.16-15-01.school": { + "date": "2018-03-11", + "time": "16-15-01", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-person": [ + "G420" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ] + } + }, + "2018-03-11.16-15-02.school": { + "date": "2018-03-11", + "time": "16-15-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-11.16-15-04.school": { + "date": "2018-03-11", + "time": "16-15-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.16-15-08.bus": { + "date": "2018-03-11", + "time": "16-15-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.16-15-08.hospital": { + "date": "2018-03-11", + "time": "16-15-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-11.16-20-00.bus": { + "date": "2018-03-11", + "time": "16-20-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G505", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G509" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G509" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-11.16-20-00.school": { + "date": "2018-03-11", + "time": "16-20-00", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G423", + "G638" + ], + "kitware-training": [ + "G639" + ] + } + }, + "2018-03-11.16-20-01.admin": { + "date": "2018-03-11", + "time": "16-20-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-11.16-20-01.bus": { + "date": "2018-03-11", + "time": "16-20-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G506", + "G508" + ], + "contrib/UMD-IBM": [ + "G506", + "G508" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + } + }, + "2018-03-11.16-20-01.school": { + "date": "2018-03-11", + "time": "16-20-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G419", + "G420" + ], + "kitware": [ + "G328", + "G336", + "G419", + "G420" + ] + } + }, + "2018-03-11.16-20-02.school": { + "date": "2018-03-11", + "time": "16-20-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-11.16-20-04.school": { + "date": "2018-03-11", + "time": "16-20-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ], + "nist-json": [ + "G300" + ] + } + }, + "2018-03-11.16-20-08.bus": { + "date": "2018-03-11", + "time": "16-20-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.16-20-08.hospital": { + "date": "2018-03-11", + "time": "16-20-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-11.16-25-00.bus": { + "date": "2018-03-11", + "time": "16-25-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G505", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G505" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-11.16-25-00.school": { + "date": "2018-03-11", + "time": "16-25-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G421", + "G474" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G421", + "G639" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G639" + ] + } + }, + "2018-03-11.16-25-01.admin": { + "date": "2018-03-11", + "time": "16-25-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-11.16-25-01.bus": { + "date": "2018-03-11", + "time": "16-25-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/UMD-IBM": [ + "G508" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + } + }, + "2018-03-11.16-25-01.school": { + "date": "2018-03-11", + "time": "16-25-01", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ] + } + }, + "2018-03-11.16-25-02.school": { + "date": "2018-03-11", + "time": "16-25-02", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424", + "G638" + ], + "nist-json": [ + "G424" + ] + } + }, + "2018-03-11.16-25-04.school": { + "date": "2018-03-11", + "time": "16-25-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.16-25-08.bus": { + "date": "2018-03-11", + "time": "16-25-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.16-25-08.hospital": { + "date": "2018-03-11", + "time": "16-25-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-11.16-30-00.bus": { + "date": "2018-03-11", + "time": "16-30-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G505", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G331", + "G475", + "G505", + "G509" + ] + } + }, + "2018-03-11.16-30-00.school": { + "date": "2018-03-11", + "time": "16-30-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G639" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G474" + ], + "kitware-training": [ + "G639" + ] + } + }, + "2018-03-11.16-30-01.admin": { + "date": "2018-03-11", + "time": "16-30-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-11.16-30-01.bus": { + "date": "2018-03-11", + "time": "16-30-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-IBM": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + } + }, + "2018-03-11.16-30-01.school": { + "date": "2018-03-11", + "time": "16-30-01", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G339", + "G419", + "G420", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ], + "contrib/UMD-IBM": [ + "G328", + "G339", + "G419", + "G420", + "G423" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423" + ] + } + }, + "2018-03-11.16-30-02.school": { + "date": "2018-03-11", + "time": "16-30-02", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424", + "G638" + ], + "kitware": [ + "G424", + "G638" + ] + } + }, + "2018-03-11.16-30-04.school": { + "date": "2018-03-11", + "time": "16-30-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.16-30-08.bus": { + "date": "2018-03-11", + "time": "16-30-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.16-30-08.hospital": { + "date": "2018-03-11", + "time": "16-30-08", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G301", + "G436" + ] + } + }, + "2018-03-11.16-30-09.hospital": { + "date": "2018-03-11", + "time": "16-30-09", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G341" + ] + } + }, + "2018-03-11.16-35-00.bus": { + "date": "2018-03-11", + "time": "16-35-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G505", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-11.16-35-00.school": { + "date": "2018-03-11", + "time": "16-35-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G421", + "G474", + "G639" + ], + "contrib/IBM-person-person": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G474", + "G639" + ], + "kitware": [ + "G330", + "G421" + ], + "kitware-training": [ + "G299", + "G639" + ] + } + }, + "2018-03-11.16-35-01.admin": { + "date": "2018-03-11", + "time": "16-35-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-11.16-35-01.bus": { + "date": "2018-03-11", + "time": "16-35-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + } + }, + "2018-03-11.16-35-01.school": { + "date": "2018-03-11", + "time": "16-35-01", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423", + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G423", + "G638" + ] + } + }, + "2018-03-11.16-35-02.school": { + "date": "2018-03-11", + "time": "16-35-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-11.16-35-04.school": { + "date": "2018-03-11", + "time": "16-35-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.16-35-08.bus": { + "date": "2018-03-11", + "time": "16-35-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.16-35-08.hospital": { + "date": "2018-03-11", + "time": "16-35-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-11.16-40-00.bus": { + "date": "2018-03-11", + "time": "16-40-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G505", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G505" + ], + "kitware": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-11.16-40-00.school": { + "date": "2018-03-11", + "time": "16-40-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G423", + "G474", + "G639" + ], + "contrib/IBM-person-person": [ + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G423", + "G474", + "G639" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G423" + ], + "kitware-training": [ + "G639" + ] + } + }, + "2018-03-11.16-40-01.admin": { + "date": "2018-03-11", + "time": "16-40-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware": [ + "G326", + "G329" + ] + } + }, + "2018-03-11.16-40-01.bus": { + "date": "2018-03-11", + "time": "16-40-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G506", + "G508" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0211", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G508" + ] + } + }, + "2018-03-11.16-40-01.school": { + "date": "2018-03-11", + "time": "16-40-01", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "kitware": [ + "G328", + "G336", + "G339", + "G419", + "G420", + "G638" + ] + } + }, + "2018-03-11.16-40-02.school": { + "date": "2018-03-11", + "time": "16-40-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-11.16-40-04.school": { + "date": "2018-03-11", + "time": "16-40-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.16-40-08.bus": { + "date": "2018-03-11", + "time": "16-40-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.16-40-08.hospital": { + "date": "2018-03-11", + "time": "16-40-08", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-11.16-45-00.bus": { + "date": "2018-03-11", + "time": "16-45-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G505", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0229", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-11.16-45-00.school": { + "date": "2018-03-11", + "time": "16-45-00", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G423" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G421", + "G423" + ] + } + }, + "2018-03-11.17-10-00.bus": { + "date": "2018-03-11", + "time": "17-10-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G505", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G508" + ] + } + }, + "2018-03-11.17-10-00.school": { + "date": "2018-03-11", + "time": "17-10-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G330", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G299", + "G328" + ] + } + }, + "2018-03-11.17-10-01.admin": { + "date": "2018-03-11", + "time": "17-10-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.17-10-01.bus": { + "date": "2018-03-11", + "time": "17-10-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G506", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G506", + "G509" + ] + } + }, + "2018-03-11.17-10-01.school": { + "date": "2018-03-11", + "time": "17-10-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G339", + "G419" + ], + "kitware-training": [ + "G336", + "G420", + "G638" + ] + } + }, + "2018-03-11.17-10-02.school": { + "date": "2018-03-11", + "time": "17-10-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware": [ + "G424" + ] + } + }, + "2018-03-11.17-10-04.school": { + "date": "2018-03-11", + "time": "17-10-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.17-10-08.bus": { + "date": "2018-03-11", + "time": "17-10-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.17-10-08.hospital": { + "date": "2018-03-11", + "time": "17-10-08", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-11.17-10-09.hospital": { + "date": "2018-03-11", + "time": "17-10-09", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware": [ + "G341" + ] + } + }, + "2018-03-11.17-15-00.bus": { + "date": "2018-03-11", + "time": "17-15-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + } + }, + "2018-03-11.17-15-00.school": { + "date": "2018-03-11", + "time": "17-15-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G299", + "G423" + ], + "kitware-training": [ + "G330", + "G421", + "G639" + ] + } + }, + "2018-03-11.17-15-01.admin": { + "date": "2018-03-11", + "time": "17-15-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.17-15-01.bus": { + "date": "2018-03-11", + "time": "17-15-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-11.17-15-01.school": { + "date": "2018-03-11", + "time": "17-15-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G336" + ], + "kitware-training": [ + "G339", + "G419", + "G420", + "G638" + ] + } + }, + "2018-03-11.17-15-02.school": { + "date": "2018-03-11", + "time": "17-15-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-11.17-15-04.school": { + "date": "2018-03-11", + "time": "17-15-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.17-15-08.bus": { + "date": "2018-03-11", + "time": "17-15-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.17-15-08.hospital": { + "date": "2018-03-11", + "time": "17-15-08", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-11.17-15-09.hospital": { + "date": "2018-03-11", + "time": "17-15-09", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-11.17-20-00.bus": { + "date": "2018-03-11", + "time": "17-20-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + } + }, + "2018-03-11.17-20-00.school": { + "date": "2018-03-11", + "time": "17-20-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G328", + "G423" + ], + "kitware-training": [ + "G299", + "G330", + "G421", + "G639" + ] + } + }, + "2018-03-11.17-20-01.admin": { + "date": "2018-03-11", + "time": "17-20-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-11.17-20-01.bus": { + "date": "2018-03-11", + "time": "17-20-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-11.17-20-01.school": { + "date": "2018-03-11", + "time": "17-20-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G420" + ], + "kitware-training": [ + "G336", + "G339", + "G419", + "G638" + ] + } + }, + "2018-03-11.17-20-02.school": { + "date": "2018-03-11", + "time": "17-20-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-11.17-20-04.school": { + "date": "2018-03-11", + "time": "17-20-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-11.17-20-08.bus": { + "date": "2018-03-11", + "time": "17-20-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-11.17-20-08.hospital": { + "date": "2018-03-11", + "time": "17-20-08", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-11.17-20-09.hospital": { + "date": "2018-03-11", + "time": "17-20-09", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-11.17-25-00.bus": { + "date": "2018-03-11", + "time": "17-25-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + } + }, + "2018-03-11.17-25-00.school": { + "date": "2018-03-11", + "time": "17-25-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G299", + "G328", + "G330", + "G423" + ], + "kitware-training": [ + "G421", + "G639" + ] + } + }, + "2018-03-11.17-25-01.admin": { + "date": "2018-03-11", + "time": "17-25-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-11.17-25-01.bus": { + "date": "2018-03-11", + "time": "17-25-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "kitware": [ + "G506" + ] + } + }, + "2018-03-11.17-25-01.school": { + "date": "2018-03-11", + "time": "17-25-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G336", + "G339", + "G419", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware": [ + "G336", + "G419", + "G638" + ], + "kitware-training": [ + "G339", + "G420" + ] + } + }, + "2018-03-11.17-25-02.school": { + "date": "2018-03-11", + "time": "17-25-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware": [ + "G424" + ] + } + }, + "2018-03-11.17-25-04.school": { + "date": "2018-03-11", + "time": "17-25-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware": [ + "G300" + ] + } + }, + "2018-03-11.17-25-08.bus": { + "date": "2018-03-11", + "time": "17-25-08", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware": [ + "G340" + ] + } + }, + "2018-03-11.17-25-08.hospital": { + "date": "2018-03-11", + "time": "17-25-08", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-11.17-25-09.hospital": { + "date": "2018-03-11", + "time": "17-25-09", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-12.10-00-00.bus": { + "date": "2018-03-12", + "time": "10-00-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340", + "G505", + "G506" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-12.10-00-00.hospital": { + "date": "2018-03-12", + "time": "10-00-00", + "site": "hospital", + "all_cameras": 4, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G436", + "G479" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ], + "nist-json": [ + "G436" + ] + } + }, + "2018-03-12.10-00-00.school": { + "date": "2018-03-12", + "time": "10-00-00", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G299", + "G330", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420" + ], + "contrib/IBM-person-vehicle": [ + "G299", + "G330" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G420", + "G474" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G299", + "G330", + "G420" + ] + } + }, + "2018-03-12.10-00-01.admin": { + "date": "2018-03-12", + "time": "10-00-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ] + } + }, + "2018-03-12.10-00-01.bus": { + "date": "2018-03-12", + "time": "10-00-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.10-00-01.school": { + "date": "2018-03-12", + "time": "10-00-01", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "contrib/UMD-IBM": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware-training": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "nist-json": [ + "G423" + ] + } + }, + "2018-03-12.10-00-02.admin": { + "date": "2018-03-12", + "time": "10-00-02", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-IBM": [ + "G326" + ], + "kitware-training": [ + "G326" + ], + "nist-json": [ + "G326" + ] + } + }, + "2018-03-12.10-00-02.school": { + "date": "2018-03-12", + "time": "10-00-02", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339" + ], + "contrib/UMD-IBM": [ + "G336", + "G339" + ], + "kitware-training": [ + "G336", + "G339" + ], + "nist-json": [ + "G339" + ] + } + }, + "2018-03-12.10-00-04.school": { + "date": "2018-03-12", + "time": "10-00-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-12.10-00-05.school": { + "date": "2018-03-12", + "time": "10-00-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.10-05-00.bus": { + "date": "2018-03-12", + "time": "10-05-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G508" + ] + } + }, + "2018-03-12.10-05-00.hospital": { + "date": "2018-03-12", + "time": "10-05-00", + "site": "hospital", + "all_cameras": 4, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G479" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-12.10-05-00.school": { + "date": "2018-03-12", + "time": "10-05-00", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G299", + "G330", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G330" + ], + "kitware-training": [ + "G420" + ] + } + }, + "2018-03-12.10-05-01.admin": { + "date": "2018-03-12", + "time": "10-05-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-12.10-05-01.bus": { + "date": "2018-03-12", + "time": "10-05-01", + "site": "bus", + "all_cameras": 2, + "mevid_cameras": [ + "G506", + "G509" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G506", + "G509" + ] + } + }, + "2018-03-12.10-05-01.school": { + "date": "2018-03-12", + "time": "10-05-01", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G639" + ], + "contrib/UMD-v1-train": [ + "G419", + "G423" + ], + "kitware": [ + "G328", + "G639" + ], + "kitware-training": [ + "G419", + "G421", + "G423", + "G638" + ] + } + }, + "2018-03-12.10-05-02.school": { + "date": "2018-03-12", + "time": "10-05-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-12.10-05-03.school": { + "date": "2018-03-12", + "time": "10-05-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.10-05-04.school": { + "date": "2018-03-12", + "time": "10-05-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-12.10-05-05.school": { + "date": "2018-03-12", + "time": "10-05-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.10-10-00.bus": { + "date": "2018-03-12", + "time": "10-10-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-12.10-10-00.hospital": { + "date": "2018-03-12", + "time": "10-10-00", + "site": "hospital", + "all_cameras": 4, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G476" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-12.10-10-00.school": { + "date": "2018-03-12", + "time": "10-10-00", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G299", + "G330", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G474" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware-training": [ + "G299", + "G330", + "G420" + ], + "nist-json": [ + "G299" + ] + } + }, + "2018-03-12.10-10-01.admin": { + "date": "2018-03-12", + "time": "10-10-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-12.10-10-01.bus": { + "date": "2018-03-12", + "time": "10-10-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.10-10-01.school": { + "date": "2018-03-12", + "time": "10-10-01", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G328", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G423", + "G638" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "kitware": [ + "G421", + "G423" + ], + "kitware-training": [ + "G328", + "G419", + "G638", + "G639" + ] + } + }, + "2018-03-12.10-10-02.school": { + "date": "2018-03-12", + "time": "10-10-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-12.10-10-03.school": { + "date": "2018-03-12", + "time": "10-10-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.10-10-04.school": { + "date": "2018-03-12", + "time": "10-10-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-12.10-10-05.school": { + "date": "2018-03-12", + "time": "10-10-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.10-15-00.bus": { + "date": "2018-03-12", + "time": "10-15-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508" + ] + } + }, + "2018-03-12.10-15-00.hospital": { + "date": "2018-03-12", + "time": "10-15-00", + "site": "hospital", + "all_cameras": 5, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "contrib/IBM-person-person": [ + "G341", + "G476" + ], + "contrib/IBM-person-vehicle": [ + "G341", + "G476" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-12.10-15-00.school": { + "date": "2018-03-12", + "time": "10-15-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G421" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G474" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299" + ], + "kitware-training": [ + "G330", + "G420", + "G421" + ] + } + }, + "2018-03-12.10-15-01.admin": { + "date": "2018-03-12", + "time": "10-15-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-12.10-15-01.bus": { + "date": "2018-03-12", + "time": "10-15-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.10-15-01.school": { + "date": "2018-03-12", + "time": "10-15-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G419", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G419", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-12.10-15-02.school": { + "date": "2018-03-12", + "time": "10-15-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "kitware": [ + "G336" + ] + } + }, + "2018-03-12.10-15-03.school": { + "date": "2018-03-12", + "time": "10-15-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.10-15-04.school": { + "date": "2018-03-12", + "time": "10-15-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-12.10-15-05.school": { + "date": "2018-03-12", + "time": "10-15-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.10-20-00.bus": { + "date": "2018-03-12", + "time": "10-20-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508" + ] + } + }, + "2018-03-12.10-20-00.hospital": { + "date": "2018-03-12", + "time": "10-20-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-12.10-20-00.school": { + "date": "2018-03-12", + "time": "10-20-00", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G421" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G421" + ] + } + }, + "2018-03-12.10-20-01.admin": { + "date": "2018-03-12", + "time": "10-20-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-12.10-20-01.bus": { + "date": "2018-03-12", + "time": "10-20-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.10-20-01.school": { + "date": "2018-03-12", + "time": "10-20-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G419", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G423" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware-training": [ + "G328", + "G419", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-12.10-20-02.school": { + "date": "2018-03-12", + "time": "10-20-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-12.10-20-03.school": { + "date": "2018-03-12", + "time": "10-20-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.10-20-04.school": { + "date": "2018-03-12", + "time": "10-20-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-12.10-20-05.school": { + "date": "2018-03-12", + "time": "10-20-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.10-25-00.bus": { + "date": "2018-03-12", + "time": "10-25-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-12.10-25-00.hospital": { + "date": "2018-03-12", + "time": "10-25-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-12.10-25-00.school": { + "date": "2018-03-12", + "time": "10-25-00", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G420" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G638" + ], + "kitware-training": [ + "G330", + "G420" + ] + } + }, + "2018-03-12.10-25-01.admin": { + "date": "2018-03-12", + "time": "10-25-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-12.10-25-01.bus": { + "date": "2018-03-12", + "time": "10-25-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.10-25-01.school": { + "date": "2018-03-12", + "time": "10-25-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G419", + "G421", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G421", + "G423", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G421" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "kitware": [ + "G328", + "G421" + ], + "kitware-training": [ + "G419", + "G423", + "G639" + ] + } + }, + "2018-03-12.10-25-02.school": { + "date": "2018-03-12", + "time": "10-25-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware": [ + "G336" + ] + } + }, + "2018-03-12.10-25-03.school": { + "date": "2018-03-12", + "time": "10-25-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.10-25-04.school": { + "date": "2018-03-12", + "time": "10-25-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-12.10-25-05.school": { + "date": "2018-03-12", + "time": "10-25-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware": [ + "G300" + ] + } + }, + "2018-03-12.10-30-00.admin": { + "date": "2018-03-12", + "time": "10-30-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-v1-train": [ + "G326" + ], + "kitware": [ + "G326" + ] + } + }, + "2018-03-12.10-30-00.bus": { + "date": "2018-03-12", + "time": "10-30-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508" + ] + } + }, + "2018-03-12.10-30-00.hospital": { + "date": "2018-03-12", + "time": "10-30-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-12.10-30-00.school": { + "date": "2018-03-12", + "time": "10-30-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G299", + "G330" + ], + "kitware": [ + "G330", + "G421" + ], + "kitware-training": [ + "G299", + "G420", + "G638" + ] + } + }, + "2018-03-12.10-30-01.admin": { + "date": "2018-03-12", + "time": "10-30-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware": [ + "G329" + ] + } + }, + "2018-03-12.10-30-01.bus": { + "date": "2018-03-12", + "time": "10-30-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.10-30-01.school": { + "date": "2018-03-12", + "time": "10-30-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G419", + "G423", + "G639" + ] + } + }, + "2018-03-12.10-30-02.school": { + "date": "2018-03-12", + "time": "10-30-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware": [ + "G336" + ] + } + }, + "2018-03-12.10-30-03.school": { + "date": "2018-03-12", + "time": "10-30-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.10-30-04.school": { + "date": "2018-03-12", + "time": "10-30-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-12.10-30-05.school": { + "date": "2018-03-12", + "time": "10-30-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.10-40-00.admin": { + "date": "2018-03-12", + "time": "10-40-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-12.10-40-00.bus": { + "date": "2018-03-12", + "time": "10-40-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-12.10-40-00.hospital": { + "date": "2018-03-12", + "time": "10-40-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G436" + ] + } + }, + "2018-03-12.10-40-00.school": { + "date": "2018-03-12", + "time": "10-40-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G421" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G330", + "G421", + "G638" + ], + "kitware-training": [ + "G420" + ] + } + }, + "2018-03-12.10-40-01.admin": { + "date": "2018-03-12", + "time": "10-40-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware": [ + "G329" + ] + } + }, + "2018-03-12.10-40-01.bus": { + "date": "2018-03-12", + "time": "10-40-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.10-40-01.school": { + "date": "2018-03-12", + "time": "10-40-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G423", + "G639" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "kitware-training": [ + "G328", + "G419", + "G423", + "G639" + ], + "nist-json": [ + "G328" + ] + } + }, + "2018-03-12.10-40-02.school": { + "date": "2018-03-12", + "time": "10-40-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-12.10-40-03.school": { + "date": "2018-03-12", + "time": "10-40-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware": [ + "G339" + ] + } + }, + "2018-03-12.10-40-04.school": { + "date": "2018-03-12", + "time": "10-40-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-12.10-40-05.school": { + "date": "2018-03-12", + "time": "10-40-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.10-45-00.admin": { + "date": "2018-03-12", + "time": "10-45-00", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-12.10-45-00.bus": { + "date": "2018-03-12", + "time": "10-45-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505", + "G506" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508" + ] + } + }, + "2018-03-12.10-45-00.hospital": { + "date": "2018-03-12", + "time": "10-45-00", + "site": "hospital", + "all_cameras": 4, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436", + "G479" + ], + "kitware": [ + "G301", + "G436" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-12.10-45-00.school": { + "date": "2018-03-12", + "time": "10-45-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G420" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G330", + "G421" + ], + "kitware-training": [ + "G299", + "G420", + "G638" + ], + "nist-json": [ + "G638" + ] + } + }, + "2018-03-12.10-45-01.admin": { + "date": "2018-03-12", + "time": "10-45-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-12.10-45-01.bus": { + "date": "2018-03-12", + "time": "10-45-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.10-45-01.school": { + "date": "2018-03-12", + "time": "10-45-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G423", + "G639" + ], + "kitware": [ + "G328", + "G639" + ], + "kitware-training": [ + "G419", + "G423" + ], + "nist-json": [ + "G328" + ] + } + }, + "2018-03-12.10-45-02.school": { + "date": "2018-03-12", + "time": "10-45-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-12.10-45-03.school": { + "date": "2018-03-12", + "time": "10-45-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.10-45-04.school": { + "date": "2018-03-12", + "time": "10-45-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ], + "nist-json": [ + "G424" + ] + } + }, + "2018-03-12.10-45-05.school": { + "date": "2018-03-12", + "time": "10-45-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.10-50-00.bus": { + "date": "2018-03-12", + "time": "10-50-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-12.10-50-00.hospital": { + "date": "2018-03-12", + "time": "10-50-00", + "site": "hospital", + "all_cameras": 4, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436", + "G479" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-12.10-50-00.school": { + "date": "2018-03-12", + "time": "10-50-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G421", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G299", + "G330" + ], + "kitware-training": [ + "G420", + "G421", + "G638" + ] + } + }, + "2018-03-12.10-50-01.admin": { + "date": "2018-03-12", + "time": "10-50-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-12.10-50-01.bus": { + "date": "2018-03-12", + "time": "10-50-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.10-50-01.school": { + "date": "2018-03-12", + "time": "10-50-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G423" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "kitware": [ + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G419" + ], + "nist-json": [ + "G423" + ] + } + }, + "2018-03-12.10-50-02.admin": { + "date": "2018-03-12", + "time": "10-50-02", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-12.10-50-02.school": { + "date": "2018-03-12", + "time": "10-50-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-12.10-50-03.school": { + "date": "2018-03-12", + "time": "10-50-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.10-50-04.school": { + "date": "2018-03-12", + "time": "10-50-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-12.10-50-05.school": { + "date": "2018-03-12", + "time": "10-50-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.10-55-00.bus": { + "date": "2018-03-12", + "time": "10-55-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G475", + "G505", + "G506" + ], + "contrib/UMD-v1-val": [ + "G340" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-12.10-55-00.hospital": { + "date": "2018-03-12", + "time": "10-55-00", + "site": "hospital", + "all_cameras": 5, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-12.10-55-00.school": { + "date": "2018-03-12", + "time": "10-55-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G421", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "kitware": [ + "G330", + "G421" + ], + "kitware-training": [ + "G299", + "G638" + ] + } + }, + "2018-03-12.10-55-01.admin": { + "date": "2018-03-12", + "time": "10-55-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-12.10-55-01.school": { + "date": "2018-03-12", + "time": "10-55-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G419", + "G420", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G420", + "G423" + ], + "contrib/IBM-person-person": [ + "G423" + ], + "kitware-training": [ + "G328", + "G419", + "G420", + "G423", + "G639" + ] + } + }, + "2018-03-12.10-55-02.admin": { + "date": "2018-03-12", + "time": "10-55-02", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-12.10-55-02.school": { + "date": "2018-03-12", + "time": "10-55-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-12.10-55-03.school": { + "date": "2018-03-12", + "time": "10-55-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.10-55-04.school": { + "date": "2018-03-12", + "time": "10-55-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-12.10-55-05.school": { + "date": "2018-03-12", + "time": "10-55-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.11-00-00.bus": { + "date": "2018-03-12", + "time": "11-00-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G340", + "G505", + "G506" + ], + "contrib/IBM-person-person": [ + "G475" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508" + ], + "nist-json": [ + "G340" + ] + } + }, + "2018-03-12.11-00-00.hospital": { + "date": "2018-03-12", + "time": "11-00-00", + "site": "hospital", + "all_cameras": 4, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436", + "G476" + ], + "contrib/IBM-person-person": [ + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G341", + "G476" + ], + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-12.11-00-00.school": { + "date": "2018-03-12", + "time": "11-00-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G420", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G420", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G330" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G421", + "G638" + ] + } + }, + "2018-03-12.11-00-01.admin": { + "date": "2018-03-12", + "time": "11-00-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-12.11-00-01.bus": { + "date": "2018-03-12", + "time": "11-00-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.11-00-01.school": { + "date": "2018-03-12", + "time": "11-00-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G423" + ], + "kitware": [ + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G419" + ] + } + }, + "2018-03-12.11-00-02.school": { + "date": "2018-03-12", + "time": "11-00-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-12.11-00-03.school": { + "date": "2018-03-12", + "time": "11-00-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/IBM-person-vehicle": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.11-00-04.school": { + "date": "2018-03-12", + "time": "11-00-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-12.11-00-05.school": { + "date": "2018-03-12", + "time": "11-00-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.11-05-00.bus": { + "date": "2018-03-12", + "time": "11-05-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ] + } + }, + "2018-03-12.11-05-00.hospital": { + "date": "2018-03-12", + "time": "11-05-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-12.11-05-00.school": { + "date": "2018-03-12", + "time": "11-05-00", + "site": "school", + "all_cameras": 6, + "mevid_cameras": [ + "G299", + "G330", + "G419", + "G420", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G419", + "G420", + "G421", + "G638" + ], + "contrib/IBM-person-person": [ + "G299", + "G330" + ], + "kitware": [ + "G330", + "G420" + ], + "kitware-training": [ + "G299", + "G419", + "G421", + "G638" + ] + } + }, + "2018-03-12.11-05-01.admin": { + "date": "2018-03-12", + "time": "11-05-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-12.11-05-01.bus": { + "date": "2018-03-12", + "time": "11-05-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G509" + ], + "mevid_persons": [ + "0202", + "0229", + "0271" + ], + "sources": { + "kitware-training": [ + "G509" + ] + } + }, + "2018-03-12.11-05-01.school": { + "date": "2018-03-12", + "time": "11-05-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G639" + ], + "contrib/UMD-v1-train": [ + "G423" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware": [ + "G328", + "G423" + ], + "kitware-training": [ + "G639" + ] + } + }, + "2018-03-12.11-05-02.school": { + "date": "2018-03-12", + "time": "11-05-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-12.11-05-03.school": { + "date": "2018-03-12", + "time": "11-05-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.11-05-04.school": { + "date": "2018-03-12", + "time": "11-05-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-12.11-05-05.school": { + "date": "2018-03-12", + "time": "11-05-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-12.11-10-00.bus": { + "date": "2018-03-12", + "time": "11-10-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-12.11-10-00.hospital": { + "date": "2018-03-12", + "time": "11-10-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-12.11-10-00.school": { + "date": "2018-03-12", + "time": "11-10-00", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G299", + "G330", + "G421", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0271" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G421" + ] + } + }, + "2018-03-12.11-10-01.admin": { + "date": "2018-03-12", + "time": "11-10-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-12.11-10-01.school": { + "date": "2018-03-12", + "time": "11-10-01", + "site": "school", + "all_cameras": 5, + "mevid_cameras": [ + "G328", + "G419", + "G420", + "G423", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G423" + ], + "kitware": [ + "G328" + ], + "kitware-training": [ + "G419", + "G420", + "G423", + "G639" + ], + "nist-json": [ + "G423" + ] + } + }, + "2018-03-12.11-10-02.school": { + "date": "2018-03-12", + "time": "11-10-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-vehicle": [ + "G336" + ], + "kitware": [ + "G336" + ] + } + }, + "2018-03-12.11-10-03.school": { + "date": "2018-03-12", + "time": "11-10-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-12.11-10-04.school": { + "date": "2018-03-12", + "time": "11-10-04", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-12.11-10-05.school": { + "date": "2018-03-12", + "time": "11-10-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.15-50-00.bus": { + "date": "2018-03-13", + "time": "15-50-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G506" + ], + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-13.15-50-00.school": { + "date": "2018-03-13", + "time": "15-50-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G421", + "G423", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G330", + "G423", + "G474", + "G639" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "contrib/UMD-v1-val": [ + "G328", + "G421" + ], + "kitware": [ + "G421", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G423", + "G639" + ] + } + }, + "2018-03-13.15-50-01.admin": { + "date": "2018-03-13", + "time": "15-50-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.15-50-01.school": { + "date": "2018-03-13", + "time": "15-50-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware": [ + "G419" + ], + "kitware-training": [ + "G420" + ] + } + }, + "2018-03-13.15-50-02.hospital": { + "date": "2018-03-13", + "time": "15-50-02", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-13.15-50-02.school": { + "date": "2018-03-13", + "time": "15-50-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-13.15-50-03.school": { + "date": "2018-03-13", + "time": "15-50-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336" + ], + "kitware": [ + "G336" + ] + } + }, + "2018-03-13.15-50-04.bus": { + "date": "2018-03-13", + "time": "15-50-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.15-50-05.school": { + "date": "2018-03-13", + "time": "15-50-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.15-50-08.school": { + "date": "2018-03-13", + "time": "15-50-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.15-55-00.bus": { + "date": "2018-03-13", + "time": "15-55-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.15-55-00.school": { + "date": "2018-03-13", + "time": "15-55-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G421", + "G423", + "G638" + ], + "contrib/IBM-person-person": [ + "G421", + "G474" + ], + "contrib/UMD-IBM": [ + "G299", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G299", + "G330", + "G638" + ], + "kitware-training": [ + "G328", + "G421", + "G423", + "G639" + ] + } + }, + "2018-03-13.15-55-01.admin": { + "date": "2018-03-13", + "time": "15-55-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.15-55-01.school": { + "date": "2018-03-13", + "time": "15-55-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + } + }, + "2018-03-13.15-55-02.hospital": { + "date": "2018-03-13", + "time": "15-55-02", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G341" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436" + ], + "kitware": [ + "G301", + "G436" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-13.15-55-02.school": { + "date": "2018-03-13", + "time": "15-55-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-13.15-55-03.school": { + "date": "2018-03-13", + "time": "15-55-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-13.15-55-04.bus": { + "date": "2018-03-13", + "time": "15-55-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.15-55-05.school": { + "date": "2018-03-13", + "time": "15-55-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.15-55-08.school": { + "date": "2018-03-13", + "time": "15-55-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.16-00-00.bus": { + "date": "2018-03-13", + "time": "16-00-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505" + ], + "contrib/UMD-IBM": [ + "G331", + "G475", + "G505", + "G506" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.16-00-00.school": { + "date": "2018-03-13", + "time": "16-00-00", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G474", + "G638", + "G639" + ], + "kitware": [ + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G423" + ] + } + }, + "2018-03-13.16-00-01.admin": { + "date": "2018-03-13", + "time": "16-00-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-13.16-00-01.school": { + "date": "2018-03-13", + "time": "16-00-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "kitware-training": [ + "G419", + "G420" + ] + } + }, + "2018-03-13.16-00-02.hospital": { + "date": "2018-03-13", + "time": "16-00-02", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-13.16-00-02.school": { + "date": "2018-03-13", + "time": "16-00-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-13.16-00-03.school": { + "date": "2018-03-13", + "time": "16-00-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "kitware": [ + "G336" + ] + } + }, + "2018-03-13.16-00-05.bus": { + "date": "2018-03-13", + "time": "16-00-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.16-00-05.school": { + "date": "2018-03-13", + "time": "16-00-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.16-00-08.school": { + "date": "2018-03-13", + "time": "16-00-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.16-05-00.bus": { + "date": "2018-03-13", + "time": "16-05-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-13.16-05-00.school": { + "date": "2018-03-13", + "time": "16-05-00", + "site": "school", + "all_cameras": 7, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G421", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G421", + "G638" + ], + "kitware": [ + "G328", + "G421" + ], + "kitware-training": [ + "G299", + "G330", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.16-05-01.admin": { + "date": "2018-03-13", + "time": "16-05-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.16-05-01.school": { + "date": "2018-03-13", + "time": "16-05-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + } + }, + "2018-03-13.16-05-02.hospital": { + "date": "2018-03-13", + "time": "16-05-02", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-13.16-05-02.school": { + "date": "2018-03-13", + "time": "16-05-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "kitware": [ + "G424" + ] + } + }, + "2018-03-13.16-05-03.school": { + "date": "2018-03-13", + "time": "16-05-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G336" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336" + ], + "kitware": [ + "G336" + ] + } + }, + "2018-03-13.16-05-05.bus": { + "date": "2018-03-13", + "time": "16-05-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.16-05-05.school": { + "date": "2018-03-13", + "time": "16-05-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.16-05-08.school": { + "date": "2018-03-13", + "time": "16-05-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.16-10-00.bus": { + "date": "2018-03-13", + "time": "16-10-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G508" + ], + "contrib/IBM-person-person": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506", + "G508", + "G509" + ], + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + } + }, + "2018-03-13.16-10-00.school": { + "date": "2018-03-13", + "time": "16-10-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G421", + "G423" + ], + "contrib/UMD-IBM": [ + "G299", + "G330", + "G421", + "G423", + "G474", + "G638" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G421", + "G638", + "G639" + ] + } + }, + "2018-03-13.16-10-01.admin": { + "date": "2018-03-13", + "time": "16-10-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.16-10-01.school": { + "date": "2018-03-13", + "time": "16-10-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + } + }, + "2018-03-13.16-10-02.hospital": { + "date": "2018-03-13", + "time": "16-10-02", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436" + ], + "contrib/UMD-v1-val": [ + "G301" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-13.16-10-03.school": { + "date": "2018-03-13", + "time": "16-10-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware": [ + "G424" + ], + "kitware-training": [ + "G336" + ] + } + }, + "2018-03-13.16-10-05.bus": { + "date": "2018-03-13", + "time": "16-10-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.16-10-05.school": { + "date": "2018-03-13", + "time": "16-10-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.16-10-08.school": { + "date": "2018-03-13", + "time": "16-10-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.16-15-00.bus": { + "date": "2018-03-13", + "time": "16-15-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G508", + "G509" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.16-15-00.school": { + "date": "2018-03-13", + "time": "16-15-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G421", + "G638" + ], + "contrib/IBM-person-person": [ + "G474" + ], + "contrib/UMD-IBM": [ + "G421", + "G474", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.16-15-01.admin": { + "date": "2018-03-13", + "time": "16-15-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.16-15-01.school": { + "date": "2018-03-13", + "time": "16-15-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "kitware-training": [ + "G419", + "G420" + ] + } + }, + "2018-03-13.16-15-02.hospital": { + "date": "2018-03-13", + "time": "16-15-02", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-IBM": [ + "G301", + "G341", + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + } + }, + "2018-03-13.16-15-03.school": { + "date": "2018-03-13", + "time": "16-15-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + } + }, + "2018-03-13.16-15-05.bus": { + "date": "2018-03-13", + "time": "16-15-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "contrib/UMD-v1-val": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.16-15-05.school": { + "date": "2018-03-13", + "time": "16-15-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.16-15-08.school": { + "date": "2018-03-13", + "time": "16-15-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.16-16-02.school": { + "date": "2018-03-13", + "time": "16-16-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G421" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + } + }, + "2018-03-13.16-20-00.bus": { + "date": "2018-03-13", + "time": "16-20-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G475", + "G505", + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.16-20-00.school": { + "date": "2018-03-13", + "time": "16-20-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G421" + ], + "contrib/IBM-person-person": [ + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G421", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.16-20-01.admin": { + "date": "2018-03-13", + "time": "16-20-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.16-20-01.school": { + "date": "2018-03-13", + "time": "16-20-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + } + }, + "2018-03-13.16-20-02.hospital": { + "date": "2018-03-13", + "time": "16-20-02", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-13.16-20-03.school": { + "date": "2018-03-13", + "time": "16-20-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "kitware": [ + "G336", + "G424" + ] + } + }, + "2018-03-13.16-20-05.bus": { + "date": "2018-03-13", + "time": "16-20-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.16-20-05.school": { + "date": "2018-03-13", + "time": "16-20-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware": [ + "G339" + ] + } + }, + "2018-03-13.16-20-08.school": { + "date": "2018-03-13", + "time": "16-20-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.16-25-00.bus": { + "date": "2018-03-13", + "time": "16-25-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.16-25-00.school": { + "date": "2018-03-13", + "time": "16-25-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.16-25-01.admin": { + "date": "2018-03-13", + "time": "16-25-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.16-25-01.school": { + "date": "2018-03-13", + "time": "16-25-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + } + }, + "2018-03-13.16-25-02.hospital": { + "date": "2018-03-13", + "time": "16-25-02", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341", + "G436" + ] + } + }, + "2018-03-13.16-25-03.school": { + "date": "2018-03-13", + "time": "16-25-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + } + }, + "2018-03-13.16-25-05.bus": { + "date": "2018-03-13", + "time": "16-25-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.16-25-05.school": { + "date": "2018-03-13", + "time": "16-25-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.16-25-08.school": { + "date": "2018-03-13", + "time": "16-25-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.16-26-28.school": { + "date": "2018-03-13", + "time": "16-26-28", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G421" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + } + }, + "2018-03-13.16-30-00.bus": { + "date": "2018-03-13", + "time": "16-30-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505", + "G506" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.16-30-00.school": { + "date": "2018-03-13", + "time": "16-30-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G639" + ], + "kitware": [ + "G423" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G638", + "G639" + ] + } + }, + "2018-03-13.16-30-01.admin": { + "date": "2018-03-13", + "time": "16-30-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.16-30-01.school": { + "date": "2018-03-13", + "time": "16-30-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G420" + ], + "contrib/UMD-IBM": [ + "G419", + "G420" + ], + "kitware-training": [ + "G419", + "G420" + ] + } + }, + "2018-03-13.16-30-02.hospital": { + "date": "2018-03-13", + "time": "16-30-02", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G341", + "G436" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G341", + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G341", + "G436" + ] + } + }, + "2018-03-13.16-30-03.school": { + "date": "2018-03-13", + "time": "16-30-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + } + }, + "2018-03-13.16-30-04.bus": { + "date": "2018-03-13", + "time": "16-30-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.16-30-05.school": { + "date": "2018-03-13", + "time": "16-30-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.16-30-08.school": { + "date": "2018-03-13", + "time": "16-30-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.16-32-54.school": { + "date": "2018-03-13", + "time": "16-32-54", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G421" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ], + "contrib/UMD-v1-val": [ + "G421" + ] + } + }, + "2018-03-13.17-05-00.bus": { + "date": "2018-03-13", + "time": "17-05-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G475", + "G505" + ], + "contrib/UMD-IBM": [ + "G475", + "G505", + "G506" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.17-05-00.school": { + "date": "2018-03-13", + "time": "17-05-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G420", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G299", + "G423", + "G639" + ], + "kitware-training": [ + "G328", + "G330", + "G420", + "G421", + "G638" + ], + "nist-json": [ + "G328", + "G421" + ] + } + }, + "2018-03-13.17-05-01.admin": { + "date": "2018-03-13", + "time": "17-05-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.17-05-01.school": { + "date": "2018-03-13", + "time": "17-05-01", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419" + ], + "contrib/UMD-v1-train": [ + "G419" + ], + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-13.17-05-02.hospital": { + "date": "2018-03-13", + "time": "17-05-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-13.17-05-03.hospital": { + "date": "2018-03-13", + "time": "17-05-03", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-13.17-05-03.school": { + "date": "2018-03-13", + "time": "17-05-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware": [ + "G424" + ], + "kitware-training": [ + "G336" + ], + "nist-json": [ + "G336" + ] + } + }, + "2018-03-13.17-05-05.bus": { + "date": "2018-03-13", + "time": "17-05-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.17-05-05.school": { + "date": "2018-03-13", + "time": "17-05-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.17-05-08.school": { + "date": "2018-03-13", + "time": "17-05-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.17-10-00.bus": { + "date": "2018-03-13", + "time": "17-10-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-IBM": [ + "G475", + "G505" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.17-10-00.school": { + "date": "2018-03-13", + "time": "17-10-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G330", + "G420", + "G421", + "G423", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G328", + "G330", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G421" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.17-10-01.admin": { + "date": "2018-03-13", + "time": "17-10-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.17-10-01.school": { + "date": "2018-03-13", + "time": "17-10-01", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-13.17-10-02.hospital": { + "date": "2018-03-13", + "time": "17-10-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-13.17-10-03.hospital": { + "date": "2018-03-13", + "time": "17-10-03", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-13.17-10-03.school": { + "date": "2018-03-13", + "time": "17-10-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-v1-train": [ + "G336", + "G424" + ], + "kitware": [ + "G336" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-13.17-10-05.bus": { + "date": "2018-03-13", + "time": "17-10-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.17-10-05.school": { + "date": "2018-03-13", + "time": "17-10-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.17-10-08.school": { + "date": "2018-03-13", + "time": "17-10-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.17-15-00.bus": { + "date": "2018-03-13", + "time": "17-15-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-IBM": [ + "G475", + "G505" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.17-15-00.school": { + "date": "2018-03-13", + "time": "17-15-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G474", + "G638" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G421", + "G423", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.17-15-01.admin": { + "date": "2018-03-13", + "time": "17-15-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.17-15-01.school": { + "date": "2018-03-13", + "time": "17-15-01", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-13.17-15-02.hospital": { + "date": "2018-03-13", + "time": "17-15-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-13.17-15-03.hospital": { + "date": "2018-03-13", + "time": "17-15-03", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-13.17-15-03.school": { + "date": "2018-03-13", + "time": "17-15-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware": [ + "G336", + "G424" + ] + } + }, + "2018-03-13.17-15-05.bus": { + "date": "2018-03-13", + "time": "17-15-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.17-15-05.school": { + "date": "2018-03-13", + "time": "17-15-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.17-15-08.school": { + "date": "2018-03-13", + "time": "17-15-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.17-16-48.school": { + "date": "2018-03-13", + "time": "17-16-48", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G421" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + } + }, + "2018-03-13.17-20-00.bus": { + "date": "2018-03-13", + "time": "17-20-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.17-20-00.school": { + "date": "2018-03-13", + "time": "17-20-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G420", + "G474", + "G639" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G420", + "G474", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.17-20-01.admin": { + "date": "2018-03-13", + "time": "17-20-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.17-20-01.school": { + "date": "2018-03-13", + "time": "17-20-01", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419" + ], + "contrib/UMD-IBM": [ + "G419" + ], + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-13.17-20-02.hospital": { + "date": "2018-03-13", + "time": "17-20-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-13.17-20-03.hospital": { + "date": "2018-03-13", + "time": "17-20-03", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-13.17-20-03.school": { + "date": "2018-03-13", + "time": "17-20-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware": [ + "G336" + ], + "kitware-training": [ + "G424" + ] + } + }, + "2018-03-13.17-20-05.bus": { + "date": "2018-03-13", + "time": "17-20-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.17-20-05.school": { + "date": "2018-03-13", + "time": "17-20-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.17-20-08.school": { + "date": "2018-03-13", + "time": "17-20-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.17-20-14.school": { + "date": "2018-03-13", + "time": "17-20-14", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G421" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ] + } + }, + "2018-03-13.17-21-20.school": { + "date": "2018-03-13", + "time": "17-21-20", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G421" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G421" + ] + } + }, + "2018-03-13.17-24-36.school": { + "date": "2018-03-13", + "time": "17-24-36", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G421" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + } + }, + "2018-03-13.17-25-00.bus": { + "date": "2018-03-13", + "time": "17-25-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/IBM-person-person": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.17-25-00.school": { + "date": "2018-03-13", + "time": "17-25-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G330", + "G420", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G474" + ], + "contrib/UMD-IBM": [ + "G328", + "G330", + "G420", + "G421", + "G474", + "G638", + "G639" + ], + "contrib/UMD-v1-val": [ + "G299" + ], + "kitware": [ + "G421" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.17-25-01.admin": { + "date": "2018-03-13", + "time": "17-25-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-13.17-25-01.school": { + "date": "2018-03-13", + "time": "17-25-01", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419" + ], + "contrib/IBM-person-vehicle": [ + "G419" + ], + "contrib/UMD-IBM": [ + "G419" + ], + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-13.17-25-02.hospital": { + "date": "2018-03-13", + "time": "17-25-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-13.17-25-03.hospital": { + "date": "2018-03-13", + "time": "17-25-03", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-13.17-25-03.school": { + "date": "2018-03-13", + "time": "17-25-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "kitware": [ + "G336" + ], + "kitware-training": [ + "G424" + ], + "nist-json": [ + "G336" + ] + } + }, + "2018-03-13.17-25-05.bus": { + "date": "2018-03-13", + "time": "17-25-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.17-25-05.school": { + "date": "2018-03-13", + "time": "17-25-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.17-25-08.school": { + "date": "2018-03-13", + "time": "17-25-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.17-30-00.bus": { + "date": "2018-03-13", + "time": "17-30-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G475" + ], + "contrib/UMD-IBM": [ + "G475" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.17-30-00.school": { + "date": "2018-03-13", + "time": "17-30-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G421", + "G474" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G421", + "G474", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.17-30-01.admin": { + "date": "2018-03-13", + "time": "17-30-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "contrib/UMD-IBM": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-13.17-30-01.bus": { + "date": "2018-03-13", + "time": "17-30-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware-training": [ + "G505" + ] + } + }, + "2018-03-13.17-30-01.school": { + "date": "2018-03-13", + "time": "17-30-01", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-13.17-30-02.hospital": { + "date": "2018-03-13", + "time": "17-30-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ], + "nist-json": [ + "G341" + ] + } + }, + "2018-03-13.17-30-03.hospital": { + "date": "2018-03-13", + "time": "17-30-03", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-13.17-30-03.school": { + "date": "2018-03-13", + "time": "17-30-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/IBM-person-person": [ + "G336" + ], + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + } + }, + "2018-03-13.17-30-05.bus": { + "date": "2018-03-13", + "time": "17-30-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ], + "nist-json": [ + "G340" + ] + } + }, + "2018-03-13.17-30-05.school": { + "date": "2018-03-13", + "time": "17-30-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.17-30-08.school": { + "date": "2018-03-13", + "time": "17-30-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.17-35-00.bus": { + "date": "2018-03-13", + "time": "17-35-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "contrib/UMD-IBM": [ + "G506" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.17-35-00.school": { + "date": "2018-03-13", + "time": "17-35-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G421" + ], + "contrib/IBM-person-vehicle": [ + "G299" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G639" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "kitware": [ + "G330" + ], + "kitware-training": [ + "G299", + "G328", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "nist-json": [ + "G299" + ] + } + }, + "2018-03-13.17-35-01.admin": { + "date": "2018-03-13", + "time": "17-35-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.17-35-01.bus": { + "date": "2018-03-13", + "time": "17-35-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G505" + ], + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505" + ] + } + }, + "2018-03-13.17-35-01.school": { + "date": "2018-03-13", + "time": "17-35-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419", + "G474" + ], + "contrib/UMD-IBM": [ + "G419", + "G474" + ], + "kitware": [ + "G419" + ] + } + }, + "2018-03-13.17-35-02.hospital": { + "date": "2018-03-13", + "time": "17-35-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-13.17-35-03.hospital": { + "date": "2018-03-13", + "time": "17-35-03", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-IBM": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-13.17-35-03.school": { + "date": "2018-03-13", + "time": "17-35-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G424" + ], + "contrib/UMD-IBM": [ + "G424" + ], + "contrib/UMD-v1-train": [ + "G336" + ], + "kitware-training": [ + "G336", + "G424" + ] + } + }, + "2018-03-13.17-35-05.bus": { + "date": "2018-03-13", + "time": "17-35-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.17-35-05.school": { + "date": "2018-03-13", + "time": "17-35-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G339" + ], + "contrib/UMD-IBM": [ + "G339" + ], + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.17-35-08.school": { + "date": "2018-03-13", + "time": "17-35-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-13.17-40-00.bus": { + "date": "2018-03-13", + "time": "17-40-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097", + "0202", + "0211", + "0229", + "0271", + "0280" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + } + }, + "2018-03-13.17-40-00.school": { + "date": "2018-03-13", + "time": "17-40-00", + "site": "school", + "all_cameras": 8, + "mevid_cameras": [ + "G299", + "G328", + "G330", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G420", + "G421", + "G423" + ], + "contrib/UMD-IBM": [ + "G299", + "G328", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G420", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-13.17-40-01.admin": { + "date": "2018-03-13", + "time": "17-40-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-13.17-40-01.bus": { + "date": "2018-03-13", + "time": "17-40-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G505" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0053", + "0080", + "0229", + "0271", + "0292" + ], + "sources": { + "contrib/UMD-IBM": [ + "G505" + ], + "kitware-training": [ + "G505" + ] + } + }, + "2018-03-13.17-40-01.school": { + "date": "2018-03-13", + "time": "17-40-01", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G419" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G419" + ], + "contrib/UMD-IBM": [ + "G419" + ], + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-13.17-40-02.hospital": { + "date": "2018-03-13", + "time": "17-40-02", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-13.17-40-03.hospital": { + "date": "2018-03-13", + "time": "17-40-03", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-13.17-40-03.school": { + "date": "2018-03-13", + "time": "17-40-03", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G336", + "G424" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/UMD-IBM": [ + "G336", + "G424" + ], + "kitware-training": [ + "G336", + "G424" + ] + } + }, + "2018-03-13.17-40-05.bus": { + "date": "2018-03-13", + "time": "17-40-05", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-13.17-40-05.school": { + "date": "2018-03-13", + "time": "17-40-05", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G339" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "kitware-training": [ + "G339" + ] + } + }, + "2018-03-13.17-40-08.school": { + "date": "2018-03-13", + "time": "17-40-08", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-IBM": [ + "G300" + ], + "kitware": [ + "G300" + ], + "nist-json": [ + "G300" + ] + } + }, + "2018-03-13.17-41-20.school": { + "date": "2018-03-13", + "time": "17-41-20", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G421" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/IBM-person-vehicle": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + } + }, + "2018-03-13.17-42-52.school": { + "date": "2018-03-13", + "time": "17-42-52", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G421" + ], + "mevid_persons": [ + "0008", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G421" + ], + "contrib/UMD-IBM": [ + "G421" + ] + } + }, + "2018-03-15.14-50-00.bus": { + "date": "2018-03-15", + "time": "14-50-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G475", + "G505" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-15.14-50-00.school": { + "date": "2018-03-15", + "time": "14-50-00", + "site": "school", + "all_cameras": 11, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424", + "G638" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware": [ + "G421" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G424", + "G638" + ] + } + }, + "2018-03-15.14-50-01.admin": { + "date": "2018-03-15", + "time": "14-50-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-15.14-50-01.bus": { + "date": "2018-03-15", + "time": "14-50-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-15.14-50-01.school": { + "date": "2018-03-15", + "time": "14-50-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G328", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware": [ + "G420" + ], + "kitware-training": [ + "G328" + ] + } + }, + "2018-03-15.14-50-03.school": { + "date": "2018-03-15", + "time": "14-50-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-15.14-50-04.bus": { + "date": "2018-03-15", + "time": "14-50-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ], + "kitware": [ + "G340" + ] + } + }, + "2018-03-15.14-50-06.hospital": { + "date": "2018-03-15", + "time": "14-50-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ], + "nist-json": [ + "G341" + ] + } + }, + "2018-03-15.14-50-07.hospital": { + "date": "2018-03-15", + "time": "14-50-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-15.14-55-00.bus": { + "date": "2018-03-15", + "time": "14-55-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-15.14-55-00.school": { + "date": "2018-03-15", + "time": "14-55-00", + "site": "school", + "all_cameras": 11, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G336", + "G419", + "G421", + "G424", + "G638" + ], + "contrib/IBM-person-person": [ + "G421", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G419", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "kitware": [ + "G336", + "G339", + "G421", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G330", + "G419", + "G423", + "G424" + ], + "nist-json": [ + "G421" + ] + } + }, + "2018-03-15.14-55-01.admin": { + "date": "2018-03-15", + "time": "14-55-01", + "site": "admin", + "all_cameras": 1, + "mevid_cameras": [ + "G326" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-15.14-55-01.bus": { + "date": "2018-03-15", + "time": "14-55-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-15.14-55-01.school": { + "date": "2018-03-15", + "time": "14-55-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G328", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ], + "kitware": [ + "G328" + ], + "kitware-training": [ + "G420" + ] + } + }, + "2018-03-15.14-55-03.school": { + "date": "2018-03-15", + "time": "14-55-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware": [ + "G300" + ] + } + }, + "2018-03-15.14-55-04.bus": { + "date": "2018-03-15", + "time": "14-55-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-15.14-55-06.hospital": { + "date": "2018-03-15", + "time": "14-55-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-15.14-55-07.hospital": { + "date": "2018-03-15", + "time": "14-55-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ], + "nist-json": [ + "G436" + ] + } + }, + "2018-03-15.15-00-00.bus": { + "date": "2018-03-15", + "time": "15-00-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + } + }, + "2018-03-15.15-00-00.school": { + "date": "2018-03-15", + "time": "15-00-00", + "site": "school", + "all_cameras": 10, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G421", + "G424" + ], + "contrib/IBM-person-person": [ + "G299", + "G423" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424" + ], + "contrib/UMD-v1-train": [ + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G299", + "G330", + "G339" + ], + "kitware-training": [ + "G336", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + } + }, + "2018-03-15.15-00-01.admin": { + "date": "2018-03-15", + "time": "15-00-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-15.15-00-01.bus": { + "date": "2018-03-15", + "time": "15-00-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-15.15-00-01.school": { + "date": "2018-03-15", + "time": "15-00-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G328", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G420" + ], + "kitware-training": [ + "G328", + "G420" + ] + } + }, + "2018-03-15.15-00-03.school": { + "date": "2018-03-15", + "time": "15-00-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-15.15-00-04.bus": { + "date": "2018-03-15", + "time": "15-00-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware": [ + "G340" + ] + } + }, + "2018-03-15.15-00-06.hospital": { + "date": "2018-03-15", + "time": "15-00-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware": [ + "G341" + ] + } + }, + "2018-03-15.15-00-07.hospital": { + "date": "2018-03-15", + "time": "15-00-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G301", + "G436" + ], + "kitware": [ + "G301", + "G436" + ] + } + }, + "2018-03-15.15-05-00.bus": { + "date": "2018-03-15", + "time": "15-05-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-15.15-05-00.school": { + "date": "2018-03-15", + "time": "15-05-00", + "site": "school", + "all_cameras": 11, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G638" + ], + "contrib/UMD-v1-train": [ + "G419" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G336", + "G339" + ], + "kitware-training": [ + "G299", + "G330", + "G419", + "G421", + "G424", + "G638", + "G639" + ] + } + }, + "2018-03-15.15-05-01.admin": { + "date": "2018-03-15", + "time": "15-05-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/IBM-person-vehicle": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-15.15-05-01.bus": { + "date": "2018-03-15", + "time": "15-05-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-15.15-05-01.school": { + "date": "2018-03-15", + "time": "15-05-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G328", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "kitware-training": [ + "G328", + "G420" + ] + } + }, + "2018-03-15.15-05-03.school": { + "date": "2018-03-15", + "time": "15-05-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-15.15-05-04.bus": { + "date": "2018-03-15", + "time": "15-05-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-15.15-05-06.hospital": { + "date": "2018-03-15", + "time": "15-05-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-15.15-05-07.hospital": { + "date": "2018-03-15", + "time": "15-05-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-15.15-10-00.bus": { + "date": "2018-03-15", + "time": "15-10-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G475" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ], + "nist-json": [ + "G331" + ] + } + }, + "2018-03-15.15-10-00.school": { + "date": "2018-03-15", + "time": "15-10-00", + "site": "school", + "all_cameras": 11, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G421", + "G424" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G424", + "G638" + ], + "kitware": [ + "G336", + "G339", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G330", + "G419", + "G423", + "G638", + "G639" + ] + } + }, + "2018-03-15.15-10-01.admin": { + "date": "2018-03-15", + "time": "15-10-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-15.15-10-01.bus": { + "date": "2018-03-15", + "time": "15-10-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-15.15-10-01.school": { + "date": "2018-03-15", + "time": "15-10-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G328", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "kitware-training": [ + "G328", + "G420" + ] + } + }, + "2018-03-15.15-10-03.school": { + "date": "2018-03-15", + "time": "15-10-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-15.15-10-04.bus": { + "date": "2018-03-15", + "time": "15-10-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ] + } + }, + "2018-03-15.15-10-06.hospital": { + "date": "2018-03-15", + "time": "15-10-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-15.15-10-07.hospital": { + "date": "2018-03-15", + "time": "15-10-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-15.15-15-00.bus": { + "date": "2018-03-15", + "time": "15-15-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ], + "nist-json": [ + "G331" + ] + } + }, + "2018-03-15.15-15-00.school": { + "date": "2018-03-15", + "time": "15-15-00", + "site": "school", + "all_cameras": 11, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G330", + "G336", + "G339", + "G421", + "G424", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339", + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G419", + "G423", + "G639" + ] + } + }, + "2018-03-15.15-15-01.admin": { + "date": "2018-03-15", + "time": "15-15-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-15.15-15-01.bus": { + "date": "2018-03-15", + "time": "15-15-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-15.15-15-01.school": { + "date": "2018-03-15", + "time": "15-15-01", + "site": "school", + "all_cameras": 2, + "mevid_cameras": [ + "G328", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G328" + ], + "kitware-training": [ + "G328", + "G420" + ] + } + }, + "2018-03-15.15-15-03.school": { + "date": "2018-03-15", + "time": "15-15-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/IBM-person-vehicle": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-15.15-15-04.bus": { + "date": "2018-03-15", + "time": "15-15-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-15.15-15-06.hospital": { + "date": "2018-03-15", + "time": "15-15-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-15.15-15-07.hospital": { + "date": "2018-03-15", + "time": "15-15-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-15.15-30-00.bus": { + "date": "2018-03-15", + "time": "15-30-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + } + }, + "2018-03-15.15-30-00.school": { + "date": "2018-03-15", + "time": "15-30-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G421", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G421", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G339", + "G424" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G638", + "G639" + ] + } + }, + "2018-03-15.15-30-01.admin": { + "date": "2018-03-15", + "time": "15-30-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-15.15-30-01.bus": { + "date": "2018-03-15", + "time": "15-30-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/UMD-v1-val": [ + "G506" + ], + "kitware": [ + "G506" + ] + } + }, + "2018-03-15.15-30-01.school": { + "date": "2018-03-15", + "time": "15-30-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G420" + ], + "kitware-training": [ + "G328", + "G419" + ] + } + }, + "2018-03-15.15-30-03.school": { + "date": "2018-03-15", + "time": "15-30-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "contrib/UMD-v1-train": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-15.15-30-04.bus": { + "date": "2018-03-15", + "time": "15-30-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/IBM-person-vehicle": [ + "G340" + ], + "kitware-training": [ + "G340" + ], + "nist-json": [ + "G340" + ] + } + }, + "2018-03-15.15-30-06.hospital": { + "date": "2018-03-15", + "time": "15-30-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware": [ + "G341" + ] + } + }, + "2018-03-15.15-30-07.hospital": { + "date": "2018-03-15", + "time": "15-30-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-15.15-35-00.bus": { + "date": "2018-03-15", + "time": "15-35-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G508", + "G509" + ], + "contrib/UMD-v1-train": [ + "G331", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + } + }, + "2018-03-15.15-35-00.school": { + "date": "2018-03-15", + "time": "15-35-00", + "site": "school", + "all_cameras": 10, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G336", + "G339", + "G421", + "G423", + "G474", + "G638", + "G639" + ], + "contrib/IBM-person-person": [ + "G336", + "G424", + "G474" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G423", + "G424", + "G474", + "G639" + ], + "contrib/UMD-v1-train": [ + "G339" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339", + "G421", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G424", + "G639" + ] + } + }, + "2018-03-15.15-35-01.admin": { + "date": "2018-03-15", + "time": "15-35-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-15.15-35-01.bus": { + "date": "2018-03-15", + "time": "15-35-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G506" + ], + "kitware-training": [ + "G506" + ], + "nist-json": [ + "G506" + ] + } + }, + "2018-03-15.15-35-01.school": { + "date": "2018-03-15", + "time": "15-35-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G420" + ], + "contrib/IBM-person-vehicle": [ + "G328" + ], + "kitware": [ + "G328" + ], + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-15.15-35-03.school": { + "date": "2018-03-15", + "time": "15-35-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ], + "nist-json": [ + "G300" + ] + } + }, + "2018-03-15.15-35-04.bus": { + "date": "2018-03-15", + "time": "15-35-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware": [ + "G340" + ] + } + }, + "2018-03-15.15-35-06.hospital": { + "date": "2018-03-15", + "time": "15-35-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ], + "nist-json": [ + "G341" + ] + } + }, + "2018-03-15.15-35-07.hospital": { + "date": "2018-03-15", + "time": "15-35-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G436" + ], + "contrib/IBM-person-person": [ + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-15.15-40-00.bus": { + "date": "2018-03-15", + "time": "15-40-00", + "site": "bus", + "all_cameras": 4, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G505", + "G508", + "G509" + ], + "contrib/IBM-person-person": [ + "G331" + ], + "contrib/IBM-person-vehicle": [ + "G331", + "G509" + ], + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G509" + ] + } + }, + "2018-03-15.15-40-00.school": { + "date": "2018-03-15", + "time": "15-40-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G421", + "G423", + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G299", + "G330", + "G336", + "G339", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-person": [ + "G336", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G339" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G421", + "G423", + "G424", + "G638" + ], + "nist-json": [ + "G638" + ] + } + }, + "2018-03-15.15-40-01.admin": { + "date": "2018-03-15", + "time": "15-40-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + } + }, + "2018-03-15.15-40-01.bus": { + "date": "2018-03-15", + "time": "15-40-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-15.15-40-01.school": { + "date": "2018-03-15", + "time": "15-40-01", + "site": "school", + "all_cameras": 4, + "mevid_cameras": [ + "G328", + "G419", + "G420", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G420" + ], + "contrib/IBM-person-vehicle": [ + "G419" + ], + "kitware-training": [ + "G328", + "G419", + "G420", + "G639" + ] + } + }, + "2018-03-15.15-40-03.school": { + "date": "2018-03-15", + "time": "15-40-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-15.15-40-04.bus": { + "date": "2018-03-15", + "time": "15-40-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-15.15-40-06.hospital": { + "date": "2018-03-15", + "time": "15-40-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-15.15-40-07.hospital": { + "date": "2018-03-15", + "time": "15-40-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "kitware-training": [ + "G301", + "G436" + ] + } + }, + "2018-03-15.15-45-00.bus": { + "date": "2018-03-15", + "time": "15-45-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508", + "G509" + ], + "contrib/IBM-person-vehicle": [ + "G475", + "G508" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + } + }, + "2018-03-15.15-45-00.school": { + "date": "2018-03-15", + "time": "15-45-00", + "site": "school", + "all_cameras": 9, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G421", + "G423", + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G336", + "G339", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G421", + "G423", + "G424" + ], + "nist-json": [ + "G638" + ] + } + }, + "2018-03-15.15-45-01.admin": { + "date": "2018-03-15", + "time": "15-45-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326" + ] + } + }, + "2018-03-15.15-45-01.bus": { + "date": "2018-03-15", + "time": "15-45-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G506" + ], + "kitware": [ + "G506" + ], + "nist-json": [ + "G506" + ] + } + }, + "2018-03-15.15-45-01.school": { + "date": "2018-03-15", + "time": "15-45-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G419", + "G420" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G420" + ], + "kitware-training": [ + "G328", + "G419", + "G420" + ] + } + }, + "2018-03-15.15-45-02.school": { + "date": "2018-03-15", + "time": "15-45-02", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G639" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/IBM-person-vehicle": [ + "G639" + ], + "kitware-training": [ + "G639" + ] + } + }, + "2018-03-15.15-45-03.school": { + "date": "2018-03-15", + "time": "15-45-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/IBM-person-vehicle": [ + "G300" + ], + "kitware": [ + "G300" + ] + } + }, + "2018-03-15.15-45-04.bus": { + "date": "2018-03-15", + "time": "15-45-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-15.15-45-06.hospital": { + "date": "2018-03-15", + "time": "15-45-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/UMD-v1-val": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-15.15-45-07.hospital": { + "date": "2018-03-15", + "time": "15-45-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/UMD-v1-train": [ + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + }, + "2018-03-15.15-50-00.bus": { + "date": "2018-03-15", + "time": "15-50-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508" + ], + "contrib/IBM-person-vehicle": [ + "G475" + ], + "contrib/UMD-IBM": [ + "G331", + "G475", + "G505", + "G508" + ], + "contrib/UMD-v1-train": [ + "G331" + ], + "contrib/UMD-v1-val": [ + "G505" + ], + "kitware": [ + "G331", + "G508" + ], + "kitware-training": [ + "G505", + "G509" + ] + } + }, + "2018-03-15.15-50-00.school": { + "date": "2018-03-15", + "time": "15-50-00", + "site": "school", + "all_cameras": 10, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G420", + "G423", + "G424", + "G638" + ], + "contrib/UMD-IBM": [ + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/UMD-v1-train": [ + "G424" + ], + "contrib/UMD-v1-val": [ + "G421" + ], + "kitware": [ + "G336", + "G339" + ], + "kitware-training": [ + "G299", + "G330", + "G420", + "G421", + "G423", + "G424", + "G638" + ] + } + }, + "2018-03-15.15-50-01.admin": { + "date": "2018-03-15", + "time": "15-50-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326", + "G329" + ], + "contrib/UMD-IBM": [ + "G326", + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-15.15-50-01.bus": { + "date": "2018-03-15", + "time": "15-50-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/IBM-person-person": [ + "G506" + ], + "contrib/IBM-person-vehicle": [ + "G506" + ], + "contrib/UMD-IBM": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-15.15-50-01.school": { + "date": "2018-03-15", + "time": "15-50-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G419", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419" + ], + "contrib/IBM-person-vehicle": [ + "G419", + "G639" + ], + "contrib/UMD-IBM": [ + "G328", + "G419", + "G639" + ], + "kitware-training": [ + "G328", + "G419", + "G639" + ] + } + }, + "2018-03-15.15-50-03.school": { + "date": "2018-03-15", + "time": "15-50-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/UMD-IBM": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-15.15-50-04.bus": { + "date": "2018-03-15", + "time": "15-50-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/UMD-IBM": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-15.15-50-06.hospital": { + "date": "2018-03-15", + "time": "15-50-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "contrib/IBM-person-vehicle": [ + "G341" + ], + "contrib/UMD-IBM": [ + "G341" + ], + "kitware": [ + "G341" + ] + } + }, + "2018-03-15.15-50-07.hospital": { + "date": "2018-03-15", + "time": "15-50-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "contrib/IBM-person-vehicle": [ + "G436" + ], + "contrib/UMD-IBM": [ + "G301", + "G436" + ], + "kitware": [ + "G301" + ], + "kitware-training": [ + "G436" + ] + } + }, + "2018-03-15.15-55-00.bus": { + "date": "2018-03-15", + "time": "15-55-00", + "site": "bus", + "all_cameras": 5, + "mevid_cameras": [ + "G331", + "G505", + "G508", + "G509" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0046", + "0048", + "0053", + "0076", + "0080", + "0202", + "0211", + "0229", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G331", + "G475", + "G505", + "G508" + ], + "kitware": [ + "G331" + ], + "kitware-training": [ + "G505", + "G508", + "G509" + ] + } + }, + "2018-03-15.15-55-00.school": { + "date": "2018-03-15", + "time": "15-55-00", + "site": "school", + "all_cameras": 10, + "mevid_cameras": [ + "G299", + "G330", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0046", + "0048", + "0052", + "0053", + "0054", + "0074", + "0076", + "0080", + "0097", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "contrib/IBM-person-vehicle": [ + "G336", + "G420", + "G474", + "G638" + ], + "kitware": [ + "G336", + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G339", + "G423" + ] + } + }, + "2018-03-15.15-55-01.admin": { + "date": "2018-03-15", + "time": "15-55-01", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0010", + "0046", + "0053", + "0074", + "0080", + "0097", + "0229", + "0238", + "0260", + "0280" + ], + "sources": { + "contrib/CMU-v2": [ + "G326" + ], + "contrib/UMD-v1-train": [ + "G329" + ], + "kitware-training": [ + "G326", + "G329" + ] + } + }, + "2018-03-15.15-55-01.bus": { + "date": "2018-03-15", + "time": "15-55-01", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G506" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G506" + ], + "kitware-training": [ + "G506" + ] + } + }, + "2018-03-15.15-55-01.school": { + "date": "2018-03-15", + "time": "15-55-01", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G328", + "G419", + "G639" + ], + "mevid_persons": [ + "0008", + "0010", + "0032", + "0040", + "0048", + "0053", + "0054", + "0074", + "0076", + "0097", + "0110", + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0280", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G328", + "G419", + "G639" + ], + "contrib/IBM-person-vehicle": [ + "G639" + ], + "contrib/UMD-v1-val": [ + "G328" + ], + "kitware": [ + "G328", + "G639" + ], + "kitware-training": [ + "G419" + ] + } + }, + "2018-03-15.15-55-03.school": { + "date": "2018-03-15", + "time": "15-55-03", + "site": "school", + "all_cameras": 1, + "mevid_cameras": [ + "G300" + ], + "mevid_persons": [ + "0010" + ], + "sources": { + "contrib/CMU-v2": [ + "G300" + ], + "kitware-training": [ + "G300" + ] + } + }, + "2018-03-15.15-55-04.bus": { + "date": "2018-03-15", + "time": "15-55-04", + "site": "bus", + "all_cameras": 1, + "mevid_cameras": [ + "G340" + ], + "mevid_persons": [ + "0010", + "0032", + "0048", + "0080", + "0097", + "0211", + "0238" + ], + "sources": { + "contrib/CMU-v2": [ + "G340" + ], + "contrib/IBM-person-person": [ + "G340" + ], + "kitware-training": [ + "G340" + ] + } + }, + "2018-03-15.15-55-06.hospital": { + "date": "2018-03-15", + "time": "15-55-06", + "site": "hospital", + "all_cameras": 1, + "mevid_cameras": [ + "G341" + ], + "mevid_persons": [ + "0010", + "0032", + "0046", + "0048", + "0052", + "0053", + "0054", + "0076", + "0080", + "0097" + ], + "sources": { + "contrib/CMU-v2": [ + "G341" + ], + "kitware-training": [ + "G341" + ] + } + }, + "2018-03-15.15-55-07.hospital": { + "date": "2018-03-15", + "time": "15-55-07", + "site": "hospital", + "all_cameras": 2, + "mevid_cameras": [ + "G436" + ], + "mevid_persons": [ + "0202", + "0211", + "0229", + "0238", + "0260", + "0268", + "0271", + "0292" + ], + "sources": { + "contrib/CMU-v2": [ + "G301", + "G436" + ], + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + } + } + } +} \ No newline at end of file diff --git a/meva/data/person_database.json b/meva/data/person_database.json new file mode 100644 index 0000000..dbeca0b --- /dev/null +++ b/meva/data/person_database.json @@ -0,0 +1,14331 @@ +{ + "version": "1.0", + "description": "MEVID person attribute database", + "stats": { + "total_persons": 158, + "train_persons": 104, + "test_persons": 54, + "multi_camera_persons": 154, + "multi_outfit_persons": 140, + "persons_with_attributes": 23, + "total_frames": 4795407 + }, + "persons": { + "0103": { + "person_id": "0103", + "split": "train", + "cameras": { + "G424": { + "tracklets": 3, + "frames": 1089 + }, + "G328": { + "tracklets": 2, + "frames": 44 + }, + "G339": { + "tracklets": 2, + "frames": 338 + }, + "G341": { + "tracklets": 10, + "frames": 7061 + }, + "G340": { + "tracklets": 1, + "frames": 406 + }, + "G421": { + "tracklets": 4, + "frames": 1923 + }, + "G506": { + "tracklets": 7, + "frames": 1579 + }, + "G420": { + "tracklets": 3, + "frames": 981 + }, + "G419": { + "tracklets": 2, + "frames": 395 + }, + "G505": { + "tracklets": 1, + "frames": 901 + }, + "G330": { + "tracklets": 8, + "frames": 7336 + }, + "G299": { + "tracklets": 3, + "frames": 1251 + }, + "G300": { + "tracklets": 1, + "frames": 67 + }, + "G423": { + "tracklets": 1, + "frames": 4 + } + }, + "outfits": { + "020": { + "cameras": { + "G424": 1089, + "G328": 44, + "G339": 338 + }, + "total_frames": 1471, + "attributes": null + }, + "023": { + "cameras": { + "G341": 1576, + "G340": 406, + "G421": 1822, + "G506": 696, + "G420": 151, + "G419": 250 + }, + "total_frames": 4901, + "attributes": null + }, + "006": { + "cameras": { + "G341": 5485, + "G506": 883, + "G505": 901 + }, + "total_frames": 7269, + "attributes": null + }, + "016": { + "cameras": { + "G330": 7336, + "G420": 830, + "G299": 1251, + "G419": 145, + "G300": 67, + "G423": 4 + }, + "total_frames": 9633, + "attributes": null + }, + "015": { + "cameras": { + "G421": 101 + }, + "total_frames": 101, + "attributes": null + } + }, + "total_frames": 23375, + "total_tracklets": 48 + }, + "0072": { + "person_id": "0072", + "split": "train", + "cameras": { + "G424": { + "tracklets": 3, + "frames": 1905 + }, + "G328": { + "tracklets": 2, + "frames": 56 + }, + "G340": { + "tracklets": 1, + "frames": 7 + }, + "G339": { + "tracklets": 2, + "frames": 17 + }, + "G638": { + "tracklets": 1, + "frames": 760 + }, + "G506": { + "tracklets": 7, + "frames": 2540 + }, + "G341": { + "tracklets": 12, + "frames": 9173 + }, + "G299": { + "tracklets": 11, + "frames": 9618 + }, + "G330": { + "tracklets": 22, + "frames": 20074 + }, + "G419": { + "tracklets": 1, + "frames": 277 + }, + "G421": { + "tracklets": 1, + "frames": 109 + } + }, + "outfits": { + "014": { + "cameras": { + "G424": 1905, + "G328": 56, + "G340": 7, + "G339": 17, + "G638": 760 + }, + "total_frames": 2745, + "attributes": null + }, + "017": { + "cameras": { + "G506": 2521, + "G341": 9173 + }, + "total_frames": 11694, + "attributes": null + }, + "009": { + "cameras": { + "G299": 9377, + "G330": 19671, + "G419": 277, + "G421": 109 + }, + "total_frames": 29434, + "attributes": null + }, + "011": { + "cameras": { + "G330": 403, + "G299": 241 + }, + "total_frames": 644, + "attributes": null + }, + "002": { + "cameras": { + "G506": 19 + }, + "total_frames": 19, + "attributes": null + } + }, + "total_frames": 44536, + "total_tracklets": 63 + }, + "0041": { + "person_id": "0041", + "split": "train", + "cameras": { + "G424": { + "tracklets": 4, + "frames": 2209 + }, + "G328": { + "tracklets": 2, + "frames": 1349 + }, + "G340": { + "tracklets": 5, + "frames": 824 + }, + "G638": { + "tracklets": 1, + "frames": 598 + }, + "G339": { + "tracklets": 4, + "frames": 1123 + }, + "G420": { + "tracklets": 6, + "frames": 1173 + }, + "G300": { + "tracklets": 1, + "frames": 52 + }, + "G419": { + "tracklets": 4, + "frames": 502 + }, + "G421": { + "tracklets": 5, + "frames": 680 + }, + "G299": { + "tracklets": 4, + "frames": 1630 + }, + "G506": { + "tracklets": 1, + "frames": 4 + }, + "G330": { + "tracklets": 2, + "frames": 1375 + }, + "G329": { + "tracklets": 1, + "frames": 214 + }, + "G326": { + "tracklets": 1, + "frames": 103 + }, + "G423": { + "tracklets": 3, + "frames": 2251 + } + }, + "outfits": { + "024": { + "cameras": { + "G424": 712, + "G328": 583, + "G340": 133, + "G638": 598, + "G339": 44 + }, + "total_frames": 2070, + "attributes": null + }, + "016": { + "cameras": { + "G424": 1497, + "G420": 287, + "G300": 52, + "G419": 197, + "G421": 333 + }, + "total_frames": 2366, + "attributes": null + }, + "027": { + "cameras": { + "G340": 691, + "G420": 479, + "G299": 464, + "G506": 4, + "G419": 88 + }, + "total_frames": 1726, + "attributes": null + }, + "019": { + "cameras": { + "G328": 766, + "G339": 238, + "G420": 407, + "G330": 1375, + "G421": 347, + "G419": 217, + "G299": 976 + }, + "total_frames": 4326, + "attributes": null + }, + "004": { + "cameras": { + "G339": 841, + "G329": 214, + "G326": 103 + }, + "total_frames": 1158, + "attributes": null + }, + "017": { + "cameras": { + "G299": 190, + "G423": 2251 + }, + "total_frames": 2441, + "attributes": null + } + }, + "total_frames": 14087, + "total_tracklets": 44 + }, + "0096": { + "person_id": "0096", + "split": "train", + "cameras": { + "G506": { + "tracklets": 1, + "frames": 121 + }, + "G424": { + "tracklets": 12, + "frames": 6571 + }, + "G329": { + "tracklets": 5, + "frames": 2510 + }, + "G339": { + "tracklets": 4, + "frames": 1516 + }, + "G328": { + "tracklets": 7, + "frames": 5659 + }, + "G419": { + "tracklets": 5, + "frames": 1142 + }, + "G330": { + "tracklets": 3, + "frames": 1727 + }, + "G420": { + "tracklets": 10, + "frames": 4594 + }, + "G423": { + "tracklets": 4, + "frames": 367 + }, + "G421": { + "tracklets": 1, + "frames": 625 + }, + "G326": { + "tracklets": 1, + "frames": 169 + }, + "G638": { + "tracklets": 1, + "frames": 424 + }, + "G300": { + "tracklets": 1, + "frames": 133 + } + }, + "outfits": { + "020": { + "cameras": { + "G506": 121, + "G424": 1009, + "G329": 938, + "G339": 259 + }, + "total_frames": 2327, + "attributes": null + }, + "019": { + "cameras": { + "G424": 4642, + "G328": 5659, + "G339": 778, + "G419": 1051, + "G330": 1727, + "G420": 1882, + "G423": 151, + "G421": 625 + }, + "total_frames": 16515, + "attributes": null + }, + "004": { + "cameras": { + "G339": 479, + "G329": 1572, + "G326": 169, + "G424": 920, + "G638": 424 + }, + "total_frames": 3564, + "attributes": null + }, + "015": { + "cameras": { + "G300": 133, + "G420": 2712, + "G419": 91, + "G423": 216 + }, + "total_frames": 3152, + "attributes": null + } + }, + "total_frames": 25558, + "total_tracklets": 55 + }, + "0008": { + "person_id": "0008", + "split": "train", + "cameras": { + "G424": { + "tracklets": 7, + "frames": 3866 + }, + "G328": { + "tracklets": 2, + "frames": 1586 + }, + "G339": { + "tracklets": 1, + "frames": 403 + }, + "G420": { + "tracklets": 7, + "frames": 2347 + }, + "G421": { + "tracklets": 1, + "frames": 268 + }, + "G419": { + "tracklets": 1, + "frames": 154 + }, + "G423": { + "tracklets": 1, + "frames": 91 + }, + "G299": { + "tracklets": 4, + "frames": 3013 + }, + "G331": { + "tracklets": 1, + "frames": 619 + } + }, + "outfits": { + "018": { + "cameras": { + "G424": 106 + }, + "total_frames": 106, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 109, + "avg_width_px": 55, + "n_crops_analyzed": 3 + } + }, + "016": { + "cameras": { + "G328": 1586, + "G424": 3760, + "G339": 403, + "G420": 695, + "G421": 268, + "G419": 154 + }, + "total_frames": 6866, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 255, + "avg_width_px": 120, + "n_crops_analyzed": 3 + } + }, + "009": { + "cameras": { + "G420": 1652, + "G423": 91, + "G299": 3013 + }, + "total_frames": 4756, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 183, + "avg_width_px": 87, + "n_crops_analyzed": 3 + } + }, + "003": { + "cameras": { + "G331": 619 + }, + "total_frames": 619, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "green", + "avg_height_px": 87, + "avg_width_px": 40, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 12347, + "total_tracklets": 25, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "gray": 1, + "blue": 8, + "green": 3 + }, + "lower_color_distribution": { + "blue": 8, + "green": 3, + "black": 1 + }, + "avg_crop_height": 158, + "n_outfits": 4, + "n_cameras": 9 + } + }, + "0097": { + "person_id": "0097", + "split": "train", + "cameras": { + "G506": { + "tracklets": 3, + "frames": 525 + }, + "G341": { + "tracklets": 3, + "frames": 1395 + }, + "G328": { + "tracklets": 9, + "frames": 6149 + }, + "G424": { + "tracklets": 7, + "frames": 4139 + }, + "G339": { + "tracklets": 7, + "frames": 2284 + }, + "G340": { + "tracklets": 1, + "frames": 106 + }, + "G329": { + "tracklets": 5, + "frames": 1948 + }, + "G326": { + "tracklets": 7, + "frames": 5462 + }, + "G638": { + "tracklets": 1, + "frames": 673 + }, + "G420": { + "tracklets": 7, + "frames": 3160 + }, + "G419": { + "tracklets": 6, + "frames": 1316 + }, + "G421": { + "tracklets": 1, + "frames": 646 + }, + "G423": { + "tracklets": 3, + "frames": 1335 + }, + "G330": { + "tracklets": 2, + "frames": 1462 + } + }, + "outfits": { + "019": { + "cameras": { + "G506": 293, + "G341": 767, + "G328": 817, + "G424": 979, + "G339": 1351, + "G340": 106, + "G329": 689, + "G326": 5224 + }, + "total_frames": 10226, + "attributes": { + "upper_body_color": "gray", + "lower_body_color": "blue", + "avg_height_px": 182, + "avg_width_px": 87, + "n_crops_analyzed": 3 + } + }, + "018": { + "cameras": { + "G328": 5332, + "G424": 2360, + "G339": 611, + "G638": 673, + "G420": 1951, + "G419": 825, + "G421": 646, + "G423": 181, + "G330": 1462 + }, + "total_frames": 14041, + "attributes": { + "upper_body_color": "yellow", + "lower_body_color": "blue", + "avg_height_px": 219, + "avg_width_px": 117, + "n_crops_analyzed": 3 + } + }, + "004": { + "cameras": { + "G341": 628, + "G506": 232, + "G329": 1259, + "G419": 46, + "G424": 800, + "G339": 322, + "G326": 238 + }, + "total_frames": 3525, + "attributes": { + "upper_body_color": "gray", + "lower_body_color": "gray", + "avg_height_px": 151, + "avg_width_px": 66, + "n_crops_analyzed": 3 + } + }, + "017": { + "cameras": { + "G419": 445 + }, + "total_frames": 445, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 624, + "avg_width_px": 305, + "n_crops_analyzed": 3 + } + }, + "014": { + "cameras": { + "G423": 1154, + "G420": 1209 + }, + "total_frames": 2363, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 246, + "avg_width_px": 147, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 30600, + "total_tracklets": 62, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "gray": 3, + "black": 1, + "green": 1, + "yellow": 1, + "blue": 8, + "white": 1 + }, + "lower_color_distribution": { + "blue": 11, + "black": 1, + "gray": 3 + }, + "avg_crop_height": 284, + "n_outfits": 5, + "n_cameras": 14 + } + }, + "0014": { + "person_id": "0014", + "split": "train", + "cameras": { + "G341": { + "tracklets": 7, + "frames": 1864 + }, + "G424": { + "tracklets": 6, + "frames": 2697 + }, + "G328": { + "tracklets": 4, + "frames": 1530 + }, + "G340": { + "tracklets": 4, + "frames": 2059 + }, + "G506": { + "tracklets": 3, + "frames": 561 + }, + "G339": { + "tracklets": 4, + "frames": 1309 + }, + "G508": { + "tracklets": 9, + "frames": 7545 + }, + "G330": { + "tracklets": 1, + "frames": 871 + }, + "G420": { + "tracklets": 4, + "frames": 2233 + }, + "G419": { + "tracklets": 3, + "frames": 1041 + }, + "G423": { + "tracklets": 2, + "frames": 415 + }, + "G299": { + "tracklets": 2, + "frames": 938 + }, + "G336": { + "tracklets": 3, + "frames": 827 + }, + "G300": { + "tracklets": 2, + "frames": 329 + }, + "G638": { + "tracklets": 2, + "frames": 1355 + }, + "G421": { + "tracklets": 10, + "frames": 9005 + } + }, + "outfits": { + "022": { + "cameras": { + "G341": 368, + "G424": 981, + "G328": 823, + "G340": 2059, + "G506": 494, + "G339": 998, + "G508": 7124 + }, + "total_frames": 12847, + "attributes": null + }, + "016": { + "cameras": { + "G424": 767, + "G328": 707, + "G330": 871, + "G420": 2233, + "G419": 1041, + "G423": 415, + "G299": 938, + "G336": 827, + "G300": 329, + "G638": 1355, + "G421": 9005 + }, + "total_frames": 18488, + "attributes": null + }, + "004": { + "cameras": { + "G341": 1149, + "G506": 67, + "G508": 421, + "G339": 10 + }, + "total_frames": 1647, + "attributes": null + }, + "010": { + "cameras": { + "G341": 347, + "G424": 949, + "G339": 301 + }, + "total_frames": 1597, + "attributes": null + } + }, + "total_frames": 34579, + "total_tracklets": 66 + }, + "0082": { + "person_id": "0082", + "split": "train", + "cameras": { + "G341": { + "tracklets": 9, + "frames": 3032 + }, + "G339": { + "tracklets": 7, + "frames": 3076 + }, + "G508": { + "tracklets": 5, + "frames": 3718 + }, + "G328": { + "tracklets": 8, + "frames": 3394 + }, + "G506": { + "tracklets": 3, + "frames": 762 + }, + "G299": { + "tracklets": 1, + "frames": 658 + }, + "G420": { + "tracklets": 11, + "frames": 5883 + }, + "G419": { + "tracklets": 13, + "frames": 7808 + }, + "G336": { + "tracklets": 2, + "frames": 905 + }, + "G423": { + "tracklets": 4, + "frames": 1144 + }, + "G331": { + "tracklets": 4, + "frames": 3158 + }, + "G638": { + "tracklets": 2, + "frames": 1457 + }, + "G326": { + "tracklets": 3, + "frames": 564 + }, + "G300": { + "tracklets": 1, + "frames": 115 + }, + "G436": { + "tracklets": 1, + "frames": 583 + }, + "G421": { + "tracklets": 3, + "frames": 1184 + }, + "G329": { + "tracklets": 2, + "frames": 542 + }, + "G424": { + "tracklets": 4, + "frames": 2862 + }, + "G340": { + "tracklets": 1, + "frames": 31 + }, + "G330": { + "tracklets": 2, + "frames": 1051 + } + }, + "outfits": { + "023": { + "cameras": { + "G341": 244 + }, + "total_frames": 244, + "attributes": null + }, + "003": { + "cameras": { + "G341": 1508, + "G339": 979, + "G508": 3234 + }, + "total_frames": 5721, + "attributes": null + }, + "013": { + "cameras": { + "G341": 349, + "G328": 1786, + "G506": 722, + "G299": 658, + "G420": 2941, + "G419": 4785, + "G336": 905, + "G423": 674, + "G331": 3158, + "G638": 1457, + "G326": 564, + "G300": 115, + "G436": 583, + "G421": 1184, + "G339": 178, + "G329": 542 + }, + "total_frames": 20601, + "attributes": null + }, + "019": { + "cameras": { + "G328": 1608, + "G424": 2090, + "G339": 1641, + "G419": 3023, + "G420": 2942, + "G423": 470, + "G340": 31 + }, + "total_frames": 11805, + "attributes": null + }, + "022": { + "cameras": { + "G341": 931, + "G506": 40, + "G424": 772, + "G339": 278, + "G508": 484 + }, + "total_frames": 2505, + "attributes": null + }, + "018": { + "cameras": { + "G330": 1051 + }, + "total_frames": 1051, + "attributes": null + } + }, + "total_frames": 41927, + "total_tracklets": 86 + }, + "0095": { + "person_id": "0095", + "split": "train", + "cameras": { + "G340": { + "tracklets": 2, + "frames": 965 + }, + "G424": { + "tracklets": 6, + "frames": 2874 + }, + "G329": { + "tracklets": 4, + "frames": 1267 + }, + "G419": { + "tracklets": 3, + "frames": 525 + }, + "G339": { + "tracklets": 5, + "frames": 1787 + }, + "G326": { + "tracklets": 3, + "frames": 465 + }, + "G328": { + "tracklets": 1, + "frames": 424 + }, + "G420": { + "tracklets": 4, + "frames": 1525 + }, + "G299": { + "tracklets": 2, + "frames": 800 + }, + "G330": { + "tracklets": 1, + "frames": 271 + }, + "G423": { + "tracklets": 1, + "frames": 139 + } + }, + "outfits": { + "004": { + "cameras": { + "G340": 965, + "G424": 1630, + "G329": 719, + "G419": 190, + "G339": 349, + "G326": 94 + }, + "total_frames": 3947, + "attributes": null + }, + "008": { + "cameras": { + "G424": 1244, + "G339": 680 + }, + "total_frames": 1924, + "attributes": null + }, + "014": { + "cameras": { + "G339": 758, + "G328": 424, + "G420": 1140, + "G299": 800, + "G330": 271, + "G329": 548, + "G326": 371, + "G419": 335, + "G423": 139 + }, + "total_frames": 4786, + "attributes": null + }, + "016": { + "cameras": { + "G420": 385 + }, + "total_frames": 385, + "attributes": null + } + }, + "total_frames": 11042, + "total_tracklets": 32 + }, + "0042": { + "person_id": "0042", + "split": "train", + "cameras": { + "G341": { + "tracklets": 13, + "frames": 6960 + }, + "G424": { + "tracklets": 9, + "frames": 4843 + }, + "G339": { + "tracklets": 4, + "frames": 1843 + }, + "G419": { + "tracklets": 5, + "frames": 1634 + }, + "G420": { + "tracklets": 5, + "frames": 1795 + }, + "G423": { + "tracklets": 2, + "frames": 845 + }, + "G328": { + "tracklets": 4, + "frames": 1644 + }, + "G638": { + "tracklets": 9, + "frames": 4993 + }, + "G336": { + "tracklets": 5, + "frames": 1165 + }, + "G299": { + "tracklets": 3, + "frames": 1691 + }, + "G421": { + "tracklets": 8, + "frames": 899 + }, + "G506": { + "tracklets": 22, + "frames": 16874 + }, + "G340": { + "tracklets": 1, + "frames": 250 + } + }, + "outfits": { + "015": { + "cameras": { + "G341": 260, + "G424": 461, + "G339": 1139, + "G419": 428, + "G420": 280, + "G423": 845 + }, + "total_frames": 3413, + "attributes": null + }, + "011": { + "cameras": { + "G424": 569, + "G328": 668, + "G638": 2529, + "G419": 1206, + "G336": 1165, + "G299": 1691, + "G421": 895, + "G420": 1515 + }, + "total_frames": 10238, + "attributes": null + }, + "018": { + "cameras": { + "G506": 5510, + "G328": 441, + "G424": 694 + }, + "total_frames": 6645, + "attributes": null + }, + "012": { + "cameras": { + "G424": 163, + "G328": 535, + "G421": 4 + }, + "total_frames": 702, + "attributes": null + }, + "004": { + "cameras": { + "G506": 11364, + "G341": 6700, + "G424": 2956, + "G339": 704, + "G340": 250 + }, + "total_frames": 21974, + "attributes": null + }, + "014": { + "cameras": { + "G638": 2464 + }, + "total_frames": 2464, + "attributes": null + } + }, + "total_frames": 45436, + "total_tracklets": 90 + }, + "0077": { + "person_id": "0077", + "split": "train", + "cameras": { + "G424": { + "tracklets": 4, + "frames": 1501 + }, + "G328": { + "tracklets": 2, + "frames": 1105 + }, + "G339": { + "tracklets": 3, + "frames": 1206 + }, + "G420": { + "tracklets": 4, + "frames": 1705 + }, + "G299": { + "tracklets": 3, + "frames": 1997 + }, + "G330": { + "tracklets": 2, + "frames": 1102 + }, + "G638": { + "tracklets": 3, + "frames": 1164 + }, + "G419": { + "tracklets": 2, + "frames": 293 + }, + "G421": { + "tracklets": 4, + "frames": 2816 + }, + "G331": { + "tracklets": 10, + "frames": 9004 + }, + "G506": { + "tracklets": 1, + "frames": 7 + } + }, + "outfits": { + "010": { + "cameras": { + "G424": 526, + "G328": 1105, + "G339": 980 + }, + "total_frames": 2611, + "attributes": null + }, + "019": { + "cameras": { + "G424": 975, + "G420": 1705, + "G299": 1997, + "G330": 1102, + "G638": 1164, + "G419": 293, + "G421": 10 + }, + "total_frames": 7246, + "attributes": null + }, + "005": { + "cameras": { + "G331": 9004 + }, + "total_frames": 9004, + "attributes": null + }, + "006": { + "cameras": { + "G339": 226 + }, + "total_frames": 226, + "attributes": null + }, + "026": { + "cameras": { + "G506": 7, + "G421": 2806 + }, + "total_frames": 2813, + "attributes": null + } + }, + "total_frames": 21900, + "total_tracklets": 38 + }, + "0064": { + "person_id": "0064", + "split": "train", + "cameras": { + "G341": { + "tracklets": 4, + "frames": 922 + }, + "G506": { + "tracklets": 3, + "frames": 315 + }, + "G424": { + "tracklets": 5, + "frames": 2750 + }, + "G421": { + "tracklets": 8, + "frames": 5458 + }, + "G339": { + "tracklets": 6, + "frames": 1749 + }, + "G340": { + "tracklets": 2, + "frames": 389 + }, + "G419": { + "tracklets": 5, + "frames": 1583 + }, + "G420": { + "tracklets": 1, + "frames": 13 + }, + "G330": { + "tracklets": 11, + "frames": 10157 + }, + "G423": { + "tracklets": 2, + "frames": 1234 + }, + "G299": { + "tracklets": 8, + "frames": 6516 + }, + "G638": { + "tracklets": 1, + "frames": 871 + } + }, + "outfits": { + "021": { + "cameras": { + "G341": 922, + "G506": 315, + "G424": 661, + "G421": 4783, + "G339": 554 + }, + "total_frames": 7235, + "attributes": null + }, + "018": { + "cameras": { + "G424": 977, + "G340": 389, + "G339": 347 + }, + "total_frames": 1713, + "attributes": null + }, + "012": { + "cameras": { + "G339": 848, + "G424": 1112, + "G419": 663, + "G421": 675, + "G420": 13 + }, + "total_frames": 3311, + "attributes": null + }, + "013": { + "cameras": { + "G330": 10157, + "G423": 1234, + "G299": 6516, + "G419": 196, + "G638": 871 + }, + "total_frames": 18974, + "attributes": null + }, + "009": { + "cameras": { + "G419": 724 + }, + "total_frames": 724, + "attributes": null + } + }, + "total_frames": 31957, + "total_tracklets": 56 + }, + "0086": { + "person_id": "0086", + "split": "train", + "cameras": { + "G424": { + "tracklets": 12, + "frames": 6988 + }, + "G328": { + "tracklets": 7, + "frames": 3159 + }, + "G339": { + "tracklets": 5, + "frames": 1568 + }, + "G420": { + "tracklets": 6, + "frames": 2223 + }, + "G419": { + "tracklets": 4, + "frames": 868 + }, + "G421": { + "tracklets": 13, + "frames": 11353 + }, + "G638": { + "tracklets": 3, + "frames": 2316 + }, + "G299": { + "tracklets": 1, + "frames": 10 + } + }, + "outfits": { + "023": { + "cameras": { + "G424": 2860, + "G328": 2241, + "G339": 837 + }, + "total_frames": 5938, + "attributes": null + }, + "021": { + "cameras": { + "G424": 3334, + "G328": 918, + "G339": 421, + "G420": 839, + "G419": 169, + "G421": 430 + }, + "total_frames": 6111, + "attributes": null + }, + "019": { + "cameras": { + "G339": 310, + "G424": 794, + "G419": 491, + "G638": 2316, + "G421": 10923, + "G420": 1104 + }, + "total_frames": 15938, + "attributes": null + }, + "009": { + "cameras": { + "G420": 280, + "G299": 10, + "G419": 208 + }, + "total_frames": 498, + "attributes": null + } + }, + "total_frames": 28485, + "total_tracklets": 51 + }, + "0056": { + "person_id": "0056", + "split": "train", + "cameras": { + "G341": { + "tracklets": 18, + "frames": 11276 + }, + "G506": { + "tracklets": 14, + "frames": 6631 + }, + "G340": { + "tracklets": 6, + "frames": 3107 + }, + "G419": { + "tracklets": 4, + "frames": 655 + }, + "G420": { + "tracklets": 9, + "frames": 3204 + }, + "G328": { + "tracklets": 6, + "frames": 2991 + }, + "G424": { + "tracklets": 13, + "frames": 8910 + }, + "G339": { + "tracklets": 23, + "frames": 8096 + }, + "G638": { + "tracklets": 2, + "frames": 773 + }, + "G421": { + "tracklets": 2, + "frames": 506 + }, + "G300": { + "tracklets": 2, + "frames": 305 + }, + "G299": { + "tracklets": 4, + "frames": 2367 + }, + "G423": { + "tracklets": 1, + "frames": 133 + }, + "G330": { + "tracklets": 3, + "frames": 2413 + }, + "G329": { + "tracklets": 1, + "frames": 355 + }, + "G326": { + "tracklets": 1, + "frames": 160 + }, + "G508": { + "tracklets": 1, + "frames": 400 + }, + "G336": { + "tracklets": 1, + "frames": 1 + } + }, + "outfits": { + "014": { + "cameras": { + "G341": 526, + "G506": 4808, + "G340": 538, + "G419": 304, + "G420": 277 + }, + "total_frames": 6453, + "attributes": null + }, + "001": { + "cameras": { + "G328": 247, + "G424": 2302, + "G340": 2259, + "G339": 6927, + "G638": 773, + "G421": 46, + "G341": 3917, + "G506": 1137, + "G508": 400, + "G336": 1 + }, + "total_frames": 18009, + "attributes": null + }, + "009": { + "cameras": { + "G341": 6833, + "G506": 686, + "G339": 832, + "G328": 646, + "G300": 305, + "G299": 2367, + "G420": 2042, + "G423": 133, + "G330": 2413, + "G340": 310, + "G419": 351, + "G329": 355, + "G326": 160 + }, + "total_frames": 17433, + "attributes": null + }, + "011": { + "cameras": { + "G328": 2098, + "G424": 6608, + "G339": 337, + "G421": 460, + "G420": 885 + }, + "total_frames": 10388, + "attributes": null + } + }, + "total_frames": 52283, + "total_tracklets": 111 + }, + "0099": { + "person_id": "0099", + "split": "train", + "cameras": { + "G341": { + "tracklets": 7, + "frames": 1756 + }, + "G339": { + "tracklets": 11, + "frames": 3241 + }, + "G329": { + "tracklets": 4, + "frames": 1456 + }, + "G326": { + "tracklets": 6, + "frames": 867 + }, + "G508": { + "tracklets": 3, + "frames": 2869 + }, + "G340": { + "tracklets": 1, + "frames": 232 + }, + "G424": { + "tracklets": 5, + "frames": 2072 + }, + "G328": { + "tracklets": 2, + "frames": 1058 + }, + "G421": { + "tracklets": 16, + "frames": 8756 + }, + "G423": { + "tracklets": 2, + "frames": 833 + }, + "G299": { + "tracklets": 1, + "frames": 832 + }, + "G420": { + "tracklets": 6, + "frames": 2163 + }, + "G638": { + "tracklets": 4, + "frames": 1051 + }, + "G419": { + "tracklets": 4, + "frames": 706 + }, + "G336": { + "tracklets": 2, + "frames": 908 + }, + "G331": { + "tracklets": 9, + "frames": 8311 + } + }, + "outfits": { + "025": { + "cameras": { + "G341": 616, + "G339": 370, + "G329": 882, + "G326": 510, + "G508": 2869 + }, + "total_frames": 5247, + "attributes": null + }, + "021": { + "cameras": { + "G340": 232, + "G424": 995, + "G339": 377 + }, + "total_frames": 1604, + "attributes": null + }, + "017": { + "cameras": { + "G328": 1058, + "G424": 1022, + "G339": 897, + "G421": 2323, + "G423": 833, + "G299": 832, + "G420": 2163, + "G638": 1051, + "G419": 706, + "G336": 328 + }, + "total_frames": 11213, + "attributes": null + }, + "019": { + "cameras": { + "G424": 55, + "G339": 124, + "G421": 1044 + }, + "total_frames": 1223, + "attributes": null + }, + "006": { + "cameras": { + "G339": 1473, + "G341": 1140, + "G421": 5389, + "G331": 8311, + "G336": 580, + "G326": 357, + "G329": 574 + }, + "total_frames": 17824, + "attributes": null + } + }, + "total_frames": 37111, + "total_tracklets": 83 + }, + "0004": { + "person_id": "0004", + "split": "train", + "cameras": { + "G341": { + "tracklets": 8, + "frames": 2024 + }, + "G506": { + "tracklets": 3, + "frames": 465 + }, + "G326": { + "tracklets": 4, + "frames": 697 + }, + "G339": { + "tracklets": 5, + "frames": 1355 + }, + "G329": { + "tracklets": 3, + "frames": 819 + }, + "G328": { + "tracklets": 3, + "frames": 1953 + }, + "G424": { + "tracklets": 6, + "frames": 2418 + }, + "G420": { + "tracklets": 7, + "frames": 3627 + }, + "G419": { + "tracklets": 5, + "frames": 1076 + }, + "G421": { + "tracklets": 7, + "frames": 1840 + }, + "G508": { + "tracklets": 1, + "frames": 400 + }, + "G423": { + "tracklets": 8, + "frames": 5098 + }, + "G336": { + "tracklets": 2, + "frames": 1514 + }, + "G638": { + "tracklets": 7, + "frames": 2430 + }, + "G299": { + "tracklets": 1, + "frames": 1000 + }, + "G340": { + "tracklets": 2, + "frames": 647 + } + }, + "outfits": { + "013": { + "cameras": { + "G341": 1187, + "G506": 49, + "G326": 697, + "G339": 91, + "G329": 819 + }, + "total_frames": 2843, + "attributes": null + }, + "004": { + "cameras": { + "G341": 837, + "G328": 1259, + "G424": 770, + "G506": 416, + "G339": 1264, + "G420": 2953, + "G419": 889, + "G421": 1377, + "G508": 400, + "G423": 243, + "G336": 1514, + "G638": 2430, + "G299": 1000 + }, + "total_frames": 15352, + "attributes": null + }, + "009": { + "cameras": { + "G424": 1214, + "G340": 647 + }, + "total_frames": 1861, + "attributes": null + }, + "007": { + "cameras": { + "G424": 434, + "G328": 694, + "G421": 463, + "G419": 187, + "G420": 674 + }, + "total_frames": 2452, + "attributes": null + }, + "003": { + "cameras": { + "G423": 4855 + }, + "total_frames": 4855, + "attributes": null + } + }, + "total_frames": 27363, + "total_tracklets": 72 + }, + "0045": { + "person_id": "0045", + "split": "train", + "cameras": { + "G341": { + "tracklets": 12, + "frames": 6002 + }, + "G506": { + "tracklets": 5, + "frames": 878 + }, + "G340": { + "tracklets": 6, + "frames": 1094 + }, + "G339": { + "tracklets": 5, + "frames": 3948 + }, + "G508": { + "tracklets": 3, + "frames": 2470 + }, + "G329": { + "tracklets": 1, + "frames": 274 + }, + "G331": { + "tracklets": 9, + "frames": 8359 + }, + "G326": { + "tracklets": 2, + "frames": 371 + } + }, + "outfits": { + "004": { + "cameras": { + "G341": 6002, + "G506": 878, + "G340": 1094, + "G339": 3948, + "G508": 2470, + "G329": 274, + "G331": 8359, + "G326": 371 + }, + "total_frames": 23396, + "attributes": null + } + }, + "total_frames": 23396, + "total_tracklets": 43 + }, + "0002": { + "person_id": "0002", + "split": "train", + "cameras": { + "G506": { + "tracklets": 18, + "frames": 12008 + }, + "G341": { + "tracklets": 22, + "frames": 16669 + }, + "G423": { + "tracklets": 2, + "frames": 767 + }, + "G299": { + "tracklets": 3, + "frames": 1685 + }, + "G330": { + "tracklets": 1, + "frames": 403 + }, + "G331": { + "tracklets": 16, + "frames": 14187 + }, + "G420": { + "tracklets": 9, + "frames": 6877 + }, + "G421": { + "tracklets": 13, + "frames": 9433 + }, + "G340": { + "tracklets": 1, + "frames": 331 + }, + "G336": { + "tracklets": 3, + "frames": 1849 + }, + "G436": { + "tracklets": 2, + "frames": 1190 + }, + "G638": { + "tracklets": 2, + "frames": 1454 + }, + "G508": { + "tracklets": 9, + "frames": 7739 + }, + "G419": { + "tracklets": 1, + "frames": 262 + }, + "G339": { + "tracklets": 1, + "frames": 166 + } + }, + "outfits": { + "016": { + "cameras": { + "G506": 316, + "G341": 455 + }, + "total_frames": 771, + "attributes": null + }, + "013": { + "cameras": { + "G506": 335, + "G341": 307, + "G423": 767, + "G299": 580, + "G330": 403, + "G331": 14187, + "G420": 4925, + "G421": 712 + }, + "total_frames": 22216, + "attributes": null + }, + "011": { + "cameras": { + "G506": 8851, + "G341": 9275, + "G421": 7449, + "G420": 571 + }, + "total_frames": 26146, + "attributes": null + }, + "004": { + "cameras": { + "G506": 2133, + "G341": 5959, + "G340": 331 + }, + "total_frames": 8423, + "attributes": null + }, + "010": { + "cameras": { + "G341": 673, + "G506": 373, + "G336": 1849, + "G436": 1190, + "G638": 1454, + "G508": 7739, + "G419": 262, + "G421": 1272, + "G339": 166, + "G420": 1381, + "G299": 1105 + }, + "total_frames": 17464, + "attributes": null + } + }, + "total_frames": 75020, + "total_tracklets": 103 + }, + "0085": { + "person_id": "0085", + "split": "train", + "cameras": { + "G424": { + "tracklets": 14, + "frames": 10321 + }, + "G328": { + "tracklets": 9, + "frames": 4831 + }, + "G339": { + "tracklets": 3, + "frames": 1221 + }, + "G420": { + "tracklets": 9, + "frames": 4472 + }, + "G421": { + "tracklets": 12, + "frames": 8125 + }, + "G419": { + "tracklets": 3, + "frames": 474 + }, + "G300": { + "tracklets": 1, + "frames": 4 + }, + "G423": { + "tracklets": 2, + "frames": 338 + } + }, + "outfits": { + "017": { + "cameras": { + "G424": 2094, + "G328": 1859, + "G339": 430 + }, + "total_frames": 4383, + "attributes": null + }, + "014": { + "cameras": { + "G328": 1974, + "G424": 3331, + "G420": 2289, + "G421": 959, + "G339": 791, + "G419": 238 + }, + "total_frames": 9582, + "attributes": null + }, + "012": { + "cameras": { + "G424": 3203, + "G328": 998, + "G420": 463, + "G300": 4, + "G419": 145 + }, + "total_frames": 4813, + "attributes": null + }, + "015": { + "cameras": { + "G424": 1693 + }, + "total_frames": 1693, + "attributes": null + }, + "004": { + "cameras": { + "G421": 7166 + }, + "total_frames": 7166, + "attributes": null + }, + "013": { + "cameras": { + "G420": 1720, + "G419": 91, + "G423": 338 + }, + "total_frames": 2149, + "attributes": null + } + }, + "total_frames": 29786, + "total_tracklets": 53 + }, + "0062": { + "person_id": "0062", + "split": "train", + "cameras": { + "G339": { + "tracklets": 11, + "frames": 3579 + }, + "G506": { + "tracklets": 7, + "frames": 1522 + }, + "G341": { + "tracklets": 9, + "frames": 4225 + }, + "G421": { + "tracklets": 6, + "frames": 5245 + }, + "G505": { + "tracklets": 2, + "frames": 662 + }, + "G508": { + "tracklets": 1, + "frames": 607 + }, + "G419": { + "tracklets": 2, + "frames": 215 + }, + "G328": { + "tracklets": 1, + "frames": 676 + }, + "G420": { + "tracklets": 7, + "frames": 4813 + }, + "G326": { + "tracklets": 2, + "frames": 449 + }, + "G329": { + "tracklets": 1, + "frames": 283 + }, + "G331": { + "tracklets": 1, + "frames": 874 + } + }, + "outfits": { + "013": { + "cameras": { + "G339": 260 + }, + "total_frames": 260, + "attributes": null + }, + "019": { + "cameras": { + "G506": 127, + "G341": 379, + "G421": 5245 + }, + "total_frames": 5751, + "attributes": null + }, + "003": { + "cameras": { + "G341": 3846, + "G506": 1394, + "G339": 2992, + "G505": 662, + "G508": 607, + "G419": 73 + }, + "total_frames": 9574, + "attributes": null + }, + "008": { + "cameras": { + "G328": 676, + "G339": 327, + "G420": 1181, + "G326": 449, + "G329": 283 + }, + "total_frames": 2916, + "attributes": null + }, + "010": { + "cameras": { + "G420": 3632 + }, + "total_frames": 3632, + "attributes": null + }, + "018": { + "cameras": { + "G331": 874, + "G506": 1 + }, + "total_frames": 875, + "attributes": null + }, + "012": { + "cameras": { + "G419": 142 + }, + "total_frames": 142, + "attributes": null + } + }, + "total_frames": 23150, + "total_tracklets": 50 + }, + "0036": { + "person_id": "0036", + "split": "train", + "cameras": { + "G328": { + "tracklets": 4, + "frames": 805 + }, + "G341": { + "tracklets": 5, + "frames": 2755 + }, + "G506": { + "tracklets": 2, + "frames": 482 + }, + "G339": { + "tracklets": 1, + "frames": 496 + }, + "G420": { + "tracklets": 5, + "frames": 1595 + }, + "G326": { + "tracklets": 3, + "frames": 429 + }, + "G419": { + "tracklets": 6, + "frames": 4290 + }, + "G331": { + "tracklets": 4, + "frames": 3233 + }, + "G329": { + "tracklets": 2, + "frames": 560 + }, + "G421": { + "tracklets": 1, + "frames": 451 + }, + "G336": { + "tracklets": 1, + "frames": 607 + }, + "G638": { + "tracklets": 2, + "frames": 1058 + }, + "G436": { + "tracklets": 1, + "frames": 484 + }, + "G299": { + "tracklets": 4, + "frames": 2477 + }, + "G423": { + "tracklets": 3, + "frames": 360 + }, + "G340": { + "tracklets": 2, + "frames": 530 + } + }, + "outfits": { + "008": { + "cameras": { + "G328": 805, + "G341": 689, + "G506": 482, + "G339": 496, + "G420": 1595, + "G326": 429, + "G419": 4290, + "G331": 3233, + "G329": 560, + "G421": 451, + "G336": 607, + "G638": 1058, + "G436": 484, + "G299": 2477, + "G423": 360 + }, + "total_frames": 18016, + "attributes": null + }, + "011": { + "cameras": { + "G341": 2066, + "G340": 530 + }, + "total_frames": 2596, + "attributes": null + } + }, + "total_frames": 20612, + "total_tracklets": 46 + }, + "0007": { + "person_id": "0007", + "split": "train", + "cameras": { + "G506": { + "tracklets": 4, + "frames": 538 + }, + "G341": { + "tracklets": 3, + "frames": 966 + }, + "G424": { + "tracklets": 5, + "frames": 1628 + }, + "G328": { + "tracklets": 8, + "frames": 4848 + }, + "G419": { + "tracklets": 6, + "frames": 948 + }, + "G420": { + "tracklets": 6, + "frames": 1995 + }, + "G300": { + "tracklets": 2, + "frames": 521 + }, + "G339": { + "tracklets": 3, + "frames": 1038 + }, + "G421": { + "tracklets": 4, + "frames": 2307 + }, + "G508": { + "tracklets": 5, + "frames": 4318 + }, + "G299": { + "tracklets": 3, + "frames": 2794 + }, + "G329": { + "tracklets": 2, + "frames": 791 + }, + "G326": { + "tracklets": 3, + "frames": 564 + } + }, + "outfits": { + "021": { + "cameras": { + "G506": 80, + "G341": 421 + }, + "total_frames": 501, + "attributes": null + }, + "018": { + "cameras": { + "G424": 313, + "G328": 580, + "G419": 148, + "G420": 226 + }, + "total_frames": 1267, + "attributes": null + }, + "016": { + "cameras": { + "G328": 4268, + "G424": 609 + }, + "total_frames": 4877, + "attributes": null + }, + "011": { + "cameras": { + "G506": 458, + "G341": 202, + "G300": 262, + "G420": 1171, + "G419": 459, + "G339": 121, + "G421": 2307, + "G508": 4318 + }, + "total_frames": 9298, + "attributes": null + }, + "014": { + "cameras": { + "G341": 343, + "G420": 598, + "G339": 917, + "G300": 259, + "G299": 2794, + "G329": 791, + "G326": 564, + "G419": 341 + }, + "total_frames": 6607, + "attributes": null + }, + "004": { + "cameras": { + "G424": 706 + }, + "total_frames": 706, + "attributes": null + } + }, + "total_frames": 23256, + "total_tracklets": 54 + }, + "0030": { + "person_id": "0030", + "split": "train", + "cameras": { + "G424": { + "tracklets": 9, + "frames": 4856 + }, + "G328": { + "tracklets": 4, + "frames": 2680 + }, + "G339": { + "tracklets": 13, + "frames": 3564 + }, + "G326": { + "tracklets": 4, + "frames": 652 + }, + "G329": { + "tracklets": 4, + "frames": 949 + }, + "G506": { + "tracklets": 10, + "frames": 2734 + }, + "G299": { + "tracklets": 3, + "frames": 1736 + }, + "G638": { + "tracklets": 4, + "frames": 2035 + }, + "G420": { + "tracklets": 4, + "frames": 1471 + }, + "G421": { + "tracklets": 2, + "frames": 761 + }, + "G419": { + "tracklets": 2, + "frames": 461 + }, + "G340": { + "tracklets": 14, + "frames": 8618 + }, + "G508": { + "tracklets": 4, + "frames": 2672 + }, + "G341": { + "tracklets": 2, + "frames": 350 + } + }, + "outfits": { + "009": { + "cameras": { + "G424": 491, + "G328": 1034, + "G339": 704, + "G326": 652, + "G329": 949 + }, + "total_frames": 3830, + "attributes": null + }, + "020": { + "cameras": { + "G506": 459, + "G339": 193 + }, + "total_frames": 652, + "attributes": null + }, + "010": { + "cameras": { + "G424": 3659, + "G328": 1646, + "G339": 176, + "G299": 1736, + "G638": 1512, + "G420": 1197, + "G421": 761, + "G419": 223 + }, + "total_frames": 10910, + "attributes": null + }, + "003": { + "cameras": { + "G339": 2265, + "G340": 8618, + "G506": 2275, + "G424": 706, + "G508": 2672, + "G420": 274, + "G419": 238, + "G341": 350 + }, + "total_frames": 17398, + "attributes": null + }, + "015": { + "cameras": { + "G638": 523, + "G339": 226 + }, + "total_frames": 749, + "attributes": null + } + }, + "total_frames": 33539, + "total_tracklets": 79 + }, + "0088": { + "person_id": "0088", + "split": "train", + "cameras": { + "G506": { + "tracklets": 8, + "frames": 1562 + }, + "G341": { + "tracklets": 4, + "frames": 1504 + }, + "G340": { + "tracklets": 5, + "frames": 3596 + }, + "G331": { + "tracklets": 3, + "frames": 1721 + }, + "G328": { + "tracklets": 1, + "frames": 829 + }, + "G326": { + "tracklets": 2, + "frames": 362 + }, + "G329": { + "tracklets": 2, + "frames": 602 + }, + "G420": { + "tracklets": 5, + "frames": 1889 + }, + "G421": { + "tracklets": 3, + "frames": 1182 + }, + "G339": { + "tracklets": 18, + "frames": 12354 + }, + "G505": { + "tracklets": 18, + "frames": 16367 + }, + "G638": { + "tracklets": 2, + "frames": 1441 + }, + "G299": { + "tracklets": 3, + "frames": 2406 + }, + "G419": { + "tracklets": 3, + "frames": 483 + } + }, + "outfits": { + "025": { + "cameras": { + "G506": 1166, + "G341": 815, + "G340": 3596, + "G331": 1721 + }, + "total_frames": 7298, + "attributes": null + }, + "012": { + "cameras": { + "G328": 829, + "G326": 362, + "G329": 602, + "G420": 283, + "G421": 442 + }, + "total_frames": 2518, + "attributes": null + }, + "003": { + "cameras": { + "G339": 11542, + "G506": 396, + "G341": 689, + "G505": 16367 + }, + "total_frames": 28994, + "attributes": null + }, + "018": { + "cameras": { + "G339": 812, + "G638": 1441 + }, + "total_frames": 2253, + "attributes": null + }, + "013": { + "cameras": { + "G420": 1266, + "G299": 2406, + "G419": 1 + }, + "total_frames": 3673, + "attributes": null + }, + "001": { + "cameras": { + "G419": 265, + "G420": 340 + }, + "total_frames": 605, + "attributes": null + }, + "015": { + "cameras": { + "G419": 217, + "G421": 740 + }, + "total_frames": 957, + "attributes": null + } + }, + "total_frames": 46298, + "total_tracklets": 77 + }, + "0089": { + "person_id": "0089", + "split": "train", + "cameras": { + "G341": { + "tracklets": 9, + "frames": 6786 + }, + "G506": { + "tracklets": 12, + "frames": 9697 + }, + "G339": { + "tracklets": 14, + "frames": 8895 + }, + "G505": { + "tracklets": 10, + "frames": 8927 + }, + "G328": { + "tracklets": 2, + "frames": 944 + }, + "G419": { + "tracklets": 2, + "frames": 260 + }, + "G420": { + "tracklets": 6, + "frames": 2838 + }, + "G421": { + "tracklets": 1, + "frames": 730 + }, + "G638": { + "tracklets": 3, + "frames": 735 + }, + "G299": { + "tracklets": 2, + "frames": 1202 + }, + "G423": { + "tracklets": 4, + "frames": 1132 + } + }, + "outfits": { + "008": { + "cameras": { + "G341": 773, + "G506": 6192, + "G339": 8893, + "G505": 8927 + }, + "total_frames": 24785, + "attributes": null + }, + "020": { + "cameras": { + "G328": 944, + "G419": 260, + "G420": 2150, + "G421": 730, + "G638": 735, + "G299": 1202, + "G423": 419 + }, + "total_frames": 6440, + "attributes": null + }, + "013": { + "cameras": { + "G341": 6013, + "G506": 3505, + "G420": 688, + "G423": 445 + }, + "total_frames": 10651, + "attributes": null + }, + "014": { + "cameras": { + "G423": 268 + }, + "total_frames": 268, + "attributes": null + }, + "025": { + "cameras": { + "G339": 2 + }, + "total_frames": 2, + "attributes": null + } + }, + "total_frames": 42146, + "total_tracklets": 65 + }, + "0076": { + "person_id": "0076", + "split": "train", + "cameras": { + "G328": { + "tracklets": 2, + "frames": 1052 + }, + "G424": { + "tracklets": 3, + "frames": 1956 + }, + "G339": { + "tracklets": 3, + "frames": 831 + }, + "G341": { + "tracklets": 4, + "frames": 469 + }, + "G506": { + "tracklets": 4, + "frames": 241 + }, + "G421": { + "tracklets": 16, + "frames": 14460 + }, + "G508": { + "tracklets": 6, + "frames": 5585 + }, + "G420": { + "tracklets": 5, + "frames": 1784 + }, + "G423": { + "tracklets": 2, + "frames": 287 + }, + "G330": { + "tracklets": 1, + "frames": 661 + }, + "G299": { + "tracklets": 2, + "frames": 1276 + }, + "G419": { + "tracklets": 1, + "frames": 67 + }, + "G331": { + "tracklets": 10, + "frames": 9004 + } + }, + "outfits": { + "023": { + "cameras": { + "G328": 1052, + "G424": 1223, + "G339": 605 + }, + "total_frames": 2880, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "green", + "avg_height_px": 108, + "avg_width_px": 51, + "n_crops_analyzed": 3 + } + }, + "026": { + "cameras": { + "G341": 459, + "G506": 96, + "G424": 733, + "G421": 5501, + "G508": 4846 + }, + "total_frames": 11635, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 154, + "avg_width_px": 77, + "n_crops_analyzed": 3 + } + }, + "017": { + "cameras": { + "G506": 145, + "G420": 884, + "G423": 287, + "G508": 739, + "G421": 8959, + "G341": 10 + }, + "total_frames": 11024, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 181, + "avg_width_px": 94, + "n_crops_analyzed": 3 + } + }, + "018": { + "cameras": { + "G330": 661, + "G420": 900, + "G299": 1276, + "G419": 67 + }, + "total_frames": 2904, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "green", + "avg_height_px": 234, + "avg_width_px": 107, + "n_crops_analyzed": 3 + } + }, + "007": { + "cameras": { + "G331": 9004 + }, + "total_frames": 9004, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 257, + "avg_width_px": 81, + "n_crops_analyzed": 3 + } + }, + "006": { + "cameras": { + "G339": 226 + }, + "total_frames": 226, + "attributes": { + "upper_body_color": "yellow", + "lower_body_color": "blue", + "avg_height_px": 143, + "avg_width_px": 73, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 37673, + "total_tracklets": 59, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "green": 6, + "blue": 8, + "gray": 1, + "yellow": 3 + }, + "lower_color_distribution": { + "green": 5, + "gray": 2, + "blue": 11 + }, + "avg_crop_height": 180, + "n_outfits": 6, + "n_cameras": 13 + } + }, + "0009": { + "person_id": "0009", + "split": "train", + "cameras": { + "G424": { + "tracklets": 13, + "frames": 5754 + }, + "G328": { + "tracklets": 5, + "frames": 2240 + }, + "G339": { + "tracklets": 23, + "frames": 6818 + }, + "G329": { + "tracklets": 6, + "frames": 1323 + }, + "G326": { + "tracklets": 9, + "frames": 6085 + }, + "G341": { + "tracklets": 11, + "frames": 6317 + }, + "G506": { + "tracklets": 8, + "frames": 1352 + }, + "G436": { + "tracklets": 2, + "frames": 1151 + }, + "G330": { + "tracklets": 2, + "frames": 1748 + }, + "G638": { + "tracklets": 16, + "frames": 9287 + }, + "G336": { + "tracklets": 5, + "frames": 2757 + }, + "G299": { + "tracklets": 7, + "frames": 5221 + }, + "G421": { + "tracklets": 14, + "frames": 1517 + }, + "G508": { + "tracklets": 11, + "frames": 9442 + }, + "G419": { + "tracklets": 6, + "frames": 1020 + }, + "G420": { + "tracklets": 6, + "frames": 1641 + }, + "G340": { + "tracklets": 3, + "frames": 1157 + }, + "G300": { + "tracklets": 1, + "frames": 454 + }, + "G505": { + "tracklets": 2, + "frames": 992 + } + }, + "outfits": { + "010": { + "cameras": { + "G424": 476, + "G328": 875, + "G339": 1193, + "G329": 865, + "G326": 336, + "G341": 392, + "G506": 549, + "G436": 1151, + "G330": 874, + "G638": 6233, + "G336": 2757, + "G299": 1940, + "G421": 546, + "G508": 8856, + "G419": 193 + }, + "total_frames": 27236, + "attributes": null + }, + "018": { + "cameras": { + "G341": 1161, + "G506": 324, + "G424": 1289, + "G339": 1452 + }, + "total_frames": 4226, + "attributes": null + }, + "013": { + "cameras": { + "G424": 652, + "G638": 697, + "G419": 440, + "G420": 353, + "G339": 1515, + "G340": 7, + "G328": 1 + }, + "total_frames": 3665, + "attributes": null + }, + "019": { + "cameras": { + "G506": 46, + "G341": 103, + "G424": 595, + "G339": 450, + "G326": 5749, + "G508": 586, + "G329": 458 + }, + "total_frames": 7987, + "attributes": null + }, + "007": { + "cameras": { + "G424": 1199, + "G339": 702, + "G300": 454, + "G421": 871, + "G419": 387, + "G299": 3281, + "G638": 2357, + "G420": 1288 + }, + "total_frames": 10539, + "attributes": null + }, + "008": { + "cameras": { + "G424": 1543, + "G328": 1364 + }, + "total_frames": 2907, + "attributes": null + }, + "004": { + "cameras": { + "G340": 1150, + "G341": 4661, + "G506": 433, + "G339": 1295, + "G505": 992 + }, + "total_frames": 8531, + "attributes": null + }, + "012": { + "cameras": { + "G339": 211, + "G421": 100 + }, + "total_frames": 311, + "attributes": null + }, + "009": { + "cameras": { + "G330": 874 + }, + "total_frames": 874, + "attributes": null + } + }, + "total_frames": 66276, + "total_tracklets": 150 + }, + "0057": { + "person_id": "0057", + "split": "train", + "cameras": { + "G506": { + "tracklets": 13, + "frames": 3250 + }, + "G341": { + "tracklets": 20, + "frames": 9843 + }, + "G424": { + "tracklets": 7, + "frames": 4045 + }, + "G331": { + "tracklets": 3, + "frames": 1383 + }, + "G508": { + "tracklets": 3, + "frames": 1562 + }, + "G419": { + "tracklets": 3, + "frames": 345 + }, + "G328": { + "tracklets": 7, + "frames": 3403 + }, + "G339": { + "tracklets": 22, + "frames": 9512 + }, + "G326": { + "tracklets": 10, + "frames": 1173 + }, + "G329": { + "tracklets": 8, + "frames": 1838 + }, + "G340": { + "tracklets": 3, + "frames": 795 + }, + "G423": { + "tracklets": 1, + "frames": 364 + }, + "G420": { + "tracklets": 5, + "frames": 1883 + }, + "G299": { + "tracklets": 2, + "frames": 740 + }, + "G300": { + "tracklets": 1, + "frames": 1 + }, + "G638": { + "tracklets": 1, + "frames": 628 + } + }, + "outfits": { + "018": { + "cameras": { + "G506": 683, + "G341": 1397, + "G424": 742, + "G331": 1097, + "G508": 1372, + "G419": 187 + }, + "total_frames": 5478, + "attributes": null + }, + "012": { + "cameras": { + "G424": 340, + "G328": 1578, + "G339": 689, + "G326": 364, + "G329": 648 + }, + "total_frames": 3619, + "attributes": null + }, + "010": { + "cameras": { + "G341": 6160, + "G506": 800, + "G328": 839, + "G340": 178, + "G424": 631, + "G339": 1238, + "G329": 651, + "G423": 364, + "G420": 1883, + "G326": 372, + "G419": 158, + "G299": 740, + "G331": 286, + "G300": 1 + }, + "total_frames": 14301, + "attributes": null + }, + "015": { + "cameras": { + "G340": 617, + "G328": 986, + "G424": 1055, + "G339": 2071, + "G638": 628 + }, + "total_frames": 5357, + "attributes": null + }, + "003": { + "cameras": { + "G424": 1277, + "G339": 5514, + "G341": 2286, + "G506": 1767, + "G329": 539, + "G326": 437, + "G508": 190 + }, + "total_frames": 12010, + "attributes": null + } + }, + "total_frames": 40765, + "total_tracklets": 109 + }, + "0092": { + "person_id": "0092", + "split": "train", + "cameras": { + "G424": { + "tracklets": 19, + "frames": 14863 + }, + "G340": { + "tracklets": 6, + "frames": 2201 + }, + "G328": { + "tracklets": 3, + "frames": 1467 + }, + "G339": { + "tracklets": 4, + "frames": 1582 + }, + "G299": { + "tracklets": 4, + "frames": 3496 + }, + "G419": { + "tracklets": 6, + "frames": 1326 + }, + "G420": { + "tracklets": 5, + "frames": 1529 + }, + "G421": { + "tracklets": 1, + "frames": 454 + }, + "G638": { + "tracklets": 1, + "frames": 292 + }, + "G300": { + "tracklets": 1, + "frames": 94 + }, + "G330": { + "tracklets": 10, + "frames": 8816 + }, + "G341": { + "tracklets": 4, + "frames": 505 + }, + "G506": { + "tracklets": 1, + "frames": 157 + } + }, + "outfits": { + "019": { + "cameras": { + "G424": 13313, + "G340": 533, + "G328": 1467, + "G339": 368 + }, + "total_frames": 15681, + "attributes": null + }, + "014": { + "cameras": { + "G424": 640, + "G299": 3496, + "G419": 880, + "G420": 1270, + "G421": 454, + "G638": 292, + "G300": 94, + "G330": 8816 + }, + "total_frames": 15942, + "attributes": null + }, + "004": { + "cameras": { + "G340": 1668, + "G341": 505, + "G339": 898, + "G506": 157 + }, + "total_frames": 3228, + "attributes": null + }, + "009": { + "cameras": { + "G424": 910, + "G339": 316, + "G419": 313 + }, + "total_frames": 1539, + "attributes": null + }, + "023": { + "cameras": { + "G420": 259, + "G419": 133 + }, + "total_frames": 392, + "attributes": null + } + }, + "total_frames": 36782, + "total_tracklets": 65 + }, + "0025": { + "person_id": "0025", + "split": "train", + "cameras": { + "G328": { + "tracklets": 3, + "frames": 1575 + }, + "G419": { + "tracklets": 6, + "frames": 857 + }, + "G506": { + "tracklets": 31, + "frames": 20610 + }, + "G421": { + "tracklets": 2, + "frames": 1298 + }, + "G420": { + "tracklets": 4, + "frames": 1480 + }, + "G340": { + "tracklets": 4, + "frames": 2001 + }, + "G424": { + "tracklets": 2, + "frames": 656 + }, + "G341": { + "tracklets": 42, + "frames": 30872 + }, + "G339": { + "tracklets": 15, + "frames": 6817 + }, + "G505": { + "tracklets": 2, + "frames": 436 + }, + "G330": { + "tracklets": 14, + "frames": 12776 + }, + "G299": { + "tracklets": 13, + "frames": 12518 + }, + "G423": { + "tracklets": 1, + "frames": 202 + } + }, + "outfits": { + "013": { + "cameras": { + "G328": 1575, + "G419": 1 + }, + "total_frames": 1576, + "attributes": null + }, + "015": { + "cameras": { + "G506": 9760, + "G421": 1298, + "G420": 676, + "G419": 205 + }, + "total_frames": 11939, + "attributes": null + }, + "016": { + "cameras": { + "G340": 656, + "G424": 656, + "G420": 304 + }, + "total_frames": 1616, + "attributes": null + }, + "005": { + "cameras": { + "G506": 10850, + "G341": 30872, + "G339": 6817, + "G505": 436, + "G340": 1345, + "G419": 97 + }, + "total_frames": 50417, + "attributes": null + }, + "012": { + "cameras": { + "G330": 9000, + "G299": 12518 + }, + "total_frames": 21518, + "attributes": null + }, + "022": { + "cameras": { + "G419": 132, + "G330": 3313, + "G420": 283 + }, + "total_frames": 3728, + "attributes": null + }, + "021": { + "cameras": { + "G330": 463, + "G420": 217, + "G419": 422, + "G423": 202 + }, + "total_frames": 1304, + "attributes": null + } + }, + "total_frames": 92098, + "total_tracklets": 139 + }, + "0047": { + "person_id": "0047", + "split": "train", + "cameras": { + "G506": { + "tracklets": 3, + "frames": 213 + }, + "G341": { + "tracklets": 12, + "frames": 2400 + }, + "G331": { + "tracklets": 9, + "frames": 8854 + }, + "G339": { + "tracklets": 12, + "frames": 7402 + }, + "G340": { + "tracklets": 3, + "frames": 345 + }, + "G508": { + "tracklets": 3, + "frames": 1803 + }, + "G420": { + "tracklets": 20, + "frames": 13558 + }, + "G299": { + "tracklets": 2, + "frames": 611 + }, + "G423": { + "tracklets": 3, + "frames": 516 + }, + "G421": { + "tracklets": 3, + "frames": 87 + }, + "G638": { + "tracklets": 1, + "frames": 400 + } + }, + "outfits": { + "023": { + "cameras": { + "G506": 46, + "G341": 869, + "G331": 8854 + }, + "total_frames": 9769, + "attributes": null + }, + "003": { + "cameras": { + "G341": 1531, + "G506": 167, + "G339": 7402, + "G340": 345, + "G508": 1803 + }, + "total_frames": 11248, + "attributes": null + }, + "013": { + "cameras": { + "G420": 13098, + "G299": 541, + "G423": 516 + }, + "total_frames": 14155, + "attributes": null + }, + "015": { + "cameras": { + "G420": 460, + "G421": 83, + "G299": 70 + }, + "total_frames": 613, + "attributes": null + }, + "016": { + "cameras": { + "G421": 4 + }, + "total_frames": 4, + "attributes": null + }, + "018": { + "cameras": { + "G638": 400 + }, + "total_frames": 400, + "attributes": null + } + }, + "total_frames": 36189, + "total_tracklets": 71 + }, + "0018": { + "person_id": "0018", + "split": "train", + "cameras": { + "G506": { + "tracklets": 6, + "frames": 2066 + }, + "G341": { + "tracklets": 10, + "frames": 8173 + }, + "G339": { + "tracklets": 13, + "frames": 2353 + }, + "G340": { + "tracklets": 2, + "frames": 263 + }, + "G421": { + "tracklets": 9, + "frames": 7486 + }, + "G326": { + "tracklets": 3, + "frames": 531 + }, + "G329": { + "tracklets": 2, + "frames": 514 + }, + "G336": { + "tracklets": 2, + "frames": 1456 + }, + "G424": { + "tracklets": 3, + "frames": 1880 + }, + "G420": { + "tracklets": 7, + "frames": 3229 + }, + "G423": { + "tracklets": 3, + "frames": 1011 + }, + "G419": { + "tracklets": 1, + "frames": 355 + }, + "G300": { + "tracklets": 1, + "frames": 145 + }, + "G299": { + "tracklets": 3, + "frames": 1274 + }, + "G328": { + "tracklets": 2, + "frames": 1102 + }, + "G638": { + "tracklets": 1, + "frames": 733 + } + }, + "outfits": { + "004": { + "cameras": { + "G506": 304, + "G341": 6838, + "G339": 1028, + "G340": 263, + "G421": 1996, + "G326": 374, + "G329": 514, + "G336": 1456, + "G424": 847 + }, + "total_frames": 13620, + "attributes": null + }, + "022": { + "cameras": { + "G341": 488, + "G506": 1253 + }, + "total_frames": 1741, + "attributes": null + }, + "014": { + "cameras": { + "G506": 509, + "G420": 2862, + "G423": 1011, + "G341": 847, + "G339": 992, + "G419": 355, + "G421": 5490, + "G300": 145, + "G299": 169 + }, + "total_frames": 12380, + "attributes": null + }, + "007": { + "cameras": { + "G424": 1033, + "G339": 317, + "G328": 1102, + "G326": 157 + }, + "total_frames": 2609, + "attributes": null + }, + "013": { + "cameras": { + "G299": 1105 + }, + "total_frames": 1105, + "attributes": null + }, + "016": { + "cameras": { + "G420": 367 + }, + "total_frames": 367, + "attributes": null + }, + "018": { + "cameras": { + "G638": 733, + "G339": 16 + }, + "total_frames": 749, + "attributes": null + } + }, + "total_frames": 32571, + "total_tracklets": 68 + }, + "0052": { + "person_id": "0052", + "split": "train", + "cameras": { + "G506": { + "tracklets": 2, + "frames": 398 + }, + "G341": { + "tracklets": 4, + "frames": 838 + }, + "G424": { + "tracklets": 1, + "frames": 268 + }, + "G339": { + "tracklets": 1, + "frames": 457 + }, + "G638": { + "tracklets": 1, + "frames": 193 + } + }, + "outfits": { + "008": { + "cameras": { + "G506": 398, + "G341": 838, + "G424": 268 + }, + "total_frames": 1504, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 120, + "avg_width_px": 49, + "n_crops_analyzed": 3 + } + }, + "001": { + "cameras": { + "G339": 457 + }, + "total_frames": 457, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 112, + "avg_width_px": 51, + "n_crops_analyzed": 3 + } + }, + "005": { + "cameras": { + "G638": 193 + }, + "total_frames": 193, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 97, + "avg_width_px": 33, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 2154, + "total_tracklets": 9, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "blue": 8, + "green": 1 + }, + "lower_color_distribution": { + "blue": 7, + "green": 1, + "black": 1 + }, + "avg_crop_height": 109, + "n_outfits": 3, + "n_cameras": 5 + } + }, + "0081": { + "person_id": "0081", + "split": "train", + "cameras": { + "G328": { + "tracklets": 3, + "frames": 1148 + }, + "G424": { + "tracklets": 1, + "frames": 886 + }, + "G339": { + "tracklets": 2, + "frames": 956 + } + }, + "outfits": { + "004": { + "cameras": { + "G328": 1148, + "G424": 886, + "G339": 502 + }, + "total_frames": 2536, + "attributes": null + }, + "007": { + "cameras": { + "G339": 454 + }, + "total_frames": 454, + "attributes": null + } + }, + "total_frames": 2990, + "total_tracklets": 6 + }, + "0109": { + "person_id": "0109", + "split": "train", + "cameras": { + "G424": { + "tracklets": 2, + "frames": 530 + }, + "G341": { + "tracklets": 3, + "frames": 1893 + }, + "G340": { + "tracklets": 3, + "frames": 450 + }, + "G506": { + "tracklets": 1, + "frames": 76 + }, + "G339": { + "tracklets": 2, + "frames": 710 + }, + "G508": { + "tracklets": 4, + "frames": 3334 + }, + "G419": { + "tracklets": 1, + "frames": 22 + } + }, + "outfits": { + "004": { + "cameras": { + "G424": 530, + "G341": 1893, + "G340": 450, + "G506": 76, + "G339": 710, + "G508": 3334, + "G419": 22 + }, + "total_frames": 7015, + "attributes": null + } + }, + "total_frames": 7015, + "total_tracklets": 16 + }, + "0037": { + "person_id": "0037", + "split": "train", + "cameras": { + "G341": { + "tracklets": 2, + "frames": 491 + }, + "G506": { + "tracklets": 1, + "frames": 127 + }, + "G339": { + "tracklets": 2, + "frames": 1183 + }, + "G424": { + "tracklets": 6, + "frames": 4583 + }, + "G421": { + "tracklets": 6, + "frames": 1041 + }, + "G328": { + "tracklets": 1, + "frames": 622 + }, + "G326": { + "tracklets": 1, + "frames": 100 + }, + "G329": { + "tracklets": 1, + "frames": 220 + }, + "G299": { + "tracklets": 12, + "frames": 11014 + }, + "G330": { + "tracklets": 20, + "frames": 18014 + }, + "G638": { + "tracklets": 3, + "frames": 1770 + }, + "G419": { + "tracklets": 4, + "frames": 541 + }, + "G420": { + "tracklets": 2, + "frames": 428 + } + }, + "outfits": { + "004": { + "cameras": { + "G341": 491, + "G506": 127, + "G339": 930, + "G424": 1381, + "G421": 259 + }, + "total_frames": 3188, + "attributes": null + }, + "020": { + "cameras": { + "G328": 622, + "G424": 856 + }, + "total_frames": 1478, + "attributes": null + }, + "024": { + "cameras": { + "G424": 670, + "G326": 100, + "G329": 220 + }, + "total_frames": 990, + "attributes": null + }, + "015": { + "cameras": { + "G424": 1676, + "G339": 253, + "G299": 10314, + "G330": 18014, + "G638": 1770, + "G421": 447, + "G419": 193 + }, + "total_frames": 32667, + "attributes": null + }, + "017": { + "cameras": { + "G419": 266, + "G299": 700, + "G420": 428, + "G421": 335 + }, + "total_frames": 1729, + "attributes": null + }, + "010": { + "cameras": { + "G419": 82 + }, + "total_frames": 82, + "attributes": null + } + }, + "total_frames": 40134, + "total_tracklets": 61 + }, + "0016": { + "person_id": "0016", + "split": "train", + "cameras": { + "G506": { + "tracklets": 6, + "frames": 1587 + }, + "G341": { + "tracklets": 7, + "frames": 2950 + }, + "G340": { + "tracklets": 2, + "frames": 839 + }, + "G424": { + "tracklets": 2, + "frames": 1316 + }, + "G638": { + "tracklets": 1, + "frames": 694 + }, + "G339": { + "tracklets": 1, + "frames": 640 + }, + "G419": { + "tracklets": 6, + "frames": 1617 + }, + "G420": { + "tracklets": 7, + "frames": 2320 + }, + "G328": { + "tracklets": 1, + "frames": 409 + }, + "G299": { + "tracklets": 3, + "frames": 1946 + }, + "G423": { + "tracklets": 1, + "frames": 151 + }, + "G329": { + "tracklets": 1, + "frames": 403 + }, + "G326": { + "tracklets": 1, + "frames": 199 + }, + "G330": { + "tracklets": 1, + "frames": 1 + } + }, + "outfits": { + "009": { + "cameras": { + "G506": 1511, + "G341": 2274, + "G330": 1 + }, + "total_frames": 3786, + "attributes": null + }, + "019": { + "cameras": { + "G340": 839, + "G424": 700, + "G638": 694, + "G339": 640, + "G419": 224, + "G420": 371 + }, + "total_frames": 3468, + "attributes": null + }, + "022": { + "cameras": { + "G506": 76, + "G341": 676 + }, + "total_frames": 752, + "attributes": null + }, + "014": { + "cameras": { + "G328": 409, + "G424": 616, + "G420": 1594, + "G299": 1946, + "G419": 305, + "G423": 151 + }, + "total_frames": 5021, + "attributes": null + }, + "004": { + "cameras": { + "G329": 403, + "G419": 1088, + "G420": 355, + "G326": 199 + }, + "total_frames": 2045, + "attributes": null + } + }, + "total_frames": 15072, + "total_tracklets": 40 + }, + "0068": { + "person_id": "0068", + "split": "train", + "cameras": { + "G341": { + "tracklets": 8, + "frames": 2983 + }, + "G506": { + "tracklets": 5, + "frames": 2021 + }, + "G328": { + "tracklets": 6, + "frames": 4655 + }, + "G339": { + "tracklets": 7, + "frames": 3278 + }, + "G299": { + "tracklets": 32, + "frames": 29135 + }, + "G421": { + "tracklets": 2, + "frames": 266 + }, + "G436": { + "tracklets": 10, + "frames": 8795 + }, + "G331": { + "tracklets": 16, + "frames": 14224 + }, + "G336": { + "tracklets": 4, + "frames": 1629 + }, + "G638": { + "tracklets": 2, + "frames": 1268 + }, + "G508": { + "tracklets": 2, + "frames": 1103 + }, + "G419": { + "tracklets": 10, + "frames": 3658 + }, + "G424": { + "tracklets": 4, + "frames": 1390 + }, + "G420": { + "tracklets": 5, + "frames": 2843 + }, + "G330": { + "tracklets": 19, + "frames": 17659 + }, + "G423": { + "tracklets": 1, + "frames": 199 + } + }, + "outfits": { + "017": { + "cameras": { + "G341": 2983, + "G506": 1837, + "G328": 2258, + "G339": 783, + "G299": 19287, + "G421": 266, + "G436": 8795, + "G331": 14224, + "G336": 1629, + "G638": 835, + "G508": 1103, + "G419": 271 + }, + "total_frames": 54271, + "attributes": null + }, + "022": { + "cameras": { + "G328": 682, + "G339": 364, + "G638": 433 + }, + "total_frames": 1479, + "attributes": null + }, + "020": { + "cameras": { + "G328": 1715 + }, + "total_frames": 1715, + "attributes": null + }, + "004": { + "cameras": { + "G339": 2131, + "G424": 1390, + "G420": 1784, + "G419": 2735, + "G506": 184 + }, + "total_frames": 8224, + "attributes": null + }, + "016": { + "cameras": { + "G330": 15263, + "G299": 9007 + }, + "total_frames": 24270, + "attributes": null + }, + "025": { + "cameras": { + "G419": 513, + "G299": 841, + "G420": 1059, + "G423": 199, + "G330": 1411 + }, + "total_frames": 4023, + "attributes": null + }, + "026": { + "cameras": { + "G330": 985 + }, + "total_frames": 985, + "attributes": null + }, + "003": { + "cameras": { + "G419": 139 + }, + "total_frames": 139, + "attributes": null + } + }, + "total_frames": 95106, + "total_tracklets": 133 + }, + "0067": { + "person_id": "0067", + "split": "train", + "cameras": { + "G341": { + "tracklets": 20, + "frames": 11131 + }, + "G506": { + "tracklets": 9, + "frames": 3378 + }, + "G339": { + "tracklets": 12, + "frames": 3899 + }, + "G330": { + "tracklets": 12, + "frames": 11016 + }, + "G299": { + "tracklets": 27, + "frames": 24644 + }, + "G423": { + "tracklets": 2, + "frames": 482 + }, + "G328": { + "tracklets": 10, + "frames": 7827 + }, + "G336": { + "tracklets": 4, + "frames": 2352 + }, + "G436": { + "tracklets": 7, + "frames": 4027 + }, + "G331": { + "tracklets": 16, + "frames": 14660 + }, + "G638": { + "tracklets": 2, + "frames": 1727 + }, + "G509": { + "tracklets": 2, + "frames": 917 + }, + "G419": { + "tracklets": 2, + "frames": 446 + }, + "G508": { + "tracklets": 5, + "frames": 2687 + }, + "G421": { + "tracklets": 1, + "frames": 16 + }, + "G424": { + "tracklets": 3, + "frames": 1794 + }, + "G329": { + "tracklets": 3, + "frames": 771 + }, + "G326": { + "tracklets": 3, + "frames": 456 + }, + "G420": { + "tracklets": 1, + "frames": 307 + } + }, + "outfits": { + "003": { + "cameras": { + "G341": 1278, + "G506": 1140, + "G339": 2166, + "G330": 658, + "G299": 859, + "G423": 482, + "G424": 1794, + "G419": 154, + "G329": 771, + "G326": 456, + "G331": 9004, + "G508": 751, + "G420": 307 + }, + "total_frames": 19820, + "attributes": null + }, + "006": { + "cameras": { + "G341": 9618, + "G506": 2183, + "G328": 3572, + "G339": 1438, + "G336": 2352, + "G436": 4027, + "G299": 23785, + "G330": 10358, + "G331": 5656, + "G638": 1727, + "G509": 917, + "G419": 292, + "G508": 1936, + "G421": 16 + }, + "total_frames": 67877, + "attributes": null + }, + "002": { + "cameras": { + "G506": 55, + "G341": 235 + }, + "total_frames": 290, + "attributes": null + }, + "015": { + "cameras": { + "G328": 3408 + }, + "total_frames": 3408, + "attributes": null + }, + "009": { + "cameras": { + "G328": 847, + "G339": 295 + }, + "total_frames": 1142, + "attributes": null + } + }, + "total_frames": 92537, + "total_tracklets": 141 + }, + "0031": { + "person_id": "0031", + "split": "train", + "cameras": { + "G506": { + "tracklets": 2, + "frames": 275 + }, + "G341": { + "tracklets": 3, + "frames": 1299 + }, + "G424": { + "tracklets": 1, + "frames": 898 + }, + "G508": { + "tracklets": 2, + "frames": 1393 + }, + "G331": { + "tracklets": 6, + "frames": 5035 + }, + "G339": { + "tracklets": 2, + "frames": 1364 + }, + "G329": { + "tracklets": 3, + "frames": 684 + }, + "G326": { + "tracklets": 2, + "frames": 293 + }, + "G300": { + "tracklets": 3, + "frames": 720 + }, + "G420": { + "tracklets": 4, + "frames": 1537 + }, + "G299": { + "tracklets": 3, + "frames": 1766 + }, + "G330": { + "tracklets": 1, + "frames": 772 + }, + "G419": { + "tracklets": 1, + "frames": 40 + } + }, + "outfits": { + "018": { + "cameras": { + "G506": 275, + "G341": 1121, + "G424": 898, + "G508": 1393, + "G331": 5035 + }, + "total_frames": 8722, + "attributes": null + }, + "004": { + "cameras": { + "G339": 1364, + "G329": 684, + "G326": 293, + "G341": 178 + }, + "total_frames": 2519, + "attributes": null + }, + "014": { + "cameras": { + "G300": 720, + "G420": 1537, + "G299": 1027, + "G330": 772, + "G419": 40 + }, + "total_frames": 4096, + "attributes": null + }, + "013": { + "cameras": { + "G299": 739 + }, + "total_frames": 739, + "attributes": null + } + }, + "total_frames": 16076, + "total_tracklets": 33 + }, + "0032": { + "person_id": "0032", + "split": "train", + "cameras": { + "G328": { + "tracklets": 3, + "frames": 660 + }, + "G424": { + "tracklets": 3, + "frames": 2265 + }, + "G341": { + "tracklets": 6, + "frames": 3478 + }, + "G506": { + "tracklets": 9, + "frames": 3734 + }, + "G340": { + "tracklets": 1, + "frames": 271 + }, + "G339": { + "tracklets": 5, + "frames": 1088 + }, + "G638": { + "tracklets": 2, + "frames": 1072 + }, + "G331": { + "tracklets": 25, + "frames": 23256 + }, + "G508": { + "tracklets": 3, + "frames": 1892 + }, + "G330": { + "tracklets": 11, + "frames": 10196 + }, + "G420": { + "tracklets": 4, + "frames": 937 + }, + "G505": { + "tracklets": 2, + "frames": 1720 + }, + "G421": { + "tracklets": 2, + "frames": 527 + }, + "G419": { + "tracklets": 2, + "frames": 260 + }, + "G299": { + "tracklets": 2, + "frames": 1357 + } + }, + "outfits": { + "012": { + "cameras": { + "G328": 660, + "G424": 2265, + "G341": 2537, + "G506": 1667, + "G340": 271, + "G339": 604, + "G638": 1072, + "G331": 23256 + }, + "total_frames": 32332, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 204, + "avg_width_px": 245, + "n_crops_analyzed": 3 + } + }, + "016": { + "cameras": { + "G506": 1486, + "G341": 481, + "G508": 1153 + }, + "total_frames": 3120, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 149, + "avg_width_px": 53, + "n_crops_analyzed": 3 + } + }, + "008": { + "cameras": { + "G341": 460, + "G506": 313, + "G339": 484, + "G330": 8932, + "G420": 421, + "G508": 739 + }, + "total_frames": 11349, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 210, + "avg_width_px": 195, + "n_crops_analyzed": 3 + } + }, + "003": { + "cameras": { + "G506": 268, + "G505": 1720 + }, + "total_frames": 1988, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 255, + "avg_width_px": 181, + "n_crops_analyzed": 3 + } + }, + "010": { + "cameras": { + "G420": 516, + "G421": 527, + "G330": 1264, + "G419": 260 + }, + "total_frames": 2567, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 272, + "avg_width_px": 128, + "n_crops_analyzed": 3 + } + }, + "009": { + "cameras": { + "G299": 1357 + }, + "total_frames": 1357, + "attributes": { + "upper_body_color": "black", + "lower_body_color": "blue", + "avg_height_px": 144, + "avg_width_px": 58, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 52713, + "total_tracklets": 80, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "blue": 11, + "green": 4, + "black": 3 + }, + "lower_color_distribution": { + "blue": 12, + "green": 4, + "gray": 2 + }, + "avg_crop_height": 206, + "n_outfits": 6, + "n_cameras": 15 + } + }, + "0010": { + "person_id": "0010", + "split": "train", + "cameras": { + "G506": { + "tracklets": 22, + "frames": 14823 + }, + "G341": { + "tracklets": 5, + "frames": 2015 + }, + "G505": { + "tracklets": 1, + "frames": 253 + }, + "G340": { + "tracklets": 4, + "frames": 2621 + }, + "G299": { + "tracklets": 24, + "frames": 20818 + }, + "G330": { + "tracklets": 22, + "frames": 19552 + }, + "G420": { + "tracklets": 2, + "frames": 893 + }, + "G419": { + "tracklets": 2, + "frames": 374 + }, + "G329": { + "tracklets": 3, + "frames": 1260 + }, + "G326": { + "tracklets": 4, + "frames": 904 + }, + "G300": { + "tracklets": 1, + "frames": 1 + }, + "G339": { + "tracklets": 2, + "frames": 110 + }, + "G638": { + "tracklets": 1, + "frames": 412 + } + }, + "outfits": { + "025": { + "cameras": { + "G506": 13878, + "G341": 1250 + }, + "total_frames": 15128, + "attributes": { + "upper_body_color": "black", + "lower_body_color": "blue", + "avg_height_px": 137, + "avg_width_px": 59, + "n_crops_analyzed": 3 + } + }, + "004": { + "cameras": { + "G341": 765, + "G505": 253, + "G340": 2621, + "G506": 945 + }, + "total_frames": 4584, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 274, + "avg_width_px": 93, + "n_crops_analyzed": 3 + } + }, + "016": { + "cameras": { + "G299": 20818, + "G330": 17985 + }, + "total_frames": 38803, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "green", + "avg_height_px": 136, + "avg_width_px": 55, + "n_crops_analyzed": 3 + } + }, + "017": { + "cameras": { + "G420": 893, + "G419": 208, + "G329": 1260, + "G326": 904, + "G300": 1, + "G339": 110 + }, + "total_frames": 3376, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 639, + "avg_width_px": 309, + "n_crops_analyzed": 3 + } + }, + "010": { + "cameras": { + "G330": 1567, + "G419": 166 + }, + "total_frames": 1733, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 195, + "avg_width_px": 88, + "n_crops_analyzed": 3 + } + }, + "022": { + "cameras": { + "G638": 412 + }, + "total_frames": 412, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 119, + "avg_width_px": 36, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 64036, + "total_tracklets": 93, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "blue": 14, + "black": 2, + "green": 2 + }, + "lower_color_distribution": { + "blue": 12, + "black": 1, + "green": 4, + "purple": 1 + }, + "avg_crop_height": 250, + "n_outfits": 6, + "n_cameras": 13 + } + }, + "0054": { + "person_id": "0054", + "split": "train", + "cameras": { + "G506": { + "tracklets": 50, + "frames": 46079 + }, + "G341": { + "tracklets": 3, + "frames": 2159 + }, + "G339": { + "tracklets": 3, + "frames": 927 + }, + "G421": { + "tracklets": 10, + "frames": 8514 + }, + "G424": { + "tracklets": 3, + "frames": 1478 + }, + "G638": { + "tracklets": 1, + "frames": 562 + }, + "G419": { + "tracklets": 5, + "frames": 1837 + }, + "G420": { + "tracklets": 4, + "frames": 2451 + }, + "G299": { + "tracklets": 17, + "frames": 14880 + }, + "G330": { + "tracklets": 16, + "frames": 15026 + }, + "G423": { + "tracklets": 2, + "frames": 719 + } + }, + "outfits": { + "024": { + "cameras": { + "G506": 46079, + "G341": 2159, + "G339": 457, + "G421": 7330 + }, + "total_frames": 56025, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 232, + "avg_width_px": 135, + "n_crops_analyzed": 3 + } + }, + "020": { + "cameras": { + "G424": 331, + "G638": 562 + }, + "total_frames": 893, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 91, + "avg_width_px": 46, + "n_crops_analyzed": 3 + } + }, + "013": { + "cameras": { + "G339": 470, + "G419": 614, + "G421": 1184, + "G420": 454 + }, + "total_frames": 2722, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 272, + "avg_width_px": 124, + "n_crops_analyzed": 3 + } + }, + "016": { + "cameras": { + "G299": 13097, + "G330": 15026 + }, + "total_frames": 28123, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "green", + "avg_height_px": 118, + "avg_width_px": 50, + "n_crops_analyzed": 3 + } + }, + "004": { + "cameras": { + "G419": 1223, + "G424": 1147, + "G423": 719, + "G299": 1783, + "G420": 1997 + }, + "total_frames": 6869, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 168, + "avg_width_px": 74, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 94632, + "total_tracklets": 114, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "green": 4, + "white": 1, + "blue": 9, + "gray": 1 + }, + "lower_color_distribution": { + "gray": 3, + "blue": 8, + "green": 3, + "black": 1 + }, + "avg_crop_height": 176, + "n_outfits": 5, + "n_cameras": 11 + } + }, + "0023": { + "person_id": "0023", + "split": "train", + "cameras": { + "G424": { + "tracklets": 3, + "frames": 1827 + }, + "G340": { + "tracklets": 2, + "frames": 716 + }, + "G339": { + "tracklets": 3, + "frames": 849 + }, + "G506": { + "tracklets": 1, + "frames": 46 + }, + "G329": { + "tracklets": 5, + "frames": 956 + }, + "G326": { + "tracklets": 8, + "frames": 3878 + }, + "G423": { + "tracklets": 5, + "frames": 692 + }, + "G420": { + "tracklets": 5, + "frames": 2579 + }, + "G638": { + "tracklets": 3, + "frames": 1016 + }, + "G299": { + "tracklets": 9, + "frames": 8485 + }, + "G330": { + "tracklets": 8, + "frames": 7102 + }, + "G419": { + "tracklets": 5, + "frames": 1232 + } + }, + "outfits": { + "014": { + "cameras": { + "G424": 1259, + "G340": 716, + "G339": 364 + }, + "total_frames": 2339, + "attributes": null + }, + "021": { + "cameras": { + "G506": 46 + }, + "total_frames": 46, + "attributes": null + }, + "005": { + "cameras": { + "G424": 568, + "G339": 485, + "G329": 956, + "G326": 3878, + "G423": 208 + }, + "total_frames": 6095, + "attributes": null + }, + "008": { + "cameras": { + "G420": 2579, + "G638": 1016, + "G423": 484, + "G299": 8485, + "G330": 7102, + "G419": 216 + }, + "total_frames": 19882, + "attributes": null + }, + "011": { + "cameras": { + "G419": 1016 + }, + "total_frames": 1016, + "attributes": null + } + }, + "total_frames": 29378, + "total_tracklets": 57 + }, + "0049": { + "person_id": "0049", + "split": "train", + "cameras": { + "G328": { + "tracklets": 4, + "frames": 2344 + }, + "G424": { + "tracklets": 5, + "frames": 1610 + }, + "G341": { + "tracklets": 3, + "frames": 2117 + }, + "G506": { + "tracklets": 7, + "frames": 1972 + }, + "G339": { + "tracklets": 2, + "frames": 878 + }, + "G329": { + "tracklets": 2, + "frames": 608 + }, + "G638": { + "tracklets": 1, + "frames": 748 + }, + "G326": { + "tracklets": 1, + "frames": 514 + }, + "G299": { + "tracklets": 18, + "frames": 17342 + }, + "G330": { + "tracklets": 4, + "frames": 2555 + }, + "G421": { + "tracklets": 1, + "frames": 430 + }, + "G420": { + "tracklets": 1, + "frames": 115 + }, + "G340": { + "tracklets": 1, + "frames": 280 + } + }, + "outfits": { + "014": { + "cameras": { + "G328": 1746, + "G424": 402 + }, + "total_frames": 2148, + "attributes": null + }, + "002": { + "cameras": { + "G341": 2117, + "G506": 1237, + "G424": 916, + "G339": 436, + "G329": 608, + "G638": 748, + "G326": 514 + }, + "total_frames": 6576, + "attributes": null + }, + "011": { + "cameras": { + "G328": 598, + "G299": 17342, + "G330": 2005, + "G421": 430, + "G420": 115 + }, + "total_frames": 20490, + "attributes": null + }, + "019": { + "cameras": { + "G506": 735, + "G339": 442, + "G340": 280 + }, + "total_frames": 1457, + "attributes": null + }, + "016": { + "cameras": { + "G424": 292 + }, + "total_frames": 292, + "attributes": null + }, + "007": { + "cameras": { + "G330": 550 + }, + "total_frames": 550, + "attributes": null + } + }, + "total_frames": 31513, + "total_tracklets": 50 + }, + "0083": { + "person_id": "0083", + "split": "train", + "cameras": { + "G328": { + "tracklets": 3, + "frames": 1743 + }, + "G340": { + "tracklets": 2, + "frames": 587 + }, + "G424": { + "tracklets": 2, + "frames": 1219 + }, + "G339": { + "tracklets": 3, + "frames": 1947 + }, + "G419": { + "tracklets": 9, + "frames": 1386 + }, + "G420": { + "tracklets": 7, + "frames": 2446 + }, + "G341": { + "tracklets": 10, + "frames": 7061 + }, + "G506": { + "tracklets": 4, + "frames": 2654 + }, + "G329": { + "tracklets": 3, + "frames": 948 + }, + "G331": { + "tracklets": 15, + "frames": 12592 + }, + "G436": { + "tracklets": 1, + "frames": 682 + }, + "G336": { + "tracklets": 2, + "frames": 1721 + }, + "G300": { + "tracklets": 4, + "frames": 2052 + }, + "G299": { + "tracklets": 3, + "frames": 2611 + }, + "G423": { + "tracklets": 9, + "frames": 7104 + }, + "G638": { + "tracklets": 2, + "frames": 1670 + }, + "G421": { + "tracklets": 3, + "frames": 1164 + }, + "G326": { + "tracklets": 6, + "frames": 831 + }, + "G505": { + "tracklets": 5, + "frames": 4169 + }, + "G508": { + "tracklets": 4, + "frames": 3357 + } + }, + "outfits": { + "012": { + "cameras": { + "G328": 310, + "G340": 178, + "G424": 1219, + "G339": 1947, + "G419": 220, + "G420": 142 + }, + "total_frames": 4016, + "attributes": null + }, + "009": { + "cameras": { + "G328": 1433, + "G341": 361, + "G506": 292, + "G329": 948, + "G419": 1166, + "G331": 12159, + "G436": 682, + "G336": 1721, + "G300": 2052, + "G299": 2611, + "G423": 7104, + "G638": 1670, + "G420": 2304, + "G421": 1164, + "G326": 490 + }, + "total_frames": 36157, + "attributes": null + }, + "010": { + "cameras": { + "G341": 571, + "G340": 409 + }, + "total_frames": 980, + "attributes": null + }, + "004": { + "cameras": { + "G505": 4169, + "G341": 6129, + "G506": 2362, + "G508": 3357 + }, + "total_frames": 16017, + "attributes": null + }, + "016": { + "cameras": { + "G326": 341 + }, + "total_frames": 341, + "attributes": null + }, + "015": { + "cameras": { + "G331": 433 + }, + "total_frames": 433, + "attributes": null + } + }, + "total_frames": 57944, + "total_tracklets": 97 + }, + "0038": { + "person_id": "0038", + "split": "train", + "cameras": { + "G506": { + "tracklets": 4, + "frames": 1651 + }, + "G341": { + "tracklets": 13, + "frames": 5702 + }, + "G340": { + "tracklets": 9, + "frames": 4662 + }, + "G331": { + "tracklets": 4, + "frames": 3157 + }, + "G339": { + "tracklets": 16, + "frames": 7799 + }, + "G508": { + "tracklets": 7, + "frames": 5152 + }, + "G299": { + "tracklets": 1, + "frames": 547 + }, + "G420": { + "tracklets": 5, + "frames": 2615 + }, + "G423": { + "tracklets": 3, + "frames": 759 + }, + "G419": { + "tracklets": 1, + "frames": 169 + }, + "G421": { + "tracklets": 3, + "frames": 1652 + }, + "G638": { + "tracklets": 1, + "frames": 754 + } + }, + "outfits": { + "022": { + "cameras": { + "G506": 407, + "G341": 4245, + "G340": 4139, + "G331": 3157 + }, + "total_frames": 11948, + "attributes": null + }, + "004": { + "cameras": { + "G339": 7799, + "G340": 523, + "G506": 1244, + "G341": 1457, + "G508": 5152 + }, + "total_frames": 16175, + "attributes": null + }, + "013": { + "cameras": { + "G299": 547, + "G420": 2615, + "G423": 759, + "G419": 169 + }, + "total_frames": 4090, + "attributes": null + }, + "016": { + "cameras": { + "G421": 10 + }, + "total_frames": 10, + "attributes": null + }, + "019": { + "cameras": { + "G421": 1642, + "G638": 754 + }, + "total_frames": 2396, + "attributes": null + } + }, + "total_frames": 34619, + "total_tracklets": 67 + }, + "0084": { + "person_id": "0084", + "split": "train", + "cameras": { + "G341": { + "tracklets": 21, + "frames": 10920 + }, + "G506": { + "tracklets": 12, + "frames": 3493 + }, + "G339": { + "tracklets": 14, + "frames": 5443 + }, + "G424": { + "tracklets": 2, + "frames": 785 + }, + "G340": { + "tracklets": 4, + "frames": 1024 + }, + "G328": { + "tracklets": 1, + "frames": 28 + }, + "G326": { + "tracklets": 4, + "frames": 1638 + }, + "G505": { + "tracklets": 1, + "frames": 112 + }, + "G421": { + "tracklets": 7, + "frames": 6164 + }, + "G638": { + "tracklets": 4, + "frames": 3544 + }, + "G329": { + "tracklets": 1, + "frames": 307 + }, + "G420": { + "tracklets": 5, + "frames": 1829 + }, + "G419": { + "tracklets": 5, + "frames": 563 + }, + "G300": { + "tracklets": 2, + "frames": 86 + }, + "G299": { + "tracklets": 5, + "frames": 3653 + }, + "G423": { + "tracklets": 1, + "frames": 169 + } + }, + "outfits": { + "023": { + "cameras": { + "G341": 2225 + }, + "total_frames": 2225, + "attributes": null + }, + "026": { + "cameras": { + "G341": 8071, + "G506": 3493, + "G339": 609, + "G424": 271, + "G340": 1024, + "G328": 28, + "G326": 1, + "G505": 112 + }, + "total_frames": 13609, + "attributes": null + }, + "014": { + "cameras": { + "G424": 514 + }, + "total_frames": 514, + "attributes": null + }, + "008": { + "cameras": { + "G339": 4590, + "G341": 624, + "G421": 1777, + "G638": 3544 + }, + "total_frames": 10535, + "attributes": null + }, + "027": { + "cameras": { + "G339": 244, + "G421": 4387, + "G329": 307, + "G326": 1459 + }, + "total_frames": 6397, + "attributes": null + }, + "021": { + "cameras": { + "G420": 1829, + "G419": 563, + "G300": 86, + "G299": 1408, + "G326": 178, + "G423": 169 + }, + "total_frames": 4233, + "attributes": null + }, + "020": { + "cameras": { + "G299": 2245 + }, + "total_frames": 2245, + "attributes": null + } + }, + "total_frames": 39758, + "total_tracklets": 89 + }, + "0017": { + "person_id": "0017", + "split": "train", + "cameras": { + "G341": { + "tracklets": 19, + "frames": 16440 + }, + "G506": { + "tracklets": 15, + "frames": 12842 + }, + "G339": { + "tracklets": 10, + "frames": 1114 + }, + "G340": { + "tracklets": 1, + "frames": 250 + }, + "G421": { + "tracklets": 12, + "frames": 11565 + }, + "G326": { + "tracklets": 3, + "frames": 675 + }, + "G329": { + "tracklets": 2, + "frames": 514 + }, + "G424": { + "tracklets": 2, + "frames": 812 + }, + "G423": { + "tracklets": 11, + "frames": 9228 + }, + "G419": { + "tracklets": 5, + "frames": 1252 + }, + "G420": { + "tracklets": 7, + "frames": 3297 + }, + "G299": { + "tracklets": 2, + "frames": 1273 + }, + "G300": { + "tracklets": 1, + "frames": 286 + }, + "G638": { + "tracklets": 1, + "frames": 913 + } + }, + "outfits": { + "021": { + "cameras": { + "G341": 9233, + "G506": 9175 + }, + "total_frames": 18408, + "attributes": null + }, + "004": { + "cameras": { + "G341": 7207, + "G339": 1022, + "G506": 3667, + "G340": 250, + "G421": 1858, + "G326": 506, + "G329": 514, + "G424": 370 + }, + "total_frames": 15394, + "attributes": null + }, + "007": { + "cameras": { + "G339": 89, + "G424": 442, + "G326": 169 + }, + "total_frames": 700, + "attributes": null + }, + "013": { + "cameras": { + "G423": 9228, + "G419": 1252, + "G420": 3297, + "G299": 1273, + "G300": 286, + "G421": 709 + }, + "total_frames": 16045, + "attributes": null + }, + "020": { + "cameras": { + "G421": 8998 + }, + "total_frames": 8998, + "attributes": null + }, + "017": { + "cameras": { + "G638": 913, + "G339": 3 + }, + "total_frames": 916, + "attributes": null + } + }, + "total_frames": 60461, + "total_tracklets": 91 + }, + "0035": { + "person_id": "0035", + "split": "train", + "cameras": { + "G341": { + "tracklets": 1, + "frames": 139 + }, + "G506": { + "tracklets": 1, + "frames": 88 + }, + "G424": { + "tracklets": 6, + "frames": 4029 + }, + "G328": { + "tracklets": 1, + "frames": 454 + }, + "G339": { + "tracklets": 3, + "frames": 963 + }, + "G329": { + "tracklets": 4, + "frames": 1015 + }, + "G421": { + "tracklets": 2, + "frames": 1660 + }, + "G419": { + "tracklets": 2, + "frames": 665 + }, + "G420": { + "tracklets": 1, + "frames": 364 + }, + "G326": { + "tracklets": 2, + "frames": 344 + }, + "G423": { + "tracklets": 1, + "frames": 415 + } + }, + "outfits": { + "003": { + "cameras": { + "G341": 139, + "G506": 88, + "G424": 4029, + "G328": 454, + "G339": 963, + "G329": 1015, + "G421": 1660, + "G419": 190, + "G420": 364, + "G326": 344, + "G423": 415 + }, + "total_frames": 9661, + "attributes": null + }, + "009": { + "cameras": { + "G419": 475 + }, + "total_frames": 475, + "attributes": null + } + }, + "total_frames": 10136, + "total_tracklets": 24 + }, + "0040": { + "person_id": "0040", + "split": "train", + "cameras": { + "G328": { + "tracklets": 3, + "frames": 120 + }, + "G424": { + "tracklets": 97, + "frames": 92927 + }, + "G339": { + "tracklets": 2, + "frames": 956 + }, + "G419": { + "tracklets": 6, + "frames": 1503 + }, + "G423": { + "tracklets": 4, + "frames": 3266 + }, + "G420": { + "tracklets": 6, + "frames": 2600 + }, + "G421": { + "tracklets": 8, + "frames": 4996 + }, + "G330": { + "tracklets": 19, + "frames": 17837 + }, + "G299": { + "tracklets": 17, + "frames": 16298 + } + }, + "outfits": { + "015": { + "cameras": { + "G328": 120, + "G424": 92927, + "G339": 502, + "G419": 494, + "G423": 445, + "G420": 485 + }, + "total_frames": 94973, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 194, + "avg_width_px": 94, + "n_crops_analyzed": 3 + } + }, + "011": { + "cameras": { + "G339": 454, + "G423": 2821, + "G419": 1009, + "G421": 843, + "G420": 334 + }, + "total_frames": 5461, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 203, + "avg_width_px": 82, + "n_crops_analyzed": 3 + } + }, + "012": { + "cameras": { + "G330": 17837, + "G299": 16298 + }, + "total_frames": 34135, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "green", + "avg_height_px": 105, + "avg_width_px": 31, + "n_crops_analyzed": 3 + } + }, + "002": { + "cameras": { + "G420": 1690, + "G421": 4153 + }, + "total_frames": 5843, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 305, + "avg_width_px": 113, + "n_crops_analyzed": 3 + } + }, + "014": { + "cameras": { + "G420": 91 + }, + "total_frames": 91, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 236, + "avg_width_px": 56, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 140503, + "total_tracklets": 162, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "blue": 12, + "gray": 1, + "green": 2 + }, + "lower_color_distribution": { + "blue": 11, + "black": 1, + "green": 2, + "gray": 1 + }, + "avg_crop_height": 209, + "n_outfits": 5, + "n_cameras": 9 + } + }, + "0003": { + "person_id": "0003", + "split": "train", + "cameras": { + "G506": { + "tracklets": 7, + "frames": 3008 + }, + "G341": { + "tracklets": 12, + "frames": 6711 + }, + "G424": { + "tracklets": 6, + "frames": 2433 + }, + "G328": { + "tracklets": 1, + "frames": 352 + }, + "G340": { + "tracklets": 2, + "frames": 191 + }, + "G339": { + "tracklets": 7, + "frames": 2341 + }, + "G638": { + "tracklets": 10, + "frames": 5999 + }, + "G508": { + "tracklets": 25, + "frames": 24085 + }, + "G421": { + "tracklets": 5, + "frames": 497 + }, + "G420": { + "tracklets": 3, + "frames": 801 + }, + "G419": { + "tracklets": 2, + "frames": 320 + }, + "G299": { + "tracklets": 2, + "frames": 1321 + }, + "G423": { + "tracklets": 3, + "frames": 2308 + }, + "G505": { + "tracklets": 3, + "frames": 252 + } + }, + "outfits": { + "008": { + "cameras": { + "G506": 193, + "G341": 1670 + }, + "total_frames": 1863, + "attributes": null + }, + "025": { + "cameras": { + "G424": 1823, + "G328": 352, + "G340": 4, + "G339": 372, + "G638": 3059 + }, + "total_frames": 5610, + "attributes": null + }, + "028": { + "cameras": { + "G341": 4129, + "G506": 173, + "G339": 424, + "G508": 24085 + }, + "total_frames": 28811, + "attributes": null + }, + "024": { + "cameras": { + "G340": 187, + "G339": 208 + }, + "total_frames": 395, + "attributes": null + }, + "020": { + "cameras": { + "G424": 610, + "G638": 2940, + "G421": 497, + "G420": 801, + "G419": 320, + "G299": 1321, + "G423": 2308 + }, + "total_frames": 8797, + "attributes": null + }, + "006": { + "cameras": { + "G339": 1337, + "G341": 912, + "G506": 2642, + "G505": 252 + }, + "total_frames": 5143, + "attributes": null + } + }, + "total_frames": 50619, + "total_tracklets": 88 + }, + "0015": { + "person_id": "0015", + "split": "train", + "cameras": { + "G341": { + "tracklets": 7, + "frames": 4645 + }, + "G506": { + "tracklets": 4, + "frames": 2499 + }, + "G505": { + "tracklets": 1, + "frames": 748 + }, + "G419": { + "tracklets": 5, + "frames": 920 + }, + "G423": { + "tracklets": 2, + "frames": 1073 + }, + "G420": { + "tracklets": 5, + "frames": 2521 + }, + "G421": { + "tracklets": 15, + "frames": 11489 + }, + "G328": { + "tracklets": 9, + "frames": 6516 + }, + "G339": { + "tracklets": 5, + "frames": 1184 + }, + "G436": { + "tracklets": 11, + "frames": 8700 + }, + "G299": { + "tracklets": 10, + "frames": 8681 + }, + "G638": { + "tracklets": 2, + "frames": 1547 + }, + "G330": { + "tracklets": 13, + "frames": 12026 + }, + "G336": { + "tracklets": 4, + "frames": 1761 + }, + "G331": { + "tracklets": 19, + "frames": 17550 + }, + "G424": { + "tracklets": 2, + "frames": 1291 + } + }, + "outfits": { + "004": { + "cameras": { + "G341": 4158, + "G506": 2060, + "G505": 748, + "G419": 576, + "G423": 1073, + "G420": 2211, + "G421": 10757 + }, + "total_frames": 21583, + "attributes": null + }, + "015": { + "cameras": { + "G328": 2754 + }, + "total_frames": 2754, + "attributes": null + }, + "013": { + "cameras": { + "G328": 3032, + "G339": 936, + "G436": 8700, + "G420": 310, + "G299": 8681, + "G421": 732, + "G638": 1547, + "G330": 12026, + "G336": 1761, + "G341": 487, + "G331": 17550, + "G419": 344, + "G506": 439 + }, + "total_frames": 56545, + "attributes": null + }, + "010": { + "cameras": { + "G424": 1291, + "G328": 730, + "G339": 248 + }, + "total_frames": 2269, + "attributes": null + } + }, + "total_frames": 83151, + "total_tracklets": 114 + }, + "0034": { + "person_id": "0034", + "split": "train", + "cameras": { + "G506": { + "tracklets": 5, + "frames": 2736 + }, + "G341": { + "tracklets": 13, + "frames": 11633 + }, + "G329": { + "tracklets": 4, + "frames": 1211 + }, + "G339": { + "tracklets": 3, + "frames": 1023 + }, + "G424": { + "tracklets": 5, + "frames": 1957 + }, + "G326": { + "tracklets": 1, + "frames": 112 + }, + "G638": { + "tracklets": 2, + "frames": 1208 + }, + "G419": { + "tracklets": 2, + "frames": 239 + }, + "G420": { + "tracklets": 7, + "frames": 2287 + }, + "G300": { + "tracklets": 2, + "frames": 362 + }, + "G423": { + "tracklets": 2, + "frames": 299 + }, + "G330": { + "tracklets": 3, + "frames": 2857 + } + }, + "outfits": { + "005": { + "cameras": { + "G506": 2736, + "G341": 11089, + "G329": 1211, + "G339": 605, + "G424": 1545, + "G326": 112, + "G638": 1208, + "G419": 16 + }, + "total_frames": 18522, + "attributes": null + }, + "017": { + "cameras": { + "G424": 412, + "G339": 418 + }, + "total_frames": 830, + "attributes": null + }, + "020": { + "cameras": { + "G341": 544 + }, + "total_frames": 544, + "attributes": null + }, + "015": { + "cameras": { + "G420": 1971, + "G300": 362, + "G419": 223, + "G423": 299, + "G330": 2857 + }, + "total_frames": 5712, + "attributes": null + }, + "014": { + "cameras": { + "G420": 316 + }, + "total_frames": 316, + "attributes": null + } + }, + "total_frames": 25924, + "total_tracklets": 49 + }, + "0090": { + "person_id": "0090", + "split": "train", + "cameras": { + "G341": { + "tracklets": 4, + "frames": 1021 + }, + "G506": { + "tracklets": 2, + "frames": 356 + }, + "G424": { + "tracklets": 3, + "frames": 1530 + }, + "G339": { + "tracklets": 10, + "frames": 2818 + }, + "G421": { + "tracklets": 6, + "frames": 4683 + }, + "G508": { + "tracklets": 4, + "frames": 1753 + }, + "G638": { + "tracklets": 3, + "frames": 1278 + }, + "G505": { + "tracklets": 2, + "frames": 1562 + }, + "G420": { + "tracklets": 4, + "frames": 1363 + }, + "G299": { + "tracklets": 2, + "frames": 521 + }, + "G300": { + "tracklets": 1, + "frames": 88 + }, + "G336": { + "tracklets": 1, + "frames": 232 + }, + "G419": { + "tracklets": 2, + "frames": 458 + }, + "G423": { + "tracklets": 6, + "frames": 804 + }, + "G330": { + "tracklets": 4, + "frames": 2591 + } + }, + "outfits": { + "029": { + "cameras": { + "G341": 798, + "G506": 22, + "G424": 1530, + "G339": 806, + "G421": 3511, + "G508": 1374 + }, + "total_frames": 8041, + "attributes": null + }, + "023": { + "cameras": { + "G339": 1128, + "G638": 307 + }, + "total_frames": 1435, + "attributes": null + }, + "005": { + "cameras": { + "G341": 223, + "G505": 1562, + "G506": 334, + "G339": 884 + }, + "total_frames": 3003, + "attributes": null + }, + "012": { + "cameras": { + "G420": 1092, + "G299": 521, + "G421": 1172, + "G300": 88, + "G336": 232, + "G638": 971, + "G419": 214 + }, + "total_frames": 4290, + "attributes": null + }, + "018": { + "cameras": { + "G423": 804, + "G330": 310, + "G420": 271 + }, + "total_frames": 1385, + "attributes": null + }, + "011": { + "cameras": { + "G330": 2281, + "G508": 379, + "G419": 244 + }, + "total_frames": 2904, + "attributes": null + } + }, + "total_frames": 21058, + "total_tracklets": 54 + }, + "0078": { + "person_id": "0078", + "split": "train", + "cameras": { + "G341": { + "tracklets": 44, + "frames": 38077 + }, + "G506": { + "tracklets": 47, + "frames": 40743 + }, + "G424": { + "tracklets": 1, + "frames": 760 + }, + "G340": { + "tracklets": 18, + "frames": 14717 + }, + "G339": { + "tracklets": 4, + "frames": 903 + }, + "G331": { + "tracklets": 3, + "frames": 2518 + }, + "G419": { + "tracklets": 2, + "frames": 290 + }, + "G420": { + "tracklets": 4, + "frames": 1294 + }, + "G326": { + "tracklets": 4, + "frames": 763 + }, + "G299": { + "tracklets": 2, + "frames": 1108 + }, + "G329": { + "tracklets": 3, + "frames": 834 + }, + "G300": { + "tracklets": 1, + "frames": 55 + }, + "G423": { + "tracklets": 1, + "frames": 256 + } + }, + "outfits": { + "026": { + "cameras": { + "G341": 1703, + "G506": 218, + "G424": 760, + "G340": 472, + "G339": 64, + "G331": 2518 + }, + "total_frames": 5735, + "attributes": null + }, + "030": { + "cameras": { + "G506": 40525, + "G341": 36042, + "G340": 14245 + }, + "total_frames": 90812, + "attributes": null + }, + "005": { + "cameras": { + "G339": 439, + "G341": 332 + }, + "total_frames": 771, + "attributes": null + }, + "019": { + "cameras": { + "G339": 400, + "G419": 290, + "G420": 941, + "G326": 763, + "G299": 1108, + "G329": 834, + "G300": 55 + }, + "total_frames": 4391, + "attributes": null + }, + "018": { + "cameras": { + "G420": 353, + "G423": 256 + }, + "total_frames": 609, + "attributes": null + } + }, + "total_frames": 102318, + "total_tracklets": 134 + }, + "0101": { + "person_id": "0101", + "split": "train", + "cameras": { + "G340": { + "tracklets": 3, + "frames": 666 + }, + "G341": { + "tracklets": 12, + "frames": 8533 + }, + "G331": { + "tracklets": 10, + "frames": 9007 + }, + "G506": { + "tracklets": 5, + "frames": 1130 + }, + "G328": { + "tracklets": 2, + "frames": 1103 + }, + "G424": { + "tracklets": 3, + "frames": 1449 + }, + "G339": { + "tracklets": 2, + "frames": 632 + }, + "G638": { + "tracklets": 1, + "frames": 418 + }, + "G420": { + "tracklets": 9, + "frames": 3270 + }, + "G419": { + "tracklets": 3, + "frames": 453 + }, + "G423": { + "tracklets": 8, + "frames": 5626 + }, + "G300": { + "tracklets": 1, + "frames": 502 + }, + "G299": { + "tracklets": 2, + "frames": 899 + }, + "G421": { + "tracklets": 8, + "frames": 7253 + } + }, + "outfits": { + "021": { + "cameras": { + "G340": 181, + "G341": 7991, + "G331": 9007, + "G506": 817 + }, + "total_frames": 17996, + "attributes": null + }, + "006": { + "cameras": { + "G341": 542, + "G506": 313 + }, + "total_frames": 855, + "attributes": null + }, + "018": { + "cameras": { + "G328": 463, + "G340": 485, + "G424": 926, + "G339": 632, + "G638": 418 + }, + "total_frames": 2924, + "attributes": null + }, + "016": { + "cameras": { + "G328": 640, + "G424": 523, + "G420": 518, + "G419": 34 + }, + "total_frames": 1715, + "attributes": null + }, + "013": { + "cameras": { + "G423": 1585, + "G420": 388 + }, + "total_frames": 1973, + "attributes": null + }, + "014": { + "cameras": { + "G420": 1714, + "G423": 3956, + "G300": 502, + "G299": 562 + }, + "total_frames": 6734, + "attributes": null + }, + "005": { + "cameras": { + "G421": 7253, + "G420": 650, + "G419": 419, + "G423": 85, + "G299": 337 + }, + "total_frames": 8744, + "attributes": null + } + }, + "total_frames": 40941, + "total_tracklets": 69 + }, + "0022": { + "person_id": "0022", + "split": "train", + "cameras": { + "G506": { + "tracklets": 5, + "frames": 1951 + }, + "G341": { + "tracklets": 3, + "frames": 1233 + }, + "G339": { + "tracklets": 1, + "frames": 253 + }, + "G330": { + "tracklets": 2, + "frames": 1054 + }, + "G420": { + "tracklets": 2, + "frames": 986 + }, + "G299": { + "tracklets": 2, + "frames": 1282 + }, + "G419": { + "tracklets": 2, + "frames": 170 + }, + "G423": { + "tracklets": 1, + "frames": 175 + }, + "G421": { + "tracklets": 2, + "frames": 890 + }, + "G638": { + "tracklets": 1, + "frames": 163 + } + }, + "outfits": { + "022": { + "cameras": { + "G506": 1951, + "G341": 1233, + "G339": 253 + }, + "total_frames": 3437, + "attributes": null + }, + "009": { + "cameras": { + "G330": 1054 + }, + "total_frames": 1054, + "attributes": null + }, + "014": { + "cameras": { + "G420": 986, + "G299": 1282, + "G419": 115, + "G423": 175 + }, + "total_frames": 2558, + "attributes": null + }, + "003": { + "cameras": { + "G421": 890 + }, + "total_frames": 890, + "attributes": null + }, + "015": { + "cameras": { + "G419": 55 + }, + "total_frames": 55, + "attributes": null + }, + "018": { + "cameras": { + "G638": 163 + }, + "total_frames": 163, + "attributes": null + } + }, + "total_frames": 8157, + "total_tracklets": 21 + }, + "0033": { + "person_id": "0033", + "split": "train", + "cameras": { + "G328": { + "tracklets": 3, + "frames": 1041 + }, + "G424": { + "tracklets": 5, + "frames": 2753 + }, + "G339": { + "tracklets": 4, + "frames": 1477 + }, + "G506": { + "tracklets": 2, + "frames": 338 + }, + "G341": { + "tracklets": 6, + "frames": 3524 + }, + "G329": { + "tracklets": 5, + "frames": 1475 + }, + "G326": { + "tracklets": 4, + "frames": 793 + }, + "G638": { + "tracklets": 1, + "frames": 451 + }, + "G299": { + "tracklets": 2, + "frames": 1034 + }, + "G330": { + "tracklets": 1, + "frames": 385 + }, + "G300": { + "tracklets": 1, + "frames": 76 + }, + "G420": { + "tracklets": 8, + "frames": 3482 + }, + "G421": { + "tracklets": 4, + "frames": 2663 + }, + "G419": { + "tracklets": 6, + "frames": 714 + }, + "G423": { + "tracklets": 4, + "frames": 1312 + } + }, + "outfits": { + "018": { + "cameras": { + "G328": 52, + "G424": 592, + "G339": 418 + }, + "total_frames": 1062, + "attributes": null + }, + "004": { + "cameras": { + "G506": 338, + "G341": 2904, + "G339": 701, + "G329": 1095, + "G326": 259, + "G424": 1319, + "G638": 451 + }, + "total_frames": 7067, + "attributes": null + }, + "014": { + "cameras": { + "G328": 989, + "G424": 842, + "G299": 1034, + "G329": 380, + "G330": 385, + "G326": 534, + "G300": 76, + "G420": 1672, + "G421": 2663, + "G419": 253, + "G423": 383, + "G339": 358 + }, + "total_frames": 9569, + "attributes": null + }, + "013": { + "cameras": { + "G420": 1094, + "G423": 929 + }, + "total_frames": 2023, + "attributes": null + }, + "015": { + "cameras": { + "G420": 316 + }, + "total_frames": 316, + "attributes": null + }, + "020": { + "cameras": { + "G341": 620, + "G419": 259 + }, + "total_frames": 879, + "attributes": null + }, + "016": { + "cameras": { + "G420": 400, + "G419": 202 + }, + "total_frames": 602, + "attributes": null + } + }, + "total_frames": 21518, + "total_tracklets": 56 + }, + "0087": { + "person_id": "0087", + "split": "train", + "cameras": { + "G341": { + "tracklets": 9, + "frames": 3059 + }, + "G506": { + "tracklets": 6, + "frames": 2869 + }, + "G340": { + "tracklets": 7, + "frames": 4313 + }, + "G331": { + "tracklets": 4, + "frames": 1476 + }, + "G424": { + "tracklets": 2, + "frames": 1259 + }, + "G339": { + "tracklets": 3, + "frames": 864 + }, + "G638": { + "tracklets": 2, + "frames": 689 + }, + "G419": { + "tracklets": 2, + "frames": 239 + }, + "G330": { + "tracklets": 1, + "frames": 310 + }, + "G421": { + "tracklets": 2, + "frames": 158 + }, + "G420": { + "tracklets": 6, + "frames": 1983 + }, + "G423": { + "tracklets": 3, + "frames": 615 + }, + "G299": { + "tracklets": 1, + "frames": 118 + } + }, + "outfits": { + "020": { + "cameras": { + "G341": 3059, + "G506": 2869, + "G340": 3597, + "G331": 1476 + }, + "total_frames": 11001, + "attributes": null + }, + "016": { + "cameras": { + "G340": 716, + "G424": 1259, + "G339": 864, + "G638": 688, + "G419": 205 + }, + "total_frames": 3732, + "attributes": null + }, + "008": { + "cameras": { + "G330": 310, + "G421": 158 + }, + "total_frames": 468, + "attributes": null + }, + "010": { + "cameras": { + "G420": 1983, + "G423": 230, + "G299": 118, + "G419": 34, + "G638": 1 + }, + "total_frames": 2366, + "attributes": null + }, + "011": { + "cameras": { + "G423": 385 + }, + "total_frames": 385, + "attributes": null + } + }, + "total_frames": 17952, + "total_tracklets": 48 + }, + "0051": { + "person_id": "0051", + "split": "train", + "cameras": { + "G341": { + "tracklets": 19, + "frames": 9021 + }, + "G506": { + "tracklets": 8, + "frames": 1136 + }, + "G339": { + "tracklets": 7, + "frames": 2071 + }, + "G299": { + "tracklets": 4, + "frames": 2095 + }, + "G509": { + "tracklets": 6, + "frames": 1545 + }, + "G330": { + "tracklets": 2, + "frames": 1255 + }, + "G508": { + "tracklets": 36, + "frames": 30672 + }, + "G336": { + "tracklets": 5, + "frames": 3362 + }, + "G638": { + "tracklets": 3, + "frames": 1350 + }, + "G436": { + "tracklets": 2, + "frames": 722 + }, + "G421": { + "tracklets": 6, + "frames": 3457 + }, + "G423": { + "tracklets": 2, + "frames": 62 + }, + "G331": { + "tracklets": 2, + "frames": 1738 + }, + "G424": { + "tracklets": 3, + "frames": 1449 + }, + "G420": { + "tracklets": 3, + "frames": 807 + }, + "G419": { + "tracklets": 3, + "frames": 591 + }, + "G340": { + "tracklets": 1, + "frames": 166 + } + }, + "outfits": { + "010": { + "cameras": { + "G341": 2716, + "G506": 591, + "G339": 969, + "G299": 1407, + "G509": 1545, + "G330": 1255, + "G508": 4992, + "G336": 1028, + "G638": 388, + "G436": 247, + "G421": 2930, + "G423": 62, + "G331": 1738 + }, + "total_frames": 19868, + "attributes": null + }, + "003": { + "cameras": { + "G341": 338, + "G506": 40, + "G424": 1202, + "G339": 145 + }, + "total_frames": 1725, + "attributes": null + }, + "011": { + "cameras": { + "G341": 570, + "G506": 505, + "G339": 875, + "G638": 400, + "G336": 2334, + "G420": 807, + "G419": 591, + "G436": 475, + "G508": 25680, + "G421": 527, + "G299": 688 + }, + "total_frames": 33452, + "attributes": null + }, + "015": { + "cameras": { + "G340": 166, + "G424": 247, + "G638": 562 + }, + "total_frames": 975, + "attributes": null + }, + "004": { + "cameras": { + "G341": 5397, + "G339": 82 + }, + "total_frames": 5479, + "attributes": null + } + }, + "total_frames": 61499, + "total_tracklets": 112 + }, + "0055": { + "person_id": "0055", + "split": "train", + "cameras": { + "G424": { + "tracklets": 6, + "frames": 3897 + }, + "G328": { + "tracklets": 3, + "frames": 1386 + }, + "G339": { + "tracklets": 20, + "frames": 9567 + }, + "G341": { + "tracklets": 11, + "frames": 7079 + }, + "G506": { + "tracklets": 3, + "frames": 642 + }, + "G420": { + "tracklets": 7, + "frames": 2245 + }, + "G299": { + "tracklets": 2, + "frames": 1816 + }, + "G300": { + "tracklets": 2, + "frames": 392 + }, + "G419": { + "tracklets": 4, + "frames": 613 + }, + "G423": { + "tracklets": 1, + "frames": 124 + }, + "G340": { + "tracklets": 8, + "frames": 4717 + }, + "G329": { + "tracklets": 2, + "frames": 536 + }, + "G326": { + "tracklets": 2, + "frames": 239 + } + }, + "outfits": { + "010": { + "cameras": { + "G424": 752, + "G328": 691, + "G339": 968 + }, + "total_frames": 2411, + "attributes": null + }, + "007": { + "cameras": { + "G341": 5822, + "G506": 202, + "G328": 695, + "G424": 871, + "G339": 4004, + "G420": 2245, + "G299": 1816, + "G300": 392, + "G419": 444, + "G423": 124, + "G340": 220 + }, + "total_frames": 16835, + "attributes": null + }, + "021": { + "cameras": { + "G341": 87, + "G424": 601 + }, + "total_frames": 688, + "attributes": null + }, + "004": { + "cameras": { + "G339": 4595, + "G506": 440, + "G424": 1673, + "G340": 4497, + "G341": 1170, + "G329": 536, + "G326": 239 + }, + "total_frames": 13150, + "attributes": null + }, + "022": { + "cameras": { + "G419": 169 + }, + "total_frames": 169, + "attributes": null + } + }, + "total_frames": 33253, + "total_tracklets": 71 + }, + "0039": { + "person_id": "0039", + "split": "train", + "cameras": { + "G506": { + "tracklets": 9, + "frames": 4839 + }, + "G328": { + "tracklets": 2, + "frames": 1277 + }, + "G424": { + "tracklets": 4, + "frames": 2140 + }, + "G341": { + "tracklets": 14, + "frames": 9614 + }, + "G505": { + "tracklets": 3, + "frames": 1106 + }, + "G339": { + "tracklets": 11, + "frames": 5234 + }, + "G423": { + "tracklets": 6, + "frames": 3604 + }, + "G419": { + "tracklets": 6, + "frames": 1449 + }, + "G420": { + "tracklets": 6, + "frames": 2337 + }, + "G421": { + "tracklets": 5, + "frames": 1460 + }, + "G299": { + "tracklets": 1, + "frames": 763 + }, + "G638": { + "tracklets": 4, + "frames": 1294 + }, + "G340": { + "tracklets": 2, + "frames": 443 + }, + "G326": { + "tracklets": 2, + "frames": 335 + }, + "G331": { + "tracklets": 10, + "frames": 9004 + }, + "G329": { + "tracklets": 1, + "frames": 601 + } + }, + "outfits": { + "014": { + "cameras": { + "G506": 4531, + "G328": 1277, + "G424": 815, + "G341": 9067, + "G505": 73, + "G339": 4820, + "G423": 3604, + "G419": 1328, + "G420": 2162, + "G421": 1460, + "G299": 763, + "G638": 1294 + }, + "total_frames": 31194, + "attributes": null + }, + "019": { + "cameras": { + "G340": 443, + "G424": 1325, + "G420": 175, + "G419": 121 + }, + "total_frames": 2064, + "attributes": null + }, + "001": { + "cameras": { + "G506": 142, + "G341": 547, + "G326": 335, + "G331": 9004, + "G339": 414 + }, + "total_frames": 10442, + "attributes": null + }, + "003": { + "cameras": { + "G505": 1033, + "G506": 166, + "G329": 601 + }, + "total_frames": 1800, + "attributes": null + } + }, + "total_frames": 45500, + "total_tracklets": 86 + }, + "0024": { + "person_id": "0024", + "split": "train", + "cameras": { + "G506": { + "tracklets": 6, + "frames": 861 + }, + "G341": { + "tracklets": 6, + "frames": 2067 + }, + "G424": { + "tracklets": 3, + "frames": 2004 + }, + "G340": { + "tracklets": 5, + "frames": 2527 + }, + "G339": { + "tracklets": 9, + "frames": 2811 + }, + "G331": { + "tracklets": 3, + "frames": 2875 + }, + "G328": { + "tracklets": 2, + "frames": 659 + }, + "G326": { + "tracklets": 11, + "frames": 1769 + }, + "G329": { + "tracklets": 7, + "frames": 1723 + }, + "G638": { + "tracklets": 2, + "frames": 362 + }, + "G420": { + "tracklets": 5, + "frames": 3038 + }, + "G419": { + "tracklets": 4, + "frames": 1476 + }, + "G423": { + "tracklets": 8, + "frames": 4468 + }, + "G299": { + "tracklets": 19, + "frames": 16312 + }, + "G330": { + "tracklets": 1, + "frames": 715 + }, + "G505": { + "tracklets": 2, + "frames": 659 + } + }, + "outfits": { + "020": { + "cameras": { + "G506": 224, + "G341": 1529, + "G424": 760, + "G340": 439, + "G339": 373, + "G331": 2875 + }, + "total_frames": 6200, + "attributes": null + }, + "015": { + "cameras": { + "G328": 659, + "G339": 1459, + "G424": 349, + "G326": 1162, + "G329": 1313, + "G638": 55, + "G420": 25, + "G419": 1186, + "G423": 348, + "G299": 253 + }, + "total_frames": 6809, + "attributes": null + }, + "005": { + "cameras": { + "G506": 637, + "G340": 2088, + "G341": 538, + "G330": 715, + "G505": 659, + "G299": 13355, + "G420": 3013, + "G638": 307, + "G423": 4120 + }, + "total_frames": 25432, + "attributes": null + }, + "011": { + "cameras": { + "G424": 895, + "G339": 319, + "G419": 290 + }, + "total_frames": 1504, + "attributes": null + }, + "012": { + "cameras": { + "G339": 660, + "G326": 607, + "G329": 410 + }, + "total_frames": 1677, + "attributes": null + }, + "014": { + "cameras": { + "G299": 2704 + }, + "total_frames": 2704, + "attributes": null + } + }, + "total_frames": 44326, + "total_tracklets": 93 + }, + "0011": { + "person_id": "0011", + "split": "train", + "cameras": { + "G340": { + "tracklets": 3, + "frames": 1272 + }, + "G341": { + "tracklets": 15, + "frames": 11876 + }, + "G421": { + "tracklets": 9, + "frames": 9000 + }, + "G339": { + "tracklets": 6, + "frames": 2175 + }, + "G506": { + "tracklets": 13, + "frames": 9133 + }, + "G299": { + "tracklets": 5, + "frames": 4523 + }, + "G420": { + "tracklets": 5, + "frames": 1856 + }, + "G419": { + "tracklets": 2, + "frames": 185 + }, + "G300": { + "tracklets": 1, + "frames": 310 + }, + "G424": { + "tracklets": 1, + "frames": 625 + } + }, + "outfits": { + "007": { + "cameras": { + "G340": 485, + "G341": 776, + "G421": 9000 + }, + "total_frames": 10261, + "attributes": null + }, + "003": { + "cameras": { + "G339": 1621, + "G506": 9133, + "G341": 11100, + "G340": 787 + }, + "total_frames": 22641, + "attributes": null + }, + "009": { + "cameras": { + "G299": 4523, + "G420": 1759, + "G419": 185, + "G300": 310 + }, + "total_frames": 6777, + "attributes": null + }, + "015": { + "cameras": { + "G339": 554, + "G424": 625 + }, + "total_frames": 1179, + "attributes": null + }, + "011": { + "cameras": { + "G420": 97 + }, + "total_frames": 97, + "attributes": null + } + }, + "total_frames": 40955, + "total_tracklets": 60 + }, + "0074": { + "person_id": "0074", + "split": "train", + "cameras": { + "G328": { + "tracklets": 1, + "frames": 601 + }, + "G339": { + "tracklets": 3, + "frames": 461 + }, + "G424": { + "tracklets": 1, + "frames": 448 + }, + "G299": { + "tracklets": 16, + "frames": 12785 + }, + "G330": { + "tracklets": 15, + "frames": 14306 + }, + "G638": { + "tracklets": 17, + "frames": 12037 + }, + "G421": { + "tracklets": 28, + "frames": 23291 + }, + "G423": { + "tracklets": 4, + "frames": 2134 + }, + "G419": { + "tracklets": 4, + "frames": 1108 + }, + "G420": { + "tracklets": 3, + "frames": 1482 + }, + "G326": { + "tracklets": 1, + "frames": 403 + } + }, + "outfits": { + "014": { + "cameras": { + "G328": 601, + "G339": 1 + }, + "total_frames": 602, + "attributes": { + "upper_body_color": "orange", + "lower_body_color": "yellow", + "avg_height_px": 117, + "avg_width_px": 46, + "n_crops_analyzed": 3 + } + }, + "009": { + "cameras": { + "G424": 448, + "G339": 460, + "G299": 12785, + "G330": 14306, + "G638": 12037, + "G421": 21346, + "G423": 301, + "G419": 488, + "G420": 1058, + "G326": 403 + }, + "total_frames": 63632, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "gray", + "avg_height_px": 179, + "avg_width_px": 71, + "n_crops_analyzed": 3 + } + }, + "004": { + "cameras": { + "G419": 620, + "G421": 1945, + "G423": 1833, + "G420": 424 + }, + "total_frames": 4822, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "green", + "avg_height_px": 280, + "avg_width_px": 176, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 69056, + "total_tracklets": 93, + "global_attributes": { + "most_common_upper_color": "green", + "most_common_lower_color": "green", + "upper_color_distribution": { + "orange": 1, + "blue": 2, + "green": 5, + "gray": 1 + }, + "lower_color_distribution": { + "yellow": 1, + "blue": 2, + "green": 4, + "gray": 1, + "white": 1 + }, + "avg_crop_height": 192, + "n_outfits": 3, + "n_cameras": 11 + } + }, + "0043": { + "person_id": "0043", + "split": "train", + "cameras": { + "G424": { + "tracklets": 4, + "frames": 760 + }, + "G339": { + "tracklets": 10, + "frames": 3448 + }, + "G638": { + "tracklets": 3, + "frames": 2003 + }, + "G419": { + "tracklets": 2, + "frames": 701 + }, + "G421": { + "tracklets": 3, + "frames": 243 + }, + "G508": { + "tracklets": 15, + "frames": 11902 + }, + "G420": { + "tracklets": 2, + "frames": 1282 + }, + "G341": { + "tracklets": 2, + "frames": 308 + }, + "G506": { + "tracklets": 1, + "frames": 160 + }, + "G299": { + "tracklets": 3, + "frames": 1454 + }, + "G330": { + "tracklets": 12, + "frames": 10707 + } + }, + "outfits": { + "011": { + "cameras": { + "G424": 480, + "G339": 2030, + "G638": 2003, + "G419": 701, + "G421": 243 + }, + "total_frames": 5457, + "attributes": null + }, + "016": { + "cameras": { + "G424": 280 + }, + "total_frames": 280, + "attributes": null + }, + "002": { + "cameras": { + "G339": 1418, + "G508": 11902, + "G420": 1282, + "G341": 308, + "G506": 160 + }, + "total_frames": 15070, + "attributes": null + }, + "012": { + "cameras": { + "G299": 1454, + "G330": 10707 + }, + "total_frames": 12161, + "attributes": null + } + }, + "total_frames": 32968, + "total_tracklets": 57 + }, + "0048": { + "person_id": "0048", + "split": "train", + "cameras": { + "G341": { + "tracklets": 7, + "frames": 1735 + }, + "G506": { + "tracklets": 5, + "frames": 1172 + }, + "G339": { + "tracklets": 9, + "frames": 3506 + }, + "G505": { + "tracklets": 1, + "frames": 427 + }, + "G424": { + "tracklets": 2, + "frames": 1412 + }, + "G340": { + "tracklets": 2, + "frames": 440 + }, + "G328": { + "tracklets": 1, + "frames": 4 + }, + "G423": { + "tracklets": 1, + "frames": 565 + }, + "G299": { + "tracklets": 14, + "frames": 10498 + }, + "G330": { + "tracklets": 18, + "frames": 17360 + }, + "G420": { + "tracklets": 4, + "frames": 1816 + }, + "G421": { + "tracklets": 1, + "frames": 595 + }, + "G419": { + "tracklets": 3, + "frames": 885 + } + }, + "outfits": { + "004": { + "cameras": { + "G341": 1413, + "G506": 1114, + "G339": 2508, + "G505": 427 + }, + "total_frames": 5462, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 96, + "avg_width_px": 76, + "n_crops_analyzed": 3 + } + }, + "019": { + "cameras": { + "G424": 1412, + "G340": 440, + "G328": 4, + "G341": 322, + "G339": 998 + }, + "total_frames": 3176, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 124, + "avg_width_px": 71, + "n_crops_analyzed": 3 + } + }, + "023": { + "cameras": { + "G506": 58 + }, + "total_frames": 58, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "green", + "avg_height_px": 88, + "avg_width_px": 38, + "n_crops_analyzed": 3 + } + }, + "013": { + "cameras": { + "G423": 565, + "G299": 9468, + "G330": 17360 + }, + "total_frames": 27393, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 157, + "avg_width_px": 72, + "n_crops_analyzed": 3 + } + }, + "014": { + "cameras": { + "G420": 1816, + "G421": 595, + "G419": 885, + "G299": 1030 + }, + "total_frames": 4326, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 303, + "avg_width_px": 132, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 40415, + "total_tracklets": 68, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "blue": 8, + "green": 5, + "purple": 1, + "gray": 1 + }, + "lower_color_distribution": { + "black": 2, + "blue": 8, + "gray": 1, + "green": 4 + }, + "avg_crop_height": 154, + "n_outfits": 5, + "n_cameras": 13 + } + }, + "0066": { + "person_id": "0066", + "split": "train", + "cameras": { + "G341": { + "tracklets": 2, + "frames": 842 + }, + "G328": { + "tracklets": 3, + "frames": 1814 + }, + "G506": { + "tracklets": 3, + "frames": 1386 + }, + "G421": { + "tracklets": 2, + "frames": 314 + }, + "G336": { + "tracklets": 2, + "frames": 329 + }, + "G331": { + "tracklets": 19, + "frames": 16583 + }, + "G638": { + "tracklets": 1, + "frames": 796 + }, + "G339": { + "tracklets": 3, + "frames": 1077 + }, + "G419": { + "tracklets": 3, + "frames": 425 + }, + "G508": { + "tracklets": 1, + "frames": 511 + }, + "G300": { + "tracklets": 1, + "frames": 85 + }, + "G340": { + "tracklets": 2, + "frames": 38 + }, + "G424": { + "tracklets": 1, + "frames": 685 + }, + "G420": { + "tracklets": 3, + "frames": 2090 + }, + "G329": { + "tracklets": 1, + "frames": 283 + }, + "G330": { + "tracklets": 10, + "frames": 9007 + } + }, + "outfits": { + "013": { + "cameras": { + "G341": 487, + "G328": 712, + "G506": 751, + "G421": 314, + "G336": 329, + "G331": 15544, + "G638": 796, + "G339": 478, + "G419": 292, + "G508": 511, + "G300": 85 + }, + "total_frames": 20299, + "attributes": null + }, + "017": { + "cameras": { + "G340": 38, + "G424": 685, + "G339": 328 + }, + "total_frames": 1051, + "attributes": null + }, + "015": { + "cameras": { + "G328": 1102 + }, + "total_frames": 1102, + "attributes": null + }, + "004": { + "cameras": { + "G506": 635, + "G341": 355, + "G339": 271, + "G420": 1666, + "G329": 283, + "G331": 1039 + }, + "total_frames": 4249, + "attributes": null + }, + "012": { + "cameras": { + "G330": 9007 + }, + "total_frames": 9007, + "attributes": null + }, + "021": { + "cameras": { + "G419": 133, + "G420": 424 + }, + "total_frames": 557, + "attributes": null + } + }, + "total_frames": 36265, + "total_tracklets": 57 + }, + "0102": { + "person_id": "0102", + "split": "train", + "cameras": { + "G341": { + "tracklets": 2, + "frames": 809 + }, + "G424": { + "tracklets": 4, + "frames": 2269 + }, + "G638": { + "tracklets": 14, + "frames": 10389 + }, + "G420": { + "tracklets": 7, + "frames": 2551 + }, + "G421": { + "tracklets": 25, + "frames": 21316 + }, + "G419": { + "tracklets": 2, + "frames": 449 + }, + "G326": { + "tracklets": 2, + "frames": 389 + }, + "G339": { + "tracklets": 3, + "frames": 839 + }, + "G299": { + "tracklets": 1, + "frames": 550 + }, + "G329": { + "tracklets": 2, + "frames": 515 + }, + "G340": { + "tracklets": 1, + "frames": 334 + } + }, + "outfits": { + "021": { + "cameras": { + "G341": 775 + }, + "total_frames": 775, + "attributes": null + }, + "014": { + "cameras": { + "G424": 691, + "G638": 8941, + "G420": 1681, + "G421": 21316, + "G419": 449, + "G326": 220, + "G339": 186, + "G299": 550 + }, + "total_frames": 34034, + "attributes": null + }, + "006": { + "cameras": { + "G424": 1578, + "G339": 205, + "G329": 515, + "G326": 169, + "G638": 934, + "G341": 34 + }, + "total_frames": 3435, + "attributes": null + }, + "018": { + "cameras": { + "G339": 448, + "G638": 514, + "G340": 334 + }, + "total_frames": 1296, + "attributes": null + }, + "016": { + "cameras": { + "G420": 870 + }, + "total_frames": 870, + "attributes": null + } + }, + "total_frames": 40410, + "total_tracklets": 63 + }, + "0005": { + "person_id": "0005", + "split": "train", + "cameras": { + "G328": { + "tracklets": 3, + "frames": 2394 + }, + "G424": { + "tracklets": 8, + "frames": 3418 + }, + "G419": { + "tracklets": 3, + "frames": 522 + }, + "G638": { + "tracklets": 7, + "frames": 2853 + }, + "G300": { + "tracklets": 1, + "frames": 415 + }, + "G421": { + "tracklets": 3, + "frames": 891 + }, + "G420": { + "tracklets": 3, + "frames": 660 + }, + "G339": { + "tracklets": 7, + "frames": 2763 + }, + "G340": { + "tracklets": 4, + "frames": 2855 + }, + "G505": { + "tracklets": 3, + "frames": 1433 + }, + "G506": { + "tracklets": 2, + "frames": 149 + }, + "G341": { + "tracklets": 1, + "frames": 265 + } + }, + "outfits": { + "013": { + "cameras": { + "G328": 2394, + "G424": 2961, + "G419": 522, + "G638": 1313, + "G300": 415, + "G421": 891, + "G420": 660, + "G339": 337 + }, + "total_frames": 9493, + "attributes": null + }, + "025": { + "cameras": { + "G424": 457, + "G339": 148 + }, + "total_frames": 605, + "attributes": null + }, + "005": { + "cameras": { + "G340": 2855, + "G505": 1433, + "G339": 2278, + "G506": 149, + "G341": 265 + }, + "total_frames": 6980, + "attributes": null + }, + "020": { + "cameras": { + "G638": 1540 + }, + "total_frames": 1540, + "attributes": null + } + }, + "total_frames": 18618, + "total_tracklets": 45 + }, + "0063": { + "person_id": "0063", + "split": "train", + "cameras": { + "G341": { + "tracklets": 10, + "frames": 1678 + }, + "G508": { + "tracklets": 2, + "frames": 1336 + }, + "G328": { + "tracklets": 2, + "frames": 1280 + }, + "G420": { + "tracklets": 4, + "frames": 2248 + }, + "G339": { + "tracklets": 10, + "frames": 4582 + }, + "G326": { + "tracklets": 4, + "frames": 727 + }, + "G421": { + "tracklets": 2, + "frames": 1066 + }, + "G329": { + "tracklets": 3, + "frames": 684 + }, + "G419": { + "tracklets": 2, + "frames": 398 + }, + "G505": { + "tracklets": 4, + "frames": 1260 + }, + "G506": { + "tracklets": 4, + "frames": 892 + }, + "G340": { + "tracklets": 5, + "frames": 4103 + }, + "G330": { + "tracklets": 1, + "frames": 55 + }, + "G299": { + "tracklets": 1, + "frames": 178 + } + }, + "outfits": { + "022": { + "cameras": { + "G341": 340, + "G508": 1336 + }, + "total_frames": 1676, + "attributes": null + }, + "011": { + "cameras": { + "G328": 1280, + "G420": 2248, + "G339": 439, + "G326": 727, + "G421": 1066, + "G329": 684, + "G419": 398 + }, + "total_frames": 6842, + "attributes": null + }, + "004": { + "cameras": { + "G505": 1260, + "G506": 892, + "G341": 1338, + "G339": 4143, + "G340": 4103 + }, + "total_frames": 11736, + "attributes": null + }, + "013": { + "cameras": { + "G330": 55, + "G299": 178 + }, + "total_frames": 233, + "attributes": null + } + }, + "total_frames": 20487, + "total_tracklets": 54 + }, + "0079": { + "person_id": "0079", + "split": "train", + "cameras": { + "G506": { + "tracklets": 3, + "frames": 444 + }, + "G341": { + "tracklets": 5, + "frames": 3734 + }, + "G339": { + "tracklets": 6, + "frames": 2136 + }, + "G340": { + "tracklets": 2, + "frames": 575 + }, + "G424": { + "tracklets": 3, + "frames": 1977 + }, + "G328": { + "tracklets": 3, + "frames": 1746 + }, + "G420": { + "tracklets": 5, + "frames": 2105 + }, + "G419": { + "tracklets": 3, + "frames": 777 + }, + "G299": { + "tracklets": 4, + "frames": 2940 + }, + "G423": { + "tracklets": 1, + "frames": 163 + }, + "G300": { + "tracklets": 1, + "frames": 331 + } + }, + "outfits": { + "004": { + "cameras": { + "G506": 444, + "G341": 3734, + "G339": 1109, + "G340": 400 + }, + "total_frames": 5687, + "attributes": null + }, + "019": { + "cameras": { + "G424": 1286, + "G328": 1746, + "G339": 459 + }, + "total_frames": 3491, + "attributes": null + }, + "021": { + "cameras": { + "G340": 175, + "G424": 691, + "G339": 568 + }, + "total_frames": 1434, + "attributes": null + }, + "016": { + "cameras": { + "G420": 2105, + "G419": 777, + "G299": 2135, + "G423": 163, + "G300": 331 + }, + "total_frames": 5511, + "attributes": null + }, + "015": { + "cameras": { + "G299": 805 + }, + "total_frames": 805, + "attributes": null + } + }, + "total_frames": 16928, + "total_tracklets": 36 + }, + "0106": { + "person_id": "0106", + "split": "train", + "cameras": { + "G328": { + "tracklets": 6, + "frames": 3960 + }, + "G424": { + "tracklets": 7, + "frames": 5404 + }, + "G339": { + "tracklets": 18, + "frames": 10401 + }, + "G420": { + "tracklets": 9, + "frames": 3147 + }, + "G638": { + "tracklets": 6, + "frames": 2829 + }, + "G300": { + "tracklets": 2, + "frames": 302 + }, + "G421": { + "tracklets": 15, + "frames": 9855 + }, + "G330": { + "tracklets": 23, + "frames": 18830 + }, + "G341": { + "tracklets": 6, + "frames": 4318 + }, + "G506": { + "tracklets": 5, + "frames": 3555 + }, + "G505": { + "tracklets": 7, + "frames": 6619 + }, + "G340": { + "tracklets": 2, + "frames": 1042 + }, + "G419": { + "tracklets": 7, + "frames": 1483 + }, + "G423": { + "tracklets": 2, + "frames": 257 + }, + "G299": { + "tracklets": 27, + "frames": 24373 + } + }, + "outfits": { + "015": { + "cameras": { + "G328": 1120, + "G424": 3449, + "G339": 299, + "G420": 590, + "G638": 1482, + "G300": 302, + "G421": 345, + "G330": 181 + }, + "total_frames": 7768, + "attributes": null + }, + "005": { + "cameras": { + "G341": 4318, + "G506": 3555, + "G421": 9510, + "G505": 6619 + }, + "total_frames": 24002, + "attributes": null + }, + "029": { + "cameras": { + "G340": 1042, + "G339": 340 + }, + "total_frames": 1382, + "attributes": null + }, + "022": { + "cameras": { + "G424": 808 + }, + "total_frames": 808, + "attributes": null + }, + "024": { + "cameras": { + "G339": 1292, + "G419": 1136, + "G330": 544, + "G328": 2840, + "G424": 1147, + "G420": 1862, + "G423": 257, + "G299": 736, + "G638": 112 + }, + "total_frames": 9926, + "attributes": null + }, + "021": { + "cameras": { + "G339": 8470, + "G638": 430 + }, + "total_frames": 8900, + "attributes": null + }, + "014": { + "cameras": { + "G299": 23637, + "G330": 18105, + "G638": 805 + }, + "total_frames": 42547, + "attributes": null + }, + "018": { + "cameras": { + "G419": 347, + "G420": 695 + }, + "total_frames": 1042, + "attributes": null + } + }, + "total_frames": 96375, + "total_tracklets": 142 + }, + "0061": { + "person_id": "0061", + "split": "train", + "cameras": { + "G341": { + "tracklets": 4, + "frames": 775 + }, + "G506": { + "tracklets": 3, + "frames": 606 + }, + "G328": { + "tracklets": 2, + "frames": 1487 + }, + "G420": { + "tracklets": 5, + "frames": 1585 + }, + "G326": { + "tracklets": 4, + "frames": 1369 + }, + "G329": { + "tracklets": 3, + "frames": 711 + }, + "G419": { + "tracklets": 1, + "frames": 55 + }, + "G339": { + "tracklets": 4, + "frames": 922 + }, + "G638": { + "tracklets": 1, + "frames": 445 + }, + "G505": { + "tracklets": 1, + "frames": 295 + } + }, + "outfits": { + "026": { + "cameras": { + "G341": 250, + "G506": 40 + }, + "total_frames": 290, + "attributes": null + }, + "012": { + "cameras": { + "G328": 1487, + "G420": 1585, + "G326": 1369, + "G329": 711, + "G419": 55, + "G339": 284 + }, + "total_frames": 5491, + "attributes": null + }, + "020": { + "cameras": { + "G339": 286, + "G638": 445 + }, + "total_frames": 731, + "attributes": null + }, + "002": { + "cameras": { + "G341": 525, + "G339": 352, + "G506": 566, + "G505": 295 + }, + "total_frames": 1738, + "attributes": null + } + }, + "total_frames": 8250, + "total_tracklets": 28 + }, + "0065": { + "person_id": "0065", + "split": "train", + "cameras": { + "G339": { + "tracklets": 5, + "frames": 1337 + }, + "G299": { + "tracklets": 19, + "frames": 17813 + }, + "G638": { + "tracklets": 5, + "frames": 1999 + }, + "G421": { + "tracklets": 14, + "frames": 10911 + }, + "G419": { + "tracklets": 6, + "frames": 1398 + }, + "G420": { + "tracklets": 4, + "frames": 2163 + }, + "G330": { + "tracklets": 14, + "frames": 11734 + }, + "G424": { + "tracklets": 3, + "frames": 2159 + }, + "G423": { + "tracklets": 1, + "frames": 106 + } + }, + "outfits": { + "012": { + "cameras": { + "G339": 765, + "G299": 1618, + "G638": 1821, + "G421": 1925, + "G419": 837, + "G420": 466 + }, + "total_frames": 7432, + "attributes": null + }, + "013": { + "cameras": { + "G339": 454, + "G419": 298 + }, + "total_frames": 752, + "attributes": null + }, + "014": { + "cameras": { + "G330": 9314, + "G299": 14505 + }, + "total_frames": 23819, + "attributes": null + }, + "004": { + "cameras": { + "G424": 2159, + "G299": 1690, + "G330": 2420, + "G420": 1697, + "G419": 263, + "G423": 106 + }, + "total_frames": 8335, + "attributes": null + }, + "021": { + "cameras": { + "G421": 8986 + }, + "total_frames": 8986, + "attributes": null + }, + "022": { + "cameras": { + "G339": 118 + }, + "total_frames": 118, + "attributes": null + }, + "018": { + "cameras": { + "G638": 178 + }, + "total_frames": 178, + "attributes": null + } + }, + "total_frames": 49620, + "total_tracklets": 71 + }, + "0026": { + "person_id": "0026", + "split": "train", + "cameras": { + "G340": { + "tracklets": 1, + "frames": 166 + }, + "G420": { + "tracklets": 7, + "frames": 2233 + }, + "G423": { + "tracklets": 2, + "frames": 47 + }, + "G341": { + "tracklets": 1, + "frames": 421 + }, + "G506": { + "tracklets": 1, + "frames": 235 + }, + "G505": { + "tracklets": 3, + "frames": 1517 + }, + "G331": { + "tracklets": 9, + "frames": 8467 + }, + "G326": { + "tracklets": 2, + "frames": 554 + }, + "G329": { + "tracklets": 1, + "frames": 640 + }, + "G299": { + "tracklets": 3, + "frames": 1556 + }, + "G421": { + "tracklets": 11, + "frames": 10231 + }, + "G419": { + "tracklets": 1, + "frames": 43 + } + }, + "outfits": { + "018": { + "cameras": { + "G340": 166, + "G420": 271, + "G423": 1 + }, + "total_frames": 438, + "attributes": null + }, + "001": { + "cameras": { + "G341": 421, + "G506": 235, + "G505": 1517, + "G331": 8467, + "G326": 554, + "G329": 640 + }, + "total_frames": 11834, + "attributes": null + }, + "015": { + "cameras": { + "G420": 1962, + "G299": 1556, + "G421": 10231, + "G419": 43, + "G423": 46 + }, + "total_frames": 13838, + "attributes": null + } + }, + "total_frames": 26110, + "total_tracklets": 42 + }, + "0053": { + "person_id": "0053", + "split": "train", + "cameras": { + "G506": { + "tracklets": 4, + "frames": 778 + }, + "G339": { + "tracklets": 5, + "frames": 1562 + }, + "G508": { + "tracklets": 3, + "frames": 1647 + }, + "G341": { + "tracklets": 3, + "frames": 731 + }, + "G329": { + "tracklets": 5, + "frames": 1397 + }, + "G420": { + "tracklets": 5, + "frames": 2105 + }, + "G423": { + "tracklets": 1, + "frames": 115 + }, + "G326": { + "tracklets": 6, + "frames": 774 + }, + "G299": { + "tracklets": 1, + "frames": 661 + }, + "G419": { + "tracklets": 2, + "frames": 314 + }, + "G421": { + "tracklets": 1, + "frames": 163 + }, + "G505": { + "tracklets": 1, + "frames": 412 + }, + "G331": { + "tracklets": 2, + "frames": 1390 + }, + "G638": { + "tracklets": 1, + "frames": 484 + }, + "G424": { + "tracklets": 2, + "frames": 1403 + } + }, + "outfits": { + "019": { + "cameras": { + "G506": 46, + "G339": 295, + "G508": 478 + }, + "total_frames": 819, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "green", + "avg_height_px": 103, + "avg_width_px": 42, + "n_crops_analyzed": 3 + } + }, + "012": { + "cameras": { + "G341": 545, + "G506": 193, + "G329": 1397, + "G420": 2105, + "G339": 1267, + "G423": 115, + "G326": 774, + "G299": 661, + "G508": 1169, + "G419": 314, + "G421": 163 + }, + "total_frames": 8703, + "attributes": { + "upper_body_color": "black", + "lower_body_color": "blue", + "avg_height_px": 224, + "avg_width_px": 105, + "n_crops_analyzed": 3 + } + }, + "004": { + "cameras": { + "G506": 539, + "G505": 412, + "G341": 186, + "G331": 1390, + "G638": 484 + }, + "total_frames": 3011, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 213, + "avg_width_px": 154, + "n_crops_analyzed": 3 + } + }, + "016": { + "cameras": { + "G424": 1403 + }, + "total_frames": 1403, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 154, + "avg_width_px": 83, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 13936, + "total_tracklets": 42, + "global_attributes": { + "most_common_upper_color": "green", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "white": 1, + "green": 4, + "black": 2, + "blue": 3, + "gray": 1, + "purple": 1 + }, + "lower_color_distribution": { + "blue": 8, + "green": 2, + "gray": 1, + "black": 1 + }, + "avg_crop_height": 174, + "n_outfits": 4, + "n_cameras": 15 + } + }, + "0028": { + "person_id": "0028", + "split": "train", + "cameras": { + "G340": { + "tracklets": 1, + "frames": 334 + }, + "G420": { + "tracklets": 4, + "frames": 1444 + }, + "G299": { + "tracklets": 15, + "frames": 13667 + }, + "G330": { + "tracklets": 19, + "frames": 17564 + }, + "G341": { + "tracklets": 2, + "frames": 670 + }, + "G508": { + "tracklets": 6, + "frames": 4898 + }, + "G506": { + "tracklets": 1, + "frames": 43 + }, + "G421": { + "tracklets": 7, + "frames": 6109 + } + }, + "outfits": { + "016": { + "cameras": { + "G340": 334, + "G420": 415 + }, + "total_frames": 749, + "attributes": null + }, + "010": { + "cameras": { + "G299": 13667, + "G330": 17564 + }, + "total_frames": 31231, + "attributes": null + }, + "011": { + "cameras": { + "G420": 1029 + }, + "total_frames": 1029, + "attributes": null + }, + "002": { + "cameras": { + "G341": 670, + "G508": 4898, + "G506": 43, + "G421": 6109 + }, + "total_frames": 11720, + "attributes": null + } + }, + "total_frames": 44729, + "total_tracklets": 55 + }, + "0100": { + "person_id": "0100", + "split": "train", + "cameras": { + "G339": { + "tracklets": 7, + "frames": 2682 + }, + "G421": { + "tracklets": 8, + "frames": 2003 + }, + "G506": { + "tracklets": 5, + "frames": 1193 + }, + "G340": { + "tracklets": 2, + "frames": 1741 + }, + "G328": { + "tracklets": 1, + "frames": 319 + }, + "G424": { + "tracklets": 3, + "frames": 1430 + }, + "G419": { + "tracklets": 5, + "frames": 1088 + }, + "G420": { + "tracklets": 6, + "frames": 2346 + }, + "G299": { + "tracklets": 2, + "frames": 1120 + }, + "G638": { + "tracklets": 9, + "frames": 7477 + }, + "G336": { + "tracklets": 2, + "frames": 1156 + }, + "G505": { + "tracklets": 3, + "frames": 1047 + }, + "G341": { + "tracklets": 3, + "frames": 329 + }, + "G331": { + "tracklets": 2, + "frames": 1390 + } + }, + "outfits": { + "020": { + "cameras": { + "G339": 704, + "G421": 22 + }, + "total_frames": 726, + "attributes": null + }, + "023": { + "cameras": { + "G506": 724, + "G340": 1741 + }, + "total_frames": 2465, + "attributes": null + }, + "018": { + "cameras": { + "G328": 319, + "G339": 912, + "G424": 1430, + "G419": 1088, + "G420": 2346, + "G299": 1120, + "G421": 1981, + "G638": 1557, + "G336": 1156 + }, + "total_frames": 11909, + "attributes": null + }, + "009": { + "cameras": { + "G505": 1047, + "G341": 329, + "G339": 1066, + "G506": 469, + "G638": 5920, + "G331": 1390 + }, + "total_frames": 10221, + "attributes": null + } + }, + "total_frames": 25321, + "total_tracklets": 58 + }, + "0013": { + "person_id": "0013", + "split": "train", + "cameras": { + "G424": { + "tracklets": 2, + "frames": 920 + }, + "G339": { + "tracklets": 5, + "frames": 1439 + }, + "G421": { + "tracklets": 13, + "frames": 5807 + }, + "G419": { + "tracklets": 8, + "frames": 1403 + }, + "G340": { + "tracklets": 1, + "frames": 553 + }, + "G506": { + "tracklets": 3, + "frames": 804 + }, + "G505": { + "tracklets": 4, + "frames": 1149 + }, + "G341": { + "tracklets": 1, + "frames": 187 + }, + "G508": { + "tracklets": 28, + "frames": 26562 + }, + "G638": { + "tracklets": 5, + "frames": 2294 + }, + "G420": { + "tracklets": 6, + "frames": 2313 + }, + "G423": { + "tracklets": 1, + "frames": 40 + } + }, + "outfits": { + "014": { + "cameras": { + "G424": 920, + "G339": 376, + "G421": 3777, + "G419": 223 + }, + "total_frames": 5296, + "attributes": null + }, + "004": { + "cameras": { + "G340": 553, + "G506": 530, + "G505": 1149, + "G339": 31 + }, + "total_frames": 2263, + "attributes": null + }, + "016": { + "cameras": { + "G339": 881 + }, + "total_frames": 881, + "attributes": null + }, + "006": { + "cameras": { + "G506": 274, + "G341": 187, + "G339": 151, + "G508": 508 + }, + "total_frames": 1120, + "attributes": null + }, + "012": { + "cameras": { + "G421": 2030, + "G419": 1038, + "G638": 2294, + "G420": 2313, + "G423": 40 + }, + "total_frames": 7715, + "attributes": null + }, + "020": { + "cameras": { + "G508": 26054 + }, + "total_frames": 26054, + "attributes": null + }, + "011": { + "cameras": { + "G419": 142 + }, + "total_frames": 142, + "attributes": null + } + }, + "total_frames": 43471, + "total_tracklets": 77 + }, + "0075": { + "person_id": "0075", + "split": "train", + "cameras": { + "G424": { + "tracklets": 4, + "frames": 2606 + }, + "G420": { + "tracklets": 4, + "frames": 1654 + }, + "G299": { + "tracklets": 2, + "frames": 1027 + }, + "G419": { + "tracklets": 4, + "frames": 847 + }, + "G421": { + "tracklets": 18, + "frames": 13780 + }, + "G339": { + "tracklets": 6, + "frames": 1758 + }, + "G638": { + "tracklets": 4, + "frames": 1770 + }, + "G423": { + "tracklets": 2, + "frames": 176 + }, + "G341": { + "tracklets": 5, + "frames": 3248 + }, + "G506": { + "tracklets": 5, + "frames": 3108 + }, + "G340": { + "tracklets": 2, + "frames": 584 + }, + "G505": { + "tracklets": 2, + "frames": 1118 + } + }, + "outfits": { + "017": { + "cameras": { + "G424": 2606, + "G420": 508, + "G299": 1027, + "G419": 847, + "G421": 2002, + "G339": 647, + "G638": 764, + "G423": 176 + }, + "total_frames": 8577, + "attributes": null + }, + "005": { + "cameras": { + "G341": 3248, + "G506": 3108, + "G340": 584, + "G505": 1118, + "G339": 267, + "G421": 11778 + }, + "total_frames": 20103, + "attributes": null + }, + "012": { + "cameras": { + "G339": 844 + }, + "total_frames": 844, + "attributes": null + }, + "016": { + "cameras": { + "G420": 1146, + "G638": 1006 + }, + "total_frames": 2152, + "attributes": null + } + }, + "total_frames": 31676, + "total_tracklets": 58 + }, + "0093": { + "person_id": "0093", + "split": "train", + "cameras": { + "G328": { + "tracklets": 2, + "frames": 830 + }, + "G329": { + "tracklets": 4, + "frames": 889 + }, + "G326": { + "tracklets": 7, + "frames": 736 + }, + "G339": { + "tracklets": 5, + "frames": 947 + }, + "G419": { + "tracklets": 2, + "frames": 209 + }, + "G420": { + "tracklets": 6, + "frames": 1913 + }, + "G423": { + "tracklets": 2, + "frames": 158 + }, + "G424": { + "tracklets": 1, + "frames": 670 + }, + "G341": { + "tracklets": 7, + "frames": 6092 + }, + "G506": { + "tracklets": 8, + "frames": 5146 + }, + "G331": { + "tracklets": 2, + "frames": 1624 + }, + "G505": { + "tracklets": 2, + "frames": 1111 + } + }, + "outfits": { + "013": { + "cameras": { + "G328": 358, + "G329": 187, + "G326": 284 + }, + "total_frames": 829, + "attributes": null + }, + "011": { + "cameras": { + "G328": 472, + "G339": 488, + "G326": 452, + "G419": 55, + "G420": 1913, + "G329": 702, + "G423": 158 + }, + "total_frames": 4240, + "attributes": null + }, + "008": { + "cameras": { + "G339": 304, + "G419": 154, + "G424": 670 + }, + "total_frames": 1128, + "attributes": null + }, + "002": { + "cameras": { + "G341": 6092, + "G506": 5146, + "G339": 155, + "G331": 1624, + "G505": 1111 + }, + "total_frames": 14128, + "attributes": null + } + }, + "total_frames": 20325, + "total_tracklets": 48 + }, + "0059": { + "person_id": "0059", + "split": "train", + "cameras": { + "G328": { + "tracklets": 2, + "frames": 896 + }, + "G340": { + "tracklets": 3, + "frames": 477 + }, + "G424": { + "tracklets": 2, + "frames": 644 + }, + "G506": { + "tracklets": 7, + "frames": 3974 + }, + "G341": { + "tracklets": 7, + "frames": 5454 + }, + "G505": { + "tracklets": 1, + "frames": 220 + }, + "G421": { + "tracklets": 2, + "frames": 1042 + }, + "G331": { + "tracklets": 1, + "frames": 328 + }, + "G339": { + "tracklets": 8, + "frames": 1010 + }, + "G300": { + "tracklets": 6, + "frames": 3624 + }, + "G419": { + "tracklets": 3, + "frames": 270 + }, + "G420": { + "tracklets": 4, + "frames": 1513 + }, + "G423": { + "tracklets": 4, + "frames": 2066 + }, + "G638": { + "tracklets": 1, + "frames": 787 + }, + "G299": { + "tracklets": 1, + "frames": 982 + } + }, + "outfits": { + "020": { + "cameras": { + "G328": 502, + "G340": 452, + "G424": 343, + "G506": 867, + "G341": 340, + "G505": 220 + }, + "total_frames": 2724, + "attributes": null + }, + "004": { + "cameras": { + "G340": 25, + "G506": 3107, + "G341": 5114, + "G421": 1042, + "G331": 328, + "G339": 463 + }, + "total_frames": 10079, + "attributes": null + }, + "012": { + "cameras": { + "G424": 301, + "G300": 3624, + "G419": 149, + "G420": 1513, + "G423": 1060, + "G328": 394 + }, + "total_frames": 7041, + "attributes": null + }, + "016": { + "cameras": { + "G339": 547, + "G638": 787 + }, + "total_frames": 1334, + "attributes": null + }, + "011": { + "cameras": { + "G423": 1006, + "G299": 982 + }, + "total_frames": 1988, + "attributes": null + }, + "014": { + "cameras": { + "G419": 121 + }, + "total_frames": 121, + "attributes": null + } + }, + "total_frames": 23287, + "total_tracklets": 52 + }, + "0001": { + "person_id": "0001", + "split": "train", + "cameras": { + "G328": { + "tracklets": 1, + "frames": 283 + }, + "G339": { + "tracklets": 2, + "frames": 548 + }, + "G329": { + "tracklets": 2, + "frames": 470 + }, + "G326": { + "tracklets": 2, + "frames": 248 + } + }, + "outfits": { + "003": { + "cameras": { + "G328": 283, + "G339": 85, + "G329": 470 + }, + "total_frames": 838, + "attributes": null + }, + "002": { + "cameras": { + "G326": 248, + "G339": 463 + }, + "total_frames": 711, + "attributes": null + } + }, + "total_frames": 1549, + "total_tracklets": 7 + }, + "0091": { + "person_id": "0091", + "split": "train", + "cameras": { + "G424": { + "tracklets": 1, + "frames": 985 + }, + "G421": { + "tracklets": 16, + "frames": 10516 + }, + "G326": { + "tracklets": 2, + "frames": 1786 + }, + "G329": { + "tracklets": 2, + "frames": 1549 + }, + "G506": { + "tracklets": 2, + "frames": 896 + }, + "G340": { + "tracklets": 5, + "frames": 2556 + }, + "G341": { + "tracklets": 2, + "frames": 1063 + }, + "G505": { + "tracklets": 2, + "frames": 1078 + }, + "G339": { + "tracklets": 7, + "frames": 4237 + }, + "G638": { + "tracklets": 8, + "frames": 4155 + }, + "G330": { + "tracklets": 2, + "frames": 1807 + }, + "G420": { + "tracklets": 5, + "frames": 2456 + }, + "G299": { + "tracklets": 1, + "frames": 175 + }, + "G419": { + "tracklets": 5, + "frames": 1397 + } + }, + "outfits": { + "027": { + "cameras": { + "G424": 985, + "G421": 9000, + "G326": 1786, + "G329": 1549 + }, + "total_frames": 13320, + "attributes": null + }, + "005": { + "cameras": { + "G506": 896, + "G340": 2556, + "G341": 1063, + "G505": 1078, + "G339": 3774 + }, + "total_frames": 9367, + "attributes": null + }, + "017": { + "cameras": { + "G339": 463, + "G638": 3695, + "G330": 1807, + "G420": 1593, + "G299": 175, + "G419": 1071, + "G421": 1516 + }, + "total_frames": 10320, + "attributes": null + }, + "010": { + "cameras": { + "G419": 262, + "G420": 409 + }, + "total_frames": 671, + "attributes": null + }, + "019": { + "cameras": { + "G420": 454, + "G419": 64 + }, + "total_frames": 518, + "attributes": null + }, + "021": { + "cameras": { + "G638": 460 + }, + "total_frames": 460, + "attributes": null + } + }, + "total_frames": 34656, + "total_tracklets": 60 + }, + "0060": { + "person_id": "0060", + "split": "train", + "cameras": { + "G424": { + "tracklets": 1, + "frames": 667 + } + }, + "outfits": { + "021": { + "cameras": { + "G424": 667 + }, + "total_frames": 667, + "attributes": null + } + }, + "total_frames": 667, + "total_tracklets": 1 + }, + "0019": { + "person_id": "0019", + "split": "train", + "cameras": { + "G424": { + "tracklets": 13, + "frames": 10887 + }, + "G339": { + "tracklets": 3, + "frames": 1421 + }, + "G340": { + "tracklets": 4, + "frames": 2795 + }, + "G341": { + "tracklets": 1, + "frames": 13 + }, + "G329": { + "tracklets": 2, + "frames": 497 + }, + "G336": { + "tracklets": 2, + "frames": 1147 + }, + "G326": { + "tracklets": 2, + "frames": 170 + }, + "G421": { + "tracklets": 1, + "frames": 373 + } + }, + "outfits": { + "018": { + "cameras": { + "G424": 10037, + "G339": 67 + }, + "total_frames": 10104, + "attributes": null + }, + "004": { + "cameras": { + "G340": 2795, + "G424": 850, + "G339": 1354, + "G341": 13, + "G329": 497, + "G336": 1147, + "G326": 170 + }, + "total_frames": 6826, + "attributes": null + }, + "003": { + "cameras": { + "G421": 373 + }, + "total_frames": 373, + "attributes": null + } + }, + "total_frames": 17303, + "total_tracklets": 28 + }, + "0094": { + "person_id": "0094", + "split": "train", + "cameras": { + "G340": { + "tracklets": 4, + "frames": 2196 + }, + "G424": { + "tracklets": 1, + "frames": 43 + }, + "G505": { + "tracklets": 2, + "frames": 350 + }, + "G339": { + "tracklets": 4, + "frames": 1087 + }, + "G341": { + "tracklets": 4, + "frames": 985 + }, + "G506": { + "tracklets": 4, + "frames": 685 + }, + "G420": { + "tracklets": 7, + "frames": 1813 + }, + "G423": { + "tracklets": 2, + "frames": 266 + }, + "G300": { + "tracklets": 4, + "frames": 1294 + }, + "G419": { + "tracklets": 5, + "frames": 632 + }, + "G330": { + "tracklets": 4, + "frames": 3164 + } + }, + "outfits": { + "016": { + "cameras": { + "G340": 1753 + }, + "total_frames": 1753, + "attributes": null + }, + "004": { + "cameras": { + "G424": 43, + "G505": 350, + "G340": 443, + "G339": 873, + "G341": 985, + "G506": 685 + }, + "total_frames": 3379, + "attributes": null + }, + "014": { + "cameras": { + "G339": 214 + }, + "total_frames": 214, + "attributes": null + }, + "010": { + "cameras": { + "G420": 1813, + "G423": 266, + "G300": 1294, + "G419": 632, + "G330": 3164 + }, + "total_frames": 7169, + "attributes": null + } + }, + "total_frames": 12515, + "total_tracklets": 41 + }, + "0070": { + "person_id": "0070", + "split": "train", + "cameras": { + "G340": { + "tracklets": 2, + "frames": 722 + }, + "G506": { + "tracklets": 7, + "frames": 6542 + }, + "G341": { + "tracklets": 15, + "frames": 11399 + }, + "G339": { + "tracklets": 18, + "frames": 5282 + }, + "G330": { + "tracklets": 15, + "frames": 12392 + }, + "G299": { + "tracklets": 18, + "frames": 12811 + }, + "G420": { + "tracklets": 5, + "frames": 2569 + }, + "G423": { + "tracklets": 1, + "frames": 127 + }, + "G421": { + "tracklets": 3, + "frames": 660 + }, + "G419": { + "tracklets": 1, + "frames": 40 + } + }, + "outfits": { + "019": { + "cameras": { + "G340": 322, + "G506": 6542, + "G341": 5008, + "G339": 373 + }, + "total_frames": 12245, + "attributes": null + }, + "010": { + "cameras": { + "G339": 1845, + "G330": 11626, + "G299": 12811, + "G340": 400, + "G420": 2569, + "G341": 6057, + "G423": 127 + }, + "total_frames": 35435, + "attributes": null + }, + "016": { + "cameras": { + "G339": 251, + "G421": 430, + "G419": 40 + }, + "total_frames": 721, + "attributes": null + }, + "011": { + "cameras": { + "G330": 766 + }, + "total_frames": 766, + "attributes": null + }, + "002": { + "cameras": { + "G339": 2813, + "G341": 334 + }, + "total_frames": 3147, + "attributes": null + }, + "012": { + "cameras": { + "G421": 193 + }, + "total_frames": 193, + "attributes": null + }, + "013": { + "cameras": { + "G421": 37 + }, + "total_frames": 37, + "attributes": null + } + }, + "total_frames": 52544, + "total_tracklets": 85 + }, + "0044": { + "person_id": "0044", + "split": "train", + "cameras": { + "G339": { + "tracklets": 8, + "frames": 2399 + }, + "G638": { + "tracklets": 5, + "frames": 2279 + }, + "G299": { + "tracklets": 7, + "frames": 5642 + }, + "G330": { + "tracklets": 13, + "frames": 10666 + }, + "G421": { + "tracklets": 16, + "frames": 10861 + }, + "G420": { + "tracklets": 4, + "frames": 1815 + }, + "G419": { + "tracklets": 2, + "frames": 656 + }, + "G508": { + "tracklets": 10, + "frames": 7557 + }, + "G341": { + "tracklets": 1, + "frames": 196 + }, + "G423": { + "tracklets": 1, + "frames": 460 + } + }, + "outfits": { + "012": { + "cameras": { + "G339": 1255, + "G638": 1330, + "G299": 1588, + "G330": 1312, + "G421": 1861, + "G420": 485, + "G419": 656 + }, + "total_frames": 8487, + "attributes": null + }, + "013": { + "cameras": { + "G330": 9354, + "G299": 4054 + }, + "total_frames": 13408, + "attributes": null + }, + "020": { + "cameras": { + "G421": 9000 + }, + "total_frames": 9000, + "attributes": null + }, + "017": { + "cameras": { + "G638": 949 + }, + "total_frames": 949, + "attributes": null + }, + "002": { + "cameras": { + "G508": 7557, + "G420": 1330, + "G339": 1144, + "G341": 196 + }, + "total_frames": 10227, + "attributes": null + }, + "001": { + "cameras": { + "G423": 460 + }, + "total_frames": 460, + "attributes": null + } + }, + "total_frames": 42531, + "total_tracklets": 67 + }, + "0020": { + "person_id": "0020", + "split": "train", + "cameras": { + "G339": { + "tracklets": 1, + "frames": 843 + }, + "G424": { + "tracklets": 1, + "frames": 583 + }, + "G328": { + "tracklets": 9, + "frames": 4735 + }, + "G330": { + "tracklets": 11, + "frames": 9684 + }, + "G420": { + "tracklets": 1, + "frames": 334 + }, + "G299": { + "tracklets": 3, + "frames": 1443 + } + }, + "outfits": { + "004": { + "cameras": { + "G339": 843, + "G424": 583 + }, + "total_frames": 1426, + "attributes": null + }, + "016": { + "cameras": { + "G328": 4735, + "G330": 8965, + "G420": 334, + "G299": 941 + }, + "total_frames": 14975, + "attributes": null + }, + "015": { + "cameras": { + "G330": 719, + "G299": 502 + }, + "total_frames": 1221, + "attributes": null + } + }, + "total_frames": 17622, + "total_tracklets": 26 + }, + "0080": { + "person_id": "0080", + "split": "train", + "cameras": { + "G341": { + "tracklets": 4, + "frames": 760 + }, + "G340": { + "tracklets": 2, + "frames": 1006 + }, + "G339": { + "tracklets": 4, + "frames": 1308 + }, + "G505": { + "tracklets": 2, + "frames": 1258 + }, + "G421": { + "tracklets": 4, + "frames": 3688 + }, + "G329": { + "tracklets": 4, + "frames": 1450 + }, + "G326": { + "tracklets": 4, + "frames": 622 + } + }, + "outfits": { + "003": { + "cameras": { + "G341": 760, + "G340": 1006, + "G339": 1308, + "G505": 1258, + "G421": 3688, + "G329": 1450, + "G326": 622 + }, + "total_frames": 10092, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 319, + "avg_width_px": 140, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 10092, + "total_tracklets": 24, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "blue": 3 + }, + "lower_color_distribution": { + "blue": 2, + "green": 1 + }, + "avg_crop_height": 319, + "n_outfits": 1, + "n_cameras": 7 + } + }, + "0058": { + "person_id": "0058", + "split": "train", + "cameras": { + "G341": { + "tracklets": 5, + "frames": 4133 + }, + "G506": { + "tracklets": 1, + "frames": 385 + }, + "G340": { + "tracklets": 3, + "frames": 2122 + } + }, + "outfits": { + "002": { + "cameras": { + "G341": 3649 + }, + "total_frames": 3649, + "attributes": null + }, + "009": { + "cameras": { + "G506": 385, + "G341": 484, + "G340": 2122 + }, + "total_frames": 2991, + "attributes": null + } + }, + "total_frames": 6640, + "total_tracklets": 9 + }, + "0050": { + "person_id": "0050", + "split": "train", + "cameras": { + "G340": { + "tracklets": 1, + "frames": 175 + }, + "G420": { + "tracklets": 7, + "frames": 2239 + }, + "G419": { + "tracklets": 3, + "frames": 720 + }, + "G299": { + "tracklets": 2, + "frames": 1168 + }, + "G329": { + "tracklets": 1, + "frames": 229 + }, + "G326": { + "tracklets": 1, + "frames": 181 + } + }, + "outfits": { + "018": { + "cameras": { + "G340": 175, + "G420": 412, + "G419": 385 + }, + "total_frames": 972, + "attributes": null + }, + "012": { + "cameras": { + "G420": 1799, + "G419": 335, + "G299": 1168 + }, + "total_frames": 3302, + "attributes": null + }, + "015": { + "cameras": { + "G329": 229, + "G326": 181 + }, + "total_frames": 410, + "attributes": null + }, + "017": { + "cameras": { + "G420": 28 + }, + "total_frames": 28, + "attributes": null + } + }, + "total_frames": 4712, + "total_tracklets": 15 + }, + "0027": { + "person_id": "0027", + "split": "train", + "cameras": { + "G341": { + "tracklets": 2, + "frames": 337 + }, + "G330": { + "tracklets": 19, + "frames": 17333 + }, + "G299": { + "tracklets": 15, + "frames": 14285 + }, + "G420": { + "tracklets": 6, + "frames": 2298 + }, + "G638": { + "tracklets": 1, + "frames": 730 + }, + "G339": { + "tracklets": 1, + "frames": 1 + }, + "G329": { + "tracklets": 1, + "frames": 376 + }, + "G326": { + "tracklets": 1, + "frames": 370 + } + }, + "outfits": { + "004": { + "cameras": { + "G341": 337 + }, + "total_frames": 337, + "attributes": null + }, + "013": { + "cameras": { + "G330": 17333, + "G299": 14285 + }, + "total_frames": 31618, + "attributes": null + }, + "014": { + "cameras": { + "G420": 863 + }, + "total_frames": 863, + "attributes": null + }, + "018": { + "cameras": { + "G638": 730, + "G420": 335, + "G339": 1 + }, + "total_frames": 1066, + "attributes": null + }, + "016": { + "cameras": { + "G420": 1100 + }, + "total_frames": 1100, + "attributes": null + }, + "022": { + "cameras": { + "G329": 376, + "G326": 370 + }, + "total_frames": 746, + "attributes": null + } + }, + "total_frames": 35730, + "total_tracklets": 46 + }, + "0046": { + "person_id": "0046", + "split": "train", + "cameras": { + "G341": { + "tracklets": 2, + "frames": 23 + }, + "G326": { + "tracklets": 2, + "frames": 248 + }, + "G329": { + "tracklets": 1, + "frames": 655 + }, + "G331": { + "tracklets": 9, + "frames": 8014 + }, + "G506": { + "tracklets": 1, + "frames": 199 + }, + "G339": { + "tracklets": 1, + "frames": 22 + } + }, + "outfits": { + "012": { + "cameras": { + "G341": 1 + }, + "total_frames": 1, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "black", + "avg_height_px": 60, + "avg_width_px": 27, + "n_crops_analyzed": 1 + } + }, + "004": { + "cameras": { + "G326": 248, + "G329": 655, + "G331": 8014, + "G506": 199, + "G339": 22, + "G341": 22 + }, + "total_frames": 9160, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "green", + "avg_height_px": 371, + "avg_width_px": 241, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 9161, + "total_tracklets": 16, + "global_attributes": { + "most_common_upper_color": "green", + "most_common_lower_color": "green", + "upper_color_distribution": { + "blue": 1, + "green": 3 + }, + "lower_color_distribution": { + "black": 1, + "green": 2, + "blue": 1 + }, + "avg_crop_height": 294, + "n_outfits": 2, + "n_cameras": 6 + } + }, + "0112": { + "person_id": "0112", + "split": "train", + "cameras": { + "G339": { + "tracklets": 3, + "frames": 1586 + }, + "G341": { + "tracklets": 1, + "frames": 406 + }, + "G340": { + "tracklets": 3, + "frames": 2227 + }, + "G331": { + "tracklets": 2, + "frames": 1495 + }, + "G420": { + "tracklets": 1, + "frames": 187 + } + }, + "outfits": { + "002": { + "cameras": { + "G339": 1586, + "G341": 406, + "G340": 2227, + "G331": 1495, + "G420": 187 + }, + "total_frames": 5901, + "attributes": null + } + }, + "total_frames": 5901, + "total_tracklets": 10 + }, + "0104": { + "person_id": "0104", + "split": "train", + "cameras": { + "G506": { + "tracklets": 2, + "frames": 1309 + }, + "G339": { + "tracklets": 3, + "frames": 1238 + }, + "G505": { + "tracklets": 2, + "frames": 1081 + }, + "G341": { + "tracklets": 2, + "frames": 839 + }, + "G329": { + "tracklets": 1, + "frames": 433 + }, + "G326": { + "tracklets": 1, + "frames": 127 + }, + "G419": { + "tracklets": 3, + "frames": 306 + }, + "G420": { + "tracklets": 6, + "frames": 2292 + }, + "G423": { + "tracklets": 2, + "frames": 347 + }, + "G299": { + "tracklets": 4, + "frames": 2916 + }, + "G421": { + "tracklets": 22, + "frames": 19335 + }, + "G330": { + "tracklets": 3, + "frames": 2102 + } + }, + "outfits": { + "005": { + "cameras": { + "G506": 1309, + "G339": 1238, + "G505": 1081, + "G341": 839, + "G329": 433, + "G326": 127 + }, + "total_frames": 5027, + "attributes": null + }, + "001": { + "cameras": { + "G419": 306, + "G420": 2292, + "G423": 347, + "G299": 1919, + "G421": 19265, + "G330": 742 + }, + "total_frames": 24871, + "attributes": null + }, + "018": { + "cameras": { + "G330": 1360, + "G299": 997 + }, + "total_frames": 2357, + "attributes": null + }, + "020": { + "cameras": { + "G421": 70 + }, + "total_frames": 70, + "attributes": null + } + }, + "total_frames": 32325, + "total_tracklets": 51 + }, + "0098": { + "person_id": "0098", + "split": "train", + "cameras": { + "G424": { + "tracklets": 1, + "frames": 499 + }, + "G420": { + "tracklets": 1, + "frames": 172 + }, + "G419": { + "tracklets": 1, + "frames": 100 + } + }, + "outfits": { + "002": { + "cameras": { + "G424": 499, + "G420": 172, + "G419": 100 + }, + "total_frames": 771, + "attributes": null + } + }, + "total_frames": 771, + "total_tracklets": 3 + }, + "0029": { + "person_id": "0029", + "split": "train", + "cameras": { + "G420": { + "tracklets": 4, + "frames": 2523 + }, + "G419": { + "tracklets": 2, + "frames": 572 + }, + "G299": { + "tracklets": 18, + "frames": 17498 + }, + "G330": { + "tracklets": 9, + "frames": 8878 + } + }, + "outfits": { + "001": { + "cameras": { + "G420": 2523, + "G419": 572 + }, + "total_frames": 3095, + "attributes": null + }, + "002": { + "cameras": { + "G299": 17498, + "G330": 8878 + }, + "total_frames": 26376, + "attributes": null + } + }, + "total_frames": 29471, + "total_tracklets": 33 + }, + "0006": { + "person_id": "0006", + "split": "train", + "cameras": { + "G299": { + "tracklets": 3, + "frames": 2165 + }, + "G638": { + "tracklets": 1, + "frames": 415 + }, + "G421": { + "tracklets": 2, + "frames": 560 + }, + "G420": { + "tracklets": 5, + "frames": 1628 + }, + "G419": { + "tracklets": 4, + "frames": 583 + }, + "G300": { + "tracklets": 1, + "frames": 7 + } + }, + "outfits": { + "007": { + "cameras": { + "G299": 2165, + "G638": 415, + "G421": 560, + "G420": 1628, + "G419": 583, + "G300": 7 + }, + "total_frames": 5358, + "attributes": null + } + }, + "total_frames": 5358, + "total_tracklets": 16 + }, + "0012": { + "person_id": "0012", + "split": "train", + "cameras": { + "G505": { + "tracklets": 4, + "frames": 1260 + }, + "G508": { + "tracklets": 1, + "frames": 40 + }, + "G339": { + "tracklets": 1, + "frames": 163 + }, + "G341": { + "tracklets": 3, + "frames": 87 + }, + "G506": { + "tracklets": 2, + "frames": 947 + }, + "G420": { + "tracklets": 3, + "frames": 792 + }, + "G299": { + "tracklets": 1, + "frames": 436 + }, + "G419": { + "tracklets": 4, + "frames": 733 + }, + "G421": { + "tracklets": 4, + "frames": 745 + } + }, + "outfits": { + "004": { + "cameras": { + "G505": 1260, + "G508": 40, + "G339": 163, + "G341": 87, + "G506": 947 + }, + "total_frames": 2497, + "attributes": null + }, + "002": { + "cameras": { + "G420": 792, + "G299": 436, + "G419": 733, + "G421": 745 + }, + "total_frames": 2706, + "attributes": null + } + }, + "total_frames": 5203, + "total_tracklets": 23 + }, + "0110": { + "person_id": "0110", + "split": "train", + "cameras": { + "G419": { + "tracklets": 1, + "frames": 67 + } + }, + "outfits": { + "003": { + "cameras": { + "G419": 67 + }, + "total_frames": 67, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 139, + "avg_width_px": 70, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 67, + "total_tracklets": 1, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "blue": 3 + }, + "lower_color_distribution": { + "blue": 2, + "green": 1 + }, + "avg_crop_height": 139, + "n_outfits": 1, + "n_cameras": 1 + } + }, + "0205": { + "person_id": "0205", + "split": "test", + "cameras": { + "G505": { + "tracklets": 4, + "frames": 3931 + }, + "G507": { + "tracklets": 3, + "frames": 2005 + }, + "G336": { + "tracklets": 7, + "frames": 4806 + }, + "G340": { + "tracklets": 6, + "frames": 5066 + }, + "G329": { + "tracklets": 3, + "frames": 696 + }, + "G639": { + "tracklets": 2, + "frames": 248 + } + }, + "outfits": { + "005": { + "cameras": { + "G505": 3931, + "G507": 2005, + "G336": 4806, + "G340": 5066, + "G329": 696 + }, + "total_frames": 16504, + "attributes": null + }, + "003": { + "cameras": { + "G639": 248 + }, + "total_frames": 248, + "attributes": null + } + }, + "total_frames": 16752, + "total_tracklets": 25 + }, + "0232": { + "person_id": "0232", + "split": "test", + "cameras": { + "G340": { + "tracklets": 6, + "frames": 4790 + }, + "G507": { + "tracklets": 21, + "frames": 14086 + }, + "G505": { + "tracklets": 1, + "frames": 256 + }, + "G639": { + "tracklets": 9, + "frames": 951 + }, + "G336": { + "tracklets": 19, + "frames": 16404 + } + }, + "outfits": { + "004": { + "cameras": { + "G340": 4790, + "G507": 14086, + "G505": 256, + "G639": 34 + }, + "total_frames": 19166, + "attributes": null + }, + "002": { + "cameras": { + "G639": 917, + "G336": 16404 + }, + "total_frames": 17321, + "attributes": null + } + }, + "total_frames": 36487, + "total_tracklets": 56 + }, + "0296": { + "person_id": "0296", + "split": "test", + "cameras": { + "G340": { + "tracklets": 1, + "frames": 124 + }, + "G639": { + "tracklets": 11, + "frames": 2458 + }, + "G436": { + "tracklets": 2, + "frames": 911 + }, + "G336": { + "tracklets": 10, + "frames": 6624 + }, + "G329": { + "tracklets": 5, + "frames": 1220 + }, + "G507": { + "tracklets": 12, + "frames": 8240 + }, + "G508": { + "tracklets": 1, + "frames": 196 + } + }, + "outfits": { + "005": { + "cameras": { + "G340": 124, + "G639": 1811, + "G436": 911, + "G336": 728, + "G329": 501, + "G507": 8240 + }, + "total_frames": 12315, + "attributes": null + }, + "003": { + "cameras": { + "G639": 647, + "G336": 5896 + }, + "total_frames": 6543, + "attributes": null + }, + "001": { + "cameras": { + "G329": 719, + "G508": 196 + }, + "total_frames": 915, + "attributes": null + } + }, + "total_frames": 19773, + "total_tracklets": 42 + }, + "0249": { + "person_id": "0249", + "split": "test", + "cameras": { + "G340": { + "tracklets": 2, + "frames": 179 + }, + "G639": { + "tracklets": 4, + "frames": 760 + }, + "G336": { + "tracklets": 9, + "frames": 5268 + }, + "G436": { + "tracklets": 1, + "frames": 448 + } + }, + "outfits": { + "002": { + "cameras": { + "G340": 64, + "G639": 569, + "G336": 1013 + }, + "total_frames": 1646, + "attributes": null + }, + "004": { + "cameras": { + "G639": 191, + "G336": 4255, + "G436": 448, + "G340": 115 + }, + "total_frames": 5009, + "attributes": null + } + }, + "total_frames": 6655, + "total_tracklets": 16 + }, + "0241": { + "person_id": "0241", + "split": "test", + "cameras": { + "G639": { + "tracklets": 7, + "frames": 2245 + }, + "G336": { + "tracklets": 2, + "frames": 1145 + }, + "G505": { + "tracklets": 2, + "frames": 446 + }, + "G329": { + "tracklets": 1, + "frames": 139 + }, + "G509": { + "tracklets": 18, + "frames": 17990 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 1326, + "G336": 982 + }, + "total_frames": 2308, + "attributes": null + }, + "005": { + "cameras": { + "G639": 919, + "G505": 446, + "G329": 139, + "G336": 163, + "G509": 17990 + }, + "total_frames": 19657, + "attributes": null + } + }, + "total_frames": 21965, + "total_tracklets": 30 + }, + "0230": { + "person_id": "0230", + "split": "test", + "cameras": { + "G340": { + "tracklets": 2, + "frames": 1003 + }, + "G336": { + "tracklets": 9, + "frames": 4469 + }, + "G436": { + "tracklets": 7, + "frames": 4500 + }, + "G505": { + "tracklets": 1, + "frames": 244 + }, + "G507": { + "tracklets": 28, + "frames": 26081 + }, + "G639": { + "tracklets": 1, + "frames": 43 + } + }, + "outfits": { + "004": { + "cameras": { + "G340": 1003, + "G336": 4469, + "G436": 4500, + "G505": 244, + "G507": 26081, + "G639": 43 + }, + "total_frames": 36340, + "attributes": null + } + }, + "total_frames": 36340, + "total_tracklets": 48 + }, + "0208": { + "person_id": "0208", + "split": "test", + "cameras": { + "G639": { + "tracklets": 8, + "frames": 692 + }, + "G436": { + "tracklets": 11, + "frames": 9026 + }, + "G336": { + "tracklets": 11, + "frames": 8899 + }, + "G507": { + "tracklets": 80, + "frames": 75208 + }, + "G505": { + "tracklets": 1, + "frames": 127 + } + }, + "outfits": { + "004": { + "cameras": { + "G639": 398 + }, + "total_frames": 398, + "attributes": null + }, + "007": { + "cameras": { + "G436": 9026, + "G336": 8899, + "G507": 75208, + "G505": 127, + "G639": 294 + }, + "total_frames": 93554, + "attributes": null + } + }, + "total_frames": 93952, + "total_tracklets": 111 + }, + "0267": { + "person_id": "0267", + "split": "test", + "cameras": { + "G639": { + "tracklets": 7, + "frames": 1885 + }, + "G436": { + "tracklets": 12, + "frames": 9672 + }, + "G336": { + "tracklets": 3, + "frames": 1164 + }, + "G507": { + "tracklets": 18, + "frames": 14208 + } + }, + "outfits": { + "007": { + "cameras": { + "G639": 275, + "G436": 622 + }, + "total_frames": 897, + "attributes": null + }, + "003": { + "cameras": { + "G639": 1610, + "G336": 328 + }, + "total_frames": 1938, + "attributes": null + }, + "006": { + "cameras": { + "G436": 9050, + "G507": 14208, + "G336": 836 + }, + "total_frames": 24094, + "attributes": null + } + }, + "total_frames": 26929, + "total_tracklets": 40 + }, + "0256": { + "person_id": "0256", + "split": "test", + "cameras": { + "G639": { + "tracklets": 6, + "frames": 402 + }, + "G336": { + "tracklets": 6, + "frames": 4497 + }, + "G436": { + "tracklets": 7, + "frames": 5062 + }, + "G507": { + "tracklets": 3, + "frames": 1736 + }, + "G329": { + "tracklets": 6, + "frames": 1299 + }, + "G509": { + "tracklets": 1, + "frames": 994 + }, + "G340": { + "tracklets": 8, + "frames": 7002 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 153, + "G336": 3617 + }, + "total_frames": 3770, + "attributes": null + }, + "005": { + "cameras": { + "G639": 249, + "G436": 5062, + "G507": 1736, + "G329": 826, + "G509": 994, + "G340": 7002, + "G336": 880 + }, + "total_frames": 16749, + "attributes": null + }, + "001": { + "cameras": { + "G329": 473 + }, + "total_frames": 473, + "attributes": null + } + }, + "total_frames": 20992, + "total_tracklets": 37 + }, + "0250": { + "person_id": "0250", + "split": "test", + "cameras": { + "G639": { + "tracklets": 15, + "frames": 8954 + }, + "G336": { + "tracklets": 9, + "frames": 5541 + }, + "G436": { + "tracklets": 3, + "frames": 2197 + } + }, + "outfits": { + "002": { + "cameras": { + "G639": 7577, + "G336": 1822 + }, + "total_frames": 9399, + "attributes": null + }, + "004": { + "cameras": { + "G639": 1377, + "G336": 3719, + "G436": 2197 + }, + "total_frames": 7293, + "attributes": null + } + }, + "total_frames": 16692, + "total_tracklets": 27 + }, + "0263": { + "person_id": "0263", + "split": "test", + "cameras": { + "G639": { + "tracklets": 2, + "frames": 170 + }, + "G336": { + "tracklets": 4, + "frames": 2410 + }, + "G436": { + "tracklets": 4, + "frames": 2709 + }, + "G340": { + "tracklets": 1, + "frames": 358 + }, + "G507": { + "tracklets": 41, + "frames": 37442 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 170, + "G336": 802 + }, + "total_frames": 972, + "attributes": null + }, + "005": { + "cameras": { + "G336": 1608, + "G436": 2709, + "G340": 358, + "G507": 37442 + }, + "total_frames": 42117, + "attributes": null + } + }, + "total_frames": 43089, + "total_tracklets": 52 + }, + "0234": { + "person_id": "0234", + "split": "test", + "cameras": { + "G639": { + "tracklets": 10, + "frames": 1205 + }, + "G340": { + "tracklets": 1, + "frames": 40 + }, + "G336": { + "tracklets": 3, + "frames": 1332 + }, + "G436": { + "tracklets": 1, + "frames": 274 + }, + "G507": { + "tracklets": 8, + "frames": 4298 + }, + "G505": { + "tracklets": 1, + "frames": 373 + } + }, + "outfits": { + "002": { + "cameras": { + "G639": 123, + "G340": 40, + "G336": 637 + }, + "total_frames": 800, + "attributes": null + }, + "004": { + "cameras": { + "G639": 1082, + "G336": 695, + "G436": 274, + "G507": 4298, + "G505": 373 + }, + "total_frames": 6722, + "attributes": null + } + }, + "total_frames": 7522, + "total_tracklets": 24 + }, + "0210": { + "person_id": "0210", + "split": "test", + "cameras": { + "G639": { + "tracklets": 7, + "frames": 619 + }, + "G336": { + "tracklets": 3, + "frames": 1650 + }, + "G436": { + "tracklets": 3, + "frames": 1494 + }, + "G340": { + "tracklets": 2, + "frames": 671 + }, + "G507": { + "tracklets": 20, + "frames": 18079 + }, + "G330": { + "tracklets": 1, + "frames": 28 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 619, + "G336": 727 + }, + "total_frames": 1346, + "attributes": null + }, + "005": { + "cameras": { + "G336": 923, + "G436": 1494, + "G340": 671, + "G507": 18079, + "G330": 28 + }, + "total_frames": 21195, + "attributes": null + } + }, + "total_frames": 22541, + "total_tracklets": 36 + }, + "0239": { + "person_id": "0239", + "split": "test", + "cameras": { + "G639": { + "tracklets": 9, + "frames": 2899 + }, + "G436": { + "tracklets": 2, + "frames": 920 + }, + "G336": { + "tracklets": 6, + "frames": 3464 + }, + "G329": { + "tracklets": 3, + "frames": 615 + }, + "G507": { + "tracklets": 4, + "frames": 1647 + }, + "G505": { + "tracklets": 1, + "frames": 232 + }, + "G509": { + "tracklets": 9, + "frames": 8998 + }, + "G330": { + "tracklets": 1, + "frames": 529 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 98, + "G436": 514, + "G336": 2478 + }, + "total_frames": 3090, + "attributes": null + }, + "005": { + "cameras": { + "G336": 986, + "G329": 615, + "G639": 2801, + "G507": 1647, + "G436": 406, + "G505": 232, + "G509": 8998, + "G330": 529 + }, + "total_frames": 16214, + "attributes": null + } + }, + "total_frames": 19304, + "total_tracklets": 35 + }, + "0278": { + "person_id": "0278", + "split": "test", + "cameras": { + "G639": { + "tracklets": 5, + "frames": 2673 + }, + "G336": { + "tracklets": 14, + "frames": 11888 + }, + "G507": { + "tracklets": 35, + "frames": 32197 + }, + "G509": { + "tracklets": 2, + "frames": 1237 + }, + "G436": { + "tracklets": 4, + "frames": 2530 + } + }, + "outfits": { + "007": { + "cameras": { + "G639": 2673, + "G336": 9555, + "G507": 31668, + "G509": 1237, + "G436": 1472 + }, + "total_frames": 46605, + "attributes": null + }, + "003": { + "cameras": { + "G436": 1058, + "G336": 2333 + }, + "total_frames": 3391, + "attributes": null + }, + "001": { + "cameras": { + "G507": 529 + }, + "total_frames": 529, + "attributes": null + } + }, + "total_frames": 50525, + "total_tracklets": 60 + }, + "0268": { + "person_id": "0268", + "split": "test", + "cameras": { + "G639": { + "tracklets": 4, + "frames": 739 + }, + "G336": { + "tracklets": 8, + "frames": 3623 + }, + "G507": { + "tracklets": 26, + "frames": 21797 + }, + "G436": { + "tracklets": 4, + "frames": 2758 + } + }, + "outfits": { + "004": { + "cameras": { + "G639": 260, + "G336": 1858 + }, + "total_frames": 2118, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "avg_height_px": 133, + "avg_width_px": 57, + "n_crops_analyzed": 3 + } + }, + "002": { + "cameras": { + "G639": 479, + "G336": 244 + }, + "total_frames": 723, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "yellow", + "avg_height_px": 135, + "avg_width_px": 49, + "n_crops_analyzed": 3 + } + }, + "003": { + "cameras": { + "G507": 21797, + "G336": 1521, + "G436": 2758 + }, + "total_frames": 26076, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "gray", + "avg_height_px": 142, + "avg_width_px": 54, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 28917, + "total_tracklets": 42, + "global_attributes": { + "most_common_upper_color": "green", + "most_common_lower_color": "gray", + "upper_color_distribution": { + "gray": 2, + "blue": 3, + "green": 4 + }, + "lower_color_distribution": { + "gray": 4, + "blue": 2, + "yellow": 1, + "green": 1, + "white": 1 + }, + "avg_crop_height": 137, + "n_outfits": 3, + "n_cameras": 4 + } + }, + "0211": { + "person_id": "0211", + "split": "test", + "cameras": { + "G639": { + "tracklets": 7, + "frames": 679 + }, + "G336": { + "tracklets": 5, + "frames": 4014 + }, + "G340": { + "tracklets": 2, + "frames": 596 + }, + "G436": { + "tracklets": 3, + "frames": 957 + }, + "G508": { + "tracklets": 1, + "frames": 256 + } + }, + "outfits": { + "004": { + "cameras": { + "G639": 679, + "G336": 2728 + }, + "total_frames": 3407, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 143, + "avg_width_px": 72, + "n_crops_analyzed": 3 + } + }, + "006": { + "cameras": { + "G336": 1286, + "G340": 596, + "G436": 957 + }, + "total_frames": 2839, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 101, + "avg_width_px": 59, + "n_crops_analyzed": 3 + } + }, + "002": { + "cameras": { + "G508": 256 + }, + "total_frames": 256, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 288, + "avg_width_px": 140, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 6502, + "total_tracklets": 18, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "purple": 1, + "blue": 5, + "green": 3 + }, + "lower_color_distribution": { + "blue": 6, + "yellow": 1, + "green": 2 + }, + "avg_crop_height": 177, + "n_outfits": 3, + "n_cameras": 5 + } + }, + "0279": { + "person_id": "0279", + "split": "test", + "cameras": { + "G639": { + "tracklets": 13, + "frames": 1513 + }, + "G336": { + "tracklets": 12, + "frames": 8733 + }, + "G436": { + "tracklets": 2, + "frames": 938 + } + }, + "outfits": { + "005": { + "cameras": { + "G639": 443, + "G336": 4893, + "G436": 523 + }, + "total_frames": 5859, + "attributes": null + }, + "003": { + "cameras": { + "G639": 152, + "G336": 3840, + "G436": 415 + }, + "total_frames": 4407, + "attributes": null + }, + "006": { + "cameras": { + "G639": 918 + }, + "total_frames": 918, + "attributes": null + } + }, + "total_frames": 11184, + "total_tracklets": 27 + }, + "0243": { + "person_id": "0243", + "split": "test", + "cameras": { + "G505": { + "tracklets": 1, + "frames": 454 + }, + "G336": { + "tracklets": 14, + "frames": 10118 + }, + "G436": { + "tracklets": 1, + "frames": 826 + }, + "G329": { + "tracklets": 7, + "frames": 3303 + }, + "G639": { + "tracklets": 4, + "frames": 409 + }, + "G340": { + "tracklets": 2, + "frames": 524 + } + }, + "outfits": { + "005": { + "cameras": { + "G505": 454, + "G336": 2975, + "G436": 826, + "G329": 999, + "G639": 409, + "G340": 250 + }, + "total_frames": 5913, + "attributes": null + }, + "003": { + "cameras": { + "G336": 7143, + "G340": 274 + }, + "total_frames": 7417, + "attributes": null + }, + "001": { + "cameras": { + "G329": 2304 + }, + "total_frames": 2304, + "attributes": null + } + }, + "total_frames": 15634, + "total_tracklets": 29 + }, + "0269": { + "person_id": "0269", + "split": "test", + "cameras": { + "G639": { + "tracklets": 3, + "frames": 810 + }, + "G336": { + "tracklets": 3, + "frames": 2537 + }, + "G507": { + "tracklets": 2, + "frames": 584 + }, + "G436": { + "tracklets": 2, + "frames": 137 + }, + "G508": { + "tracklets": 2, + "frames": 1675 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 764, + "G336": 1999 + }, + "total_frames": 2763, + "attributes": null + }, + "005": { + "cameras": { + "G507": 584, + "G436": 137, + "G336": 538, + "G639": 46 + }, + "total_frames": 1305, + "attributes": null + }, + "001": { + "cameras": { + "G508": 1675 + }, + "total_frames": 1675, + "attributes": null + } + }, + "total_frames": 5743, + "total_tracklets": 12 + }, + "0260": { + "person_id": "0260", + "split": "test", + "cameras": { + "G639": { + "tracklets": 11, + "frames": 1046 + }, + "G436": { + "tracklets": 4, + "frames": 2282 + }, + "G329": { + "tracklets": 5, + "frames": 1118 + }, + "G507": { + "tracklets": 1, + "frames": 838 + }, + "G336": { + "tracklets": 5, + "frames": 3423 + } + }, + "outfits": { + "006": { + "cameras": { + "G639": 443, + "G436": 2282, + "G329": 729, + "G507": 838, + "G336": 418 + }, + "total_frames": 4710, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 154, + "avg_width_px": 67, + "n_crops_analyzed": 3 + } + }, + "003": { + "cameras": { + "G639": 603, + "G336": 3005 + }, + "total_frames": 3608, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 85, + "avg_width_px": 29, + "n_crops_analyzed": 3 + } + }, + "001": { + "cameras": { + "G329": 389 + }, + "total_frames": 389, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 394, + "avg_width_px": 162, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 8707, + "total_tracklets": 26, + "global_attributes": { + "most_common_upper_color": "green", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "green": 5, + "blue": 4 + }, + "lower_color_distribution": { + "gray": 1, + "blue": 6, + "green": 1, + "white": 1 + }, + "avg_crop_height": 211, + "n_outfits": 3, + "n_cameras": 5 + } + }, + "0292": { + "person_id": "0292", + "split": "test", + "cameras": { + "G639": { + "tracklets": 6, + "frames": 1017 + }, + "G336": { + "tracklets": 15, + "frames": 10377 + }, + "G436": { + "tracklets": 3, + "frames": 1821 + }, + "G505": { + "tracklets": 1, + "frames": 217 + } + }, + "outfits": { + "005": { + "cameras": { + "G639": 971, + "G336": 6196, + "G436": 1821, + "G505": 217 + }, + "total_frames": 9205, + "attributes": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "avg_height_px": 131, + "avg_width_px": 44, + "n_crops_analyzed": 3 + } + }, + "003": { + "cameras": { + "G639": 46, + "G336": 4181 + }, + "total_frames": 4227, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 111, + "avg_width_px": 42, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 13432, + "total_tracklets": 25, + "global_attributes": { + "most_common_upper_color": "green", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "purple": 2, + "blue": 1, + "green": 3 + }, + "lower_color_distribution": { + "blue": 4, + "green": 2 + }, + "avg_crop_height": 121, + "n_outfits": 2, + "n_cameras": 4 + } + }, + "0280": { + "person_id": "0280", + "split": "test", + "cameras": { + "G639": { + "tracklets": 20, + "frames": 19333 + }, + "G508": { + "tracklets": 2, + "frames": 644 + }, + "G329": { + "tracklets": 2, + "frames": 590 + }, + "G336": { + "tracklets": 1, + "frames": 346 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 19333 + }, + "total_frames": 19333, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "purple", + "avg_height_px": 91, + "avg_width_px": 76, + "n_crops_analyzed": 3 + } + }, + "001": { + "cameras": { + "G508": 644 + }, + "total_frames": 644, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 458, + "avg_width_px": 233, + "n_crops_analyzed": 3 + } + }, + "005": { + "cameras": { + "G329": 590, + "G336": 346 + }, + "total_frames": 936, + "attributes": { + "upper_body_color": "gray", + "lower_body_color": "green", + "avg_height_px": 302, + "avg_width_px": 126, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 20913, + "total_tracklets": 25, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "purple", + "upper_color_distribution": { + "blue": 5, + "green": 2, + "gray": 2 + }, + "lower_color_distribution": { + "purple": 3, + "blue": 3, + "green": 3 + }, + "avg_crop_height": 283, + "n_outfits": 3, + "n_cameras": 4 + } + }, + "0271": { + "person_id": "0271", + "split": "test", + "cameras": { + "G639": { + "tracklets": 1, + "frames": 43 + }, + "G436": { + "tracklets": 4, + "frames": 2392 + }, + "G505": { + "tracklets": 3, + "frames": 2000 + }, + "G330": { + "tracklets": 1, + "frames": 670 + }, + "G336": { + "tracklets": 3, + "frames": 1542 + }, + "G509": { + "tracklets": 10, + "frames": 9050 + }, + "G508": { + "tracklets": 19, + "frames": 18370 + } + }, + "outfits": { + "005": { + "cameras": { + "G639": 43, + "G436": 2392, + "G505": 2000, + "G330": 670, + "G336": 1542, + "G509": 9050 + }, + "total_frames": 15697, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "blue", + "avg_height_px": 231, + "avg_width_px": 83, + "n_crops_analyzed": 3 + } + }, + "001": { + "cameras": { + "G508": 18370 + }, + "total_frames": 18370, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "green", + "avg_height_px": 520, + "avg_width_px": 195, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 34067, + "total_tracklets": 41, + "global_attributes": { + "most_common_upper_color": "green", + "most_common_lower_color": "green", + "upper_color_distribution": { + "green": 5, + "blue": 1 + }, + "lower_color_distribution": { + "green": 4, + "blue": 2 + }, + "avg_crop_height": 376, + "n_outfits": 2, + "n_cameras": 7 + } + }, + "0218": { + "person_id": "0218", + "split": "test", + "cameras": { + "G639": { + "tracklets": 4, + "frames": 1426 + }, + "G436": { + "tracklets": 8, + "frames": 5221 + }, + "G336": { + "tracklets": 4, + "frames": 2725 + }, + "G329": { + "tracklets": 2, + "frames": 1163 + }, + "G340": { + "tracklets": 1, + "frames": 802 + }, + "G505": { + "tracklets": 4, + "frames": 3430 + }, + "G330": { + "tracklets": 2, + "frames": 1027 + }, + "G507": { + "tracklets": 2, + "frames": 1225 + } + }, + "outfits": { + "005": { + "cameras": { + "G639": 1175, + "G436": 5221, + "G336": 2725, + "G329": 1163, + "G340": 802, + "G505": 3430, + "G330": 1027, + "G507": 1225 + }, + "total_frames": 16768, + "attributes": null + }, + "003": { + "cameras": { + "G639": 251 + }, + "total_frames": 251, + "attributes": null + } + }, + "total_frames": 17019, + "total_tracklets": 27 + }, + "0297": { + "person_id": "0297", + "split": "test", + "cameras": { + "G639": { + "tracklets": 9, + "frames": 3549 + }, + "G336": { + "tracklets": 11, + "frames": 5857 + }, + "G436": { + "tracklets": 5, + "frames": 3820 + }, + "G329": { + "tracklets": 3, + "frames": 447 + }, + "G507": { + "tracklets": 5, + "frames": 4064 + }, + "G509": { + "tracklets": 3, + "frames": 2663 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 2791, + "G336": 1906, + "G436": 1873 + }, + "total_frames": 6570, + "attributes": null + }, + "005": { + "cameras": { + "G336": 3951, + "G436": 1947, + "G329": 447, + "G639": 758, + "G507": 4064, + "G509": 2663 + }, + "total_frames": 13830, + "attributes": null + } + }, + "total_frames": 20400, + "total_tracklets": 36 + }, + "0247": { + "person_id": "0247", + "split": "test", + "cameras": { + "G639": { + "tracklets": 9, + "frames": 5279 + }, + "G436": { + "tracklets": 5, + "frames": 3728 + }, + "G329": { + "tracklets": 5, + "frames": 1145 + }, + "G336": { + "tracklets": 12, + "frames": 8915 + }, + "G507": { + "tracklets": 22, + "frames": 20089 + } + }, + "outfits": { + "005": { + "cameras": { + "G639": 4191, + "G436": 3728, + "G329": 1145, + "G336": 1376, + "G507": 20089 + }, + "total_frames": 30529, + "attributes": null + }, + "003": { + "cameras": { + "G336": 7539, + "G639": 1088 + }, + "total_frames": 8627, + "attributes": null + } + }, + "total_frames": 39156, + "total_tracklets": 53 + }, + "0294": { + "person_id": "0294", + "split": "test", + "cameras": { + "G639": { + "tracklets": 2, + "frames": 200 + }, + "G436": { + "tracklets": 4, + "frames": 1438 + }, + "G329": { + "tracklets": 3, + "frames": 657 + }, + "G509": { + "tracklets": 2, + "frames": 1324 + }, + "G507": { + "tracklets": 12, + "frames": 10381 + }, + "G336": { + "tracklets": 2, + "frames": 554 + } + }, + "outfits": { + "005": { + "cameras": { + "G639": 200, + "G436": 1236, + "G329": 657, + "G509": 1324, + "G507": 10381, + "G336": 358 + }, + "total_frames": 14156, + "attributes": null + }, + "003": { + "cameras": { + "G436": 202, + "G336": 196 + }, + "total_frames": 398, + "attributes": null + } + }, + "total_frames": 14554, + "total_tracklets": 25 + }, + "0298": { + "person_id": "0298", + "split": "test", + "cameras": { + "G639": { + "tracklets": 11, + "frames": 3593 + }, + "G436": { + "tracklets": 4, + "frames": 3123 + }, + "G336": { + "tracklets": 9, + "frames": 5837 + }, + "G509": { + "tracklets": 5, + "frames": 3345 + }, + "G507": { + "tracklets": 8, + "frames": 5614 + }, + "G508": { + "tracklets": 4, + "frames": 2660 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 3257, + "G436": 1693, + "G336": 1384 + }, + "total_frames": 6334, + "attributes": null + }, + "005": { + "cameras": { + "G336": 4453, + "G436": 1430, + "G509": 3345, + "G639": 336, + "G507": 5614 + }, + "total_frames": 15178, + "attributes": null + }, + "001": { + "cameras": { + "G508": 2660 + }, + "total_frames": 2660, + "attributes": null + } + }, + "total_frames": 24172, + "total_tracklets": 41 + }, + "0226": { + "person_id": "0226", + "split": "test", + "cameras": { + "G639": { + "tracklets": 1, + "frames": 418 + }, + "G329": { + "tracklets": 3, + "frames": 639 + }, + "G436": { + "tracklets": 2, + "frames": 1595 + }, + "G336": { + "tracklets": 1, + "frames": 454 + } + }, + "outfits": { + "005": { + "cameras": { + "G639": 418, + "G329": 639, + "G436": 1595, + "G336": 454 + }, + "total_frames": 3106, + "attributes": null + } + }, + "total_frames": 3106, + "total_tracklets": 7 + }, + "0202": { + "person_id": "0202", + "split": "test", + "cameras": { + "G639": { + "tracklets": 4, + "frames": 1809 + }, + "G436": { + "tracklets": 8, + "frames": 4844 + }, + "G336": { + "tracklets": 20, + "frames": 16238 + }, + "G509": { + "tracklets": 27, + "frames": 25360 + }, + "G507": { + "tracklets": 28, + "frames": 24782 + } + }, + "outfits": { + "005": { + "cameras": { + "G639": 1809, + "G436": 4844, + "G336": 10182, + "G509": 25360, + "G507": 24782 + }, + "total_frames": 66977, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "green", + "avg_height_px": 161, + "avg_width_px": 93, + "n_crops_analyzed": 3 + } + }, + "003": { + "cameras": { + "G336": 6049 + }, + "total_frames": 6049, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "purple", + "avg_height_px": 78, + "avg_width_px": 25, + "n_crops_analyzed": 3 + } + }, + "006": { + "cameras": { + "G336": 7 + }, + "total_frames": 7, + "attributes": { + "upper_body_color": "yellow", + "lower_body_color": "green", + "avg_height_px": 86, + "avg_width_px": 33, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 73033, + "total_tracklets": 87, + "global_attributes": { + "most_common_upper_color": "green", + "most_common_lower_color": "green", + "upper_color_distribution": { + "blue": 2, + "green": 4, + "yellow": 3 + }, + "lower_color_distribution": { + "green": 6, + "blue": 1, + "purple": 2 + }, + "avg_crop_height": 108, + "n_outfits": 3, + "n_cameras": 5 + } + }, + "0203": { + "person_id": "0203", + "split": "test", + "cameras": { + "G639": { + "tracklets": 4, + "frames": 2280 + }, + "G436": { + "tracklets": 3, + "frames": 1848 + }, + "G336": { + "tracklets": 11, + "frames": 9154 + }, + "G509": { + "tracklets": 15, + "frames": 14022 + } + }, + "outfits": { + "005": { + "cameras": { + "G639": 2280, + "G436": 1848, + "G336": 3377, + "G509": 14022 + }, + "total_frames": 21527, + "attributes": null + }, + "003": { + "cameras": { + "G336": 5777 + }, + "total_frames": 5777, + "attributes": null + } + }, + "total_frames": 27304, + "total_tracklets": 33 + }, + "0245": { + "person_id": "0245", + "split": "test", + "cameras": { + "G639": { + "tracklets": 6, + "frames": 2229 + }, + "G336": { + "tracklets": 5, + "frames": 2486 + }, + "G436": { + "tracklets": 5, + "frames": 3245 + }, + "G329": { + "tracklets": 3, + "frames": 555 + }, + "G507": { + "tracklets": 1, + "frames": 874 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 2153, + "G336": 1365 + }, + "total_frames": 3518, + "attributes": null + }, + "001": { + "cameras": { + "G436": 3245, + "G329": 555, + "G336": 1121, + "G507": 874, + "G639": 76 + }, + "total_frames": 5871, + "attributes": null + } + }, + "total_frames": 9389, + "total_tracklets": 20 + }, + "0216": { + "person_id": "0216", + "split": "test", + "cameras": { + "G639": { + "tracklets": 3, + "frames": 1476 + }, + "G340": { + "tracklets": 1, + "frames": 193 + }, + "G336": { + "tracklets": 1, + "frames": 628 + }, + "G301": { + "tracklets": 1, + "frames": 346 + }, + "G507": { + "tracklets": 8, + "frames": 7390 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 1476, + "G340": 193, + "G336": 628, + "G301": 346 + }, + "total_frames": 2643, + "attributes": null + }, + "006": { + "cameras": { + "G507": 7390 + }, + "total_frames": 7390, + "attributes": null + } + }, + "total_frames": 10033, + "total_tracklets": 14 + }, + "0248": { + "person_id": "0248", + "split": "test", + "cameras": { + "G436": { + "tracklets": 8, + "frames": 4615 + }, + "G340": { + "tracklets": 5, + "frames": 4159 + }, + "G329": { + "tracklets": 3, + "frames": 921 + }, + "G507": { + "tracklets": 21, + "frames": 16132 + }, + "G639": { + "tracklets": 11, + "frames": 7022 + }, + "G336": { + "tracklets": 7, + "frames": 4775 + } + }, + "outfits": { + "005": { + "cameras": { + "G436": 3462, + "G340": 4159, + "G329": 921, + "G507": 16132, + "G639": 343, + "G336": 1322 + }, + "total_frames": 26339, + "attributes": null + }, + "003": { + "cameras": { + "G436": 1153, + "G639": 6679, + "G336": 3453 + }, + "total_frames": 11285, + "attributes": null + } + }, + "total_frames": 37624, + "total_tracklets": 55 + }, + "0257": { + "person_id": "0257", + "split": "test", + "cameras": { + "G436": { + "tracklets": 7, + "frames": 4215 + }, + "G336": { + "tracklets": 5, + "frames": 2564 + }, + "G639": { + "tracklets": 6, + "frames": 684 + }, + "G507": { + "tracklets": 13, + "frames": 12249 + }, + "G509": { + "tracklets": 4, + "frames": 3419 + }, + "G505": { + "tracklets": 2, + "frames": 1774 + } + }, + "outfits": { + "005": { + "cameras": { + "G436": 4215, + "G336": 1735, + "G639": 265, + "G507": 12249, + "G509": 3419, + "G505": 1774 + }, + "total_frames": 23657, + "attributes": null + }, + "003": { + "cameras": { + "G639": 419, + "G336": 829 + }, + "total_frames": 1248, + "attributes": null + } + }, + "total_frames": 24905, + "total_tracklets": 37 + }, + "0212": { + "person_id": "0212", + "split": "test", + "cameras": { + "G336": { + "tracklets": 18, + "frames": 16806 + }, + "G639": { + "tracklets": 4, + "frames": 1042 + } + }, + "outfits": { + "003": { + "cameras": { + "G336": 16806, + "G639": 1042 + }, + "total_frames": 17848, + "attributes": null + } + }, + "total_frames": 17848, + "total_tracklets": 22 + }, + "0227": { + "person_id": "0227", + "split": "test", + "cameras": { + "G336": { + "tracklets": 1, + "frames": 553 + }, + "G507": { + "tracklets": 27, + "frames": 23463 + }, + "G639": { + "tracklets": 1, + "frames": 79 + } + }, + "outfits": { + "005": { + "cameras": { + "G336": 553, + "G507": 23463, + "G639": 79 + }, + "total_frames": 24095, + "attributes": null + } + }, + "total_frames": 24095, + "total_tracklets": 29 + }, + "0215": { + "person_id": "0215", + "split": "test", + "cameras": { + "G436": { + "tracklets": 6, + "frames": 4305 + }, + "G336": { + "tracklets": 3, + "frames": 1625 + }, + "G639": { + "tracklets": 2, + "frames": 452 + }, + "G507": { + "tracklets": 2, + "frames": 566 + }, + "G329": { + "tracklets": 1, + "frames": 220 + }, + "G340": { + "tracklets": 1, + "frames": 1 + } + }, + "outfits": { + "004": { + "cameras": { + "G436": 4305, + "G336": 1625, + "G639": 452, + "G507": 566, + "G329": 220 + }, + "total_frames": 7168, + "attributes": null + }, + "003": { + "cameras": { + "G340": 1 + }, + "total_frames": 1, + "attributes": null + } + }, + "total_frames": 7169, + "total_tracklets": 15 + }, + "0272": { + "person_id": "0272", + "split": "test", + "cameras": { + "G340": { + "tracklets": 3, + "frames": 1724 + }, + "G336": { + "tracklets": 6, + "frames": 3589 + }, + "G436": { + "tracklets": 4, + "frames": 2567 + }, + "G329": { + "tracklets": 2, + "frames": 674 + }, + "G639": { + "tracklets": 5, + "frames": 1052 + }, + "G507": { + "tracklets": 2, + "frames": 416 + } + }, + "outfits": { + "005": { + "cameras": { + "G340": 1724, + "G336": 1230, + "G436": 2567, + "G329": 674, + "G639": 1052, + "G507": 416 + }, + "total_frames": 7663, + "attributes": null + }, + "003": { + "cameras": { + "G336": 2359 + }, + "total_frames": 2359, + "attributes": null + } + }, + "total_frames": 10022, + "total_tracklets": 22 + }, + "0201": { + "person_id": "0201", + "split": "test", + "cameras": { + "G336": { + "tracklets": 5, + "frames": 623 + }, + "G436": { + "tracklets": 2, + "frames": 176 + }, + "G330": { + "tracklets": 7, + "frames": 4318 + }, + "G509": { + "tracklets": 4, + "frames": 2969 + }, + "G507": { + "tracklets": 1, + "frames": 97 + } + }, + "outfits": { + "003": { + "cameras": { + "G336": 623, + "G436": 176, + "G330": 4318, + "G509": 2969, + "G507": 97 + }, + "total_frames": 8183, + "attributes": null + } + }, + "total_frames": 8183, + "total_tracklets": 19 + }, + "0233": { + "person_id": "0233", + "split": "test", + "cameras": { + "G336": { + "tracklets": 13, + "frames": 11478 + }, + "G639": { + "tracklets": 3, + "frames": 1422 + }, + "G505": { + "tracklets": 1, + "frames": 292 + }, + "G507": { + "tracklets": 10, + "frames": 9317 + } + }, + "outfits": { + "002": { + "cameras": { + "G336": 11478, + "G639": 1422 + }, + "total_frames": 12900, + "attributes": null + }, + "004": { + "cameras": { + "G505": 292, + "G507": 9317 + }, + "total_frames": 9609, + "attributes": null + } + }, + "total_frames": 22509, + "total_tracklets": 27 + }, + "0277": { + "person_id": "0277", + "split": "test", + "cameras": { + "G336": { + "tracklets": 8, + "frames": 5543 + }, + "G436": { + "tracklets": 7, + "frames": 5193 + }, + "G505": { + "tracklets": 1, + "frames": 214 + }, + "G639": { + "tracklets": 5, + "frames": 1073 + }, + "G509": { + "tracklets": 2, + "frames": 1498 + }, + "G507": { + "tracklets": 35, + "frames": 29049 + }, + "G330": { + "tracklets": 1, + "frames": 880 + } + }, + "outfits": { + "006": { + "cameras": { + "G336": 1809, + "G436": 4318, + "G505": 214, + "G639": 1021, + "G509": 1498, + "G507": 28430, + "G330": 880 + }, + "total_frames": 38170, + "attributes": null + }, + "003": { + "cameras": { + "G336": 3734, + "G436": 875, + "G639": 52 + }, + "total_frames": 4661, + "attributes": null + }, + "001": { + "cameras": { + "G507": 619 + }, + "total_frames": 619, + "attributes": null + } + }, + "total_frames": 43450, + "total_tracklets": 59 + }, + "0285": { + "person_id": "0285", + "split": "test", + "cameras": { + "G336": { + "tracklets": 2, + "frames": 383 + }, + "G330": { + "tracklets": 9, + "frames": 8779 + }, + "G340": { + "tracklets": 1, + "frames": 385 + }, + "G639": { + "tracklets": 2, + "frames": 593 + }, + "G436": { + "tracklets": 4, + "frames": 3185 + }, + "G507": { + "tracklets": 3, + "frames": 2815 + } + }, + "outfits": { + "005": { + "cameras": { + "G336": 383, + "G330": 8779, + "G340": 385, + "G639": 593, + "G436": 3185, + "G507": 2815 + }, + "total_frames": 16140, + "attributes": null + } + }, + "total_frames": 16140, + "total_tracklets": 21 + }, + "0231": { + "person_id": "0231", + "split": "test", + "cameras": { + "G336": { + "tracklets": 19, + "frames": 16876 + }, + "G639": { + "tracklets": 6, + "frames": 1946 + }, + "G340": { + "tracklets": 4, + "frames": 3473 + }, + "G505": { + "tracklets": 2, + "frames": 671 + }, + "G507": { + "tracklets": 24, + "frames": 20436 + } + }, + "outfits": { + "002": { + "cameras": { + "G336": 16876, + "G639": 438 + }, + "total_frames": 17314, + "attributes": null + }, + "004": { + "cameras": { + "G340": 3473, + "G505": 671, + "G507": 20436, + "G639": 1508 + }, + "total_frames": 26088, + "attributes": null + } + }, + "total_frames": 43402, + "total_tracklets": 55 + }, + "0229": { + "person_id": "0229", + "split": "test", + "cameras": { + "G336": { + "tracklets": 2, + "frames": 1427 + }, + "G436": { + "tracklets": 3, + "frames": 2223 + }, + "G505": { + "tracklets": 3, + "frames": 2036 + }, + "G329": { + "tracklets": 2, + "frames": 569 + }, + "G639": { + "tracklets": 4, + "frames": 541 + }, + "G507": { + "tracklets": 1, + "frames": 40 + }, + "G509": { + "tracklets": 18, + "frames": 17998 + } + }, + "outfits": { + "004": { + "cameras": { + "G336": 1427, + "G436": 2223, + "G505": 2036, + "G329": 569, + "G639": 541, + "G507": 40, + "G509": 17998 + }, + "total_frames": 24834, + "attributes": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "avg_height_px": 190, + "avg_width_px": 92, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 24834, + "total_tracklets": 33, + "global_attributes": { + "most_common_upper_color": "blue", + "most_common_lower_color": "blue", + "upper_color_distribution": { + "blue": 2, + "green": 1 + }, + "lower_color_distribution": { + "blue": 3 + }, + "avg_crop_height": 190, + "n_outfits": 1, + "n_cameras": 7 + } + }, + "0238": { + "person_id": "0238", + "split": "test", + "cameras": { + "G336": { + "tracklets": 3, + "frames": 702 + }, + "G436": { + "tracklets": 5, + "frames": 3720 + }, + "G329": { + "tracklets": 1, + "frames": 244 + }, + "G340": { + "tracklets": 1, + "frames": 283 + }, + "G639": { + "tracklets": 1, + "frames": 154 + }, + "G507": { + "tracklets": 1, + "frames": 268 + } + }, + "outfits": { + "005": { + "cameras": { + "G336": 702, + "G436": 3720, + "G329": 244, + "G340": 283, + "G639": 154, + "G507": 268 + }, + "total_frames": 5371, + "attributes": { + "upper_body_color": "green", + "lower_body_color": "green", + "avg_height_px": 151, + "avg_width_px": 59, + "n_crops_analyzed": 3 + } + } + }, + "total_frames": 5371, + "total_tracklets": 12, + "global_attributes": { + "most_common_upper_color": "green", + "most_common_lower_color": "green", + "upper_color_distribution": { + "green": 3 + }, + "lower_color_distribution": { + "green": 2, + "blue": 1 + }, + "avg_crop_height": 151, + "n_outfits": 1, + "n_cameras": 6 + } + }, + "0242": { + "person_id": "0242", + "split": "test", + "cameras": { + "G436": { + "tracklets": 2, + "frames": 1370 + }, + "G639": { + "tracklets": 2, + "frames": 746 + }, + "G505": { + "tracklets": 5, + "frames": 3144 + }, + "G507": { + "tracklets": 11, + "frames": 7251 + }, + "G336": { + "tracklets": 5, + "frames": 3513 + }, + "G509": { + "tracklets": 18, + "frames": 17987 + } + }, + "outfits": { + "005": { + "cameras": { + "G436": 1370, + "G639": 746, + "G505": 3144, + "G507": 7251, + "G336": 890, + "G509": 17987 + }, + "total_frames": 31388, + "attributes": null + }, + "003": { + "cameras": { + "G336": 2623 + }, + "total_frames": 2623, + "attributes": null + } + }, + "total_frames": 34011, + "total_tracklets": 43 + }, + "0206": { + "person_id": "0206", + "split": "test", + "cameras": { + "G639": { + "tracklets": 5, + "frames": 1510 + }, + "G336": { + "tracklets": 3, + "frames": 2327 + }, + "G509": { + "tracklets": 8, + "frames": 6393 + }, + "G436": { + "tracklets": 2, + "frames": 1378 + }, + "G507": { + "tracklets": 1, + "frames": 538 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 1235, + "G336": 1849 + }, + "total_frames": 3084, + "attributes": null + }, + "005": { + "cameras": { + "G509": 6393, + "G639": 275, + "G436": 1378, + "G336": 478, + "G507": 538 + }, + "total_frames": 9062, + "attributes": null + } + }, + "total_frames": 12146, + "total_tracklets": 19 + }, + "0204": { + "person_id": "0204", + "split": "test", + "cameras": { + "G639": { + "tracklets": 2, + "frames": 140 + }, + "G336": { + "tracklets": 3, + "frames": 2173 + }, + "G329": { + "tracklets": 1, + "frames": 256 + }, + "G436": { + "tracklets": 3, + "frames": 2381 + } + }, + "outfits": { + "003": { + "cameras": { + "G639": 140, + "G336": 2173 + }, + "total_frames": 2313, + "attributes": null + }, + "005": { + "cameras": { + "G329": 256, + "G436": 2381 + }, + "total_frames": 2637, + "attributes": null + } + }, + "total_frames": 4950, + "total_tracklets": 9 + }, + "0258": { + "person_id": "0258", + "split": "test", + "cameras": { + "G639": { + "tracklets": 7, + "frames": 2966 + }, + "G329": { + "tracklets": 5, + "frames": 1280 + }, + "G507": { + "tracklets": 1, + "frames": 445 + }, + "G436": { + "tracklets": 4, + "frames": 2759 + }, + "G330": { + "tracklets": 1, + "frames": 793 + }, + "G336": { + "tracklets": 3, + "frames": 2238 + }, + "G508": { + "tracklets": 3, + "frames": 2072 + } + }, + "outfits": { + "006": { + "cameras": { + "G639": 2929, + "G329": 729, + "G507": 445, + "G436": 2759, + "G330": 793, + "G336": 604 + }, + "total_frames": 8259, + "attributes": null + }, + "001": { + "cameras": { + "G329": 551, + "G508": 2072 + }, + "total_frames": 2623, + "attributes": null + }, + "003": { + "cameras": { + "G639": 37, + "G336": 1634 + }, + "total_frames": 1671, + "attributes": null + } + }, + "total_frames": 12553, + "total_tracklets": 24 + }, + "0301": { + "person_id": "0301", + "split": "test", + "cameras": { + "G508": { + "tracklets": 1, + "frames": 148 + } + }, + "outfits": { + "001": { + "cameras": { + "G508": 148 + }, + "total_frames": 148, + "attributes": null + } + }, + "total_frames": 148, + "total_tracklets": 1 + }, + "0295": { + "person_id": "0295", + "split": "test", + "cameras": { + "G509": { + "tracklets": 2, + "frames": 1279 + }, + "G639": { + "tracklets": 3, + "frames": 603 + }, + "G336": { + "tracklets": 2, + "frames": 1268 + }, + "G436": { + "tracklets": 4, + "frames": 1753 + }, + "G507": { + "tracklets": 12, + "frames": 8693 + }, + "G330": { + "tracklets": 1, + "frames": 397 + } + }, + "outfits": { + "005": { + "cameras": { + "G509": 1279, + "G639": 603, + "G336": 622, + "G436": 1753, + "G507": 8693, + "G330": 397 + }, + "total_frames": 13347, + "attributes": null + }, + "003": { + "cameras": { + "G336": 646 + }, + "total_frames": 646, + "attributes": null + } + }, + "total_frames": 13993, + "total_tracklets": 24 + }, + "0300": { + "person_id": "0300", + "split": "test", + "cameras": { + "G508": { + "tracklets": 1, + "frames": 115 + } + }, + "outfits": { + "001": { + "cameras": { + "G508": 115 + }, + "total_frames": 115, + "attributes": null + } + }, + "total_frames": 115, + "total_tracklets": 1 + } + } +} \ No newline at end of file diff --git a/meva/data/person_database_yolo.json b/meva/data/person_database_yolo.json new file mode 100644 index 0000000..2518805 --- /dev/null +++ b/meva/data/person_database_yolo.json @@ -0,0 +1,9200 @@ +{ + "metadata": { + "generated_at": "2026-02-17T21:24:22", + "total_persons": 158, + "total_crops_analyzed": 5676, + "total_crops_available": 4795407, + "yolo_model": "yolov8n", + "yolo_time_sec": 46.0, + "gpt_enabled": false, + "gpt_cost_usd": 0.0, + "pipeline": "YOLO" + }, + "persons": { + "0001": { + "person_id": "0001", + "split": "train", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0001/0001O002C326T004F00077.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.693, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0001/0001O002C326T004F00077.jpg", + "best_crop_size": { + "w": 295, + "h": 680 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.573, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0001/0001O003C329T003F00069.jpg", + "best_crop_size": { + "w": 150, + "h": 303 + } + } + }, + "gpt_description": null + }, + "0002": { + "person_id": "0002", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "suitcase" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0002/0002O013C331T012F00213.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.589, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0002/0002O004C340T068F00234.jpg", + "best_crop_size": { + "w": 87, + "h": 291 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "suitcase" + ], + "person_detection_confidence": 0.713, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0002/0002O010C419T087F00114.jpg", + "best_crop_size": { + "w": 275, + "h": 692 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.673, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0002/0002O011C420T061F00312.jpg", + "best_crop_size": { + "w": 174, + "h": 347 + } + }, + "013": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.789, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0002/0002O013C331T012F00213.jpg", + "best_crop_size": { + "w": 176, + "h": 577 + } + }, + "016": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.315, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0002/0002O016C341T002F00249.jpg", + "best_crop_size": { + "w": 35, + "h": 91 + } + } + }, + "gpt_description": null + }, + "0003": { + "person_id": "0003", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0003/0003O020C420T062F00016.jpg", + "outfits": { + "006": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.632, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0003/0003O006C505T081F00005.jpg", + "best_crop_size": { + "w": 214, + "h": 313 + } + }, + "008": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.441, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0003/0003O008C341T001F00762.jpg", + "best_crop_size": { + "w": 32, + "h": 90 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.551, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0003/0003O020C420T062F00016.jpg", + "best_crop_size": { + "w": 230, + "h": 436 + } + }, + "024": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.554, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0003/0003O024C340T052F00172.jpg", + "best_crop_size": { + "w": 107, + "h": 196 + } + }, + "025": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.495, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0003/0003O025C424T010F00527.jpg", + "best_crop_size": { + "w": 93, + "h": 175 + } + }, + "028": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.573, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0003/0003O028C508T040F00576.jpg", + "best_crop_size": { + "w": 113, + "h": 342 + } + } + }, + "gpt_description": null + }, + "0004": { + "person_id": "0004", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0004/0004O013C326T008F00067.jpg", + "outfits": { + "003": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.624, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0004/0004O003C423T067F00598.jpg", + "best_crop_size": { + "w": 42, + "h": 116 + } + }, + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.63, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0004/0004O004C421T027F00296.jpg", + "best_crop_size": { + "w": 146, + "h": 394 + } + }, + "007": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.613, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0004/0004O007C419T064F00166.jpg", + "best_crop_size": { + "w": 211, + "h": 450 + } + }, + "009": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.563, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0004/0004O009C340T059F00237.jpg", + "best_crop_size": { + "w": 85, + "h": 193 + } + }, + "013": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.697, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0004/0004O013C326T008F00067.jpg", + "best_crop_size": { + "w": 309, + "h": 735 + } + } + }, + "gpt_description": null + }, + "0005": { + "person_id": "0005", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0005/0005O013C419T008F00194.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.588, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0005/0005O005C505T030F00935.jpg", + "best_crop_size": { + "w": 77, + "h": 211 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.626, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0005/0005O013C419T008F00194.jpg", + "best_crop_size": { + "w": 331, + "h": 564 + } + }, + "020": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.632, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0005/0005O020C638T043F00045.jpg", + "best_crop_size": { + "w": 42, + "h": 93 + } + }, + "025": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.636, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0005/0005O025C339T027F00071.jpg", + "best_crop_size": { + "w": 77, + "h": 181 + } + } + }, + "gpt_description": null + }, + "0006": { + "person_id": "0006", + "split": "train", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0006/0006O007C419T009F00102.jpg", + "outfits": { + "007": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.775, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0006/0006O007C419T009F00102.jpg", + "best_crop_size": { + "w": 410, + "h": 773 + } + } + }, + "gpt_description": null + }, + "0007": { + "person_id": "0007", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0007/0007O018C419T005F00059.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.627, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0007/0007O004C424T053F00064.jpg", + "best_crop_size": { + "w": 52, + "h": 141 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.674, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0007/0007O011C419T030F00151.jpg", + "best_crop_size": { + "w": 336, + "h": 767 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.732, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0007/0007O014C419T050F00086.jpg", + "best_crop_size": { + "w": 543, + "h": 698 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "yellow", + "carried_objects": [], + "person_detection_confidence": 0.372, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0007/0007O016C328T013F00484.jpg", + "best_crop_size": { + "w": 35, + "h": 83 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.72, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0007/0007O018C419T005F00059.jpg", + "best_crop_size": { + "w": 502, + "h": 702 + } + }, + "021": { + "upper_body_color": "gray", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.397, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0007/0007O021C341T001F00138.jpg", + "best_crop_size": { + "w": 47, + "h": 92 + } + } + }, + "gpt_description": null + }, + "0008": { + "person_id": "0008", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "yellow", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0008/0008O016C421T011F00234.jpg", + "outfits": { + "003": { + "upper_body_color": "yellow", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0008/0008O003C331T024F00109.jpg", + "best_crop_size": { + "w": 48, + "h": 86 + } + }, + "009": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.556, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0008/0008O009C420T014F00187.jpg", + "best_crop_size": { + "w": 140, + "h": 367 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.631, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0008/0008O016C421T011F00234.jpg", + "best_crop_size": { + "w": 153, + "h": 410 + } + }, + "018": { + "upper_body_color": "gray", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0008/0008O018C424T000F00046.jpg", + "best_crop_size": { + "w": 57, + "h": 118 + } + } + }, + "gpt_description": null + }, + "0009": { + "person_id": "0009", + "split": "train", + "num_outfits": 9, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O007C419T109F00075.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.623, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O004C505T139F00208.jpg", + "best_crop_size": { + "w": 93, + "h": 311 + } + }, + "007": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.688, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O007C419T109F00075.jpg", + "best_crop_size": { + "w": 332, + "h": 723 + } + }, + "008": { + "upper_body_color": "green", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.512, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O008C424T124F00265.jpg", + "best_crop_size": { + "w": 50, + "h": 125 + } + }, + "009": { + "upper_body_color": "green", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O009C330T149F00188.jpg", + "best_crop_size": { + "w": 36, + "h": 81 + } + }, + "010": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.606, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O010C424T001F00026.jpg", + "best_crop_size": { + "w": 57, + "h": 185 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.504, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O012C339T144F00143.jpg", + "best_crop_size": { + "w": 104, + "h": 176 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.651, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O013C420T075F00079.jpg", + "best_crop_size": { + "w": 177, + "h": 292 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.492, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O018C339T021F00108.jpg", + "best_crop_size": { + "w": 65, + "h": 141 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.552, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0009/0009O019C326T086F00116.jpg", + "best_crop_size": { + "w": 197, + "h": 508 + } + } + }, + "gpt_description": null + }, + "0010": { + "person_id": "0010", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0010/0010O017C326T083F00101.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.69, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0010/0010O004C505T022F00124.jpg", + "best_crop_size": { + "w": 123, + "h": 370 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.519, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0010/0010O010C419T091F00090.jpg", + "best_crop_size": { + "w": 201, + "h": 595 + } + }, + "016": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.68, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0010/0010O016C330T057F00939.jpg", + "best_crop_size": { + "w": 147, + "h": 235 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.684, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0010/0010O017C326T083F00101.jpg", + "best_crop_size": { + "w": 471, + "h": 859 + } + }, + "022": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.408, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0010/0010O022C638T092F00404.jpg", + "best_crop_size": { + "w": 40, + "h": 118 + } + }, + "025": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.395, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0010/0010O025C506T006F00951.jpg", + "best_crop_size": { + "w": 94, + "h": 202 + } + } + }, + "gpt_description": null + }, + "0011": { + "person_id": "0011", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0011/0011O009C419T050F00005.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.674, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0011/0011O003C340T031F00526.jpg", + "best_crop_size": { + "w": 199, + "h": 452 + } + }, + "007": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.784, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0011/0011O007C340T002F00190.jpg", + "best_crop_size": { + "w": 194, + "h": 382 + } + }, + "009": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.652, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0011/0011O009C419T050F00005.jpg", + "best_crop_size": { + "w": 241, + "h": 517 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.875, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0011/0011O011C420T059F00020.jpg", + "best_crop_size": { + "w": 157, + "h": 312 + } + }, + "015": { + "upper_body_color": "gray", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.607, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0011/0011O015C424T057F00298.jpg", + "best_crop_size": { + "w": 81, + "h": 124 + } + } + }, + "gpt_description": null + }, + "0012": { + "person_id": "0012", + "split": "train", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "black", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0012/0012O002C419T013F00160.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.629, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0012/0012O002C419T013F00160.jpg", + "best_crop_size": { + "w": 318, + "h": 749 + } + }, + "004": { + "upper_body_color": "black", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.62, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0012/0012O004C508T001F00000.jpg", + "best_crop_size": { + "w": 148, + "h": 417 + } + } + }, + "gpt_description": null + }, + "0013": { + "person_id": "0013", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0013/0013O012C419T027F00147.jpg", + "outfits": { + "004": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.566, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0013/0013O004C505T014F00991.jpg", + "best_crop_size": { + "w": 192, + "h": 380 + } + }, + "006": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.566, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0013/0013O006C508T025F00001.jpg", + "best_crop_size": { + "w": 69, + "h": 321 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.483, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0013/0013O011C419T076F00059.jpg", + "best_crop_size": { + "w": 126, + "h": 337 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.567, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0013/0013O012C419T027F00147.jpg", + "best_crop_size": { + "w": 255, + "h": 681 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.539, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0013/0013O014C419T007F00175.jpg", + "best_crop_size": { + "w": 363, + "h": 580 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.346, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0013/0013O016C339T021F00050.jpg", + "best_crop_size": { + "w": 32, + "h": 84 + } + }, + "020": { + "upper_body_color": "yellow", + "lower_body_color": "yellow", + "carried_objects": [], + "person_detection_confidence": 0.667, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0013/0013O020C508T059F00771.jpg", + "best_crop_size": { + "w": 295, + "h": 344 + } + } + }, + "gpt_description": null + }, + "0014": { + "person_id": "0014", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0014/0014O016C420T031F00108.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.398, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0014/0014O004C508T059F00167.jpg", + "best_crop_size": { + "w": 70, + "h": 181 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.612, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0014/0014O010C339T065F00153.jpg", + "best_crop_size": { + "w": 165, + "h": 257 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.745, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0014/0014O016C420T031F00108.jpg", + "best_crop_size": { + "w": 166, + "h": 407 + } + }, + "022": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.665, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0014/0014O022C508T013F00586.jpg", + "best_crop_size": { + "w": 154, + "h": 394 + } + } + }, + "gpt_description": null + }, + "0015": { + "person_id": "0015", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "black", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0015/0015O004C419T010F00073.jpg", + "outfits": { + "004": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.711, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0015/0015O004C419T010F00073.jpg", + "best_crop_size": { + "w": 491, + "h": 677 + } + }, + "010": { + "upper_body_color": "gray", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.579, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0015/0015O010C339T112F00015.jpg", + "best_crop_size": { + "w": 57, + "h": 178 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.661, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0015/0015O013C331T079F00227.jpg", + "best_crop_size": { + "w": 194, + "h": 485 + } + }, + "015": { + "upper_body_color": "green", + "lower_body_color": "yellow", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0015/0015O015C328T031F00676.jpg", + "best_crop_size": { + "w": 47, + "h": 98 + } + } + }, + "gpt_description": null + }, + "0016": { + "person_id": "0016", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0016/0016O004C326T038F00106.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.696, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0016/0016O004C326T038F00106.jpg", + "best_crop_size": { + "w": 330, + "h": 613 + } + }, + "009": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.66, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0016/0016O009C506T002F00534.jpg", + "best_crop_size": { + "w": 126, + "h": 315 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.616, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0016/0016O014C420T025F00028.jpg", + "best_crop_size": { + "w": 207, + "h": 537 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.628, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0016/0016O019C419T019F00158.jpg", + "best_crop_size": { + "w": 273, + "h": 547 + } + }, + "022": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.498, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0016/0016O022C341T021F00492.jpg", + "best_crop_size": { + "w": 36, + "h": 93 + } + } + }, + "gpt_description": null + }, + "0017": { + "person_id": "0017", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0017/0017O013C419T052F00230.jpg", + "outfits": { + "004": { + "upper_body_color": "gray", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.546, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0017/0017O004C421T037F00591.jpg", + "best_crop_size": { + "w": 75, + "h": 223 + } + }, + "007": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.71, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0017/0017O007C326T049F00038.jpg", + "best_crop_size": { + "w": 390, + "h": 795 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.609, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0017/0017O013C419T052F00230.jpg", + "best_crop_size": { + "w": 363, + "h": 807 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.756, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0017/0017O017C638T087F00726.jpg", + "best_crop_size": { + "w": 60, + "h": 121 + } + }, + "020": { + "upper_body_color": "yellow", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.707, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0017/0017O020C421T081F00838.jpg", + "best_crop_size": { + "w": 132, + "h": 316 + } + }, + "021": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.647, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0017/0017O021C506T021F00180.jpg", + "best_crop_size": { + "w": 65, + "h": 226 + } + } + }, + "gpt_description": null + }, + "0018": { + "person_id": "0018", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0018/0018O007C326T061F00105.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.557, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0018/0018O004C329T014F00140.jpg", + "best_crop_size": { + "w": 204, + "h": 463 + } + }, + "007": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.75, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0018/0018O007C326T061F00105.jpg", + "best_crop_size": { + "w": 361, + "h": 675 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0018/0018O013C299T063F00001.jpg", + "best_crop_size": { + "w": 55, + "h": 112 + } + }, + "014": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.696, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0018/0018O014C419T043F00156.jpg", + "best_crop_size": { + "w": 407, + "h": 536 + } + }, + "016": { + "upper_body_color": "purple", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.729, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0018/0018O016C420T065F00032.jpg", + "best_crop_size": { + "w": 276, + "h": 458 + } + }, + "018": { + "upper_body_color": "purple", + "lower_body_color": "purple", + "carried_objects": [], + "person_detection_confidence": 0.588, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0018/0018O018C638T066F00343.jpg", + "best_crop_size": { + "w": 53, + "h": 117 + } + }, + "022": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.588, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0018/0018O022C506T027F00745.jpg", + "best_crop_size": { + "w": 96, + "h": 208 + } + } + }, + "gpt_description": null + }, + "0019": { + "person_id": "0019", + "split": "train", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0019/0019O004C329T021F00217.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.708, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0019/0019O003C421T027F00250.jpg", + "best_crop_size": { + "w": 145, + "h": 338 + } + }, + "004": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.578, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0019/0019O004C329T021F00217.jpg", + "best_crop_size": { + "w": 267, + "h": 600 + } + }, + "018": { + "upper_body_color": "green", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.704, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0019/0019O018C424T005F00638.jpg", + "best_crop_size": { + "w": 81, + "h": 188 + } + } + }, + "gpt_description": null + }, + "0020": { + "person_id": "0020", + "split": "train", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "gray", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0020/0020O016C420T019F00024.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.463, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0020/0020O004C339T000F00157.jpg", + "best_crop_size": { + "w": 66, + "h": 115 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.647, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0020/0020O015C330T023F00413.jpg", + "best_crop_size": { + "w": 44, + "h": 121 + } + }, + "016": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.594, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0020/0020O016C420T019F00024.jpg", + "best_crop_size": { + "w": 186, + "h": 444 + } + } + }, + "gpt_description": null + }, + "0022": { + "person_id": "0022", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "black", + "primary_lower_color": "gray", + "all_carried_objects": [ + "suitcase" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0022/0022O014C419T015F00050.jpg", + "outfits": { + "003": { + "upper_body_color": "gray", + "lower_body_color": "gray", + "carried_objects": [ + "suitcase" + ], + "person_detection_confidence": 0.639, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0022/0022O003C421T017F00479.jpg", + "best_crop_size": { + "w": 159, + "h": 220 + } + }, + "009": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.566, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0022/0022O009C330T009F00580.jpg", + "best_crop_size": { + "w": 83, + "h": 194 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.584, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0022/0022O014C419T015F00050.jpg", + "best_crop_size": { + "w": 140, + "h": 359 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0022/0022O015C419T019F00010.jpg", + "best_crop_size": { + "w": 123, + "h": 323 + } + }, + "018": { + "upper_body_color": "purple", + "lower_body_color": "purple", + "carried_objects": [], + "person_detection_confidence": 0.347, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0022/0022O018C638T020F00096.jpg", + "best_crop_size": { + "w": 35, + "h": 101 + } + }, + "022": { + "upper_body_color": "black", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.506, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0022/0022O022C506T000F00127.jpg", + "best_crop_size": { + "w": 74, + "h": 177 + } + } + }, + "gpt_description": null + }, + "0023": { + "person_id": "0023", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0023/0023O005C329T015F00017.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.687, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0023/0023O005C329T015F00017.jpg", + "best_crop_size": { + "w": 460, + "h": 595 + } + }, + "008": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.694, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0023/0023O008C419T049F00090.jpg", + "best_crop_size": { + "w": 168, + "h": 430 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.825, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0023/0023O011C419T056F00147.jpg", + "best_crop_size": { + "w": 249, + "h": 496 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.723, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0023/0023O014C340T003F00262.jpg", + "best_crop_size": { + "w": 126, + "h": 214 + } + }, + "021": { + "upper_body_color": "white", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.292, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0023/0023O021C506T005F00024.jpg", + "best_crop_size": { + "w": 28, + "h": 86 + } + } + }, + "gpt_description": null + }, + "0024": { + "person_id": "0024", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0024/0024O011C419T079F00085.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.549, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0024/0024O005C420T063F00567.jpg", + "best_crop_size": { + "w": 153, + "h": 297 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.67, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0024/0024O011C419T079F00085.jpg", + "best_crop_size": { + "w": 520, + "h": 695 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.715, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0024/0024O012C326T087F00084.jpg", + "best_crop_size": { + "w": 274, + "h": 672 + } + }, + "014": { + "upper_body_color": "black", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.453, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0024/0024O014C299T092F00233.jpg", + "best_crop_size": { + "w": 43, + "h": 118 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.757, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0024/0024O015C420T027F00013.jpg", + "best_crop_size": { + "w": 246, + "h": 327 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.613, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0024/0024O020C331T009F00157.jpg", + "best_crop_size": { + "w": 215, + "h": 449 + } + } + }, + "gpt_description": null + }, + "0025": { + "person_id": "0025", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0025/0025O015C419T018F00134.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.598, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0025/0025O005C419T099F00089.jpg", + "best_crop_size": { + "w": 158, + "h": 314 + } + }, + "012": { + "upper_body_color": "black", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.695, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0025/0025O012C299T115F00930.jpg", + "best_crop_size": { + "w": 107, + "h": 255 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.508, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0025/0025O013C419T003F00000.jpg", + "best_crop_size": { + "w": 201, + "h": 308 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.742, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0025/0025O015C419T018F00134.jpg", + "best_crop_size": { + "w": 316, + "h": 620 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.621, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0025/0025O016C420T023F00057.jpg", + "best_crop_size": { + "w": 121, + "h": 277 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.701, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0025/0025O021C419T136F00082.jpg", + "best_crop_size": { + "w": 458, + "h": 421 + } + }, + "022": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.593, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0025/0025O022C419T128F00032.jpg", + "best_crop_size": { + "w": 212, + "h": 561 + } + } + }, + "gpt_description": null + }, + "0026": { + "person_id": "0026", + "split": "train", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0026/0026O001C326T018F00456.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.719, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0026/0026O001C326T018F00456.jpg", + "best_crop_size": { + "w": 279, + "h": 562 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.596, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0026/0026O015C419T039F00037.jpg", + "best_crop_size": { + "w": 162, + "h": 361 + } + }, + "018": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.629, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0026/0026O018C420T001F00111.jpg", + "best_crop_size": { + "w": 221, + "h": 337 + } + } + }, + "gpt_description": null + }, + "0027": { + "person_id": "0027", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0027/0027O022C326T045F00363.jpg", + "outfits": { + "004": { + "upper_body_color": "purple", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.3, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0027/0027O004C341T001F00015.jpg", + "best_crop_size": { + "w": 40, + "h": 86 + } + }, + "013": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.368, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0027/0027O013C330T006F00576.jpg", + "best_crop_size": { + "w": 79, + "h": 131 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.674, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0027/0027O014C420T037F00113.jpg", + "best_crop_size": { + "w": 99, + "h": 231 + } + }, + "016": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.701, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0027/0027O016C420T043F00394.jpg", + "best_crop_size": { + "w": 178, + "h": 305 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.545, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0027/0027O018C420T039F00059.jpg", + "best_crop_size": { + "w": 110, + "h": 268 + } + }, + "022": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.694, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0027/0027O022C326T045F00363.jpg", + "best_crop_size": { + "w": 269, + "h": 468 + } + } + }, + "gpt_description": null + }, + "0028": { + "person_id": "0028", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "green", + "all_carried_objects": [ + "backpack" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0028/0028O002C421T052F00253.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [ + "backpack" + ], + "person_detection_confidence": 0.591, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0028/0028O002C421T052F00253.jpg", + "best_crop_size": { + "w": 157, + "h": 363 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.538, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0028/0028O010C330T010F00925.jpg", + "best_crop_size": { + "w": 48, + "h": 131 + } + }, + "011": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.8, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0028/0028O011C420T038F00236.jpg", + "best_crop_size": { + "w": 97, + "h": 280 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.561, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0028/0028O016C340T000F00224.jpg", + "best_crop_size": { + "w": 97, + "h": 215 + } + } + }, + "gpt_description": null + }, + "0029": { + "person_id": "0029", + "split": "train", + "num_outfits": 2, + "primary_upper_color": "green", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0029/0029O001C419T001F00145.jpg", + "outfits": { + "001": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.683, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0029/0029O001C419T001F00145.jpg", + "best_crop_size": { + "w": 207, + "h": 434 + } + }, + "002": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.686, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0029/0029O002C330T032F00228.jpg", + "best_crop_size": { + "w": 85, + "h": 221 + } + } + }, + "gpt_description": null + }, + "0030": { + "person_id": "0030", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0030/0030O009C326T012F00022.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.692, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0030/0030O003C419T068F00185.jpg", + "best_crop_size": { + "w": 194, + "h": 443 + } + }, + "009": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.705, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0030/0030O009C326T012F00022.jpg", + "best_crop_size": { + "w": 269, + "h": 650 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.62, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0030/0030O010C421T031F00051.jpg", + "best_crop_size": { + "w": 122, + "h": 443 + } + }, + "015": { + "upper_body_color": "purple", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.566, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0030/0030O015C339T078F00145.jpg", + "best_crop_size": { + "w": 66, + "h": 140 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.393, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0030/0030O020C339T017F00113.jpg", + "best_crop_size": { + "w": 36, + "h": 102 + } + } + }, + "gpt_description": null + }, + "0031": { + "person_id": "0031", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "black", + "primary_lower_color": "blue", + "all_carried_objects": [ + "book", + "cell phone" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0031/0031O004C326T018F00063.jpg", + "outfits": { + "004": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.697, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0031/0031O004C326T018F00063.jpg", + "best_crop_size": { + "w": 395, + "h": 727 + } + }, + "013": { + "upper_body_color": "yellow", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.62, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0031/0031O013C299T032F00175.jpg", + "best_crop_size": { + "w": 96, + "h": 375 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.753, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0031/0031O014C420T031F00013.jpg", + "best_crop_size": { + "w": 276, + "h": 395 + } + }, + "018": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [ + "book", + "cell phone" + ], + "person_detection_confidence": 0.704, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0031/0031O018C508T006F00232.jpg", + "best_crop_size": { + "w": 281, + "h": 419 + } + } + }, + "gpt_description": null + }, + "0032": { + "person_id": "0032", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0032/0032O010C419T076F00059.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.869, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0032/0032O003C506T066F00037.jpg", + "best_crop_size": { + "w": 222, + "h": 379 + } + }, + "008": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.596, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0032/0032O008C420T064F00084.jpg", + "best_crop_size": { + "w": 303, + "h": 364 + } + }, + "009": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.543, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0032/0032O009C299T078F00673.jpg", + "best_crop_size": { + "w": 44, + "h": 104 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.748, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0032/0032O010C419T076F00059.jpg", + "best_crop_size": { + "w": 334, + "h": 796 + } + }, + "012": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.61, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0032/0032O012C331T032F00196.jpg", + "best_crop_size": { + "w": 107, + "h": 448 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.689, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0032/0032O016C508T050F00870.jpg", + "best_crop_size": { + "w": 129, + "h": 282 + } + } + }, + "gpt_description": null + }, + "0033": { + "person_id": "0033", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0033/0033O020C419T052F00154.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.624, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0033/0033O004C329T009F00456.jpg", + "best_crop_size": { + "w": 285, + "h": 587 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.569, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0033/0033O013C420T046F00410.jpg", + "best_crop_size": { + "w": 325, + "h": 290 + } + }, + "014": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.646, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0033/0033O014C421T030F00307.jpg", + "best_crop_size": { + "w": 166, + "h": 315 + } + }, + "015": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.782, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0033/0033O015C420T050F00287.jpg", + "best_crop_size": { + "w": 222, + "h": 496 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.575, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0033/0033O016C419T055F00150.jpg", + "best_crop_size": { + "w": 227, + "h": 453 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.594, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0033/0033O018C424T001F00160.jpg", + "best_crop_size": { + "w": 88, + "h": 193 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.892, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0033/0033O020C419T052F00154.jpg", + "best_crop_size": { + "w": 266, + "h": 691 + } + } + }, + "gpt_description": null + }, + "0034": { + "person_id": "0034", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0034/0034O015C420T036F00338.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.621, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0034/0034O005C339T019F00379.jpg", + "best_crop_size": { + "w": 69, + "h": 162 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.792, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0034/0034O014C420T048F00182.jpg", + "best_crop_size": { + "w": 166, + "h": 357 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.721, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0034/0034O015C420T036F00338.jpg", + "best_crop_size": { + "w": 210, + "h": 477 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.775, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0034/0034O017C424T031F00271.jpg", + "best_crop_size": { + "w": 83, + "h": 177 + } + }, + "020": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.258, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0034/0034O020C341T033F00037.jpg", + "best_crop_size": { + "w": 62, + "h": 105 + } + } + }, + "gpt_description": null + }, + "0035": { + "person_id": "0035", + "split": "train", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "bottle" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0035/0035O009C419T023F00323.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "bottle" + ], + "person_detection_confidence": 0.704, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0035/0035O003C420T015F00296.jpg", + "best_crop_size": { + "w": 315, + "h": 349 + } + }, + "009": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.795, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0035/0035O009C419T023F00323.jpg", + "best_crop_size": { + "w": 232, + "h": 550 + } + } + }, + "gpt_description": null + }, + "0036": { + "person_id": "0036", + "split": "train", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "black", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0036/0036O008C421T023F00413.jpg", + "outfits": { + "008": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.6, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0036/0036O008C421T023F00413.jpg", + "best_crop_size": { + "w": 144, + "h": 344 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.291, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0036/0036O011C341T042F00539.jpg", + "best_crop_size": { + "w": 66, + "h": 129 + } + } + }, + "gpt_description": null + }, + "0037": { + "person_id": "0037", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0037/0037O015C419T050F00116.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.443, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0037/0037O004C339T003F00863.jpg", + "best_crop_size": { + "w": 100, + "h": 155 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.846, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0037/0037O010C419T060F00015.jpg", + "best_crop_size": { + "w": 286, + "h": 724 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.568, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0037/0037O015C419T050F00116.jpg", + "best_crop_size": { + "w": 509, + "h": 800 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.775, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0037/0037O017C419T053F00070.jpg", + "best_crop_size": { + "w": 367, + "h": 732 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "purple", + "carried_objects": [], + "person_detection_confidence": 0.559, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0037/0037O020C424T008F00575.jpg", + "best_crop_size": { + "w": 80, + "h": 198 + } + }, + "024": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.711, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0037/0037O024C326T010F00070.jpg", + "best_crop_size": { + "w": 280, + "h": 737 + } + } + }, + "gpt_description": null + }, + "0038": { + "person_id": "0038", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "suitcase" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0038/0038O013C420T058F00360.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "suitcase" + ], + "person_detection_confidence": 0.567, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0038/0038O004C508T036F00992.jpg", + "best_crop_size": { + "w": 99, + "h": 183 + } + }, + "013": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.714, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0038/0038O013C420T058F00360.jpg", + "best_crop_size": { + "w": 264, + "h": 340 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0038/0038O016C421T063F00006.jpg", + "best_crop_size": { + "w": 50, + "h": 127 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.3, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0038/0038O019C421T065F00267.jpg", + "best_crop_size": { + "w": 29, + "h": 120 + } + }, + "022": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.664, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0038/0038O022C331T014F00792.jpg", + "best_crop_size": { + "w": 123, + "h": 337 + } + } + }, + "gpt_description": null + }, + "0039": { + "person_id": "0039", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0039/0039O001C326T065F00086.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.754, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0039/0039O001C326T065F00086.jpg", + "best_crop_size": { + "w": 339, + "h": 770 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.568, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0039/0039O003C329T085F00389.jpg", + "best_crop_size": { + "w": 308, + "h": 570 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.69, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0039/0039O014C421T042F00368.jpg", + "best_crop_size": { + "w": 127, + "h": 324 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.555, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0039/0039O019C419T061F00056.jpg", + "best_crop_size": { + "w": 175, + "h": 345 + } + } + }, + "gpt_description": null + }, + "0040": { + "person_id": "0040", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0040/0040O002C421T156F00297.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.565, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0040/0040O002C421T156F00297.jpg", + "best_crop_size": { + "w": 144, + "h": 388 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.612, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0040/0040O011C421T113F00049.jpg", + "best_crop_size": { + "w": 132, + "h": 347 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.536, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0040/0040O012C299T151F00085.jpg", + "best_crop_size": { + "w": 30, + "h": 138 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.392, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0040/0040O014C420T161F00038.jpg", + "best_crop_size": { + "w": 58, + "h": 245 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.593, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0040/0040O015C420T103F00232.jpg", + "best_crop_size": { + "w": 203, + "h": 370 + } + } + }, + "gpt_description": null + }, + "0041": { + "person_id": "0041", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0041/0041O019C420T029F00020.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.631, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0041/0041O004C326T039F00087.jpg", + "best_crop_size": { + "w": 283, + "h": 481 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.658, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0041/0041O016C419T016F00029.jpg", + "best_crop_size": { + "w": 177, + "h": 463 + } + }, + "017": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.487, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0041/0041O017C299T040F00082.jpg", + "best_crop_size": { + "w": 32, + "h": 87 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.714, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0041/0041O019C420T029F00020.jpg", + "best_crop_size": { + "w": 160, + "h": 493 + } + }, + "024": { + "upper_body_color": "gray", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.541, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0041/0041O024C340T003F00029.jpg", + "best_crop_size": { + "w": 91, + "h": 193 + } + }, + "027": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.665, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0041/0041O027C419T025F00000.jpg", + "best_crop_size": { + "w": 205, + "h": 420 + } + } + }, + "gpt_description": null + }, + "0042": { + "person_id": "0042", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0042/0042O015C419T005F00072.jpg", + "outfits": { + "004": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.552, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0042/0042O004C506T081F00376.jpg", + "best_crop_size": { + "w": 107, + "h": 223 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.627, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0042/0042O011C420T024F00434.jpg", + "best_crop_size": { + "w": 95, + "h": 229 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0042/0042O012C421T053F00000.jpg", + "best_crop_size": { + "w": 67, + "h": 151 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.386, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0042/0042O014C638T089F00196.jpg", + "best_crop_size": { + "w": 72, + "h": 129 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.73, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0042/0042O015C419T005F00072.jpg", + "best_crop_size": { + "w": 309, + "h": 588 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.515, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0042/0042O018C506T047F00349.jpg", + "best_crop_size": { + "w": 110, + "h": 174 + } + } + }, + "gpt_description": null + }, + "0043": { + "person_id": "0043", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0043/0043O011C419T010F00270.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.571, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0043/0043O002C420T025F00896.jpg", + "best_crop_size": { + "w": 121, + "h": 281 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.651, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0043/0043O011C419T010F00270.jpg", + "best_crop_size": { + "w": 346, + "h": 659 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.652, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0043/0043O012C299T052F00743.jpg", + "best_crop_size": { + "w": 101, + "h": 255 + } + }, + "016": { + "upper_body_color": "gray", + "lower_body_color": "white", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0043/0043O016C424T016F00128.jpg", + "best_crop_size": { + "w": 47, + "h": 94 + } + } + }, + "gpt_description": null + }, + "0044": { + "person_id": "0044", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0044/0044O012C419T012F00284.jpg", + "outfits": { + "001": { + "upper_body_color": "gray", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.597, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0044/0044O001C423T066F00457.jpg", + "best_crop_size": { + "w": 110, + "h": 231 + } + }, + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.57, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0044/0044O002C420T054F00194.jpg", + "best_crop_size": { + "w": 136, + "h": 279 + } + }, + "012": { + "upper_body_color": "yellow", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.736, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0044/0044O012C419T012F00284.jpg", + "best_crop_size": { + "w": 406, + "h": 599 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.673, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0044/0044O013C299T034F00179.jpg", + "best_crop_size": { + "w": 102, + "h": 155 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0044/0044O017C638T048F00419.jpg", + "best_crop_size": { + "w": 47, + "h": 104 + } + }, + "020": { + "upper_body_color": "yellow", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.602, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0044/0044O020C421T041F00446.jpg", + "best_crop_size": { + "w": 304, + "h": 480 + } + } + }, + "gpt_description": null + }, + "0045": { + "person_id": "0045", + "split": "train", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "suitcase" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0045/0045O004C331T036F00182.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "suitcase" + ], + "person_detection_confidence": 0.517, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0045/0045O004C331T036F00182.jpg", + "best_crop_size": { + "w": 125, + "h": 293 + } + } + }, + "gpt_description": null + }, + "0046": { + "person_id": "0046", + "split": "train", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "handbag" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0046/0046O004C326T001F00080.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "handbag" + ], + "person_detection_confidence": 0.637, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0046/0046O004C326T001F00080.jpg", + "best_crop_size": { + "w": 346, + "h": 757 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0046/0046O012C341T000F00000.jpg", + "best_crop_size": { + "w": 27, + "h": 60 + } + } + }, + "gpt_description": null + }, + "0047": { + "person_id": "0047", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "suitcase" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0047/0047O013C420T060F00281.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.628, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0047/0047O003C508T030F00608.jpg", + "best_crop_size": { + "w": 125, + "h": 268 + } + }, + "013": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.678, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0047/0047O013C420T060F00281.jpg", + "best_crop_size": { + "w": 205, + "h": 515 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.512, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0047/0047O015C420T065F00147.jpg", + "best_crop_size": { + "w": 301, + "h": 342 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.473, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0047/0047O016C421T069F00001.jpg", + "best_crop_size": { + "w": 23, + "h": 135 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.425, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0047/0047O018C638T070F00370.jpg", + "best_crop_size": { + "w": 36, + "h": 97 + } + }, + "023": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "suitcase" + ], + "person_detection_confidence": 0.654, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0047/0047O023C331T011F00466.jpg", + "best_crop_size": { + "w": 135, + "h": 194 + } + } + }, + "gpt_description": null + }, + "0048": { + "person_id": "0048", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0048/0048O014C421T059F00000.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.734, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0048/0048O004C505T003F00049.jpg", + "best_crop_size": { + "w": 249, + "h": 399 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.685, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0048/0048O013C299T032F00908.jpg", + "best_crop_size": { + "w": 67, + "h": 178 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.704, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0048/0048O014C421T059F00000.jpg", + "best_crop_size": { + "w": 142, + "h": 415 + } + }, + "019": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.593, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0048/0048O019C340T021F00211.jpg", + "best_crop_size": { + "w": 107, + "h": 204 + } + }, + "023": { + "upper_body_color": "white", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.51, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0048/0048O023C506T026F00026.jpg", + "best_crop_size": { + "w": 42, + "h": 89 + } + } + }, + "gpt_description": null + }, + "0049": { + "person_id": "0049", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0049/0049O002C326T018F00413.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.692, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0049/0049O002C326T018F00413.jpg", + "best_crop_size": { + "w": 288, + "h": 656 + } + }, + "007": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.406, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0049/0049O007C330T049F00330.jpg", + "best_crop_size": { + "w": 43, + "h": 99 + } + }, + "011": { + "upper_body_color": "black", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.72, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0049/0049O011C420T033F00108.jpg", + "best_crop_size": { + "w": 213, + "h": 454 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0049/0049O014C424T002F00048.jpg", + "best_crop_size": { + "w": 87, + "h": 152 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.883, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0049/0049O016C424T048F00119.jpg", + "best_crop_size": { + "w": 82, + "h": 192 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.496, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0049/0049O019C506T047F00006.jpg", + "best_crop_size": { + "w": 98, + "h": 225 + } + } + }, + "gpt_description": null + }, + "0050": { + "person_id": "0050", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0050/0050O015C326T013F00040.jpg", + "outfits": { + "012": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.693, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0050/0050O012C420T011F00025.jpg", + "best_crop_size": { + "w": 340, + "h": 452 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.876, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0050/0050O015C326T013F00040.jpg", + "best_crop_size": { + "w": 483, + "h": 784 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.76, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0050/0050O017C420T014F00015.jpg", + "best_crop_size": { + "w": 144, + "h": 287 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.767, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0050/0050O018C419T002F00092.jpg", + "best_crop_size": { + "w": 604, + "h": 755 + } + } + }, + "gpt_description": null + }, + "0051": { + "person_id": "0051", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0051/0051O011C419T069F00122.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.447, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0051/0051O003C424T045F00039.jpg", + "best_crop_size": { + "w": 32, + "h": 100 + } + }, + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.48, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0051/0051O004C339T110F00036.jpg", + "best_crop_size": { + "w": 35, + "h": 116 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.483, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0051/0051O010C421T032F00953.jpg", + "best_crop_size": { + "w": 155, + "h": 344 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.629, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0051/0051O011C419T069F00122.jpg", + "best_crop_size": { + "w": 335, + "h": 766 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.452, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0051/0051O015C340T101F00134.jpg", + "best_crop_size": { + "w": 101, + "h": 193 + } + } + }, + "gpt_description": null + }, + "0052": { + "person_id": "0052", + "split": "train", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0052/0052O008C424T005F00063.jpg", + "outfits": { + "001": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.588, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0052/0052O001C339T007F00404.jpg", + "best_crop_size": { + "w": 54, + "h": 113 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.434, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0052/0052O005C638T008F00165.jpg", + "best_crop_size": { + "w": 31, + "h": 103 + } + }, + "008": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.399, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0052/0052O008C424T005F00063.jpg", + "best_crop_size": { + "w": 81, + "h": 182 + } + } + }, + "gpt_description": null + }, + "0053": { + "person_id": "0053", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0053/0053O012C419T031F00107.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.564, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0053/0053O004C331T037F00510.jpg", + "best_crop_size": { + "w": 374, + "h": 375 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.687, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0053/0053O012C419T031F00107.jpg", + "best_crop_size": { + "w": 175, + "h": 398 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.414, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0053/0053O016C424T040F00279.jpg", + "best_crop_size": { + "w": 81, + "h": 158 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.681, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0053/0053O019C508T002F00031.jpg", + "best_crop_size": { + "w": 101, + "h": 288 + } + } + }, + "gpt_description": null + }, + "0054": { + "person_id": "0054", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "bottle" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0054/0054O013C419T068F00095.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.737, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0054/0054O004C419T111F00498.jpg", + "best_crop_size": { + "w": 177, + "h": 430 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.596, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0054/0054O013C419T068F00095.jpg", + "best_crop_size": { + "w": 554, + "h": 678 + } + }, + "016": { + "upper_body_color": "black", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.756, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0054/0054O016C299T077F00981.jpg", + "best_crop_size": { + "w": 67, + "h": 144 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "purple", + "carried_objects": [], + "person_detection_confidence": 0.414, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0054/0054O020C638T063F00183.jpg", + "best_crop_size": { + "w": 57, + "h": 103 + } + }, + "024": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [ + "bottle" + ], + "person_detection_confidence": 0.558, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0054/0054O024C421T057F00156.jpg", + "best_crop_size": { + "w": 201, + "h": 427 + } + } + }, + "gpt_description": null + }, + "0055": { + "person_id": "0055", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "suitcase" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0055/0055O004C329T061F00263.jpg", + "outfits": { + "004": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.729, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0055/0055O004C329T061F00263.jpg", + "best_crop_size": { + "w": 357, + "h": 665 + } + }, + "007": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "suitcase" + ], + "person_detection_confidence": 0.705, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0055/0055O007C419T033F00122.jpg", + "best_crop_size": { + "w": 217, + "h": 496 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.45, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0055/0055O010C339T003F00087.jpg", + "best_crop_size": { + "w": 56, + "h": 118 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.312, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0055/0055O021C424T041F00430.jpg", + "best_crop_size": { + "w": 63, + "h": 139 + } + }, + "022": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.887, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0055/0055O022C419T070F00057.jpg", + "best_crop_size": { + "w": 257, + "h": 637 + } + } + }, + "gpt_description": null + }, + "0056": { + "person_id": "0056", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0056/0056O014C419T008F00119.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.576, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0056/0056O001C424T016F00153.jpg", + "best_crop_size": { + "w": 57, + "h": 145 + } + }, + "009": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.595, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0056/0056O009C419T050F00066.jpg", + "best_crop_size": { + "w": 167, + "h": 354 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.649, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0056/0056O011C421T107F00369.jpg", + "best_crop_size": { + "w": 136, + "h": 367 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.749, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0056/0056O014C419T008F00119.jpg", + "best_crop_size": { + "w": 321, + "h": 727 + } + } + }, + "gpt_description": null + }, + "0057": { + "person_id": "0057", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0057/0057O012C326T026F00038.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.69, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0057/0057O003C508T097F00071.jpg", + "best_crop_size": { + "w": 247, + "h": 494 + } + }, + "010": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.573, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0057/0057O010C420T052F00257.jpg", + "best_crop_size": { + "w": 194, + "h": 306 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.65, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0057/0057O012C326T026F00038.jpg", + "best_crop_size": { + "w": 294, + "h": 827 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.528, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0057/0057O015C340T070F00135.jpg", + "best_crop_size": { + "w": 107, + "h": 211 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.714, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0057/0057O018C419T015F00076.jpg", + "best_crop_size": { + "w": 256, + "h": 686 + } + } + }, + "gpt_description": null + }, + "0058": { + "person_id": "0058", + "split": "train", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0058/0058O009C340T006F00082.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.449, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0058/0058O002C341T002F00151.jpg", + "best_crop_size": { + "w": 42, + "h": 94 + } + }, + "009": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.623, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0058/0058O009C340T006F00082.jpg", + "best_crop_size": { + "w": 93, + "h": 238 + } + } + }, + "gpt_description": null + }, + "0059": { + "person_id": "0059", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "tie" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0059/0059O012C419T039F00053.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.679, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0059/0059O004C331T022F00049.jpg", + "best_crop_size": { + "w": 443, + "h": 415 + } + }, + "011": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.653, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0059/0059O011C423T048F00586.jpg", + "best_crop_size": { + "w": 104, + "h": 158 + } + }, + "012": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.726, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0059/0059O012C419T039F00053.jpg", + "best_crop_size": { + "w": 167, + "h": 453 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.609, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0059/0059O014C419T051F00063.jpg", + "best_crop_size": { + "w": 221, + "h": 434 + } + }, + "016": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [ + "tie" + ], + "person_detection_confidence": 0.718, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0059/0059O016C339T040F00025.jpg", + "best_crop_size": { + "w": 74, + "h": 184 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.712, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0059/0059O020C506T003F00291.jpg", + "best_crop_size": { + "w": 176, + "h": 450 + } + } + }, + "gpt_description": null + }, + "0060": { + "person_id": "0060", + "split": "train", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0060/0060O021C424T000F00454.jpg", + "outfits": { + "021": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.728, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0060/0060O021C424T000F00454.jpg", + "best_crop_size": { + "w": 59, + "h": 160 + } + } + }, + "gpt_description": null + }, + "0061": { + "person_id": "0061", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "yellow", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0061/0061O012C329T009F00080.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.662, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0061/0061O002C505T026F00228.jpg", + "best_crop_size": { + "w": 145, + "h": 393 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "yellow", + "carried_objects": [], + "person_detection_confidence": 0.591, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0061/0061O012C329T009F00080.jpg", + "best_crop_size": { + "w": 200, + "h": 579 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.537, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0061/0061O020C339T019F00197.jpg", + "best_crop_size": { + "w": 90, + "h": 152 + } + }, + "026": { + "upper_body_color": "white", + "lower_body_color": "yellow", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0061/0061O026C506T001F00015.jpg", + "best_crop_size": { + "w": 40, + "h": 100 + } + } + }, + "gpt_description": null + }, + "0062": { + "person_id": "0062", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0062/0062O008C326T039F00047.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.538, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0062/0062O003C419T032F00033.jpg", + "best_crop_size": { + "w": 166, + "h": 364 + } + }, + "008": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.666, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0062/0062O008C326T039F00047.jpg", + "best_crop_size": { + "w": 294, + "h": 708 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "purple", + "carried_objects": [], + "person_detection_confidence": 0.795, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0062/0062O010C420T045F00458.jpg", + "best_crop_size": { + "w": 242, + "h": 447 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.756, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0062/0062O012C419T049F00035.jpg", + "best_crop_size": { + "w": 191, + "h": 423 + } + }, + "013": { + "upper_body_color": "gray", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.26, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0062/0062O013C339T000F00074.jpg", + "best_crop_size": { + "w": 36, + "h": 117 + } + }, + "018": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.352, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0062/0062O018C331T047F00557.jpg", + "best_crop_size": { + "w": 182, + "h": 248 + } + }, + "019": { + "upper_body_color": "black", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.349, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0062/0062O019C421T005F00878.jpg", + "best_crop_size": { + "w": 242, + "h": 540 + } + } + }, + "gpt_description": null + }, + "0063": { + "person_id": "0063", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0063/0063O013C299T053F00074.jpg", + "outfits": { + "004": { + "upper_body_color": "pink", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.634, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0063/0063O004C340T031F00182.jpg", + "best_crop_size": { + "w": 92, + "h": 312 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.551, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0063/0063O011C419T019F00108.jpg", + "best_crop_size": { + "w": 159, + "h": 297 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.677, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0063/0063O013C299T053F00074.jpg", + "best_crop_size": { + "w": 148, + "h": 353 + } + }, + "022": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.534, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0063/0063O022C508T001F00121.jpg", + "best_crop_size": { + "w": 45, + "h": 138 + } + } + }, + "gpt_description": null + }, + "0064": { + "person_id": "0064", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0064/0064O009C419T055F00292.jpg", + "outfits": { + "009": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.9, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0064/0064O009C419T055F00292.jpg", + "best_crop_size": { + "w": 414, + "h": 685 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.653, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0064/0064O012C419T029F00018.jpg", + "best_crop_size": { + "w": 234, + "h": 600 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.594, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0064/0064O013C419T053F00133.jpg", + "best_crop_size": { + "w": 274, + "h": 598 + } + }, + "018": { + "upper_body_color": "gray", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.538, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0064/0064O018C340T016F00142.jpg", + "best_crop_size": { + "w": 103, + "h": 202 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.747, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0064/0064O021C421T009F00171.jpg", + "best_crop_size": { + "w": 252, + "h": 634 + } + } + }, + "gpt_description": null + }, + "0065": { + "person_id": "0065", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0065/0065O012C419T012F00202.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.618, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0065/0065O004C419T056F00151.jpg", + "best_crop_size": { + "w": 418, + "h": 495 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.619, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0065/0065O012C419T012F00202.jpg", + "best_crop_size": { + "w": 330, + "h": 600 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.692, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0065/0065O013C419T019F00190.jpg", + "best_crop_size": { + "w": 341, + "h": 493 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.533, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0065/0065O014C299T040F00306.jpg", + "best_crop_size": { + "w": 56, + "h": 144 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.587, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0065/0065O018C638T070F00169.jpg", + "best_crop_size": { + "w": 33, + "h": 81 + } + }, + "021": { + "upper_body_color": "gray", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0065/0065O021C421T063F00796.jpg", + "best_crop_size": { + "w": 179, + "h": 416 + } + }, + "022": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.569, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0065/0065O022C339T069F00104.jpg", + "best_crop_size": { + "w": 40, + "h": 86 + } + } + }, + "gpt_description": null + }, + "0066": { + "person_id": "0066", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "backpack" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0066/0066O013C419T024F00111.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.611, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0066/0066O004C420T039F00228.jpg", + "best_crop_size": { + "w": 139, + "h": 290 + } + }, + "012": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0066/0066O012C330T051F00150.jpg", + "best_crop_size": { + "w": 62, + "h": 126 + } + }, + "013": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [ + "backpack" + ], + "person_detection_confidence": 0.625, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0066/0066O013C419T024F00111.jpg", + "best_crop_size": { + "w": 447, + "h": 816 + } + }, + "015": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0066/0066O015C328T033F00730.jpg", + "best_crop_size": { + "w": 41, + "h": 94 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.608, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0066/0066O017C340T032F00010.jpg", + "best_crop_size": { + "w": 29, + "h": 179 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.729, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0066/0066O021C419T056F00080.jpg", + "best_crop_size": { + "w": 331, + "h": 736 + } + } + }, + "gpt_description": null + }, + "0067": { + "person_id": "0067", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0067/0067O006C331T056F00083.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.434, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0067/0067O002C506T100F00051.jpg", + "best_crop_size": { + "w": 30, + "h": 96 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.651, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0067/0067O003C420T132F00056.jpg", + "best_crop_size": { + "w": 159, + "h": 296 + } + }, + "006": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.603, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0067/0067O006C331T056F00083.jpg", + "best_crop_size": { + "w": 164, + "h": 457 + } + }, + "009": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.572, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0067/0067O009C339T140F00026.jpg", + "best_crop_size": { + "w": 108, + "h": 120 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.432, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0067/0067O015C328T106F00246.jpg", + "best_crop_size": { + "w": 49, + "h": 116 + } + } + }, + "gpt_description": null + }, + "0068": { + "person_id": "0068", + "split": "train", + "num_outfits": 8, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0068/0068O003C419T132F00094.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.797, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0068/0068O003C419T132F00094.jpg", + "best_crop_size": { + "w": 256, + "h": 599 + } + }, + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.625, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0068/0068O004C419T091F00330.jpg", + "best_crop_size": { + "w": 249, + "h": 596 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.457, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0068/0068O016C330T099F00830.jpg", + "best_crop_size": { + "w": 59, + "h": 142 + } + }, + "017": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.494, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0068/0068O017C331T045F00428.jpg", + "best_crop_size": { + "w": 106, + "h": 359 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "purple", + "carried_objects": [], + "person_detection_confidence": 0.491, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0068/0068O020C328T078F00151.jpg", + "best_crop_size": { + "w": 37, + "h": 98 + } + }, + "022": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.548, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0068/0068O022C339T076F00090.jpg", + "best_crop_size": { + "w": 116, + "h": 174 + } + }, + "025": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.579, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0068/0068O025C419T128F00042.jpg", + "best_crop_size": { + "w": 453, + "h": 544 + } + }, + "026": { + "upper_body_color": "black", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.708, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0068/0068O026C330T131F00626.jpg", + "best_crop_size": { + "w": 73, + "h": 196 + } + } + }, + "gpt_description": null + }, + "0070": { + "person_id": "0070", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "cell phone" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0070/0070O016C421T069F00007.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.522, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0070/0070O002C339T076F00175.jpg", + "best_crop_size": { + "w": 80, + "h": 155 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "cell phone" + ], + "person_detection_confidence": 0.767, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0070/0070O010C420T067F00044.jpg", + "best_crop_size": { + "w": 172, + "h": 422 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.85, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0070/0070O011C330T072F00242.jpg", + "best_crop_size": { + "w": 85, + "h": 278 + } + }, + "012": { + "upper_body_color": "yellow", + "lower_body_color": "yellow", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0070/0070O012C421T083F00159.jpg", + "best_crop_size": { + "w": 34, + "h": 148 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0070/0070O013C421T084F00008.jpg", + "best_crop_size": { + "w": 28, + "h": 147 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.772, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0070/0070O016C421T069F00007.jpg", + "best_crop_size": { + "w": 113, + "h": 455 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.734, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0070/0070O019C340T000F00175.jpg", + "best_crop_size": { + "w": 163, + "h": 409 + } + } + }, + "gpt_description": null + }, + "0072": { + "person_id": "0072", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "black", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0072/0072O009C419T057F00125.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.33, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0072/0072O002C506T062F00007.jpg", + "best_crop_size": { + "w": 36, + "h": 82 + } + }, + "009": { + "upper_body_color": "green", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.718, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0072/0072O009C419T057F00125.jpg", + "best_crop_size": { + "w": 318, + "h": 702 + } + }, + "011": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.606, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0072/0072O011C299T061F00020.jpg", + "best_crop_size": { + "w": 157, + "h": 370 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.411, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0072/0072O014C424T004F00223.jpg", + "best_crop_size": { + "w": 80, + "h": 156 + } + }, + "017": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.574, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0072/0072O017C506T014F00929.jpg", + "best_crop_size": { + "w": 58, + "h": 180 + } + } + }, + "gpt_description": null + }, + "0074": { + "person_id": "0074", + "split": "train", + "num_outfits": 3, + "primary_upper_color": "black", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0074/0074O004C419T085F00107.jpg", + "outfits": { + "004": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.692, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0074/0074O004C419T085F00107.jpg", + "best_crop_size": { + "w": 353, + "h": 742 + } + }, + "009": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.654, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0074/0074O009C420T069F00052.jpg", + "best_crop_size": { + "w": 167, + "h": 462 + } + }, + "014": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.496, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0074/0074O014C339T001F00000.jpg", + "best_crop_size": { + "w": 50, + "h": 174 + } + } + }, + "gpt_description": null + }, + "0075": { + "person_id": "0075", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0075/0075O017C420T004F00242.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.503, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0075/0075O005C421T050F00180.jpg", + "best_crop_size": { + "w": 133, + "h": 319 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.745, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0075/0075O012C339T029F00323.jpg", + "best_crop_size": { + "w": 46, + "h": 116 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.599, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0075/0075O016C420T042F00139.jpg", + "best_crop_size": { + "w": 99, + "h": 196 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.667, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0075/0075O017C420T004F00242.jpg", + "best_crop_size": { + "w": 146, + "h": 369 + } + } + }, + "gpt_description": null + }, + "0076": { + "person_id": "0076", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0076/0076O018C420T047F00266.jpg", + "outfits": { + "006": { + "upper_body_color": "yellow", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.61, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0076/0076O006C339T058F00172.jpg", + "best_crop_size": { + "w": 82, + "h": 171 + } + }, + "007": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.846, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0076/0076O007C331T052F00014.jpg", + "best_crop_size": { + "w": 90, + "h": 262 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.659, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0076/0076O017C420T028F00239.jpg", + "best_crop_size": { + "w": 254, + "h": 374 + } + }, + "018": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.864, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0076/0076O018C420T047F00266.jpg", + "best_crop_size": { + "w": 200, + "h": 399 + } + }, + "023": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.402, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0076/0076O023C339T004F00152.jpg", + "best_crop_size": { + "w": 80, + "h": 155 + } + }, + "026": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.59, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0076/0076O026C508T022F00813.jpg", + "best_crop_size": { + "w": 151, + "h": 204 + } + } + }, + "gpt_description": null + }, + "0077": { + "person_id": "0077", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "backpack" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0077/0077O019C420T021F00310.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "backpack" + ], + "person_detection_confidence": 0.638, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0077/0077O005C331T024F00192.jpg", + "best_crop_size": { + "w": 173, + "h": 232 + } + }, + "006": { + "upper_body_color": "yellow", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.674, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0077/0077O006C339T033F00099.jpg", + "best_crop_size": { + "w": 98, + "h": 179 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.68, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0077/0077O010C424T000F00258.jpg", + "best_crop_size": { + "w": 93, + "h": 190 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.512, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0077/0077O019C420T021F00310.jpg", + "best_crop_size": { + "w": 206, + "h": 471 + } + }, + "026": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.541, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0077/0077O026C421T037F00570.jpg", + "best_crop_size": { + "w": 69, + "h": 183 + } + } + }, + "gpt_description": null + }, + "0078": { + "person_id": "0078", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0078/0078O026C331T008F00475.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.49, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0078/0078O005C339T112F00198.jpg", + "best_crop_size": { + "w": 64, + "h": 126 + } + }, + "018": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.69, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0078/0078O018C420T131F00019.jpg", + "best_crop_size": { + "w": 272, + "h": 383 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.82, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0078/0078O019C329T127F00045.jpg", + "best_crop_size": { + "w": 301, + "h": 407 + } + }, + "026": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.733, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0078/0078O026C331T008F00475.jpg", + "best_crop_size": { + "w": 172, + "h": 584 + } + }, + "030": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.633, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0078/0078O030C506T088F00378.jpg", + "best_crop_size": { + "w": 32, + "h": 101 + } + } + }, + "gpt_description": null + }, + "0079": { + "person_id": "0079", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0079/0079O016C419T029F00166.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.634, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0079/0079O004C506T008F00214.jpg", + "best_crop_size": { + "w": 118, + "h": 268 + } + }, + "015": { + "upper_body_color": "orange", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.736, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0079/0079O015C299T035F00616.jpg", + "best_crop_size": { + "w": 313, + "h": 492 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.713, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0079/0079O016C419T029F00166.jpg", + "best_crop_size": { + "w": 280, + "h": 693 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.531, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0079/0079O019C339T016F00111.jpg", + "best_crop_size": { + "w": 97, + "h": 252 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.489, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0079/0079O021C339T021F00539.jpg", + "best_crop_size": { + "w": 66, + "h": 139 + } + } + }, + "gpt_description": null + }, + "0080": { + "person_id": "0080", + "split": "train", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0080/0080O003C421T008F00814.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.675, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0080/0080O003C421T008F00814.jpg", + "best_crop_size": { + "w": 233, + "h": 558 + } + } + }, + "gpt_description": null + }, + "0081": { + "person_id": "0081", + "split": "train", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0081/0081O004C339T004F00158.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.628, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0081/0081O004C339T004F00158.jpg", + "best_crop_size": { + "w": 81, + "h": 159 + } + }, + "007": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.342, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0081/0081O007C339T005F00030.jpg", + "best_crop_size": { + "w": 25, + "h": 79 + } + } + }, + "gpt_description": null + }, + "0082": { + "person_id": "0082", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0082/0082O019C419T069F00498.jpg", + "outfits": { + "003": { + "upper_body_color": "green", + "lower_body_color": "yellow", + "carried_objects": [], + "person_detection_confidence": 0.849, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0082/0082O003C508T008F00091.jpg", + "best_crop_size": { + "w": 279, + "h": 442 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.648, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0082/0082O013C331T027F00403.jpg", + "best_crop_size": { + "w": 208, + "h": 478 + } + }, + "018": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.681, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0082/0082O018C330T085F00020.jpg", + "best_crop_size": { + "w": 168, + "h": 371 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.487, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0082/0082O019C419T069F00498.jpg", + "best_crop_size": { + "w": 277, + "h": 576 + } + }, + "022": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.555, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0082/0082O022C508T082F00247.jpg", + "best_crop_size": { + "w": 68, + "h": 209 + } + }, + "023": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.573, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0082/0082O023C341T000F00097.jpg", + "best_crop_size": { + "w": 40, + "h": 91 + } + } + }, + "gpt_description": null + }, + "0083": { + "person_id": "0083", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0083/0083O012C419T007F00042.jpg", + "outfits": { + "004": { + "upper_body_color": "pink", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.752, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0083/0083O004C508T093F00329.jpg", + "best_crop_size": { + "w": 134, + "h": 400 + } + }, + "009": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.678, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0083/0083O009C331T015F00317.jpg", + "best_crop_size": { + "w": 167, + "h": 553 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.817, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0083/0083O010C340T073F00181.jpg", + "best_crop_size": { + "w": 160, + "h": 435 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.603, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0083/0083O012C419T007F00042.jpg", + "best_crop_size": { + "w": 493, + "h": 831 + } + }, + "015": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.799, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0083/0083O015C331T096F00403.jpg", + "best_crop_size": { + "w": 179, + "h": 482 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.66, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0083/0083O016C326T094F00193.jpg", + "best_crop_size": { + "w": 379, + "h": 744 + } + } + }, + "gpt_description": null + }, + "0084": { + "person_id": "0084", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0084/0084O021C326T080F00105.jpg", + "outfits": { + "008": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.612, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0084/0084O008C421T050F00765.jpg", + "best_crop_size": { + "w": 71, + "h": 195 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.779, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0084/0084O014C424T041F00088.jpg", + "best_crop_size": { + "w": 110, + "h": 206 + } + }, + "020": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.427, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0084/0084O020C299T086F00794.jpg", + "best_crop_size": { + "w": 98, + "h": 183 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.675, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0084/0084O021C326T080F00105.jpg", + "best_crop_size": { + "w": 355, + "h": 772 + } + }, + "023": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.463, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0084/0084O023C341T000F00349.jpg", + "best_crop_size": { + "w": 60, + "h": 140 + } + }, + "026": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.549, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0084/0084O026C339T008F00276.jpg", + "best_crop_size": { + "w": 116, + "h": 221 + } + }, + "027": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.616, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0084/0084O027C329T067F00130.jpg", + "best_crop_size": { + "w": 180, + "h": 467 + } + } + }, + "gpt_description": null + }, + "0085": { + "person_id": "0085", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0085/0085O012C419T032F00039.jpg", + "outfits": { + "004": { + "upper_body_color": "green", + "lower_body_color": "pink", + "carried_objects": [], + "person_detection_confidence": 0.815, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0085/0085O004C421T036F00866.jpg", + "best_crop_size": { + "w": 358, + "h": 408 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.74, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0085/0085O012C419T032F00039.jpg", + "best_crop_size": { + "w": 512, + "h": 494 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.555, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0085/0085O013C419T049F00082.jpg", + "best_crop_size": { + "w": 178, + "h": 429 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.532, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0085/0085O014C420T022F00828.jpg", + "best_crop_size": { + "w": 142, + "h": 325 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0085/0085O015C424T035F00423.jpg", + "best_crop_size": { + "w": 79, + "h": 179 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.569, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0085/0085O017C424T002F00302.jpg", + "best_crop_size": { + "w": 73, + "h": 170 + } + } + }, + "gpt_description": null + }, + "0086": { + "person_id": "0086", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0086/0086O009C419T050F00071.jpg", + "outfits": { + "009": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.742, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0086/0086O009C419T050F00071.jpg", + "best_crop_size": { + "w": 586, + "h": 728 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "orange", + "carried_objects": [], + "person_detection_confidence": 0.616, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0086/0086O019C421T030F00148.jpg", + "best_crop_size": { + "w": 123, + "h": 321 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.581, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0086/0086O021C421T024F00326.jpg", + "best_crop_size": { + "w": 122, + "h": 332 + } + }, + "023": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.559, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0086/0086O023C424T002F00244.jpg", + "best_crop_size": { + "w": 82, + "h": 194 + } + } + }, + "gpt_description": null + }, + "0087": { + "person_id": "0087", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0087/0087O016C419T029F00109.jpg", + "outfits": { + "008": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0087/0087O008C421T034F00033.jpg", + "best_crop_size": { + "w": 51, + "h": 141 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.671, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0087/0087O010C299T042F00111.jpg", + "best_crop_size": { + "w": 188, + "h": 406 + } + }, + "011": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.76, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0087/0087O011C423T047F00044.jpg", + "best_crop_size": { + "w": 75, + "h": 209 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.639, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0087/0087O016C419T029F00109.jpg", + "best_crop_size": { + "w": 439, + "h": 722 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.641, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0087/0087O020C331T019F00023.jpg", + "best_crop_size": { + "w": 143, + "h": 331 + } + } + }, + "gpt_description": null + }, + "0088": { + "person_id": "0088", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0088/0088O015C419T074F00126.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.592, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0088/0088O001C419T072F00053.jpg", + "best_crop_size": { + "w": 605, + "h": 658 + } + }, + "003": { + "upper_body_color": "black", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.585, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0088/0088O003C506T028F00068.jpg", + "best_crop_size": { + "w": 70, + "h": 225 + } + }, + "012": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.638, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0088/0088O012C326T018F00020.jpg", + "best_crop_size": { + "w": 157, + "h": 606 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.704, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0088/0088O013C420T067F00050.jpg", + "best_crop_size": { + "w": 257, + "h": 466 + } + }, + "015": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.778, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0088/0088O015C419T074F00126.jpg", + "best_crop_size": { + "w": 396, + "h": 832 + } + }, + "018": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.675, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0088/0088O018C339T062F00255.jpg", + "best_crop_size": { + "w": 46, + "h": 182 + } + }, + "025": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.743, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0088/0088O025C331T012F00809.jpg", + "best_crop_size": { + "w": 170, + "h": 357 + } + } + }, + "gpt_description": null + }, + "0089": { + "person_id": "0089", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0089/0089O020C421T038F00689.jpg", + "outfits": { + "008": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.743, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0089/0089O008C506T028F00996.jpg", + "best_crop_size": { + "w": 137, + "h": 316 + } + }, + "013": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.505, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0089/0089O013C420T060F00155.jpg", + "best_crop_size": { + "w": 163, + "h": 389 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.356, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0089/0089O014C423T062F00004.jpg", + "best_crop_size": { + "w": 47, + "h": 92 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.627, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0089/0089O020C421T038F00689.jpg", + "best_crop_size": { + "w": 236, + "h": 562 + } + }, + "025": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.352, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0089/0089O025C339T063F00000.jpg", + "best_crop_size": { + "w": 51, + "h": 138 + } + } + }, + "gpt_description": null + }, + "0090": { + "person_id": "0090", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0090/0090O012C419T039F00112.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.667, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0090/0090O005C506T025F00108.jpg", + "best_crop_size": { + "w": 138, + "h": 295 + } + }, + "011": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.705, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0090/0090O011C419T053F00024.jpg", + "best_crop_size": { + "w": 198, + "h": 448 + } + }, + "012": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.765, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0090/0090O012C419T039F00112.jpg", + "best_crop_size": { + "w": 320, + "h": 782 + } + }, + "018": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.694, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0090/0090O018C420T043F00020.jpg", + "best_crop_size": { + "w": 225, + "h": 506 + } + }, + "023": { + "upper_body_color": "pink", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.49, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0090/0090O023C339T020F00037.jpg", + "best_crop_size": { + "w": 48, + "h": 206 + } + }, + "029": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.687, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0090/0090O029C508T015F00058.jpg", + "best_crop_size": { + "w": 96, + "h": 294 + } + } + }, + "gpt_description": null + }, + "0091": { + "person_id": "0091", + "split": "train", + "num_outfits": 6, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0091/0091O027C326T011F00701.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.622, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0091/0091O005C505T020F00027.jpg", + "best_crop_size": { + "w": 183, + "h": 421 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.84, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0091/0091O010C419T055F00090.jpg", + "best_crop_size": { + "w": 755, + "h": 741 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.63, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0091/0091O017C419T041F00087.jpg", + "best_crop_size": { + "w": 507, + "h": 662 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.887, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0091/0091O019C420T057F00018.jpg", + "best_crop_size": { + "w": 226, + "h": 522 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0091/0091O021C638T059F00214.jpg", + "best_crop_size": { + "w": 43, + "h": 103 + } + }, + "027": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.694, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0091/0091O027C326T011F00701.jpg", + "best_crop_size": { + "w": 335, + "h": 802 + } + } + }, + "gpt_description": null + }, + "0092": { + "person_id": "0092", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "cell phone" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0092/0092O009C419T062F00233.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.516, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0092/0092O004C340T054F00056.jpg", + "best_crop_size": { + "w": 245, + "h": 447 + } + }, + "009": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "cell phone" + ], + "person_detection_confidence": 0.673, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0092/0092O009C419T062F00233.jpg", + "best_crop_size": { + "w": 358, + "h": 855 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.732, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0092/0092O014C419T029F00084.jpg", + "best_crop_size": { + "w": 367, + "h": 699 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.53, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0092/0092O019C340T022F00058.jpg", + "best_crop_size": { + "w": 96, + "h": 216 + } + }, + "023": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.757, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0092/0092O023C419T064F00070.jpg", + "best_crop_size": { + "w": 158, + "h": 484 + } + } + }, + "gpt_description": null + }, + "0093": { + "person_id": "0093", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "black", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0093/0093O013C326T002F00107.jpg", + "outfits": { + "002": { + "upper_body_color": "black", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.654, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0093/0093O002C506T045F00247.jpg", + "best_crop_size": { + "w": 157, + "h": 422 + } + }, + "008": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.662, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0093/0093O008C419T025F00038.jpg", + "best_crop_size": { + "w": 236, + "h": 533 + } + }, + "011": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.634, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0093/0093O011C419T007F00045.jpg", + "best_crop_size": { + "w": 147, + "h": 402 + } + }, + "013": { + "upper_body_color": "orange", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.686, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0093/0093O013C326T002F00107.jpg", + "best_crop_size": { + "w": 344, + "h": 642 + } + } + }, + "gpt_description": null + }, + "0094": { + "person_id": "0094", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0094/0094O004C505T003F00032.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.668, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0094/0094O004C505T003F00032.jpg", + "best_crop_size": { + "w": 247, + "h": 441 + } + }, + "010": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.59, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0094/0094O010C419T033F00002.jpg", + "best_crop_size": { + "w": 106, + "h": 350 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.777, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0094/0094O014C339T018F00096.jpg", + "best_crop_size": { + "w": 84, + "h": 167 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "purple", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0094/0094O016C340T001F00465.jpg", + "best_crop_size": { + "w": 41, + "h": 107 + } + } + }, + "gpt_description": null + }, + "0095": { + "person_id": "0095", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0095/0095O014C420T021F00069.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.683, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0095/0095O004C329T005F00175.jpg", + "best_crop_size": { + "w": 115, + "h": 260 + } + }, + "008": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.591, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0095/0095O008C339T013F00155.jpg", + "best_crop_size": { + "w": 96, + "h": 163 + } + }, + "014": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.63, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0095/0095O014C420T021F00069.jpg", + "best_crop_size": { + "w": 288, + "h": 429 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.882, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0095/0095O016C420T031F00278.jpg", + "best_crop_size": { + "w": 247, + "h": 473 + } + } + }, + "gpt_description": null + }, + "0096": { + "person_id": "0096", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0096/0096O020C329T003F00130.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.685, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0096/0096O004C326T038F00102.jpg", + "best_crop_size": { + "w": 297, + "h": 501 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.597, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0096/0096O015C420T047F00050.jpg", + "best_crop_size": { + "w": 220, + "h": 483 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.669, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0096/0096O019C330T026F00404.jpg", + "best_crop_size": { + "w": 154, + "h": 325 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.608, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0096/0096O020C329T003F00130.jpg", + "best_crop_size": { + "w": 354, + "h": 528 + } + } + }, + "gpt_description": null + }, + "0097": { + "person_id": "0097", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "handbag" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0097/0097O017C419T055F00141.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "handbag" + ], + "person_detection_confidence": 0.67, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0097/0097O004C329T047F00509.jpg", + "best_crop_size": { + "w": 183, + "h": 479 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.708, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0097/0097O014C420T060F00572.jpg", + "best_crop_size": { + "w": 95, + "h": 240 + } + }, + "017": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.862, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0097/0097O017C419T055F00141.jpg", + "best_crop_size": { + "w": 416, + "h": 622 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.623, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0097/0097O018C421T036F00488.jpg", + "best_crop_size": { + "w": 168, + "h": 336 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.587, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0097/0097O019C326T016F00814.jpg", + "best_crop_size": { + "w": 267, + "h": 491 + } + } + }, + "gpt_description": null + }, + "0098": { + "person_id": "0098", + "split": "train", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0098/0098O002C419T002F00063.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.708, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0098/0098O002C419T002F00063.jpg", + "best_crop_size": { + "w": 314, + "h": 640 + } + } + }, + "gpt_description": null + }, + "0099": { + "person_id": "0099", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0099/0099O025C326T012F00019.jpg", + "outfits": { + "006": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.599, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0099/0099O006C329T079F00520.jpg", + "best_crop_size": { + "w": 321, + "h": 553 + } + }, + "017": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.538, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0099/0099O017C421T023F00342.jpg", + "best_crop_size": { + "w": 87, + "h": 241 + } + }, + "019": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.611, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0099/0099O019C421T054F00353.jpg", + "best_crop_size": { + "w": 155, + "h": 411 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.578, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0099/0099O021C340T014F00110.jpg", + "best_crop_size": { + "w": 103, + "h": 170 + } + }, + "025": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.617, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0099/0099O025C326T012F00019.jpg", + "best_crop_size": { + "w": 332, + "h": 600 + } + } + }, + "gpt_description": null + }, + "0100": { + "person_id": "0100", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0100/0100O018C419T012F00082.jpg", + "outfits": { + "009": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.572, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0100/0100O009C331T052F00941.jpg", + "best_crop_size": { + "w": 88, + "h": 228 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.782, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0100/0100O018C419T012F00082.jpg", + "best_crop_size": { + "w": 655, + "h": 810 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.758, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0100/0100O020C339T001F00324.jpg", + "best_crop_size": { + "w": 93, + "h": 209 + } + }, + "023": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.819, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0100/0100O023C340T005F00485.jpg", + "best_crop_size": { + "w": 74, + "h": 182 + } + } + }, + "gpt_description": null + }, + "0101": { + "person_id": "0101", + "split": "train", + "num_outfits": 7, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0101/0101O005C419T059F00095.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.743, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0101/0101O005C419T059F00095.jpg", + "best_crop_size": { + "w": 292, + "h": 593 + } + }, + "006": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.321, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0101/0101O006C341T020F00160.jpg", + "best_crop_size": { + "w": 36, + "h": 79 + } + }, + "013": { + "upper_body_color": "black", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.817, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0101/0101O013C420T043F00372.jpg", + "best_crop_size": { + "w": 211, + "h": 366 + } + }, + "014": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.721, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0101/0101O014C420T044F00046.jpg", + "best_crop_size": { + "w": 183, + "h": 463 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.719, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0101/0101O016C420T039F00027.jpg", + "best_crop_size": { + "w": 217, + "h": 508 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.594, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0101/0101O018C340T023F00134.jpg", + "best_crop_size": { + "w": 82, + "h": 188 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.59, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0101/0101O021C331T011F00116.jpg", + "best_crop_size": { + "w": 378, + "h": 277 + } + } + }, + "gpt_description": null + }, + "0102": { + "person_id": "0102", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0102/0102O006C326T052F00107.jpg", + "outfits": { + "006": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.735, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0102/0102O006C326T052F00107.jpg", + "best_crop_size": { + "w": 172, + "h": 713 + } + }, + "014": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.752, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0102/0102O014C419T037F00054.jpg", + "best_crop_size": { + "w": 333, + "h": 733 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.333, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0102/0102O016C420T062F00015.jpg", + "best_crop_size": { + "w": 219, + "h": 441 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.726, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0102/0102O018C340T059F00297.jpg", + "best_crop_size": { + "w": 95, + "h": 204 + } + }, + "021": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.839, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0102/0102O021C341T000F00267.jpg", + "best_crop_size": { + "w": 54, + "h": 122 + } + } + }, + "gpt_description": null + }, + "0103": { + "person_id": "0103", + "split": "train", + "num_outfits": 5, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "tie" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0103/0103O023C419T014F00188.jpg", + "outfits": { + "006": { + "upper_body_color": "gray", + "lower_body_color": "gray", + "carried_objects": [ + "tie" + ], + "person_detection_confidence": 0.514, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0103/0103O006C506T023F00074.jpg", + "best_crop_size": { + "w": 146, + "h": 288 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0103/0103O015C421T046F00017.jpg", + "best_crop_size": { + "w": 36, + "h": 152 + } + }, + "016": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.69, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0103/0103O016C419T041F00032.jpg", + "best_crop_size": { + "w": 173, + "h": 466 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.573, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0103/0103O020C339T005F00234.jpg", + "best_crop_size": { + "w": 87, + "h": 170 + } + }, + "023": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.767, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0103/0103O023C419T014F00188.jpg", + "best_crop_size": { + "w": 372, + "h": 801 + } + } + }, + "gpt_description": null + }, + "0104": { + "person_id": "0104", + "split": "train", + "num_outfits": 4, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "suitcase" + ], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0104/0104O005C329T008F00396.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "suitcase" + ], + "person_detection_confidence": 0.576, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0104/0104O001C420T044F00207.jpg", + "best_crop_size": { + "w": 185, + "h": 345 + } + }, + "005": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.502, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0104/0104O005C329T008F00396.jpg", + "best_crop_size": { + "w": 284, + "h": 530 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.592, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0104/0104O018C299T048F00717.jpg", + "best_crop_size": { + "w": 76, + "h": 188 + } + }, + "020": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.675, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0104/0104O020C421T049F00007.jpg", + "best_crop_size": { + "w": 177, + "h": 369 + } + } + }, + "gpt_description": null + }, + "0106": { + "person_id": "0106", + "split": "train", + "num_outfits": 8, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0106/0106O015C420T017F00065.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.606, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0106/0106O005C505T043F00741.jpg", + "best_crop_size": { + "w": 208, + "h": 330 + } + }, + "014": { + "upper_body_color": "purple", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.369, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0106/0106O014C330T099F00099.jpg", + "best_crop_size": { + "w": 56, + "h": 116 + } + }, + "015": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.686, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0106/0106O015C420T017F00065.jpg", + "best_crop_size": { + "w": 311, + "h": 395 + } + }, + "018": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.83, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0106/0106O018C420T141F00180.jpg", + "best_crop_size": { + "w": 212, + "h": 302 + } + }, + "021": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.713, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0106/0106O021C339T080F00523.jpg", + "best_crop_size": { + "w": 83, + "h": 138 + } + }, + "022": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.465, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0106/0106O022C424T052F00377.jpg", + "best_crop_size": { + "w": 81, + "h": 142 + } + }, + "024": { + "upper_body_color": "black", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.614, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0106/0106O024C330T056F00074.jpg", + "best_crop_size": { + "w": 174, + "h": 339 + } + }, + "029": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.621, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0106/0106O029C339T051F00332.jpg", + "best_crop_size": { + "w": 134, + "h": 276 + } + } + }, + "gpt_description": null + }, + "0109": { + "person_id": "0109", + "split": "train", + "num_outfits": 1, + "primary_upper_color": "white", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0109/0109O004C508T014F00182.jpg", + "outfits": { + "004": { + "upper_body_color": "white", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.715, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0109/0109O004C508T014F00182.jpg", + "best_crop_size": { + "w": 164, + "h": 358 + } + } + }, + "gpt_description": null + }, + "0110": { + "person_id": "0110", + "split": "train", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0110/0110O003C419T000F00044.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0110/0110O003C419T000F00044.jpg", + "best_crop_size": { + "w": 74, + "h": 173 + } + } + }, + "gpt_description": null + }, + "0112": { + "person_id": "0112", + "split": "train", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0112/0112O002C420T009F00049.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.665, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_train_fresh/bbox_train/0112/0112O002C420T009F00049.jpg", + "best_crop_size": { + "w": 145, + "h": 305 + } + } + }, + "gpt_description": null + }, + "0201": { + "person_id": "0201", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "green", + "primary_lower_color": "green", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0201/0201O003C507T012F00075.jpg", + "outfits": { + "003": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.772, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0201/0201O003C507T012F00075.jpg", + "best_crop_size": { + "w": 240, + "h": 574 + } + } + }, + "gpt_description": null + }, + "0202": { + "person_id": "0202", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "green", + "all_carried_objects": [ + "laptop" + ], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0202/0202O005C507T058F00391.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0202/0202O003C336T081F00834.jpg", + "best_crop_size": { + "w": 25, + "h": 80 + } + }, + "005": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [ + "laptop" + ], + "person_detection_confidence": 0.699, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0202/0202O005C507T058F00391.jpg", + "best_crop_size": { + "w": 133, + "h": 266 + } + }, + "006": { + "upper_body_color": "orange", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.318, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0202/0202O006C336T086F00003.jpg", + "best_crop_size": { + "w": 33, + "h": 85 + } + } + }, + "gpt_description": null + }, + "0203": { + "person_id": "0203", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "green", + "primary_lower_color": "green", + "all_carried_objects": [ + "laptop" + ], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0203/0203O005C509T020F00287.jpg", + "outfits": { + "003": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0203/0203O003C336T029F00456.jpg", + "best_crop_size": { + "w": 24, + "h": 80 + } + }, + "005": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [ + "laptop" + ], + "person_detection_confidence": 0.653, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0203/0203O005C509T020F00287.jpg", + "best_crop_size": { + "w": 192, + "h": 465 + } + } + }, + "gpt_description": null + }, + "0204": { + "person_id": "0204", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "purple", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0204/0204O005C329T005F00009.jpg", + "outfits": { + "003": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.71, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0204/0204O003C639T000F00069.jpg", + "best_crop_size": { + "w": 98, + "h": 216 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.61, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0204/0204O005C329T005F00009.jpg", + "best_crop_size": { + "w": 53, + "h": 246 + } + } + }, + "gpt_description": null + }, + "0205": { + "person_id": "0205", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "pink", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0205/0205O005C329T021F00052.jpg", + "outfits": { + "003": { + "upper_body_color": "pink", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.743, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0205/0205O003C639T023F00028.jpg", + "best_crop_size": { + "w": 128, + "h": 215 + } + }, + "005": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.834, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0205/0205O005C329T021F00052.jpg", + "best_crop_size": { + "w": 323, + "h": 630 + } + } + }, + "gpt_description": null + }, + "0206": { + "person_id": "0206", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "pink", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0206/0206O005C507T016F00303.jpg", + "outfits": { + "003": { + "upper_body_color": "pink", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.618, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0206/0206O003C639T003F00037.jpg", + "best_crop_size": { + "w": 39, + "h": 175 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.776, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0206/0206O005C507T016F00303.jpg", + "best_crop_size": { + "w": 209, + "h": 515 + } + } + }, + "gpt_description": null + }, + "0208": { + "person_id": "0208", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0208/0208O007C507T061F00027.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.762, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0208/0208O004C639T004F00008.jpg", + "best_crop_size": { + "w": 89, + "h": 199 + } + }, + "007": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.779, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0208/0208O007C507T061F00027.jpg", + "best_crop_size": { + "w": 205, + "h": 434 + } + } + }, + "gpt_description": null + }, + "0210": { + "person_id": "0210", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "purple", + "primary_lower_color": "black", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0210/0210O005C507T032F00308.jpg", + "outfits": { + "003": { + "upper_body_color": "purple", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.571, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0210/0210O003C639T005F00058.jpg", + "best_crop_size": { + "w": 76, + "h": 150 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.864, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0210/0210O005C507T032F00308.jpg", + "best_crop_size": { + "w": 228, + "h": 411 + } + } + }, + "gpt_description": null + }, + "0211": { + "person_id": "0211", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "black", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0211/0211O006C340T013F00212.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "black", + "carried_objects": [], + "person_detection_confidence": 0.778, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0211/0211O002C508T017F00107.jpg", + "best_crop_size": { + "w": 100, + "h": 383 + } + }, + "004": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.833, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0211/0211O004C639T008F00009.jpg", + "best_crop_size": { + "w": 101, + "h": 206 + } + }, + "006": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.665, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0211/0211O006C340T013F00212.jpg", + "best_crop_size": { + "w": 78, + "h": 364 + } + } + }, + "gpt_description": null + }, + "0212": { + "person_id": "0212", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0212/0212O003C639T011F00893.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.889, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0212/0212O003C639T011F00893.jpg", + "best_crop_size": { + "w": 100, + "h": 212 + } + } + }, + "gpt_description": null + }, + "0215": { + "person_id": "0215", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "green", + "primary_lower_color": "white", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0215/0215O004C507T012F00142.jpg", + "outfits": { + "003": { + "upper_body_color": "green", + "lower_body_color": "white", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0215/0215O003C340T014F00000.jpg", + "best_crop_size": { + "w": 29, + "h": 65 + } + }, + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.796, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0215/0215O004C507T012F00142.jpg", + "best_crop_size": { + "w": 171, + "h": 457 + } + } + }, + "gpt_description": null + }, + "0216": { + "person_id": "0216", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "gray", + "all_carried_objects": [ + "backpack", + "suitcase" + ], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0216/0216O003C340T001F00109.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [ + "backpack" + ], + "person_detection_confidence": 0.66, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0216/0216O003C340T001F00109.jpg", + "best_crop_size": { + "w": 120, + "h": 346 + } + }, + "006": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "suitcase" + ], + "person_detection_confidence": 0.507, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0216/0216O006C507T008F00047.jpg", + "best_crop_size": { + "w": 185, + "h": 283 + } + } + }, + "gpt_description": null + }, + "0218": { + "person_id": "0218", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "backpack" + ], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0218/0218O005C340T009F00163.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.629, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0218/0218O003C639T025F00039.jpg", + "best_crop_size": { + "w": 98, + "h": 221 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "backpack" + ], + "person_detection_confidence": 0.704, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0218/0218O005C340T009F00163.jpg", + "best_crop_size": { + "w": 186, + "h": 433 + } + } + }, + "gpt_description": null + }, + "0226": { + "person_id": "0226", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "green", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0226/0226O005C329T001F00227.jpg", + "outfits": { + "005": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.587, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0226/0226O005C329T001F00227.jpg", + "best_crop_size": { + "w": 195, + "h": 425 + } + } + }, + "gpt_description": null + }, + "0227": { + "person_id": "0227", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0227/0227O005C507T027F00088.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.721, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0227/0227O005C507T027F00088.jpg", + "best_crop_size": { + "w": 205, + "h": 595 + } + } + }, + "gpt_description": null + }, + "0229": { + "person_id": "0229", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0229/0229O004C329T003F00058.jpg", + "outfits": { + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.802, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0229/0229O004C329T003F00058.jpg", + "best_crop_size": { + "w": 270, + "h": 605 + } + } + }, + "gpt_description": null + }, + "0230": { + "person_id": "0230", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "green", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0230/0230O004C507T009F00908.jpg", + "outfits": { + "004": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.69, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0230/0230O004C507T009F00908.jpg", + "best_crop_size": { + "w": 110, + "h": 297 + } + } + }, + "gpt_description": null + }, + "0231": { + "person_id": "0231", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0231/0231O004C507T045F00111.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.564, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0231/0231O002C639T010F00068.jpg", + "best_crop_size": { + "w": 88, + "h": 186 + } + }, + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.71, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0231/0231O004C507T045F00111.jpg", + "best_crop_size": { + "w": 92, + "h": 399 + } + } + }, + "gpt_description": null + }, + "0232": { + "person_id": "0232", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0232/0232O004C505T021F00216.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.584, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0232/0232O002C639T043F00038.jpg", + "best_crop_size": { + "w": 101, + "h": 193 + } + }, + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.695, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0232/0232O004C505T021F00216.jpg", + "best_crop_size": { + "w": 136, + "h": 387 + } + } + }, + "gpt_description": null + }, + "0233": { + "person_id": "0233", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0233/0233O004C505T016F00247.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.641, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0233/0233O002C639T015F00652.jpg", + "best_crop_size": { + "w": 61, + "h": 114 + } + }, + "004": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.667, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0233/0233O004C505T016F00247.jpg", + "best_crop_size": { + "w": 154, + "h": 418 + } + } + }, + "gpt_description": null + }, + "0234": { + "person_id": "0234", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0234/0234O004C507T014F00818.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.605, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0234/0234O002C639T000F00062.jpg", + "best_crop_size": { + "w": 101, + "h": 189 + } + }, + "004": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.721, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0234/0234O004C507T014F00818.jpg", + "best_crop_size": { + "w": 352, + "h": 538 + } + } + }, + "gpt_description": null + }, + "0238": { + "person_id": "0238", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0238/0238O005C329T003F00108.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.655, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0238/0238O005C329T003F00108.jpg", + "best_crop_size": { + "w": 128, + "h": 324 + } + } + }, + "gpt_description": null + }, + "0239": { + "person_id": "0239", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "yellow", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0239/0239O003C639T000F00060.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "yellow", + "carried_objects": [], + "person_detection_confidence": 0.635, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0239/0239O003C639T000F00060.jpg", + "best_crop_size": { + "w": 86, + "h": 174 + } + }, + "005": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.694, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0239/0239O005C330T033F00417.jpg", + "best_crop_size": { + "w": 65, + "h": 171 + } + } + }, + "gpt_description": null + }, + "0241": { + "person_id": "0241", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "green", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0241/0241O005C329T006F00119.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.453, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0241/0241O003C639T003F00283.jpg", + "best_crop_size": { + "w": 102, + "h": 214 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.692, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0241/0241O005C329T006F00119.jpg", + "best_crop_size": { + "w": 151, + "h": 429 + } + } + }, + "gpt_description": null + }, + "0242": { + "person_id": "0242", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "purple", + "primary_lower_color": "orange", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0242/0242O005C507T018F00466.jpg", + "outfits": { + "003": { + "upper_body_color": "purple", + "lower_body_color": "orange", + "carried_objects": [], + "person_detection_confidence": 0.355, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0242/0242O003C336T041F00919.jpg", + "best_crop_size": { + "w": 33, + "h": 88 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.761, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0242/0242O005C507T018F00466.jpg", + "best_crop_size": { + "w": 149, + "h": 403 + } + } + }, + "gpt_description": null + }, + "0243": { + "person_id": "0243", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "handbag" + ], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0243/0243O005C329T005F00445.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.632, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0243/0243O001C329T025F00186.jpg", + "best_crop_size": { + "w": 134, + "h": 415 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.64, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0243/0243O003C340T021F00108.jpg", + "best_crop_size": { + "w": 138, + "h": 330 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "handbag" + ], + "person_detection_confidence": 0.699, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0243/0243O005C329T005F00445.jpg", + "best_crop_size": { + "w": 251, + "h": 465 + } + } + }, + "gpt_description": null + }, + "0245": { + "person_id": "0245", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "yellow", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0245/0245O001C329T011F00031.jpg", + "outfits": { + "001": { + "upper_body_color": "yellow", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.606, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0245/0245O001C329T011F00031.jpg", + "best_crop_size": { + "w": 260, + "h": 600 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.467, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0245/0245O003C336T006F00153.jpg", + "best_crop_size": { + "w": 38, + "h": 87 + } + } + }, + "gpt_description": null + }, + "0247": { + "person_id": "0247", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0247/0247O005C329T008F00135.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.666, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0247/0247O003C336T049F00719.jpg", + "best_crop_size": { + "w": 38, + "h": 101 + } + }, + "005": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.604, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0247/0247O005C329T008F00135.jpg", + "best_crop_size": { + "w": 154, + "h": 385 + } + } + }, + "gpt_description": null + }, + "0248": { + "person_id": "0248", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "gray", + "primary_lower_color": "gray", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0248/0248O005C329T030F00203.jpg", + "outfits": { + "003": { + "upper_body_color": "gray", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.451, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0248/0248O003C336T050F00685.jpg", + "best_crop_size": { + "w": 32, + "h": 99 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.77, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0248/0248O005C329T030F00203.jpg", + "best_crop_size": { + "w": 267, + "h": 599 + } + } + }, + "gpt_description": null + }, + "0249": { + "person_id": "0249", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0249/0249O004C340T010F00090.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.671, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0249/0249O002C340T000F00040.jpg", + "best_crop_size": { + "w": 154, + "h": 189 + } + }, + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.711, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0249/0249O004C340T010F00090.jpg", + "best_crop_size": { + "w": 181, + "h": 451 + } + } + }, + "gpt_description": null + }, + "0250": { + "person_id": "0250", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "green", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0250/0250O002C639T004F00572.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.35, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0250/0250O002C639T004F00572.jpg", + "best_crop_size": { + "w": 64, + "h": 143 + } + }, + "004": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.509, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0250/0250O004C639T011F00036.jpg", + "best_crop_size": { + "w": 73, + "h": 198 + } + } + }, + "gpt_description": null + }, + "0256": { + "person_id": "0256", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0256/0256O001C329T035F00155.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.7, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0256/0256O001C329T035F00155.jpg", + "best_crop_size": { + "w": 255, + "h": 547 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.59, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0256/0256O003C639T001F00004.jpg", + "best_crop_size": { + "w": 78, + "h": 201 + } + }, + "005": { + "upper_body_color": "orange", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.721, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0256/0256O005C329T013F00188.jpg", + "best_crop_size": { + "w": 186, + "h": 536 + } + } + }, + "gpt_description": null + }, + "0257": { + "person_id": "0257", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0257/0257O005C507T016F00306.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.732, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0257/0257O003C639T035F00087.jpg", + "best_crop_size": { + "w": 113, + "h": 190 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.622, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0257/0257O005C507T016F00306.jpg", + "best_crop_size": { + "w": 170, + "h": 539 + } + } + }, + "gpt_description": null + }, + "0258": { + "person_id": "0258", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0258/0258O001C329T016F00105.jpg", + "outfits": { + "001": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.835, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0258/0258O001C329T016F00105.jpg", + "best_crop_size": { + "w": 182, + "h": 449 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.751, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0258/0258O003C639T021F00018.jpg", + "best_crop_size": { + "w": 89, + "h": 209 + } + }, + "006": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.711, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0258/0258O006C507T005F00280.jpg", + "best_crop_size": { + "w": 113, + "h": 280 + } + } + }, + "gpt_description": null + }, + "0260": { + "person_id": "0260", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0260/0260O006C329T006F00198.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.885, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0260/0260O001C329T024F00076.jpg", + "best_crop_size": { + "w": 197, + "h": 502 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.55, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0260/0260O003C639T023F00007.jpg", + "best_crop_size": { + "w": 74, + "h": 143 + } + }, + "006": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.733, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0260/0260O006C329T006F00198.jpg", + "best_crop_size": { + "w": 223, + "h": 525 + } + } + }, + "gpt_description": null + }, + "0263": { + "person_id": "0263", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0263/0263O005C507T023F00556.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.666, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0263/0263O003C639T000F00009.jpg", + "best_crop_size": { + "w": 49, + "h": 205 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.667, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0263/0263O005C507T023F00556.jpg", + "best_crop_size": { + "w": 167, + "h": 296 + } + } + }, + "gpt_description": null + }, + "0267": { + "person_id": "0267", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "green", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0267/0267O006C507T037F00710.jpg", + "outfits": { + "003": { + "upper_body_color": "white", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.519, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0267/0267O003C336T006F00243.jpg", + "best_crop_size": { + "w": 45, + "h": 118 + } + }, + "006": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.879, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0267/0267O006C507T037F00710.jpg", + "best_crop_size": { + "w": 133, + "h": 347 + } + }, + "007": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.548, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0267/0267O007C639T000F00070.jpg", + "best_crop_size": { + "w": 87, + "h": 218 + } + } + }, + "gpt_description": null + }, + "0268": { + "person_id": "0268", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [ + "bottle" + ], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0268/0268O003C507T009F00158.jpg", + "outfits": { + "002": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.621, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0268/0268O002C639T006F00371.jpg", + "best_crop_size": { + "w": 85, + "h": 175 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "white", + "carried_objects": [], + "person_detection_confidence": 0.648, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0268/0268O003C507T009F00158.jpg", + "best_crop_size": { + "w": 167, + "h": 325 + } + }, + "004": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [ + "bottle" + ], + "person_detection_confidence": 0.636, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0268/0268O004C639T000F00079.jpg", + "best_crop_size": { + "w": 90, + "h": 220 + } + } + }, + "gpt_description": null + }, + "0269": { + "person_id": "0269", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0269/0269O005C507T004F00381.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.783, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0269/0269O001C508T011F00253.jpg", + "best_crop_size": { + "w": 111, + "h": 138 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.594, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0269/0269O003C639T001F00378.jpg", + "best_crop_size": { + "w": 51, + "h": 126 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.686, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0269/0269O005C507T004F00381.jpg", + "best_crop_size": { + "w": 158, + "h": 472 + } + } + }, + "gpt_description": null + }, + "0271": { + "person_id": "0271", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "green", + "primary_lower_color": "green", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0271/0271O001C508T023F00172.jpg", + "outfits": { + "001": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.851, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0271/0271O001C508T023F00172.jpg", + "best_crop_size": { + "w": 142, + "h": 499 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "gray", + "carried_objects": [], + "person_detection_confidence": 0.604, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0271/0271O005C330T005F00490.jpg", + "best_crop_size": { + "w": 112, + "h": 288 + } + } + }, + "gpt_description": null + }, + "0272": { + "person_id": "0272", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "purple", + "primary_lower_color": "white", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0272/0272O005C329T015F00024.jpg", + "outfits": { + "003": { + "upper_body_color": "purple", + "lower_body_color": "white", + "carried_objects": [], + "person_detection_confidence": 0.326, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0272/0272O003C336T020F00656.jpg", + "best_crop_size": { + "w": 37, + "h": 94 + } + }, + "005": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.656, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0272/0272O005C329T015F00024.jpg", + "best_crop_size": { + "w": 155, + "h": 477 + } + } + }, + "gpt_description": null + }, + "0277": { + "person_id": "0277", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "green", + "primary_lower_color": "blue", + "all_carried_objects": [ + "suitcase" + ], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0277/0277O001C507T058F00353.jpg", + "outfits": { + "001": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.885, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0277/0277O001C507T058F00353.jpg", + "best_crop_size": { + "w": 245, + "h": 571 + } + }, + "003": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.702, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0277/0277O003C639T057F00024.jpg", + "best_crop_size": { + "w": 80, + "h": 210 + } + }, + "006": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "suitcase" + ], + "person_detection_confidence": 0.755, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0277/0277O006C507T042F00650.jpg", + "best_crop_size": { + "w": 112, + "h": 238 + } + } + }, + "gpt_description": null + }, + "0278": { + "person_id": "0278", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "green", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0278/0278O001C507T059F00111.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.845, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0278/0278O001C507T059F00111.jpg", + "best_crop_size": { + "w": 237, + "h": 509 + } + }, + "003": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.0, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0278/0278O003C336T058F00465.jpg", + "best_crop_size": { + "w": 32, + "h": 80 + } + }, + "007": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.832, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0278/0278O007C507T028F00126.jpg", + "best_crop_size": { + "w": 83, + "h": 283 + } + } + }, + "gpt_description": null + }, + "0279": { + "person_id": "0279", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0279/0279O003C639T020F00060.jpg", + "outfits": { + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.779, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0279/0279O003C639T020F00060.jpg", + "best_crop_size": { + "w": 104, + "h": 196 + } + }, + "005": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.541, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0279/0279O005C639T000F00085.jpg", + "best_crop_size": { + "w": 94, + "h": 189 + } + }, + "006": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.608, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0279/0279O006C639T021F00032.jpg", + "best_crop_size": { + "w": 126, + "h": 192 + } + } + }, + "gpt_description": null + }, + "0280": { + "person_id": "0280", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0280/0280O001C508T020F00576.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.856, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0280/0280O001C508T020F00576.jpg", + "best_crop_size": { + "w": 284, + "h": 533 + } + }, + "003": { + "upper_body_color": "purple", + "lower_body_color": "pink", + "carried_objects": [], + "person_detection_confidence": 0.598, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0280/0280O003C639T002F00755.jpg", + "best_crop_size": { + "w": 68, + "h": 103 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.478, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0280/0280O005C329T022F00029.jpg", + "best_crop_size": { + "w": 82, + "h": 262 + } + } + }, + "gpt_description": null + }, + "0285": { + "person_id": "0285", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0285/0285O005C507T018F00040.jpg", + "outfits": { + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.62, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0285/0285O005C507T018F00040.jpg", + "best_crop_size": { + "w": 233, + "h": 558 + } + } + }, + "gpt_description": null + }, + "0292": { + "person_id": "0292", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "purple", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0292/0292O005C505T016F00142.jpg", + "outfits": { + "003": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.551, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0292/0292O003C639T019F00023.jpg", + "best_crop_size": { + "w": 61, + "h": 176 + } + }, + "005": { + "upper_body_color": "purple", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.735, + "num_crops_analyzed": 12, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0292/0292O005C505T016F00142.jpg", + "best_crop_size": { + "w": 188, + "h": 323 + } + } + }, + "gpt_description": null + }, + "0294": { + "person_id": "0294", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "green", + "primary_lower_color": "green", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0294/0294O005C509T004F00664.jpg", + "outfits": { + "003": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.428, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0294/0294O003C436T023F00160.jpg", + "best_crop_size": { + "w": 32, + "h": 85 + } + }, + "005": { + "upper_body_color": "orange", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.811, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0294/0294O005C509T004F00664.jpg", + "best_crop_size": { + "w": 118, + "h": 311 + } + } + }, + "gpt_description": null + }, + "0295": { + "person_id": "0295", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "green", + "primary_lower_color": "white", + "all_carried_objects": [ + "handbag" + ], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0295/0295O005C509T000F00110.jpg", + "outfits": { + "003": { + "upper_body_color": "green", + "lower_body_color": "white", + "carried_objects": [], + "person_detection_confidence": 0.621, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0295/0295O003C336T023F00510.jpg", + "best_crop_size": { + "w": 40, + "h": 90 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [ + "handbag" + ], + "person_detection_confidence": 0.702, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0295/0295O005C509T000F00110.jpg", + "best_crop_size": { + "w": 407, + "h": 458 + } + } + }, + "gpt_description": null + }, + "0296": { + "person_id": "0296", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0296/0296O001C508T040F00166.jpg", + "outfits": { + "001": { + "upper_body_color": "green", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.807, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0296/0296O001C508T040F00166.jpg", + "best_crop_size": { + "w": 343, + "h": 712 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.629, + "num_crops_analyzed": 6, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0296/0296O003C639T029F00413.jpg", + "best_crop_size": { + "w": 94, + "h": 187 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.722, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0296/0296O005C329T027F00163.jpg", + "best_crop_size": { + "w": 222, + "h": 560 + } + } + }, + "gpt_description": null + }, + "0297": { + "person_id": "0297", + "split": "test", + "num_outfits": 2, + "primary_upper_color": "green", + "primary_lower_color": "green", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0297/0297O005C507T028F00157.jpg", + "outfits": { + "003": { + "upper_body_color": "green", + "lower_body_color": "green", + "carried_objects": [], + "person_detection_confidence": 0.451, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0297/0297O003C639T009F00395.jpg", + "best_crop_size": { + "w": 62, + "h": 143 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.769, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0297/0297O005C507T028F00157.jpg", + "best_crop_size": { + "w": 294, + "h": 646 + } + } + }, + "gpt_description": null + }, + "0298": { + "person_id": "0298", + "split": "test", + "num_outfits": 3, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0298/0298O001C508T037F00152.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.869, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0298/0298O001C508T037F00152.jpg", + "best_crop_size": { + "w": 306, + "h": 682 + } + }, + "003": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.618, + "num_crops_analyzed": 9, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0298/0298O003C639T001F00001.jpg", + "best_crop_size": { + "w": 46, + "h": 194 + } + }, + "005": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.672, + "num_crops_analyzed": 15, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0298/0298O005C507T033F00164.jpg", + "best_crop_size": { + "w": 130, + "h": 288 + } + } + }, + "gpt_description": null + }, + "0300": { + "person_id": "0300", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0300/0300O001C508T000F00101.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.846, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0300/0300O001C508T000F00101.jpg", + "best_crop_size": { + "w": 234, + "h": 592 + } + } + }, + "gpt_description": null + }, + "0301": { + "person_id": "0301", + "split": "test", + "num_outfits": 1, + "primary_upper_color": "blue", + "primary_lower_color": "blue", + "all_carried_objects": [], + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0301/0301O001C508T000F00073.jpg", + "outfits": { + "001": { + "upper_body_color": "blue", + "lower_body_color": "blue", + "carried_objects": [], + "person_detection_confidence": 0.859, + "num_crops_analyzed": 3, + "best_crop": "/home/ah66742/MEVID/bbox_test_fresh/bbox_test/0301/0301O001C508T000F00073.jpg", + "best_crop_size": { + "w": 220, + "h": 574 + } + } + }, + "gpt_description": null + } + } +} \ No newline at end of file diff --git a/meva/data/slot_index.json b/meva/data/slot_index.json new file mode 100644 index 0000000..440541b --- /dev/null +++ b/meva/data/slot_index.json @@ -0,0 +1,8797 @@ +{ + "2018-03-05.13-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-05.13-10.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-05.13-10.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-05.13-10.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-05.13-15.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-05.13-15.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G331", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-05.13-15.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-05.13-15.school": { + "cameras": [ + "G328", + "G423", + "G424", + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421" + ], + "sources": { + "kitware": [ + "G328", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-05.13-20.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-05.13-20.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G340" + ], + "kitware-training": [ + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-05.13-20.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-05.13-20.school": { + "cameras": [ + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G299", + "G300", + "G330", + "G339", + "G421" + ], + "sources": { + "kitware": [ + "G328", + "G336", + "G419", + "G420", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-05.14-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-05.14-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-05.14-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-05.14-00.school": { + "cameras": [ + "G420", + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G420" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-05.14-05.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-05.14-05.bus": { + "cameras": [ + "G506", + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-05.14-05.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-05.14-05.school": { + "cameras": [ + "G328", + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G328" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-05.14-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-05.14-10.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-05.14-10.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-05.14-10.school": { + "cameras": [ + "G330", + "G420", + "G421", + "G424", + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G423" + ], + "sources": { + "kitware": [ + "G330", + "G420", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-07.10-55.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.10-55.bus": { + "cameras": [ + "G505", + "G508", + "G331", + "G340", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-07.10-55.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.10-55.school": { + "cameras": [ + "G328", + "G339", + "G419", + "G423", + "G424", + "G299", + "G300", + "G330", + "G336", + "G420", + "G421" + ], + "sources": { + "kitware": [ + "G328", + "G339", + "G419", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G420", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-07.11-00.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.11-00.bus": { + "cameras": [ + "G505", + "G506", + "G508", + "G509", + "G331", + "G340" + ], + "sources": { + "kitware": [ + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G340" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-07.11-00.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.11-00.school": { + "cameras": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G299", + "G330", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421" + ], + "kitware-training": [ + "G299", + "G330", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-07.11-05.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.11-05.bus": { + "cameras": [ + "G331", + "G340", + "G508", + "G505", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G508" + ], + "kitware-training": [ + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-07.11-05.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.11-05.school": { + "cameras": [ + "G300", + "G328", + "G339", + "G419", + "G299", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G300", + "G328", + "G339", + "G419" + ], + "kitware-training": [ + "G299", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-07.11-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.11-10.bus": { + "cameras": [ + "G505", + "G506", + "G508", + "G331", + "G340", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-07.11-10.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.11-10.school": { + "cameras": [ + "G299", + "G300", + "G339", + "G419", + "G420", + "G421", + "G328", + "G330", + "G336", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G339", + "G419", + "G420", + "G421" + ], + "kitware-training": [ + "G328", + "G330", + "G336", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-07.16-50.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ], + "nist-json": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-07.16-50.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G509", + "G508" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ], + "nist-json": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-07.16-50.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301" + ], + "kitware-training": [ + "G341", + "G436" + ], + "nist-json": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-07.16-50.school": { + "cameras": [ + "G300", + "G330", + "G419", + "G421", + "G423", + "G638", + "G299", + "G328", + "G336", + "G339", + "G420", + "G424" + ], + "sources": { + "kitware": [ + "G300", + "G330", + "G419", + "G421", + "G423", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G336", + "G339", + "G420", + "G424" + ], + "nist-json": [ + "G328", + "G336" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-07.16-55.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ], + "nist-json": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.16-55.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G509", + "G331", + "G508" + ], + "sources": { + "kitware": [ + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G331", + "G508" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-07.16-55.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.16-55.school": { + "cameras": [ + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G299", + "G330", + "G339" + ], + "sources": { + "kitware": [ + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G330", + "G339" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-07.17-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.17-00.bus": { + "cameras": [ + "G331", + "G505", + "G506", + "G508", + "G509", + "G340" + ], + "sources": { + "kitware": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-07.17-00.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.17-00.school": { + "cameras": [ + "G638", + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-07.17-05.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.17-05.bus": { + "cameras": [ + "G505", + "G508", + "G509", + "G331", + "G340", + "G506" + ], + "sources": { + "kitware": [ + "G505", + "G508", + "G509" + ], + "kitware-training": [ + "G331", + "G340", + "G506" + ], + "nist-json": [ + "G331", + "G340" + ] + }, + "multi_camera": true, + "clip_count": 8 + }, + "2018-03-07.17-05.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.17-05.school": { + "cameras": [ + "G336", + "G419", + "G420", + "G423", + "G424", + "G299", + "G300", + "G328", + "G330", + "G339", + "G421", + "G638" + ], + "sources": { + "kitware": [ + "G336", + "G419", + "G420", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G421", + "G638" + ], + "nist-json": [ + "G299", + "G336" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-07.17-20.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.17-20.bus": { + "cameras": [ + "G331", + "G505", + "G506", + "G508", + "G340", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G505", + "G506", + "G508" + ], + "kitware-training": [ + "G340", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-07.17-20.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.17-20.school": { + "cameras": [ + "G300", + "G336", + "G419", + "G420", + "G423", + "G424", + "G638", + "G299", + "G328", + "G330", + "G339", + "G421" + ], + "sources": { + "kitware": [ + "G300", + "G336", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G339", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-07.17-25.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.17-25.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G508", + "G509", + "G331" + ], + "sources": { + "kitware": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-07.17-25.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.17-25.school": { + "cameras": [ + "G300", + "G424", + "G638", + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G639" + ], + "sources": { + "kitware": [ + "G300", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-07.17-30.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.17-30.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G508", + "G509", + "G331" + ], + "sources": { + "kitware": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ], + "nist-json": [ + "G505" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-07.17-30.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G341" + ], + "kitware-training": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.17-30.school": { + "cameras": [ + "G300", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639", + "G299", + "G328", + "G330", + "G336", + "G339", + "G424" + ], + "sources": { + "kitware": [ + "G300", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-07.17-35.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-07.17-35.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-07.17-35.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-07.17-35.school": { + "cameras": [ + "G299", + "G300", + "G339", + "G419", + "G420", + "G421", + "G423", + "G638", + "G328", + "G330", + "G336", + "G424", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G339", + "G419", + "G420", + "G421", + "G423", + "G638" + ], + "kitware-training": [ + "G328", + "G330", + "G336", + "G424", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-09.10-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-09.10-10.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G508", + "G509", + "G331" + ], + "sources": { + "kitware": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "kitware-training": [ + "G331" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-09.10-10.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-09.10-10.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G638", + "G639", + "G330", + "G420", + "G424" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G638", + "G639" + ], + "kitware-training": [ + "G330", + "G420", + "G424" + ], + "nist-json": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-09.10-15.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-09.10-15.bus": { + "cameras": [ + "G340", + "G505", + "G506", + "G331", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340", + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-09.10-15.hospital": { + "cameras": [ + "G301", + "G436", + "G341" + ], + "sources": { + "kitware": [ + "G301", + "G436" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-09.10-15.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G336", + "G421", + "G638", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G421", + "G638" + ], + "kitware-training": [ + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-09.10-20.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-09.10-20.bus": { + "cameras": [ + "G506", + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-09.10-20.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-09.10-20.school": { + "cameras": [ + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G639", + "G299", + "G300", + "G330", + "G339", + "G421", + "G638" + ], + "sources": { + "kitware": [ + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G421", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-09.10-25.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-09.10-25.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-09.10-25.hospital": { + "cameras": [ + "G436", + "G301" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-09.10-25.school": { + "cameras": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G639", + "G300", + "G328", + "G339", + "G424", + "G638" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G639" + ], + "kitware-training": [ + "G300", + "G328", + "G339", + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-09.10-30.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-09.10-30.bus": { + "cameras": [ + "G340", + "G505", + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340", + "G505" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-09.10-30.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301" + ], + "kitware-training": [ + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-09.10-30.school": { + "cameras": [ + "G328", + "G330", + "G419", + "G420", + "G423", + "G424", + "G299", + "G300", + "G336", + "G339", + "G421", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G328", + "G330", + "G419", + "G420", + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G339", + "G421", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-09.10-35.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-09.10-35.bus": { + "cameras": [ + "G340", + "G505", + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340", + "G505" + ], + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-09.10-35.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-09.10-35.school": { + "cameras": [ + "G328", + "G336", + "G339", + "G423", + "G424", + "G639", + "G299", + "G300", + "G330", + "G419", + "G420", + "G421", + "G638" + ], + "sources": { + "kitware": [ + "G328", + "G336", + "G339", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G419", + "G420", + "G421", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-09.10-40.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-09.10-40.bus": { + "cameras": [ + "G506", + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-09.10-40.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-09.10-40.school": { + "cameras": [ + "G330", + "G336", + "G339", + "G419", + "G299", + "G300", + "G328", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G330", + "G336", + "G339", + "G419" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.11-15.hospital": { + "cameras": [ + "G436" + ], + "sources": { + "kitware": [ + "G436" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-11.11-15.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G424", + "G638" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 10 + }, + "2018-03-11.11-20.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.11-20.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.11-20.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.11-20.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639", + "G339" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.11-25.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.11-25.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.11-25.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.11-25.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424", + "G638", + "G339", + "G419", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G419", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.11-30.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.11-30.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.11-30.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.11-30.school": { + "cameras": [ + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G299", + "G339", + "G639" + ], + "sources": { + "kitware": [ + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G339", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-11.11-35.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.11-35.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.11-35.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.11-35.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G339", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-11.11-40.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.11-40.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.11-40.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.11-40.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G474", + "G638", + "G330", + "G339", + "G421", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G474", + "G638" + ], + "kitware-training": [ + "G330", + "G339", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-11.11-45.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.11-45.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.11-45.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.11-45.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G339", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "kitware-training": [ + "G339", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-11.11-50.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.11-50.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.11-50.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.11-50.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639", + "G330", + "G339" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G330", + "G339" + ], + "nist-json": [ + "G300", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 15 + }, + "2018-03-11.11-55.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.11-55.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.11-55.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.11-55.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639", + "G339" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G339" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.12-00.school": { + "cameras": [ + "G299", + "G336", + "G420" + ], + "sources": { + "kitware": [ + "G299", + "G336", + "G420" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.13-50.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.13-50.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.13-50.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.13-50.school": { + "cameras": [ + "G339", + "G421", + "G423", + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G339", + "G421", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 19 + }, + "2018-03-11.13-55.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.13-55.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.13-55.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-11.13-55.school": { + "cameras": [ + "G339", + "G420", + "G638", + "G639", + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G421", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G339", + "G420", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G421", + "G423", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.14-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.14-00.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.14-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.14-00.school": { + "cameras": [ + "G423", + "G424", + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.14-05.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.14-05.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.14-05.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.14-05.school": { + "cameras": [ + "G420", + "G423", + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G421", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G420", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.14-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.14-10.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.14-10.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.14-10.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.14-15.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.14-15.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.14-15.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.14-15.school": { + "cameras": [ + "G299", + "G339", + "G423", + "G638", + "G639", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G424" + ], + "sources": { + "kitware": [ + "G299", + "G339", + "G423", + "G638", + "G639" + ], + "kitware-training": [ + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G424" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.14-20.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.14-20.bus": { + "cameras": [ + "G340", + "G506", + "G508", + "G331", + "G505", + "G509" + ], + "sources": { + "kitware": [ + "G340", + "G506", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.14-20.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.14-20.school": { + "cameras": [ + "G299", + "G330", + "G419", + "G420", + "G424", + "G300", + "G328", + "G336", + "G339", + "G421", + "G423", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G419", + "G420", + "G424" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G339", + "G421", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.16-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.16-10.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 5 + }, + "2018-03-11.16-10.hospital": { + "cameras": [ + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.16-10.school": { + "cameras": [ + "G339" + ], + "sources": { + "kitware": [ + "G339" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-11.16-15.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.16-15.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G509", + "G508" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.16-15.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436", + "G479" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-11.16-15.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G330", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G330", + "G639" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-11.16-20.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.16-20.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G509", + "G508" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.16-20.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436", + "G479" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-11.16-20.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G639" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.16-25.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.16-25.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G509", + "G508" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.16-25.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.16-25.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G424" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-11.16-30.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.16-30.bus": { + "cameras": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G509", + "G508" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G475", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-11.16-30.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436", + "G476", + "G479" + ] + }, + "multi_camera": true, + "clip_count": 5 + }, + "2018-03-11.16-30.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G474", + "G638" + ], + "kitware-training": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-11.16-35.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.16-35.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G509", + "G508" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.16-35.hospital": { + "cameras": [ + "G301", + "G341", + "G436", + "G479" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436", + "G479" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-11.16-35.school": { + "cameras": [ + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G299", + "G639" + ], + "sources": { + "kitware": [ + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.16-40.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.16-40.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G509", + "G508" + ], + "sources": { + "kitware": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "kitware-training": [ + "G508" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.16-40.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.16-40.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.16-45.bus": { + "cameras": [ + "G331", + "G505", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G505", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.16-45.school": { + "cameras": [ + "G299", + "G330", + "G421", + "G423" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G421", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-11.17-10.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-11.17-10.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.17-10.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.17-10.school": { + "cameras": [ + "G330", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639", + "G299", + "G300", + "G328", + "G336", + "G420", + "G638" + ], + "sources": { + "kitware": [ + "G330", + "G339", + "G419", + "G421", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G336", + "G420", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.17-15.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-11.17-15.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.17-15.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.17-15.school": { + "cameras": [ + "G299", + "G336", + "G423", + "G300", + "G330", + "G339", + "G419", + "G420", + "G421", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G336", + "G423" + ], + "kitware-training": [ + "G300", + "G330", + "G339", + "G419", + "G420", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-11.17-20.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-11.17-20.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.17-20.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.17-20.school": { + "cameras": [ + "G328", + "G420", + "G423", + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G421", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G328", + "G420", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G339", + "G419", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-11.17-25.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-11.17-25.bus": { + "cameras": [ + "G340", + "G506", + "G331", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340", + "G506" + ], + "kitware-training": [ + "G331", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-11.17-25.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-11.17-25.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G423", + "G424", + "G638", + "G339", + "G420", + "G421", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G423", + "G424", + "G638" + ], + "kitware-training": [ + "G339", + "G420", + "G421", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-12.10-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ], + "nist-json": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.10-00.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-00.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-12.10-00.school": { + "cameras": [ + "G299", + "G330", + "G420", + "G300", + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G420" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G339", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 15 + }, + "2018-03-12.10-05.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.10-05.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-05.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.10-05.school": { + "cameras": [ + "G299", + "G328", + "G330", + "G639", + "G300", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ], + "sources": { + "kitware": [ + "G299", + "G328", + "G330", + "G639" + ], + "kitware-training": [ + "G300", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-12.10-10.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-12.10-10.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-10.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.10-10.school": { + "cameras": [ + "G421", + "G423", + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G421", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G299" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-12.10-15.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.10-15.bus": { + "cameras": [ + "G506", + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-15.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.10-15.school": { + "cameras": [ + "G299", + "G336", + "G424", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G336", + "G424" + ], + "kitware-training": [ + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-12.10-20.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-12.10-20.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-20.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.10-20.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-12.10-25.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.10-25.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-25.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.10-25.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G336", + "G421", + "G638", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G300", + "G328", + "G336", + "G421", + "G638" + ], + "kitware-training": [ + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-12.10-30.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.10-30.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-30.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.10-30.school": { + "cameras": [ + "G330", + "G336", + "G421", + "G424", + "G299", + "G300", + "G328", + "G339", + "G419", + "G420", + "G423", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G330", + "G336", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G339", + "G419", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-12.10-40.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.10-40.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-40.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-12.10-40.school": { + "cameras": [ + "G299", + "G330", + "G339", + "G421", + "G638", + "G300", + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G339", + "G421", + "G638" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G419", + "G420", + "G423", + "G424", + "G639" + ], + "nist-json": [ + "G328" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-12.10-45.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.10-45.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-45.hospital": { + "cameras": [ + "G301", + "G436", + "G341" + ], + "sources": { + "kitware": [ + "G301", + "G436" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.10-45.school": { + "cameras": [ + "G328", + "G330", + "G421", + "G639", + "G299", + "G300", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "sources": { + "kitware": [ + "G328", + "G330", + "G421", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638" + ], + "nist-json": [ + "G328", + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 16 + }, + "2018-03-12.10-50.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.10-50.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.10-50.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.10-50.school": { + "cameras": [ + "G299", + "G330", + "G423", + "G639", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G638" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G423", + "G639" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G638" + ], + "nist-json": [ + "G423" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-12.10-55.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.10-55.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508" + ] + }, + "multi_camera": true, + "clip_count": 5 + }, + "2018-03-12.10-55.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.10-55.school": { + "cameras": [ + "G330", + "G421", + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G330", + "G421" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-12.11-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.11-00.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-12.11-00.hospital": { + "cameras": [ + "G341", + "G436", + "G301" + ], + "sources": { + "kitware": [ + "G341", + "G436" + ], + "kitware-training": [ + "G301" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.11-00.school": { + "cameras": [ + "G423", + "G424", + "G639", + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638" + ], + "sources": { + "kitware": [ + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-12.11-05.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-12.11-05.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.11-05.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.11-05.school": { + "cameras": [ + "G328", + "G330", + "G420", + "G423", + "G299", + "G300", + "G336", + "G339", + "G419", + "G421", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G328", + "G330", + "G420", + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G336", + "G339", + "G419", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-12.11-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-12.11-10.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-12.11-10.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-12.11-10.school": { + "cameras": [ + "G328", + "G336", + "G424", + "G638", + "G299", + "G300", + "G330", + "G339", + "G419", + "G420", + "G421", + "G423", + "G639" + ], + "sources": { + "kitware": [ + "G328", + "G336", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G419", + "G420", + "G421", + "G423", + "G639" + ], + "nist-json": [ + "G423" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-13.15-50.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.15-50.bus": { + "cameras": [ + "G505", + "G506", + "G331", + "G340", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.15-50.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.15-50.school": { + "cameras": [ + "G336", + "G419", + "G421", + "G638", + "G299", + "G300", + "G328", + "G330", + "G339", + "G420", + "G423", + "G424", + "G639" + ], + "sources": { + "kitware": [ + "G336", + "G419", + "G421", + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G420", + "G423", + "G424", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-13.15-55.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.15-55.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.15-55.hospital": { + "cameras": [ + "G301", + "G436", + "G341" + ], + "sources": { + "kitware": [ + "G301", + "G436" + ], + "kitware-training": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.15-55.school": { + "cameras": [ + "G299", + "G330", + "G424", + "G638", + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G424", + "G638" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-13.16-00.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-13.16-00.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.16-00.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.16-00.school": { + "cameras": [ + "G336", + "G424", + "G638", + "G639", + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423" + ], + "sources": { + "kitware": [ + "G336", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-13.16-05.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.16-05.bus": { + "cameras": [ + "G505", + "G506", + "G331", + "G340", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.16-05.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.16-05.school": { + "cameras": [ + "G328", + "G336", + "G421", + "G424", + "G299", + "G300", + "G330", + "G339", + "G419", + "G420", + "G423", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G328", + "G336", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G419", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-13.16-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.16-10.bus": { + "cameras": [ + "G506", + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.16-10.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.16-10.school": { + "cameras": [ + "G423", + "G424", + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G423", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-13.16-15.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.16-15.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.16-15.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.16-15.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-13.16-20.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.16-20.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.16-20.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.16-20.school": { + "cameras": [ + "G336", + "G339", + "G424", + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G336", + "G339", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-13.16-25.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.16-25.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.16-25.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.16-25.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-13.16-30.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.16-30.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.16-30.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.16-30.school": { + "cameras": [ + "G423", + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G423" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-13.17-05.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.17-05.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.17-05.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.17-05.school": { + "cameras": [ + "G299", + "G423", + "G424", + "G639", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638" + ], + "sources": { + "kitware": [ + "G299", + "G423", + "G424", + "G639" + ], + "kitware-training": [ + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G638" + ], + "nist-json": [ + "G328", + "G336", + "G421" + ] + }, + "multi_camera": true, + "clip_count": 16 + }, + "2018-03-13.17-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.17-10.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.17-10.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.17-10.school": { + "cameras": [ + "G336", + "G421", + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G336", + "G421" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-13.17-15.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.17-15.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.17-15.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.17-15.school": { + "cameras": [ + "G336", + "G424", + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G336", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-13.17-20.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.17-20.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.17-20.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.17-20.school": { + "cameras": [ + "G336", + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G336" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-13.17-25.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-13.17-25.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.17-25.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.17-25.school": { + "cameras": [ + "G336", + "G421", + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G336", + "G421" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G336" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-13.17-30.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-13.17-30.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-13.17-30.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-13.17-30.school": { + "cameras": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-13.17-35.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.17-35.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.17-35.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.17-35.school": { + "cameras": [ + "G330", + "G419", + "G299", + "G300", + "G328", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G330", + "G419" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G336", + "G339", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G299" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-13.17-40.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-13.17-40.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-13.17-40.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-13.17-40.school": { + "cameras": [ + "G300", + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G300" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G420", + "G423", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-15.14-50.admin": { + "cameras": [ + "G329", + "G326" + ], + "sources": { + "kitware": [ + "G329" + ], + "kitware-training": [ + "G326" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.14-50.bus": { + "cameras": [ + "G340", + "G508", + "G331", + "G505", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G340", + "G508" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-15.14-50.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-15.14-50.school": { + "cameras": [ + "G300", + "G420", + "G421", + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G300", + "G420", + "G421" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G339", + "G419", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G424", + "G638" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-15.14-55.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-15.14-55.bus": { + "cameras": [ + "G505", + "G331", + "G340", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505" + ], + "kitware-training": [ + "G331", + "G340", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-15.14-55.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-15.14-55.school": { + "cameras": [ + "G300", + "G328", + "G336", + "G339", + "G421", + "G638", + "G639", + "G299", + "G330", + "G419", + "G420", + "G423", + "G424" + ], + "sources": { + "kitware": [ + "G300", + "G328", + "G336", + "G339", + "G421", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G330", + "G419", + "G420", + "G423", + "G424" + ], + "nist-json": [ + "G421" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-15.15-00.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-00.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-15.15-00.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-15.15-00.school": { + "cameras": [ + "G299", + "G330", + "G339", + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G299", + "G330", + "G339" + ], + "kitware-training": [ + "G300", + "G328", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-15.15-05.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-05.bus": { + "cameras": [ + "G508", + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-15.15-05.hospital": { + "cameras": [ + "G301", + "G341" + ], + "sources": { + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-05.school": { + "cameras": [ + "G336", + "G339", + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G421", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G336", + "G339" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G421", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-15.15-10.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-10.bus": { + "cameras": [ + "G331", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G506", + "G508", + "G509" + ], + "nist-json": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 5 + }, + "2018-03-15.15-10.hospital": { + "cameras": [ + "G301", + "G341" + ], + "sources": { + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-10.school": { + "cameras": [ + "G336", + "G339", + "G421", + "G424", + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G423", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G336", + "G339", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G423", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-15.15-15.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-15.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "nist-json": [ + "G331" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-15.15-15.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-15.15-15.school": { + "cameras": [ + "G300", + "G339", + "G421", + "G424", + "G638", + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G639" + ], + "sources": { + "kitware": [ + "G300", + "G339", + "G421", + "G424", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G336", + "G419", + "G420", + "G423", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-15.15-30.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-30.bus": { + "cameras": [ + "G506", + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G508", + "G509" + ], + "nist-json": [ + "G340" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-15.15-30.hospital": { + "cameras": [ + "G341", + "G301", + "G436" + ], + "sources": { + "kitware": [ + "G341" + ], + "kitware-training": [ + "G301", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-15.15-30.school": { + "cameras": [ + "G339", + "G421", + "G424", + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G339", + "G421", + "G424" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 11 + }, + "2018-03-15.15-35.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-35.bus": { + "cameras": [ + "G340", + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G340" + ], + "kitware-training": [ + "G331", + "G505", + "G506", + "G508", + "G509" + ], + "nist-json": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-15.15-35.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ], + "nist-json": [ + "G341" + ] + }, + "multi_camera": true, + "clip_count": 4 + }, + "2018-03-15.15-35.school": { + "cameras": [ + "G328", + "G339", + "G421", + "G638", + "G299", + "G300", + "G330", + "G336", + "G419", + "G424", + "G639" + ], + "sources": { + "kitware": [ + "G328", + "G339", + "G421", + "G638" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G336", + "G419", + "G424", + "G639" + ], + "nist-json": [ + "G300" + ] + }, + "multi_camera": true, + "clip_count": 12 + }, + "2018-03-15.15-40.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware": [ + "G326" + ], + "kitware-training": [ + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-40.bus": { + "cameras": [ + "G508", + "G331", + "G340", + "G505", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G508" + ], + "kitware-training": [ + "G331", + "G340", + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-15.15-40.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware-training": [ + "G301", + "G341", + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-15.15-40.school": { + "cameras": [ + "G339", + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G339" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "nist-json": [ + "G638" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-15.15-45.admin": { + "cameras": [ + "G326" + ], + "sources": { + "kitware-training": [ + "G326" + ] + }, + "multi_camera": false, + "clip_count": 1 + }, + "2018-03-15.15-45.bus": { + "cameras": [ + "G505", + "G506", + "G331", + "G340", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G505", + "G506" + ], + "kitware-training": [ + "G331", + "G340", + "G508", + "G509" + ], + "nist-json": [ + "G506" + ] + }, + "multi_camera": true, + "clip_count": 7 + }, + "2018-03-15.15-45.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-15.15-45.school": { + "cameras": [ + "G300", + "G336", + "G339", + "G638", + "G299", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423", + "G424", + "G639" + ], + "sources": { + "kitware": [ + "G300", + "G336", + "G339", + "G638" + ], + "kitware-training": [ + "G299", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423", + "G424", + "G639" + ], + "nist-json": [ + "G638" + ] + }, + "multi_camera": true, + "clip_count": 14 + }, + "2018-03-15.15-50.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-50.bus": { + "cameras": [ + "G331", + "G508", + "G340", + "G505", + "G506", + "G509" + ], + "sources": { + "kitware": [ + "G331", + "G508" + ], + "kitware-training": [ + "G340", + "G505", + "G506", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-15.15-50.hospital": { + "cameras": [ + "G301", + "G341", + "G436" + ], + "sources": { + "kitware": [ + "G301", + "G341" + ], + "kitware-training": [ + "G436" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-15.15-50.school": { + "cameras": [ + "G336", + "G339", + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ], + "sources": { + "kitware": [ + "G336", + "G339" + ], + "kitware-training": [ + "G299", + "G300", + "G328", + "G330", + "G419", + "G420", + "G421", + "G423", + "G424", + "G638", + "G639" + ] + }, + "multi_camera": true, + "clip_count": 13 + }, + "2018-03-15.15-55.admin": { + "cameras": [ + "G326", + "G329" + ], + "sources": { + "kitware-training": [ + "G326", + "G329" + ] + }, + "multi_camera": true, + "clip_count": 2 + }, + "2018-03-15.15-55.bus": { + "cameras": [ + "G331", + "G340", + "G505", + "G506", + "G508", + "G509" + ], + "sources": { + "kitware": [ + "G331" + ], + "kitware-training": [ + "G340", + "G505", + "G506", + "G508", + "G509" + ] + }, + "multi_camera": true, + "clip_count": 6 + }, + "2018-03-15.15-55.hospital": { + "cameras": [ + "G436", + "G301", + "G341" + ], + "sources": { + "kitware": [ + "G436" + ], + "kitware-training": [ + "G301", + "G341" + ] + }, + "multi_camera": true, + "clip_count": 3 + }, + "2018-03-15.15-55.school": { + "cameras": [ + "G328", + "G336", + "G421", + "G424", + "G638", + "G639", + "G299", + "G300", + "G330", + "G339", + "G419", + "G423" + ], + "sources": { + "kitware": [ + "G328", + "G336", + "G421", + "G424", + "G638", + "G639" + ], + "kitware-training": [ + "G299", + "G300", + "G330", + "G339", + "G419", + "G423" + ] + }, + "multi_camera": true, + "clip_count": 12 + } +} \ No newline at end of file diff --git a/meva/run.sh b/meva/run.sh index 3fd7b53..23b3f27 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -3,7 +3,7 @@ # Add current directory to path export PYTHONPATH=$PYTHONPATH:$(pwd) -python -m scripts.v6.run_pipeline \ - --slot "2018-03-11.11-25-00.school" \ +python -m scripts.v10.run_pipeline \ + --slot "2018-03-11.11-25.school" \ -v \ --seed 42 \ diff --git a/meva/scripts/v10/generate_best_camera.py b/meva/scripts/v10/generate_best_camera.py index 5133bc8..4dc998e 100644 --- a/meva/scripts/v10/generate_best_camera.py +++ b/meva/scripts/v10/generate_best_camera.py @@ -239,8 +239,8 @@ def generate_best_camera_qa(sg: SceneGraph, resolved: ResolvedGraph, rng.shuffle(options) correct_idx = options.index(f"Camera {first_cam}") - # Build clip_file from the event - clip_file = getattr(first_event, 'clip_file', '') or '' + # Build clip_file from the event's video_file + clip_file = (first_event.video_file or '').replace('.avi', '.mp4') question_template = ( f"Which camera first captures the entrance of {desc} into the scene?" @@ -305,7 +305,7 @@ def generate_best_camera_qa(sg: SceneGraph, resolved: ResolvedGraph, rng.shuffle(options) correct_idx = options.index(f"Camera {last_cam}") - clip_file = getattr(last_event, 'clip_file', '') or '' + clip_file = (last_event.video_file or '').replace('.avi', '.mp4') question_template = ( f"Of all cameras capturing {desc} entering the scene, " diff --git a/meva/scripts/v10/generate_numerical.py b/meva/scripts/v10/generate_numerical.py index 9a8e5da..88c2c43 100644 --- a/meva/scripts/v10/generate_numerical.py +++ b/meva/scripts/v10/generate_numerical.py @@ -367,6 +367,17 @@ def generate_numerical_qa( debug_info["activity"] = cand["activity"] debug_info["activity_human"] = humanize_activity(cand["activity"]) + # Collect clip_files from the events referenced by this candidate + event_map = {e.event_id: e for e in sg.events} + clip_files = set() + for eid in cand.get("event_ids", []): + evt = event_map.get(eid) + if evt and evt.video_file: + cf = evt.video_file.replace(".avi", ".mp4") + clip_files.add(cf) + if clip_files: + debug_info["clip_files"] = sorted(clip_files) + qa = { "question_id": f"v8_numerical_{idx + 1:03d}", "category": "numerical", diff --git a/meva/scripts/v10/generate_scene_summary.py b/meva/scripts/v10/generate_scene_summary.py index 368fbc8..79384f1 100644 --- a/meva/scripts/v10/generate_scene_summary.py +++ b/meva/scripts/v10/generate_scene_summary.py @@ -193,11 +193,18 @@ def generate_scene_summary_qa(sg: SceneGraph, resolved: ResolvedGraph, f"which description best characterizes the overall scene?" ) + # Collect all clip_files across all cameras + all_clip_files = sorted(set( + e.video_file.replace(".avi", ".mp4") + for e in sg.events if e.video_file + )) + debug_info = { "question_type": "scene_characterization", "scene_analysis": analysis, "scene_description": description, "scene_type": scene_type, + "clip_files": all_clip_files, } qa = { @@ -260,6 +267,7 @@ def generate_scene_summary_qa(sg: SceneGraph, resolved: ResolvedGraph, "debug_info": { "question_type": "busiest_camera", "camera_event_counts": analysis["camera_event_counts"], + "clip_files": all_clip_files, }, } qa_pairs.append(qa2) diff --git a/meva/scripts/v10/generate_spatial.py b/meva/scripts/v10/generate_spatial.py index 74389ae..85e9ab7 100644 --- a/meva/scripts/v10/generate_spatial.py +++ b/meva/scripts/v10/generate_spatial.py @@ -231,6 +231,21 @@ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, else: correct_idx = 2 + # Find clip_files for each entity from their events + def _entity_clip_file(entity_id): + ent = sg.entities.get(entity_id) + if not ent: + return "" + event_map = {e.event_id: e for e in sg.events} + for evid in ent.events: + evt = event_map.get(evid) + if evt and evt.video_file: + return evt.video_file.replace(".avi", ".mp4") + return "" + + clip_a = _entity_clip_file(cand["entity_a"]) + clip_b = _entity_clip_file(cand["entity_b"]) + debug_info = { "entity_a": { "entity_id": cand["entity_a"], @@ -240,6 +255,7 @@ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, "frame": cand["frame_a"], "timestamp": f"{ent_a.first_sec:.2f}-{ent_a.last_sec:.2f}s", "world_pos_enu": cand["position_a"], + "clip_file": clip_a, }, "entity_b": { "entity_id": cand["entity_b"], @@ -249,6 +265,7 @@ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, "frame": cand["frame_b"], "timestamp": f"{ent_b.first_sec:.2f}-{ent_b.last_sec:.2f}s", "world_pos_enu": cand["position_b"], + "clip_file": clip_b, }, "distance_meters": distance, "proximity": proximity, diff --git a/meva/scripts/v10/generate_temporal.py b/meva/scripts/v10/generate_temporal.py index 3f91b75..a0435f4 100644 --- a/meva/scripts/v10/generate_temporal.py +++ b/meva/scripts/v10/generate_temporal.py @@ -294,14 +294,16 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, if not candidates: return [] - # Diversify selection, preferring MEVID-validated + described events + # Diversify selection: strong > medium > weak, MEVID-validated preferred used_pairs = set() used_activities = set() selected = [] - # First pass: prefer MEVID-validated + # Pass 1: strong connection + MEVID-validated (best quality) for c in candidates: - if c["mevid_validated"] and len(selected) < count: + if len(selected) >= count: + break + if c["connection_strength"] == "strong" and c["mevid_validated"]: cam_pair = (c["event_a"].camera_id, c["event_b"].camera_id) act_pair = (c["event_a"].activity, c["event_b"].activity) if cam_pair not in used_pairs or act_pair not in used_activities: @@ -309,7 +311,30 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, used_activities.add(act_pair) selected.append(c) - # Fill remaining from any candidates + # Pass 2: strong connection (entity cluster linked) + for c in candidates: + if len(selected) >= count: + break + if c in selected: + continue + if c["connection_strength"] == "strong": + cam_pair = (c["event_a"].camera_id, c["event_b"].camera_id) + act_pair = (c["event_a"].activity, c["event_b"].activity) + if cam_pair not in used_pairs or act_pair not in used_activities: + used_pairs.add(cam_pair) + used_activities.add(act_pair) + selected.append(c) + + # Pass 3: medium connection (related activities) + for c in candidates: + if len(selected) >= count: + break + if c in selected: + continue + if c["connection_strength"] == "medium": + selected.append(c) + + # Pass 4: fill remaining from any candidates (score-sorted order) for c in candidates: if len(selected) >= count: break diff --git a/meva/scripts/v10/render_question_validation.py b/meva/scripts/v10/render_question_validation.py new file mode 100644 index 0000000..d532eb5 --- /dev/null +++ b/meva/scripts/v10/render_question_validation.py @@ -0,0 +1,414 @@ +#!/usr/bin/env python3 +""" +Render question validation videos: multi-camera grid with geom overlays. + +Creates a video showing all cameras in a question side-by-side/grid, with: +- Bounding boxes from geom.yml overlayed +- Time span limited to the answer frame range +- Camera labels and timestamps + +Usage: + python3 render_question_validation.py --qa-file qa.json --question-id 0 --output validated.mp4 + python3 render_question_validation.py --slot 2018-03-07.17-05.school --question-id 5 -v +""" + +import argparse +import json +import re +import cv2 +import numpy as np +from pathlib import Path +from collections import defaultdict +import subprocess +from tempfile import TemporaryDirectory +from typing import Dict, List, Optional, Tuple + +# Paths +MEVA_MP4_ROOT = Path("/nas/mars/dataset/MEVA/mp4s") +KITWARE_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware") +KITWARE_TRAINING_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware-meva-training") +QA_OUTPUT_DIR = Path("/home/ah66742/data/qa_pairs") +VIDEO_OUTPUT_DIR = Path("/home/ah66742/output/validation_videos") + +VIDEO_OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + +# Color constants +COLOR_BOX = (0, 255, 0) # Green +COLOR_TEXT = (255, 255, 255) # White +COLOR_BGND = (50, 50, 50) # Dark gray background + +# Geom parsing (copied from extract_entity_descriptions.py) +_RE_ID1 = re.compile(r"['\"]?id1['\"]?\s*:\s*['\"]?(\d+)") +_RE_TS0 = re.compile(r"['\"]?ts0['\"]?\s*:\s*['\"]?(\d+)") +_RE_G0 = re.compile(r"['\"]?g0['\"]?\s*:\s*['\"]?(\d+)\s+(\d+)\s+(\d+)\s+(\d+)") + + +def parse_geom_boxes(geom_file: Path) -> Dict[int, list]: + """Extract bounding boxes from geom.yml by frame number. + + Returns {frame_number: [(x1, y1, x2, y2, actor_id), ...]} + """ + boxes_by_frame = defaultdict(list) + if not geom_file.exists(): + return boxes_by_frame + + with open(geom_file) as f: + content = f.read() + + # Parse lines (each line is a geom entry) + for line in content.split('\n'): + line = line.strip() + if not line or line.startswith('#'): + continue + + # Extract matches from this line + match_id1 = _RE_ID1.search(line) + match_ts0 = _RE_TS0.search(line) + match_g0 = _RE_G0.search(line) + + if match_id1 and match_ts0 and match_g0: + actor_id = int(match_id1.group(1)) + frame = int(match_ts0.group(1)) + x1, y1, x2, y2 = map(int, match_g0.groups()) + boxes_by_frame[frame].append((x1, y1, x2, y2, actor_id)) + + return dict(boxes_by_frame) + + +def find_geom_file(date: str, hour: str, start_time: str, site: str, camera: str) -> Path: + """Find geom.yml file for a camera.""" + prefix = f"{date}.{start_time}" + for kitware_dir in [KITWARE_BASE, KITWARE_TRAINING_BASE]: + ann_dir = kitware_dir / date / hour + if not ann_dir.exists(): + continue + matches = list(ann_dir.glob(f"{prefix}*.{site}.{camera}.geom.yml")) + if matches: + return matches[0] + return None + + +def find_mp4(date: str, hour: str, start_time: str, site: str, end_time: str, camera: str) -> Path: + """Find MP4 file for a camera.""" + slot_dir = MEVA_MP4_ROOT / date / hour / f"{date}.{start_time}.{site}" + if not slot_dir.exists(): + return None + + # Try to find exact match or fuzzy match + pattern = f"{date}.{start_time}*.{end_time}*.{site}.{camera}*.r13.mp4" + matches = list(slot_dir.glob(pattern)) + if matches: + return matches[0] + return None + + +def extract_clip_timing(clip_file: str) -> tuple: + """Extract date, hour, start_time, end_time, site from clip filename.""" + # Format: 2018-03-07.17-05-00.17-10-00.school.G330.r13.mp4 + parts = clip_file.replace(".r13.mp4", "").split(".") + if len(parts) >= 5: + date = parts[0] + start_time = parts[1] + end_time = parts[2] + site = parts[3] + hour = start_time.split("-")[0] + return date, hour, start_time, end_time, site + return None + + +def load_video_frames(mp4_path: Path, frame_start: int, frame_end: int, target_w: int = 640, target_h: int = 360): + """Load video frames as numpy arrays, resized to target dimensions.""" + if not mp4_path.exists(): + return None, None + + cap = cv2.VideoCapture(str(mp4_path)) + if not cap.isOpened(): + return None, None + + fps = cap.get(cv2.CAP_PROP_FPS) or 30.0 + + frames = [] + cap.set(cv2.CAP_PROP_POS_FRAMES, frame_start) + for i in range(frame_end - frame_start + 1): + ret, frame = cap.read() + if not ret: + break + # Resize to target + frame = cv2.resize(frame, (target_w, target_h)) + frames.append(frame) + + cap.release() + return frames, fps + + +def overlay_boxes(frame: np.ndarray, boxes: list, actor_ids: list = None) -> np.ndarray: + """Draw bounding boxes on frame.""" + output = frame.copy() + for box in boxes: + x1, y1, x2, y2, actor_id = box + # Scale boxes to match resized frame (this is approximate — better to pass scale factor) + label = f"A{actor_id}" + cv2.rectangle(output, (int(x1), int(y1)), (int(x2), int(y2)), COLOR_BOX, 2) + cv2.putText(output, label, (int(x1), int(y1) - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, COLOR_TEXT, 1) + return output + + +def compose_grid(frames_dict: Dict[str, list], cameras: list, fps: float = 30) -> list: + """Compose multiple camera views into a grid layout. + + Returns list of composed frames (all cameras aligned by frame index). + """ + # Grid layout: 2x2 for 4 cameras, 1x2 for 2, etc. + n_cams = len(cameras) + if n_cams <= 2: + grid_h, grid_w = 1, n_cams + elif n_cams <= 4: + grid_h, grid_w = 2, 2 + elif n_cams <= 6: + grid_h, grid_w = 2, 3 + else: + grid_h, grid_w = 3, 3 + + # Frame dimensions + frame_h, frame_w = 360, 640 + comp_h = grid_h * frame_h + 30 * (grid_h + 1) # 30px padding + comp_w = grid_w * frame_w + 30 * (grid_w + 1) + + # Get the number of frames (min across all cameras) + n_frames = min(len(v) for v in frames_dict.values() if v) if frames_dict else 0 + + composed_frames = [] + for frame_idx in range(n_frames): + # Create blank canvas + canvas = np.ones((comp_h, comp_w, 3), dtype=np.uint8) * 50 + + for cam_idx, camera in enumerate(cameras): + if camera not in frames_dict or not frames_dict[camera]: + continue + + frame = frames_dict[camera][frame_idx] + grid_row = cam_idx // grid_w + grid_col = cam_idx % grid_w + + x = 30 + grid_col * (frame_w + 30) + y = 30 + grid_row * (frame_h + 30) + + # Place frame + canvas[y:y + frame_h, x:x + frame_w] = frame + + # Add camera label + label = f"{camera} [{frame_idx+1}/{n_frames}]" + cv2.putText(canvas, label, (x + 10, y + 25), cv2.FONT_HERSHEY_SIMPLEX, 0.6, COLOR_TEXT, 2) + + composed_frames.append(canvas) + + return composed_frames + + +def write_video(frames: list, output_path: Path, fps: float = 30) -> bool: + """Write frames to MP4 video file.""" + if not frames: + return False + + h, w = frames[0].shape[:2] + + # Use ffmpeg for better codec support + cmd = [ + 'ffmpeg', + '-f', 'rawvideo', + '-pix_fmt', 'bgr24', + '-s', f'{w}x{h}', + '-r', str(fps), + '-i', '-', + '-c:v', 'libx264', + '-crf', '23', + '-pix_fmt', 'yuv420p', + '-y', + str(output_path) + ] + + proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE) + for frame in frames: + proc.stdin.write(frame.tobytes()) + proc.stdin.close() + proc.wait() + + return output_path.exists() + + +def render_question(qa_data: dict, question_idx: int, output_path: Path = None): + """Render a single question into a validation video. + + Collects all events from debug_info and renders them in a single timeline grid. + """ + if question_idx >= len(qa_data["qa_pairs"]): + print(f"ERROR: Question index {question_idx} out of range (max {len(qa_data['qa_pairs']) - 1})") + return None + + q = qa_data["qa_pairs"][question_idx] + slot = qa_data["slot"] + cameras = q.get("requires_cameras", []) + + print(f"\n{'='*60}") + print(f"Rendering Q{question_idx}: {q['category'].upper()}") + print(f"Question: {q['question_template'][:80]}...") + print(f"Cameras: {cameras}") + print(f"{'='*60}") + + # Parse debug_info to extract events + debug = q.get("debug_info", {}) + if not debug: + print("ERROR: No debug_info in question") + return None + + # Collect events and their timing + events = {} + frame_ranges_by_camera = defaultdict(list) + timings_by_camera = {} + + for key, value in debug.items(): + if key in ["gap_sec", "connection_type", "connection_strength", "connection_score", + "relationship", "cluster_id", "mevid_validated", "mevid_person_id"]: + continue # Skip metadata keys + + if isinstance(value, dict) and "camera" in value: + camera = value["camera"] + frame_range = value.get("frame_range") + clip_file = value.get("clip_file") + fps = value.get("fps", 30.0) + + if frame_range and clip_file: + events[key] = value + frame_ranges_by_camera[camera].append((frame_range[0], frame_range[1], value.get("activity", key))) + timings_by_camera[camera] = (clip_file, fps) + + if not events: + print("ERROR: No events in debug_info") + return None + + # Compute overall frame range for each camera (covers all events for that camera) + frame_bounds = {} + for camera, ranges in frame_ranges_by_camera.items(): + if ranges: + min_frame = min(r[0] for r in ranges) + max_frame = max(r[1] for r in ranges) + frame_bounds[camera] = (min_frame, max_frame) + + print(f"Events: {len(events)} ({', '.join(events.keys())})") + for camera, frame_range in frame_bounds.items(): + frame_start, frame_end = frame_range + clip_file, fps = timings_by_camera[camera] + duration_sec = (frame_end - frame_start) / fps + print(f" {camera}: frames {frame_start}-{frame_end} ({duration_sec:.1f}s) from {Path(clip_file).name}") + + # Load frames for each camera + frames_dict = {} + geom_boxes_dict = {} + frame_offsets = {} # Map camera -> (date, hour, start_time, end_time, site, frame_offset) + + for camera in frame_bounds: + print(f" Loading {camera}...", end="", flush=True) + + clip_file, fps = timings_by_camera[camera] + timing = extract_clip_timing(clip_file) + if not timing: + print(f" [ERROR: Could not parse clip file: {clip_file}]") + continue + + date, hour, start_time, end_time, site = timing + frame_start, frame_end = frame_bounds[camera] + + # Find MP4 + mp4_path = find_mp4(date, hour, start_time, site, end_time, camera) + if not mp4_path: + print(f" [NOT FOUND]") + continue + + # Load frames + frames, vid_fps = load_video_frames(mp4_path, frame_start, frame_end) + if not frames: + print(" [FAILED TO LOAD]") + continue + + frames_dict[camera] = frames + frame_offsets[camera] = (date, hour, start_time, end_time, site, frame_start) + + # Load geom boxes + geom_file = find_geom_file(date, hour, start_time, site, camera) + if geom_file: + boxes_by_frame = parse_geom_boxes(geom_file) + geom_boxes_dict[camera] = boxes_by_frame + print(f" [OK: {len(frames)} frames, {len(boxes_by_frame)} geom frames]") + else: + print(f" [OK: {len(frames)} frames, no geom]") + + if not frames_dict: + print("ERROR: No frames loaded") + return None + + # Overlay geom boxes on frames + print(f" Overlaying geom boxes...") + for camera in frames_dict: + boxes_by_frame = geom_boxes_dict.get(camera, {}) + frame_offset = frame_offsets[camera][5] # frame_start offset + for frame_idx, frame in enumerate(frames_dict[camera]): + actual_frame_num = frame_offset + frame_idx + if actual_frame_num in boxes_by_frame: + frames_dict[camera][frame_idx] = overlay_boxes(frame, boxes_by_frame[actual_frame_num]) + + # Compose grid + print(f" Composing grid for {len(cameras)} cameras...") + composed = compose_grid(frames_dict, cameras, 30.0) + + # Write video + if not output_path: + output_path = VIDEO_OUTPUT_DIR / f"{slot}_q{question_idx}_{q['category']}.mp4" + + print(f" Writing to {output_path}...", end="", flush=True) + if write_video(composed, output_path, 30.0): + print(" [OK]") + return output_path + else: + print(" [FAILED]") + return None + + +def main(): + parser = argparse.ArgumentParser(description="Render question validation videos") + parser.add_argument("--slot", help="Slot name (e.g., 2018-03-07.17-05.school)") + parser.add_argument("--qa-file", help="QA JSON file path") + parser.add_argument("--question-id", type=int, help="Question index to render") + parser.add_argument("--output", "-o", help="Output video path") + parser.add_argument("-v", "--verbose", action="store_true") + args = parser.parse_args() + + # Load QA data + if args.qa_file: + qa_path = Path(args.qa_file) + elif args.slot: + qa_path = QA_OUTPUT_DIR / f"{args.slot}.final.raw.json" + else: + parser.error("Must provide --slot or --qa-file") + + if not qa_path.exists(): + print(f"ERROR: {qa_path} not found") + return + + with open(qa_path) as f: + qa_data = json.load(f) + + print(f"Loaded: {qa_path}") + print(f"Slot: {qa_data['slot']}") + print(f"Total questions: {qa_data.get('total_questions', len(qa_data['qa_pairs']))}") + + q_idx = args.question_id if args.question_id is not None else 0 + + output = render_question(qa_data, q_idx, Path(args.output) if args.output else None) + if output: + print(f"\nSaved: {output}") + if args.verbose: + print(f"Play with: ffplay {output}") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index 88ad1e6..1da5f64 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -62,7 +62,7 @@ # ============================================================================ OUTPUT_DIR = Path("/home/ah66742/data/qa_pairs") -MEVA_AVI_BASE = Path("/nas/mars/dataset/MEVA/avis") +MEVA_MP4_BASE = Path("/nas/mars/dataset/MEVA/mp4s") CANONICAL_SLOTS_PATH = Path("/home/ah66742/data/canonical_slots.json") RANDOM_SEED = 42 @@ -93,78 +93,86 @@ def fix_articles(text: str) -> str: # ============================================================================ def _build_video_paths(q: dict, slot: str) -> List[str]: - """Build absolute AVI paths for each camera in a QA pair. + """Build absolute MP4 paths for each camera in a QA pair. - Derives from slot name + debug_info clip files: - slot = "2018-03-11.11-25-00.school" - clip = "2018-03-11.11-25-00.11-30-00.school.G330.mp4" - → /nas/mars/dataset/MEVA/avis/2018-03-11/11/2018-03-11.11-25-00.11-30-00.school.G330.r13.avi + Uses slot-grouped MP4 directory structure: + slot = "2018-03-11.11-25.school" + clip_file = "2018-03-11.11-25-00.11-30-00.school.G330.r13.mp4" + → /nas/mars/dataset/MEVA/mp4s/2018-03-11/11/2018-03-11.11-25.school/ + 2018-03-11.11-25-00.11-30-00.school.G330.r13.mp4 """ date = slot.split(".")[0] # "2018-03-11" hour = slot.split(".")[1].split("-")[0] # "11" + slot_dir = MEVA_MP4_BASE / date / hour / slot paths = [] - seen_clips = set() + seen = set() def _add_clip(clip: str): - """Helper to add a clip file to paths (deduped).""" - if not clip or clip in seen_clips: + """Normalize a clip filename and add its MP4 path (deduped).""" + if not clip or clip in seen: return - seen_clips.add(clip) - stem = clip.replace(".mp4", "").replace(".avi", "") - avi_path = str(MEVA_AVI_BASE / date / hour / f"{stem}.r13.avi") - paths.append(avi_path) + seen.add(clip) + # Normalize: strip any extension, ensure single .r13.mp4 + stem = clip + for ext in (".mp4", ".avi"): + if stem.endswith(ext): + stem = stem[:-len(ext)] + # Strip trailing .r13 if present (avoid double .r13) + if stem.endswith(".r13"): + stem = stem[:-4] + mp4_name = f"{stem}.r13.mp4" + mp4_path = str(slot_dir / mp4_name) + if mp4_path not in paths: + paths.append(mp4_path) # Collect clip files from debug_info debug = q.get("debug_info", {}) - # 1. temporal: event_a, event_b (dict with clip_file) + # 1. Direct clip_files list (counting, best_camera, summarization, spatial) + for cf in debug.get("clip_files", []): + _add_clip(cf) + + # 2. temporal: event_a, event_b (dict with clip_file) for key in ["event_a", "event_b"]: info = debug.get(key, {}) - if isinstance(info, dict): - _add_clip(info.get("clip_file", "")) + if isinstance(info, dict) and info.get("clip_file"): + _add_clip(info["clip_file"]) - # 2. perception / best_camera: representative_event (dict with clip_file) + # 3. perception / best_camera: representative_event (dict with clip_file) rep = debug.get("representative_event", {}) - if isinstance(rep, dict): - _add_clip(rep.get("clip_file", "")) + if isinstance(rep, dict) and rep.get("clip_file"): + _add_clip(rep["clip_file"]) - # 3. perception multi-cam: camera_1_event, camera_2_event, etc. + # 4. perception multi-cam: camera_1_event, camera_2_event, etc. for key in debug: if key.startswith("camera_") and key.endswith("_event"): info = debug[key] - if isinstance(info, dict): - _add_clip(info.get("clip_file", "")) + if isinstance(info, dict) and info.get("clip_file"): + _add_clip(info["clip_file"]) - # 4. event_ordering: events (list of dicts with clip_file) + # 5. event_ordering: events (list of dicts with clip_file) events_list = debug.get("events", []) if isinstance(events_list, list): for ev in events_list: - if isinstance(ev, dict): - _add_clip(ev.get("clip_file", "")) + if isinstance(ev, dict) and ev.get("clip_file"): + _add_clip(ev["clip_file"]) - # 5. Legacy: ordered_events - for key in ["ordered_events"]: + # 6. Spatial: entity_a, entity_b (dict with clip_file) + for key in ["entity_a", "entity_b"]: info = debug.get(key, {}) - if isinstance(info, list): - for ev in info: - if isinstance(ev, dict): - _add_clip(ev.get("clip_file", "")) - elif isinstance(info, dict): - _add_clip(info.get("clip_file", "")) - - # Fallback: construct from requires_cameras + if isinstance(info, dict) and info.get("clip_file"): + _add_clip(info["clip_file"]) + + # Fallback: match only this slot's cameras in the slot directory if not paths: cameras = q.get("requires_cameras", []) - for cam in cameras: - avi_dir = MEVA_AVI_BASE / date / hour - if avi_dir.exists(): - import glob - pattern = str(avi_dir / f"*{cam}.r13.avi") - matches = sorted(glob.glob(pattern)) - for m in matches: - if m not in paths: - paths.append(m) + if slot_dir.exists() and cameras: + for cam in cameras: + for f in sorted(slot_dir.glob(f"*{cam}*.r13.mp4")): + p = str(f) + if p not in paths: + paths.append(p) return sorted(set(paths)) From 21e9c808cacffde357c495d0609008b49865cf10 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Wed, 25 Feb 2026 15:20:37 -0600 Subject: [PATCH 03/26] Changes Naturalize pipeline overhaul (Session 56): - Refactored naturalize.py (removed two-pass mode, -292 LOC) * Deleted _naturalize_two_pass(), _grammar_check_one() functions * Deleted SYSTEM_PROMPT_NATURALIZE, GRAMMAR_CHECKER_PROMPT * Deleted --two-pass CLI argument and dual temperature constants * Simplified _naturalize_question() with labeled plaintext input format * Consolidated _short_activity_label() from 25 to 3 lines * Removed redundant article-agreement fixes, delegated to GPT - Applied HoE feedback: * Kept JSON output via response_format=json_object (safer than plaintext splitting) * Added 4 explicit DO NOT constraints to prevent semantic drift * Lowered temperature from 0.4 to 0.3 for naturalization stability Critical bug fix (person_descriptions.py): - Fixed MEVID slot format mismatch (HH-MM vs HH-MM-SS) * Added _resolve_all_mevid_slots() and _resolve_mevid_slot() to bridge formats * Updated is_mevid_supported(), get_mevid_persons_for_slot(), get_mevid_persons_with_cameras() to merge across raw slot variants * MEVID lookup now works with both canonical (HH-MM) and raw (HH-MM-SS) formats Test run (2018-03-07.11-00.school): - Generated 12 questions (2 temporal, 2 perception, 3 spatial, 1 summarization, 1 counting, 3 best_camera) - Naturalized 12/12 (0 failures, 10,572 tokens, temp=0.3) - Rendered 12 validation videos (16.6 MB) - 27 MEVID entities resolved, cross-validated across 11 cameras Other updates in v10 scripts: - render_question_validation.py: major enhancements - generate_temporal.py: additional event selection logic - generate_spatial.py, generate_numerical.py: refinements - Added review_qa.py for QA visualization Fixed natrualization prompt --- meva/scripts/v10/activity_hierarchy.py | 9 + meva/scripts/v10/build_scene_graph.py | 16 +- .../v10/extract_entity_descriptions.py | 4 +- meva/scripts/v10/generate_best_camera.py | 2 + meva/scripts/v10/generate_event_ordering.py | 7 +- meva/scripts/v10/generate_numerical.py | 106 +- meva/scripts/v10/generate_spatial.py | 25 +- meva/scripts/v10/generate_temporal.py | 42 + .../{naturalize_v8_qa_v2.py => naturalize.py} | 639 +++++----- meva/scripts/v10/naturalize_v8_qa_v3.py | 523 -------- meva/scripts/v10/person_descriptions.py | 73 +- .../scripts/v10/render_question_validation.py | 1108 ++++++++++++----- .../v10/render_question_validation.py.bak | 678 ++++++++++ meva/scripts/v10/review_qa.py | 454 +++++++ meva/scripts/v10/run_pipeline.py | 47 +- 15 files changed, 2434 insertions(+), 1299 deletions(-) rename meva/scripts/v10/{naturalize_v8_qa_v2.py => naturalize.py} (61%) delete mode 100644 meva/scripts/v10/naturalize_v8_qa_v3.py create mode 100644 meva/scripts/v10/render_question_validation.py.bak create mode 100644 meva/scripts/v10/review_qa.py diff --git a/meva/scripts/v10/activity_hierarchy.py b/meva/scripts/v10/activity_hierarchy.py index aa0b3a3..22a5626 100644 --- a/meva/scripts/v10/activity_hierarchy.py +++ b/meva/scripts/v10/activity_hierarchy.py @@ -149,6 +149,15 @@ def get_activity_entity_type(activity: str) -> str: def humanize_activity(activity: str) -> str: """Convert activity name to short human-readable form.""" + # Special-case enter/exit scene to clarify MEVA camera-view semantics + _SPECIAL = { + "person_enters_scene_through_structure": + "enters the camera's view through a doorway", + "person_exits_scene_through_structure": + "leaves the camera's view through a doorway", + } + if activity in _SPECIAL: + return _SPECIAL[activity] # Remove entity prefix and replace underscores with spaces for prefix in ("person_", "vehicle_", "hand_"): if activity.startswith(prefix): diff --git a/meva/scripts/v10/build_scene_graph.py b/meva/scripts/v10/build_scene_graph.py index f605caf..3c11e72 100644 --- a/meva/scripts/v10/build_scene_graph.py +++ b/meva/scripts/v10/build_scene_graph.py @@ -18,6 +18,9 @@ from .activity_hierarchy import humanize_activity +# 2% of 1920×1080 = 2,073,600 × 0.02 ≈ 41,472 px² (~200×208 px minimum) +MIN_BBOX_AREA = 41472 + # ============================================================================ # Data Structures # ============================================================================ @@ -223,7 +226,7 @@ def build_scene_graph(slot: str, events: List[Event], else: first_frame, last_frame = 0, 0 - entities[entity_id] = Entity( + entity = Entity( entity_id=entity_id, camera_id=cam_id, actor_id=aid, @@ -236,6 +239,17 @@ def build_scene_graph(slot: str, events: List[Event], events=entity_events.get(cam_id, {}).get(aid, []), ) + # Filter out entities whose bounding boxes are too small + if entity.keyframe_bboxes: + areas = [(bb[2]-bb[0]) * (bb[3]-bb[1]) for bb in entity.keyframe_bboxes.values()] + median_area = sorted(areas)[len(areas)//2] + if median_area < MIN_BBOX_AREA: + if verbose: + print(f" Skipping {entity_id}: median bbox area {median_area} < {MIN_BBOX_AREA}") + continue + + entities[entity_id] = entity + # Group events by camera events_by_camera: Dict[str, List[Event]] = defaultdict(list) for evt in events: diff --git a/meva/scripts/v10/extract_entity_descriptions.py b/meva/scripts/v10/extract_entity_descriptions.py index 3eea610..b0df94d 100644 --- a/meva/scripts/v10/extract_entity_descriptions.py +++ b/meva/scripts/v10/extract_entity_descriptions.py @@ -50,8 +50,8 @@ # ============================================================================ CROPS_PER_ACTOR = 5 # Crops to extract per actor track -MIN_BBOX_HEIGHT = 25 # Min bbox height in pixels for usable crop -MIN_BBOX_WIDTH = 10 # Min bbox width +MIN_BBOX_HEIGHT = 144 # Min bbox height in pixels for usable crop (~consistent with 2% area filter) +MIN_BBOX_WIDTH = 144 # Min bbox width (~consistent with 2% area filter) YOLO_CONF = 0.25 # YOLO detection confidence threshold YOLO_MODEL = "yolov8n.pt" # Nano model (fast, sufficient for crops) diff --git a/meva/scripts/v10/generate_best_camera.py b/meva/scripts/v10/generate_best_camera.py index 4dc998e..b7f8661 100644 --- a/meva/scripts/v10/generate_best_camera.py +++ b/meva/scripts/v10/generate_best_camera.py @@ -252,6 +252,7 @@ def generate_best_camera_qa(sg: SceneGraph, resolved: ResolvedGraph, "subcategory": "first_entrance", "question_template": question_template, "options": options, + "correct_answer": options[correct_idx], "correct_answer_index": correct_idx, "requires_cameras": sorted_cams + [c for c in all_cameras if c not in sorted_cams], "difficulty": "medium" if len(sorted_cams) >= 3 else "easy", @@ -318,6 +319,7 @@ def generate_best_camera_qa(sg: SceneGraph, resolved: ResolvedGraph, "subcategory": "last_entrance", "question_template": question_template, "options": options, + "correct_answer": options[correct_idx], "correct_answer_index": correct_idx, "requires_cameras": sorted_cams + [c for c in all_cameras if c not in sorted_cams], "difficulty": "hard", diff --git a/meva/scripts/v10/generate_event_ordering.py b/meva/scripts/v10/generate_event_ordering.py index 7b2b3ef..40a2846 100644 --- a/meva/scripts/v10/generate_event_ordering.py +++ b/meva/scripts/v10/generate_event_ordering.py @@ -31,7 +31,8 @@ # Constants # ============================================================================ -MIN_GAP_SEC = 3.0 # Minimum gap between consecutive events (unambiguous) +MIN_GAP_SEC = 2.0 # Minimum gap between consecutive events (unambiguous) +MAX_GAP_SEC = 10.0 # Maximum gap — events must be close enough to be related DEFAULT_FPS = 30.0 MIN_EVENTS = 3 # Minimum events per ordering question MAX_EVENTS = 4 # Maximum events per ordering question @@ -205,10 +206,12 @@ def _find_ordering_groups(events: List[Event], sg: SceneGraph, candidate = unique_events[next_idx] last = chain[-1] - # Must have clear temporal gap + # Must have clear temporal gap (2-10 seconds) gap = candidate.start_sec - last.end_sec if gap < MIN_GAP_SEC: continue + if gap > MAX_GAP_SEC: + continue # Prefer cross-camera: skip same-camera if we already have # an event on that camera AND we haven't reached min cameras diff --git a/meva/scripts/v10/generate_numerical.py b/meva/scripts/v10/generate_numerical.py index 88c2c43..210f333 100644 --- a/meva/scripts/v10/generate_numerical.py +++ b/meva/scripts/v10/generate_numerical.py @@ -1,13 +1,12 @@ """ FINAL generate_numerical.py — Numerical/counting questions across cameras. -Tests a model's ability to count activities or entities from a -multi-camera scene. Two counting subtypes: +Tests a model's ability to count activities from a multi-camera scene. -1. **activity_counting**: "How many times does [activity] occur across all cameras?" - → Count event instances of that activity type from sg.events. -2. **entity_counting**: "How many distinct people are visible across all cameras?" - → Count unique entity clusters from the resolved graph. +**activity_counting**: "How many times does [activity] occur across all cameras?" + → Count event instances of that activity type from sg.events, with + cross-camera temporal deduplication (events of the same activity on + different cameras within ±2 seconds are counted as one instance). Distractors are generated arithmetically (±1, ±2, ×2) so that wrong answers are plausible. All options are stringified integers > 0, sorted numerically. @@ -91,20 +90,49 @@ def _build_options(correct: int, rng: random.Random) -> Tuple[List[str], int]: # Candidate Builders # ============================================================================ +def _dedup_activity_count(events_for_activity: list) -> Tuple[int, List[str]]: + """Count distinct instances of an activity with cross-camera temporal dedup. + + Events on DIFFERENT cameras whose start_sec is within ±2 seconds are + merged into a single cluster (counted as one occurrence). Events on + the SAME camera are always counted separately. + + Returns (deduped_count, list_of_event_ids). + """ + sorted_evts = sorted(events_for_activity, key=lambda e: e.start_sec) + clusters: List[list] = [] + for evt in sorted_evts: + merged = False + for cluster in clusters: + for c_evt in cluster: + if evt.camera_id != c_evt.camera_id and abs(evt.start_sec - c_evt.start_sec) <= 2.0: + cluster.append(evt) + merged = True + break + if merged: + break + if not merged: + clusters.append([evt]) + all_ids = [e.event_id for e in sorted_evts] + return len(clusters), all_ids + + def _activity_counting_candidates(sg: SceneGraph) -> List[Dict]: """ - For each activity type, count total event instances across all cameras. + For each activity type, count event instances across all cameras + with cross-camera temporal deduplication (±2 s). """ - activity_counts: Dict[str, int] = Counter(e.activity for e in sg.events) + # Group events by activity + activity_groups: Dict[str, list] = defaultdict(list) activity_cameras: Dict[str, Set[str]] = defaultdict(set) - activity_events: Dict[str, List[str]] = defaultdict(list) for e in sg.events: + activity_groups[e.activity].append(e) activity_cameras[e.activity].add(e.camera_id) - activity_events[e.activity].append(e.event_id) candidates = [] - for act, cnt in activity_counts.items(): + for act, evts in activity_groups.items(): + cnt, event_ids = _dedup_activity_count(evts) if cnt < MIN_COUNT or cnt > MAX_COUNT: continue candidates.append({ @@ -112,49 +140,12 @@ def _activity_counting_candidates(sg: SceneGraph) -> List[Dict]: "activity": act, "correct_count": cnt, "cameras_involved": sorted(activity_cameras[act]), - "event_ids": activity_events[act], + "event_ids": event_ids, "cross_camera": len(activity_cameras[act]) >= 2, }) return candidates -def _entity_counting_candidates( - sg: SceneGraph, resolved: ResolvedGraph -) -> List[Dict]: - """ - Count distinct entity clusters (unique people/entities) across all cameras. - """ - # Person clusters only (most natural counting question) - person_clusters = [] - for cluster in resolved.entity_clusters: - # Check if cluster contains at least one person entity - for eid in cluster.entities: - ent = sg.entities.get(eid) - if ent and ent.entity_type == "person": - person_clusters.append(cluster) - break - - cnt = len(person_clusters) - if cnt < MIN_COUNT or cnt > MAX_COUNT: - return [] - - all_cameras: Set[str] = set() - cluster_ids = [] - for cl in person_clusters: - cluster_ids.append(cl.cluster_id) - for cam in cl.cameras: - all_cameras.add(cam) - - return [{ - "subtype": "entity_counting", - "activity": None, - "correct_count": cnt, - "cameras_involved": sorted(all_cameras), - "event_ids": [], - "cluster_ids": cluster_ids, - "cross_camera": len(all_cameras) >= 2, - }] - # ============================================================================ # Candidate Scoring @@ -184,11 +175,8 @@ def _score_candidate(cand: Dict) -> float: if cand["cross_camera"]: score += 2.0 - # Subtype preference: entity counting is most "scene-level" - if cand["subtype"] == "entity_counting": - score += 1.0 - elif cand["subtype"] == "activity_counting": - score += 0.5 + # Subtype: activity_counting is the only subtype + score += 0.5 return score @@ -209,11 +197,6 @@ def _make_question_text(cand: Dict) -> str: f"{act_lower} across all cameras in this slot?" ) - if subtype == "entity_counting": - return ( - "How many distinct people are visible across all cameras in this slot?" - ) - return "How many?" @@ -269,7 +252,6 @@ def generate_numerical_qa( # ------------------------------------------------------------------ all_candidates: List[Dict] = [] all_candidates.extend(_activity_counting_candidates(sg)) - all_candidates.extend(_entity_counting_candidates(sg, resolved)) if not all_candidates: if verbose: @@ -284,9 +266,7 @@ def generate_numerical_qa( all_candidates.sort(key=lambda c: c["_score"], reverse=True) if verbose: - print(f" Numerical: {len(all_candidates)} candidates " - f"(act={sum(1 for c in all_candidates if c['subtype'] == 'activity_counting')}, " - f"ent={sum(1 for c in all_candidates if c['subtype'] == 'entity_counting')})") + print(f" Numerical: {len(all_candidates)} activity_counting candidates") # ------------------------------------------------------------------ # 3. Diversified selection: no two Qs with same subtype or same activity diff --git a/meva/scripts/v10/generate_spatial.py b/meva/scripts/v10/generate_spatial.py index 85e9ab7..a29d9e7 100644 --- a/meva/scripts/v10/generate_spatial.py +++ b/meva/scripts/v10/generate_spatial.py @@ -100,6 +100,11 @@ def _find_spatial_candidates(sg: SceneGraph, verbose: bool = False) -> List[Dict pos_a = entity_positions[eid_a] pos_b = entity_positions[eid_b] + # Same-camera only: both entities must be on the same camera + # so the spatial relationship is visually verifiable in one frame + if pos_a["camera_id"] != pos_b["camera_id"]: + continue + distance = float(np.linalg.norm(pos_a["position"] - pos_b["position"])) if distance > 500: @@ -200,22 +205,16 @@ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, proximity = cand["proximity"] distance = cand["distance_m"] - is_cross_camera = cand["camera_a"] != cand["camera_b"] + # All spatial questions are same-camera (filtered in _find_spatial_candidates) # V8: Use MEVID descriptions desc_a = entity_descs.get(cand["entity_a"], f"a person on camera {cand['camera_a']}") desc_b = entity_descs.get(cand["entity_b"], f"a person on camera {cand['camera_b']}") - if is_cross_camera: - question = ( - f"In the scene, how far apart are {desc_a} on camera {cand['camera_a']} " - f"and {desc_b} on camera {cand['camera_b']}?" - ) - else: - question = ( - f"How close are {desc_a} and {desc_b} " - f"in the scene visible on camera {cand['camera_a']}?" - ) + question = ( + f"How close are {desc_a} and {desc_b} " + f"in the scene visible on camera {cand['camera_a']}?" + ) options = [ "They are near each other (within a few meters)", @@ -280,8 +279,8 @@ def _entity_clip_file(entity_id): "options": options, "correct_answer_index": correct_idx, "correct_answer": options[correct_idx], - "requires_cameras": sorted(set([cand["camera_a"], cand["camera_b"]])), - "requires_multi_camera": is_cross_camera, + "requires_cameras": [cand["camera_a"]], + "requires_multi_camera": False, "verification": { "entity_a": cand["entity_a"], "entity_b": cand["entity_b"], diff --git a/meva/scripts/v10/generate_temporal.py b/meva/scripts/v10/generate_temporal.py index a0435f4..21ef792 100644 --- a/meva/scripts/v10/generate_temporal.py +++ b/meva/scripts/v10/generate_temporal.py @@ -297,6 +297,8 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, # Diversify selection: strong > medium > weak, MEVID-validated preferred used_pairs = set() used_activities = set() + used_event_ids: Set[str] = set() # No event reuse across questions + used_activity_names: Set[str] = set() # No activity string reuse across questions selected = [] # Pass 1: strong connection + MEVID-validated (best quality) @@ -304,12 +306,22 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, if len(selected) >= count: break if c["connection_strength"] == "strong" and c["mevid_validated"]: + ea_id = c["event_a"].event_id + eb_id = c["event_b"].event_id + if ea_id in used_event_ids or eb_id in used_event_ids: + continue + if c["event_a"].activity in used_activity_names or c["event_b"].activity in used_activity_names: + continue cam_pair = (c["event_a"].camera_id, c["event_b"].camera_id) act_pair = (c["event_a"].activity, c["event_b"].activity) if cam_pair not in used_pairs or act_pair not in used_activities: used_pairs.add(cam_pair) used_activities.add(act_pair) selected.append(c) + used_event_ids.add(ea_id) + used_event_ids.add(eb_id) + used_activity_names.add(c["event_a"].activity) + used_activity_names.add(c["event_b"].activity) # Pass 2: strong connection (entity cluster linked) for c in candidates: @@ -318,12 +330,22 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, if c in selected: continue if c["connection_strength"] == "strong": + ea_id = c["event_a"].event_id + eb_id = c["event_b"].event_id + if ea_id in used_event_ids or eb_id in used_event_ids: + continue + if c["event_a"].activity in used_activity_names or c["event_b"].activity in used_activity_names: + continue cam_pair = (c["event_a"].camera_id, c["event_b"].camera_id) act_pair = (c["event_a"].activity, c["event_b"].activity) if cam_pair not in used_pairs or act_pair not in used_activities: used_pairs.add(cam_pair) used_activities.add(act_pair) selected.append(c) + used_event_ids.add(ea_id) + used_event_ids.add(eb_id) + used_activity_names.add(c["event_a"].activity) + used_activity_names.add(c["event_b"].activity) # Pass 3: medium connection (related activities) for c in candidates: @@ -331,15 +353,35 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, break if c in selected: continue + ea_id = c["event_a"].event_id + eb_id = c["event_b"].event_id + if ea_id in used_event_ids or eb_id in used_event_ids: + continue + if c["event_a"].activity in used_activity_names or c["event_b"].activity in used_activity_names: + continue if c["connection_strength"] == "medium": selected.append(c) + used_event_ids.add(ea_id) + used_event_ids.add(eb_id) + used_activity_names.add(c["event_a"].activity) + used_activity_names.add(c["event_b"].activity) # Pass 4: fill remaining from any candidates (score-sorted order) for c in candidates: if len(selected) >= count: break if c not in selected: + ea_id = c["event_a"].event_id + eb_id = c["event_b"].event_id + if ea_id in used_event_ids or eb_id in used_event_ids: + continue + if c["event_a"].activity in used_activity_names or c["event_b"].activity in used_activity_names: + continue selected.append(c) + used_event_ids.add(ea_id) + used_event_ids.add(eb_id) + used_activity_names.add(c["event_a"].activity) + used_activity_names.add(c["event_b"].activity) # Generate QA pairs qa_pairs = [] diff --git a/meva/scripts/v10/naturalize_v8_qa_v2.py b/meva/scripts/v10/naturalize.py similarity index 61% rename from meva/scripts/v10/naturalize_v8_qa_v2.py rename to meva/scripts/v10/naturalize.py index 49b6f42..b95ffa2 100644 --- a/meva/scripts/v10/naturalize_v8_qa_v2.py +++ b/meva/scripts/v10/naturalize.py @@ -1,35 +1,34 @@ #!/usr/bin/env python3 """ -V8 Naturalization V2 — Pre-processes and naturalizes V8 template QA pairs. - -Key improvements over V1: -1. Pre-processing layer (FREE, no API call): - - Description simplification: "blue upper body garment" → "blue top" - - Camera reference removal from temporal/spatial question text - - Temporal anchors for disambiguation ("about 6 seconds in") - - Activity de-duplication ("enters scene enters scene" → "enters scene") - - Grammar fixes: capitalization, mid-sentence periods - - Event descriptions reconstructed from structured verification data - -2. Updated GPT prompts (optional GPT naturalization): - - Better few-shot examples reflecting cleaned templates - - Category-specific format guidance - - Post-processing validation - -3. Three modes: - --preprocess-only: Just pre-process templates (free, instant) - --dry-run: Show what would be sent to GPT - (default): Pre-process + GPT naturalization +Naturalize — Pre-processes and naturalizes template QA pairs via GPT. + +Clean 3-stage architecture: + Stage 1 — Structural pre-processing (Python, FREE): + - Reconstruct questions from structured verification data + - Description simplification: "blue upper body garment" -> "blue top" + - Camera reference removal from temporal/spatial question text + - MEVA ontology vocabulary normalization + - NO grammar fixes — all language rewriting delegated to GPT + + Stage 2 — Language rewrite (GPT, 1 API call per question): + - Receives plain text question + context (never raw JSON) + - Handles ALL grammar, phrasing, style variation, article agreement + - Returns rewritten question + reasoning sentence + - Options are frozen (never sent to GPT for rewriting) + + Stage 3 — JSON assembly (Python): + - Inserts GPT's returned text back into QA structure + - Saves output file + GPT log + +Modes: + --preprocess-only: Just run Stage 1 (free, instant) + --dry-run: Show what would be sent to GPT + (default): Full pipeline (Stage 1 + 2 + 3) Usage: - # Pre-process only (free): - python3 scripts/v8/naturalize_v8_qa_v2.py --input data/qa_pairs/SLOT.v8.json --preprocess-only - - # Full pipeline (pre-process + GPT): - python3 scripts/v8/naturalize_v8_qa_v2.py --input data/qa_pairs/SLOT.v8.json - - # Dry-run: - python3 scripts/v8/naturalize_v8_qa_v2.py --input data/qa_pairs/SLOT.v8.json --dry-run + python3 -m meva.scripts.v10.naturalize --input data/qa_pairs/SLOT.final.raw.json + python3 -m meva.scripts.v10.naturalize --input data/qa_pairs/SLOT.final.raw.json --preprocess-only + python3 -m meva.scripts.v10.naturalize --input data/qa_pairs/SLOT.final.raw.json --dry-run """ import json @@ -49,14 +48,14 @@ LOG_DIR = Path("/home/ah66742/data/gpt_logs") DEFAULT_MODEL = "gpt-4o-mini" -DEFAULT_TEMPERATURE = 0.7 +DEFAULT_TEMPERATURE = 0.3 # Low: naturalize only, no creative drift MAX_RETRIES = 3 RETRY_DELAY = 2.0 CLIP_DURATION = 300.0 # 5-minute clips # ============================================================================ -# Description Simplification (standalone, mirrors person_descriptions.py) +# Description Simplification # ============================================================================ # Garment type simplifications @@ -98,7 +97,7 @@ def simplify_description(desc: str) -> str: "wearing a blue upper body garment and blue lower body clothing, with a black hoodie featuring a graphic design on the back." - → + -> "wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back" """ @@ -126,7 +125,7 @@ def simplify_description(desc: str) -> str: # ============================================================================ -# Activity Humanization (standalone, mirrors activity_hierarchy.py) +# Activity Humanization # ============================================================================ _GERUND_MAP = { @@ -150,7 +149,7 @@ def simplify_description(desc: str) -> str: def _humanize_activity(activity: str) -> str: - """person_opens_facility_door → opens facility door""" + """person_opens_facility_door -> opens facility door""" for prefix in ("person_", "vehicle_", "hand_"): if activity.startswith(prefix): activity = activity[len(prefix):] @@ -159,7 +158,7 @@ def _humanize_activity(activity: str) -> str: def _humanize_gerund(activity: str) -> str: - """person_opens_facility_door → Opening a facility door""" + """person_opens_facility_door -> Opening a facility door""" base = _humanize_activity(activity) words = base.split() if not words: @@ -189,8 +188,30 @@ def _humanize_gerund(activity: str) -> str: def _short_activity_label(activity: str) -> str: - """Short gerund label for options: person_opens_facility_door → opening a facility door""" - return _humanize_gerund(activity).lower() + """Short gerund label: person_opens_facility_door -> opening a facility door""" + result = _humanize_gerund(activity) + return result[0].lower() + result[1:] if result else result + + +# ============================================================================ +# Ontology Rewrites (module-level, used by preprocess_all) +# ============================================================================ + +_ONTOLOGY_REWRITES = [ + (re.compile(r'(enter(?:s|ing))(?: a)? scene through structure', re.IGNORECASE), + lambda m: m.group(1) + " the camera's view through a doorway/gate"), + (re.compile(r'(exit(?:s|ing)|leav(?:es|ing))(?: a)? scene through structure', re.IGNORECASE), + lambda m: ('leaving' if m.group(1).lower().startswith(('exit', 'leav')) and m.group(1)[0].islower() + else 'Leaving' if m.group(1)[0].isupper() + else m.group(1)) + " the camera's view through a doorway/gate"), +] + + +def _apply_ontology_rewrites(text: str) -> str: + """Apply MEVA ontology clarifications via case-insensitive regex.""" + for pattern, repl in _ONTOLOGY_REWRITES: + text = pattern.sub(repl, text) + return text # ============================================================================ @@ -207,8 +228,6 @@ def _temporal_anchor(sec: float, clip_duration: float = CLIP_DURATION) -> str: return f"roughly {int(round(sec))} seconds in" elif sec < 120: return f"around the {int(round(sec))}-second mark" - elif sec < 180: - return f"around {int(round(sec / 10)) * 10} seconds in" elif sec < 250: return f"around {int(round(sec / 10)) * 10} seconds in" else: @@ -262,8 +281,6 @@ def _extract_person_desc(entity_description: str, activity: str = "") -> str: return "a person" # Remove embedded activity text after the description - # Pattern: description ends with period, then activity follows - # e.g. "...backpack. enters scene through structure on camera G421" activity_verbs = { "enters", "exits", "opens", "closes", "picks", "puts", "carries", "talks", "sits", "stands", "reads", "texts", "interacts", "embraces", @@ -292,7 +309,7 @@ def _extract_person_desc(entity_description: str, activity: str = "") -> str: # Simplify garment terminology and strip clutter desc = simplify_description(desc) - # Normalize prefix: "the person" → "a person" + # Normalize prefix: "the person" -> "a person" for prefix in ["The person ", "the person "]: if desc.startswith(prefix): desc = "a person " + desc[len(prefix):] @@ -309,16 +326,16 @@ def _extract_person_desc(entity_description: str, activity: str = "") -> str: # Per-Category Pre-processing # ============================================================================ -def _preprocess_temporal(qa: Dict, strip_camera_refs: bool = False) -> Dict: +def _preprocess_temporal(qa: Dict, strip_camera_refs: bool = True) -> Dict: """ Reconstruct temporal question from structured verification data. Fixes: camera refs in question, description verbosity, activity doubling, temporal ambiguity (adds timestamp anchors), capitalization. - If strip_camera_refs=True (V3 mode), camera IDs are removed from the question - text — person descriptions (clothing colors, carried objects) serve as the - primary disambiguator instead. Camera refs are still kept in answer options. + Camera IDs are removed from the question text by default — person + descriptions (clothing colors, carried objects) serve as the primary + disambiguator instead. Camera refs are still kept in answer options. """ result = {k: v for k, v in qa.items()} v = qa.get("verification", {}) @@ -348,8 +365,6 @@ def _preprocess_temporal(qa: Dict, strip_camera_refs: bool = False) -> Dict: cam_b = ev_b.get("camera", db_.get("camera", "")) # Build clean event descriptions - # V3 mode: strip camera refs from question text (person descriptions disambiguate) - # V2 mode: keep camera refs in question text include_cam = not strip_camera_refs def _fmt_event(desc, act, cam, with_camera=True): @@ -369,11 +384,9 @@ def _fmt_event(desc, act, cam, with_camera=True): # Determine mention order (preserve original answer randomization) ci = qa["correct_answer_index"] if ci == 0: - # Event A mentioned first AND occurred first → option 0 correct desc_1, desc_2 = clean_a, clean_b ev_1, ev_2 = ev_a, ev_b else: - # Event B mentioned first but Event A occurred first → option 1 correct desc_1, desc_2 = clean_b, clean_a ev_1, ev_2 = ev_b, ev_a @@ -384,27 +397,17 @@ def _fmt_event(desc, act, cam, with_camera=True): f"Which event occurred first?" ) - # Build options using camera + activity labels - act_1 = _humanize_gerund(ev_1.get("activity", "event")) - act_2 = _humanize_gerund(ev_2.get("activity", "event")) - cam_1 = ev_1.get("camera", "") - cam_2 = ev_2.get("camera", "") - - # Use person descriptions to disambiguate events (no camera IDs in options) - # desc_1 / desc_2 are person appearance descriptions + activity + # Build options using person descriptions (no camera IDs in options) def _option_label(desc, act): - """Build a concise option label from event description.""" d = desc.strip().rstrip('.') if d.startswith("A "): d = "The " + d[2:] elif d.startswith("a "): d = "The " + d[2:] - elif d.startswith("Someone "): - d = d # keep as-is return d - opt_1 = _option_label(desc_1, act_1) - opt_2 = _option_label(desc_2, act_2) + opt_1 = _option_label(desc_1, None) + opt_2 = _option_label(desc_2, None) options = [ f"{opt_1} occurred first", @@ -413,10 +416,7 @@ def _option_label(desc, act): "Cannot be determined", ] - # Fix article agreement (a → an before vowels) - question = re.sub(r'\ba ([aeiouAEIOU])', r'an \1', question) - options = [re.sub(r'\ba ([aeiouAEIOU])', r'an \1', o) for o in options] - + # Article agreement is applied globally in preprocess_all; skip here result["question_template"] = question result["options"] = options result["correct_answer"] = options[ci] @@ -449,8 +449,6 @@ def _preprocess_spatial(qa: Dict) -> Dict: # Build question without camera reference question = f"How close are {desc_a} and {desc_b} in the scene?" question = question[0].upper() + question[1:] - # Fix article agreement (a → an before vowels) - question = re.sub(r'\ba ([aeiouAEIOU])', r'an \1', question) result["question_template"] = question return result @@ -468,15 +466,15 @@ def _preprocess_perception(qa: Dict) -> Dict: template = qa.get("question_template", "") if q_type == "attribute_verification": - # "A person is visible on camera G423. What color are they wearing..." - # Simplify any embedded person description person_desc = v.get("person_description", "") if person_desc: - simplified = simplify_description(person_desc).rstrip(".") - # Template is already clean for this type — just ensure capitalization + template = re.sub( + re.escape(person_desc), + simplify_description(person_desc).rstrip("."), + template, + count=1, + ) elif q_type == "which_camera": - # "Which camera captures a carries heavy object event?" - # Make activity name more natural alias = v.get("activity_alias", "") if alias: gerund = _humanize_gerund(v.get("activity", alias)) @@ -487,7 +485,6 @@ def _preprocess_perception(qa: Dict) -> Dict: template = simplify_description(template) if template: template = template[0].upper() + template[1:] - # Re-add question mark if simplification stripped it if not template.endswith("?"): template += "?" @@ -532,7 +529,6 @@ def _preprocess_reid(qa: Dict) -> Dict: f"Is this the same person visible on camera {cam_b}?" ) else: - # Fallback: simplify in place question = simplify_description(qa.get("question_template", "")) if question: question = question[0].upper() + question[1:] @@ -558,16 +554,17 @@ def _preprocess_scene_summary(qa: Dict) -> Dict: # ============================================================================ def preprocess_all(input_data: Dict, verbose: bool = False, - version: str = "v2") -> Dict: + strip_camera_refs: bool = True) -> Dict: """ Pre-process all QA pairs: simplify descriptions, remove camera refs, add temporal anchors, fix grammar. FREE (no API call). - version='v3' strips camera refs from temporal question text. + strip_camera_refs: If True (default), strips camera IDs from temporal + question text. Person descriptions disambiguate instead. """ output = {k: v for k, v in input_data.items() if k != "qa_pairs"} - output["version"] = "v8_preprocessed" - output["preprocessor"] = "naturalize_v8_qa_v2.py" + output["version"] = "preprocessed" + output["preprocessor"] = "naturalize.py" preprocessed = [] changes = {"temporal": 0, "spatial": 0, "perception": 0, @@ -577,14 +574,14 @@ def preprocess_all(input_data: Dict, verbose: bool = False, cat = qa.get("category", "") if cat == "temporal": - cleaned = _preprocess_temporal(qa, strip_camera_refs=(version == "v3")) + cleaned = _preprocess_temporal(qa, strip_camera_refs=strip_camera_refs) elif cat == "spatial": cleaned = _preprocess_spatial(qa) elif cat == "perception": cleaned = _preprocess_perception(qa) elif cat == "re_identification": cleaned = _preprocess_reid(qa) - elif cat == "scene_summary": + elif cat in ("scene_summary", "summarization"): cleaned = _preprocess_scene_summary(qa) else: cleaned = qa.copy() @@ -598,21 +595,20 @@ def preprocess_all(input_data: Dict, verbose: bool = False, preprocessed.append(cleaned) - # Global fix: article agreement (a → an before vowels) in all text fields + # --------------------------------------------------------------- + # Global text fixes (applied to ALL categories, all text fields) + # Ontology vocabulary normalization only — all grammar/article + # fixes are delegated to GPT to avoid double-transformation + # --------------------------------------------------------------- for qa in preprocessed: - if "question_template" in qa: - qa["question_template"] = re.sub( - r'\ba ([aeiouAEIOU])', r'an \1', qa["question_template"] - ) + for field in ("question_template", "correct_answer"): + if field in qa: + qa[field] = _apply_ontology_rewrites(str(qa[field])) if "options" in qa: qa["options"] = [ - re.sub(r'\ba ([aeiouAEIOU])', r'an \1', str(o)) + _apply_ontology_rewrites(str(o)) for o in qa["options"] ] - if "correct_answer" in qa: - qa["correct_answer"] = re.sub( - r'\ba ([aeiouAEIOU])', r'an \1', str(qa["correct_answer"]) - ) output["qa_pairs"] = preprocessed @@ -627,99 +623,81 @@ def preprocess_all(input_data: Dict, verbose: bool = False, # ============================================================================ -# Updated GPT System Prompt (V2) +# GPT System Prompt # ============================================================================ -SYSTEM_PROMPT_V2 = """\ -You are a question naturalizer for a multi-camera surveillance video QA benchmark. - -Your task is to polish pre-processed template questions into fluent, natural English -suitable for a Video Question Answering (VQA) evaluation. The templates have already -been cleaned up — your job is to make them sound conversational while preserving all -factual content. - -Rules: -1. Rephrase the question to sound natural and conversational -2. Rephrase each option to sound natural, keeping the SAME meaning and order -3. Preserve person descriptions precisely (clothing colors, carried objects, distinctive features) -4. Preserve camera identifiers (e.g., "camera G299") when present — they tell the VLM where to look -5. Preserve event numbering (Event 1, Event 2) when present -6. Keep spatial terms unchanged (near, moderate, far, meters) -7. Keep "simultaneously" and "cannot be determined" as-is -8. Do NOT add information not present in the template -9. Do NOT reorder the options -10. Add a brief 1-sentence "reasoning" explaining why the correct answer is right - -Output format — respond with ONLY a JSON object: -{ - "question": "The naturalized question text", - "options": ["Option A", "Option B", "Option C", "Option D"], - "reasoning": "Brief explanation of why the answer is correct" -} -""" - -SYSTEM_PROMPT_V3 = """\ -You are a creative question writer for a multi-camera surveillance video QA benchmark. - -Your task: rewrite template questions into varied, natural English. Each question should -sound like a DIFFERENT person wrote it. Vary sentence structure, word choice, and phrasing -aggressively — avoid formulaic patterns like always starting with "In this scene..." or -"Looking at the cameras..." or "Two events are observed...". - -Rules: -1. VARY your phrasing — use different sentence openings, structures, and vocabulary each time -2. Preserve ALL factual content: person descriptions (clothing colors, carried objects), activities -3. Rephrase options naturally but keep the SAME meaning and order -4. Camera identifiers in answer options should be preserved -5. Keep spatial terms (near, moderate, far, meters) and "simultaneously"/"cannot be determined" -6. Do NOT add information not in the template -7. Do NOT reorder options -8. Add a 1-sentence "reasoning" for why the correct answer is right - -Phrasing variety examples (do NOT copy these verbatim — invent your own): -- "Two things happen in view of the cameras..." -- "Watch for these two events..." -- "Based on what the cameras recorded..." -- "Among the people visible..." -- Direct question without preamble: "Which happened first: ..." -- "The footage shows..." / "Can you tell..." / "What do you notice about..." +SYSTEM_PROMPT = """\ +You are a skilled question writer AND meticulous copy editor for a multi-camera \ +surveillance video QA benchmark. + +Your task: rewrite each template question into varied, natural English with \ +perfect grammar, punctuation, and phrasing — all in a single step. Each \ +question should sound like a DIFFERENT person wrote it. + +IMPORTANT: You rewrite ONLY the question text and provide a reasoning sentence. \ +You do NOT rewrite the answer options — those are deterministically generated \ +and must not be changed. + +Priority order (resolve conflicts by rank): +1. Preserve factual meaning exactly — never alter facts, person descriptions \ +(clothing colors, carried objects), activities, spatial terms, or answer options +2. Ensure flawless grammar, punctuation, and natural phrasing +3. Apply creative stylistic variation — use different sentence openings, \ +structures, and vocabulary each time. Avoid formulaic patterns like always \ +starting with "In this scene..." or "Looking at the cameras..." +4. Add one concise reasoning sentence for why the correct answer is right + +## Constraints +- Do NOT change the meaning of the question. +- Do NOT add new facts or details not present in the original. +- Do NOT remove constraints or simplify the logical requirement. +- Do NOT alter person descriptions (clothing colors, carried objects). +- Do not change answer options. +- Camera identifiers (e.g., G421) in question text are acceptable ONLY for \ +perception and re-identification questions where cameras are inherent. +- For PERCEPTION questions ("What activity..." / "Which camera..."), maintain \ +the direct question form but you may vary surrounding wording naturally. +- Only improve grammar, clarity, and naturalness. + +## Ontology Translation +Translate robotic activity labels into natural human prose. Examples: +- "enters scene through structure" → "walks into the building" +- "person_opens_facility_door" → "opens a door" +Smooth out awkward clothing lists into natural descriptions. Only rephrase \ +what is given — do not invent new details. + +## Grammar & Polish +Fix grammatical errors, run-on sentences, punctuation, capitalization, \ +awkward phrasing, redundancy, and unclear references. + +Bad → Good transformation example: +- BAD: "Throughout all the cameras in this time frame, how many instances of \ +stopping can be observed?" +- GOOD: "Across all cameras during this time period, how many stopping events \ +occur?" + +Phrasing variety examples (do NOT copy verbatim — invent your own): +- "A man in a gray hoodie appears near the entrance..." +- "Which of these events took place first?" +- "Based on the footage, what happened after..." +- Direct question without preamble: "Who was spotted on more than one camera?" - Vary active/passive voice, question-first vs. description-first - Sometimes be brief and direct, sometimes more descriptive Output format — respond with ONLY a JSON object: { - "question": "The creatively rephrased question", - "options": ["Option A", "Option B", "Option C", "Option D"], - "reasoning": "Brief explanation of why the answer is correct" + "question": "The creatively rephrased and grammar-polished question", + "reasoning": "Brief explanation of why the correct answer is right" } """ -GRAMMAR_CHECKER_PROMPT = """\ -You are a meticulous copy editor. You receive a JSON object containing a VQA question, -options, and reasoning. Your ONLY job is to fix grammar, punctuation, and awkward phrasing. -Rules: -1. Fix grammatical errors, run-on sentences, and punctuation mistakes -2. Do NOT change meaning, add information, or remove details -3. Do NOT reorder options -4. Do NOT change camera IDs, person descriptions, or spatial/temporal terms -5. Keep the same JSON structure -6. If the text is already grammatically correct, return it unchanged -7. Be conservative — only fix clear errors - -Output format — respond with ONLY a JSON object: -{ - "question": "The grammar-checked question", - "options": ["Option A", "Option B", "Option C", "Option D"], - "reasoning": "The grammar-checked reasoning" -} -""" # ============================================================================ -# Category-specific prompt examples (few-shot, V2) +# Category-specific prompt examples (few-shot) # ============================================================================ -CATEGORY_EXAMPLES_V3 = { +CATEGORY_EXAMPLES = { "temporal": { "hint": "This is a temporal ordering question about two events. Person descriptions (clothing, objects) identify who is who — there are NO camera references in the question. VARY your phrasing creatively. Return ONLY {question, reasoning}.", "example_input": 'Consider two events in this multi-camera scene: (1) A person wearing a gray top and green pants, carrying a black backpack, entering a scene through a structure. (2) A person in a blue top and green pants, interacting with a person. Which event occurred first?', @@ -760,87 +738,91 @@ def preprocess_all(input_data: Dict, verbose: bool = False, "example_input": "How many cameras capture at least one instance of talking to person?", "example_output": '{"question": "Across the available camera feeds, on how many of them can you spot at least one conversation taking place?", "reasoning": "Conversations were observed on 5 of the available camera feeds."}', }, -} -CATEGORY_EXAMPLES_V2 = { - "temporal": { - "hint": "This is a temporal ordering question with two numbered events on specific cameras. Preserve the event numbers, person descriptions, and camera references exactly.", - "example_input": 'Consider two events in this multi-camera scene: (1) A person wearing a gray top and green pants, carrying a black backpack, entering a scene through a structure on camera G421. (2) A person interacting with a person on camera G330. Which event occurred first?', - "example_output": '{"question": "Two events are observed across the camera feeds: (1) A person in a gray top and green pants, carrying a black backpack, enters through a structure on camera G421. (2) A person interacts with another person on camera G330. Which of these events happened first?", "options": ["Entering a scene through a structure (camera G421) occurred first", "Interacting with a person (camera G330) occurred first", "They occurred simultaneously", "Cannot be determined"], "reasoning": "Based on the video evidence, the scene entry on camera G421 occurred before the interaction on camera G330."}', - }, - "spatial": { - "hint": "This is a spatial distance question about how far apart two people are. Person descriptions should be preserved naturally. No camera references in the question.", - "example_input": 'How close are the person wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back, and the person wearing a white hoodie with a Puma logo, camouflage pants, and a camouflage cap in the scene?', - "example_output": '{"question": "In the scene, how far apart are the person in blue clothes with a black graphic hoodie and the person in a white Puma hoodie with camouflage pants and cap?", "options": ["They are near each other (within a few meters)", "They are at a moderate distance (5-15 meters)", "They are far apart (more than 15 meters)", "They are at the same location"], "reasoning": "Based on their projected positions in the scene, these two individuals are approximately 6 meters apart, placing them at a moderate distance."}', - }, - "perception": { - "hint": "This is a perception question about activities or visual attributes. Camera references are part of the question structure — preserve them.", - "example_input": 'A person is visible on camera G423. What color are they wearing on their lower body?', - "example_output": '{"question": "Looking at camera G423, what color is the visible person wearing on their lower body?", "options": ["Gray", "Navy", "Blue", "Brown"], "reasoning": "The person on camera G423 is wearing blue pants, making Blue the correct answer."}', - }, - "re_identification": { - "hint": "This is a person re-identification question. Camera references are essential — preserve them. Preserve appearance descriptions precisely.", - "example_input": 'On camera G419, a person wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back, is visible. Which other camera also shows this same person?', - "example_output": '{"question": "A person in a blue top and blue pants with a black graphic hoodie is visible on camera G419. Which other camera also shows this same person?", "options": ["G423", "G299", "G328", "None of these cameras"], "reasoning": "The person wearing a blue top and pants with the distinctive black graphic hoodie appears on both camera G419 and camera G423."}', - }, - "scene_summary": { - "hint": "This is a scene-level summary question. Keep statistical terms, camera counts, and activity references.", - "example_input": 'Considering all 8 camera feeds in this slot, which description best characterizes the overall scene?', - "example_output": '{"question": "Looking at all 8 camera feeds together, which description best captures the overall activity in this scene?", "options": ["An empty scene with minimal activity, captured on 5 cameras", "A vehicle-focused scene with mostly parking and driving activity", "A single-camera scene showing only indoor activities", "A pedestrian-dominant scene across 8 cameras, primarily featuring putting down objects"], "reasoning": "The vast majority of events are pedestrian activities observed across all 8 cameras, with putting down objects being the most frequent activity."}', + "best_camera": { + "hint": "Question about which camera first/last captures a person entering the scene. VARY phrasing. Keep camera identifiers in options. Return ONLY {question, reasoning}.", + "example_input": "Which camera first captures the entrance of a person in a blue top and gray pants into the scene?", + "example_output": '{"question": "On which camera does a person wearing a blue top and gray pants first appear?", "reasoning": "Camera G419 is the first to capture this person entering the scene."}', }, } # ============================================================================ -# GPT Client +# GPT Client & Category Aliases # ============================================================================ +# Alias categories that share the same few-shot examples +_CAT_ALIASES = {"summarization": "scene_summary", "counting": "numerical"} + + def _create_client(): """Create OpenAI client.""" import openai return openai.OpenAI() -def _naturalize_one(client, question: Dict, model: str, - temperature: float, - system_prompt: str = None, - examples: Dict = None) -> Optional[Dict]: - """Send one pre-processed question to GPT for naturalization.""" - if system_prompt is None: - system_prompt = SYSTEM_PROMPT_V2 - if examples is None: - examples = CATEGORY_EXAMPLES_V2 +# ============================================================================ +# GPT Naturalization (1 API call per question) +# ============================================================================ +def _naturalize_question( + client, + question: Dict, + model: str, + temperature: float, +) -> Optional[Dict]: + """ + Single GPT call: send plain text question + context, get back rewritten + question + reasoning. Options are never sent to GPT for rewriting. + + Architecture per colleague review: + - Input: labeled plaintext fields (never raw JSON structure) + - Output: JSON with 2 fields {question, reasoning} + - Python handles all JSON assembly + """ category = question["category"] template = question["question_template"] options = question["options"] verification = question.get("verification", {}) + # Select category-specific few-shot examples (with aliases) lookup_cat = question.get("subcategory", category) - cat_info = examples.get(lookup_cat, - examples.get(category, {})) - hint = cat_info.get("hint", "Rephrase this question naturally.") + lookup_cat = _CAT_ALIASES.get(lookup_cat, lookup_cat) + cat_info = CATEGORY_EXAMPLES.get( + lookup_cat, CATEGORY_EXAMPLES.get( + _CAT_ALIASES.get(category, category), {}) + ) + hint = cat_info.get("hint", "Rephrase this question naturally with perfect grammar.") example_in = cat_info.get("example_input", "") example_out = cat_info.get("example_output", "") - user_message = f"Category: {category}\n{hint}\n\n" + # Build user message as labeled plaintext (never send raw JSON) + parts = [f"CATEGORY: {category}", hint, ""] if example_in and example_out: - user_message += f"Example:\n Input: {example_in}\n Output: {example_out}\n\n" + parts.append(f"EXAMPLE INPUT:\n{example_in}") + parts.append(f"EXAMPLE OUTPUT:\n{example_out}") + parts.append("") + + parts.append(f"QUESTION TO REWRITE:\n{template}") + parts.append("") - user_message += f"Now naturalize this question:\n\nTemplate: {template}\n\nOptions:\n" - for i, opt in enumerate(options): - user_message += f" {chr(65+i)}) {opt}\n" + # Options as context only + opt_lines = [f" {chr(65 + i)}) {opt}" for i, opt in enumerate(options)] + parts.append("OPTIONS (context only — do NOT modify):\n" + "\n".join(opt_lines)) - # Add verification context for reasoning + # Verification context for reasoning (as plain English) if category == "temporal" and "gap_sec" in verification: - user_message += f"\nContext: The gap between events is {verification['gap_sec']}s.\n" + parts.append(f"\nCONTEXT: The gap between events is {verification['gap_sec']} seconds.") elif category == "spatial" and "distance_meters" in verification: - user_message += f"\nContext: Distance is {verification['distance_meters']}m.\n" - elif category == "re_identification": - user_message += "\nContext: Person identified via cross-camera appearance matching.\n" + parts.append(f"\nCONTEXT: Distance between entities is {verification['distance_meters']} meters.") + elif category == "best_camera": + correct_cam = verification.get("correct_camera", "") + entrance_time = verification.get("entrance_time_sec", 0) + if correct_cam: + parts.append(f"\nCONTEXT: First entrance on {correct_cam} at {entrance_time}s.") - user_message += "\nRespond with ONLY the JSON object." + user_message = "\n".join(parts) for attempt in range(MAX_RETRIES): try: @@ -849,116 +831,64 @@ def _naturalize_one(client, question: Dict, model: str, temperature=temperature, response_format={"type": "json_object"}, messages=[ - {"role": "system", "content": system_prompt}, + {"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": user_message}, ], - max_tokens=600, + max_tokens=400, ) result = json.loads(response.choices[0].message.content) - if "question" not in result or "options" not in result: - print(f" WARNING: Missing fields, retry {attempt+1}") - continue - - if len(result["options"]) != len(options): - print(f" WARNING: Option count mismatch, retry {attempt+1}") + if "question" not in result: + print(f" WARNING: Missing 'question' field, retry {attempt + 1}") continue - usage = { - "prompt_tokens": response.usage.prompt_tokens, - "completion_tokens": response.usage.completion_tokens, - "total_tokens": response.usage.total_tokens, - } - return { "naturalized_question": result["question"], - "naturalized_options": result["options"], + "naturalized_options": options, # frozen, no GPT rewriting "reasoning": result.get("reasoning", ""), - "usage": usage, + "usage": { + "prompt_tokens": response.usage.prompt_tokens, + "completion_tokens": response.usage.completion_tokens, + "total_tokens": response.usage.total_tokens, + }, } except json.JSONDecodeError: - print(f" WARNING: Invalid JSON response, retry {attempt+1}") + print(f" WARNING: Invalid JSON response, retry {attempt + 1}") time.sleep(RETRY_DELAY) except Exception as e: - print(f" WARNING: API error: {e}, retry {attempt+1}") + print(f" WARNING: API error: {e}, retry {attempt + 1}") time.sleep(RETRY_DELAY * (attempt + 1)) return None -def _grammar_check_one(client, naturalized: Dict, model: str) -> Optional[Dict]: - """Send one naturalized question through grammar checker (pass 2).""" - user_message = json.dumps({ - "question": naturalized.get("naturalized_question", ""), - "options": naturalized.get("naturalized_options", []), - "reasoning": naturalized.get("reasoning", ""), - }, indent=2) - - for attempt in range(MAX_RETRIES): - try: - response = client.chat.completions.create( - model=model, - temperature=0.3, # Low temperature for conservative edits - response_format={"type": "json_object"}, - messages=[ - {"role": "system", "content": GRAMMAR_CHECKER_PROMPT}, - {"role": "user", "content": user_message}, - ], - max_tokens=600, - ) - - result = json.loads(response.choices[0].message.content) - - if "question" not in result or "options" not in result: - break # Fall back to naturalized version - - usage = { - "prompt_tokens": response.usage.prompt_tokens, - "completion_tokens": response.usage.completion_tokens, - "total_tokens": response.usage.total_tokens, - } - - return { - "question": result["question"], - "options": result["options"], - "reasoning": result.get("reasoning", ""), - "usage": usage, - } - - except Exception as e: - if attempt < MAX_RETRIES - 1: - time.sleep(RETRY_DELAY) - continue - - return None # Grammar check failed, caller uses naturalized version as-is - - # ============================================================================ # Batch Processing # ============================================================================ -def naturalize_batch(input_data: Dict, model: str, temperature: float, - verbose: bool = False, version: str = "v2") -> Dict: - """Pre-process + GPT naturalize all QA pairs.""" - # Step 1: Pre-process (free) — V3 strips camera refs from temporal Qs - preprocessed = preprocess_all(input_data, verbose=verbose, version=version) +def naturalize_batch( + input_data: Dict, + model: str, + temperature: float, + verbose: bool = False, +) -> Dict: + """Stage 1 (pre-process) + Stage 2 (GPT) + Stage 3 (assemble). - # Step 2: Select prompts based on version - if version == "v3": - sys_prompt = SYSTEM_PROMPT_V3 - cat_examples = CATEGORY_EXAMPLES_V3 - else: - sys_prompt = SYSTEM_PROMPT_V2 - cat_examples = CATEGORY_EXAMPLES_V2 + Architecture: 1 API call per question. Options are never sent to GPT + for rewriting — only the question text is naturalized. + """ + # Stage 1: Pre-process (free) + preprocessed = preprocess_all(input_data, verbose=verbose, + strip_camera_refs=True) - # Step 3: GPT naturalize + # Stage 2: GPT naturalize (1 call per question) client = _create_client() qa_pairs = preprocessed["qa_pairs"] total = len(qa_pairs) - print(f"\n Naturalizing {total} pre-processed questions with {model} ({version})...") + print(f"\n Naturalizing {total} questions with {model} (temp={temperature})...") naturalized_pairs = [] total_tokens = 0 @@ -966,53 +896,35 @@ def naturalize_batch(input_data: Dict, model: str, temperature: float, for i, q in enumerate(qa_pairs): if verbose: - print(f" [{i+1}/{total}] {q['category']}: " + print(f" [{i + 1}/{total}] {q['category']}: " f"{q['question_template'][:60]}...") - # --- Pass 1: Naturalization --- - result = _naturalize_one(client, q, model, temperature, - system_prompt=sys_prompt, examples=cat_examples) + result = _naturalize_question(client, q, model, temperature) + + # Stage 3: JSON assembly + nat_q = q.copy() if result is None: failures += 1 - nat_q = q.copy() nat_q["naturalized_question"] = q["question_template"] nat_q["naturalized_options"] = q["options"] nat_q["reasoning"] = "" nat_q["naturalization_failed"] = True - naturalized_pairs.append(nat_q) - continue - - nat_q = q.copy() - nat_q["naturalized_question"] = result["naturalized_question"] - nat_q["naturalized_options"] = result["naturalized_options"] - nat_q["reasoning"] = result["reasoning"] - total_tokens += result["usage"]["total_tokens"] - - # --- Pass 2: Grammar check --- - gc_result = _grammar_check_one(client, nat_q, model) - - if gc_result is not None: - nat_q["naturalized_question"] = gc_result["question"] - nat_q["naturalized_options"] = gc_result["options"] - nat_q["reasoning"] = gc_result["reasoning"] - nat_q["grammar_checked"] = True - total_tokens += gc_result["usage"]["total_tokens"] else: - nat_q["grammar_checked"] = False + nat_q["naturalized_question"] = result["naturalized_question"] + nat_q["naturalized_options"] = result["naturalized_options"] + nat_q["reasoning"] = result["reasoning"] + total_tokens += result["usage"]["total_tokens"] naturalized_pairs.append(nat_q) if (i + 1) % 5 == 0: - print(f" Progress: {i+1}/{total} ({total_tokens} tokens)") - - version_tag = "v8_natural_v3" if version == "v3" else "v8_natural_v2" + print(f" Progress: {i + 1}/{total} ({total_tokens} tokens)") output = { "slot": input_data["slot"], - "version": version_tag, - "generator": "naturalize_v8_qa_v2.py", - "preprocessor": f"{version}_preprocess", + "version": "final_naturalized", + "generator": "naturalize.py", "model": model, "temperature": temperature, "total_tokens": total_tokens, @@ -1022,7 +934,7 @@ def naturalize_batch(input_data: Dict, model: str, temperature: float, "mevid_supported": input_data.get("mevid_supported", False), "mevid_persons_in_slot": input_data.get("mevid_persons_in_slot", 0), "category_counts": input_data.get("category_counts", {}), - "v8_stats": input_data.get("v8_stats", {}), + "stats": input_data.get("stats", input_data.get("v8_stats", {})), "qa_pairs": naturalized_pairs, } @@ -1061,16 +973,19 @@ def dry_run(input_data: Dict): for i, opt in enumerate(q["options"]): marker = " *" if i == q.get("correct_answer_index") else "" - print(f" {chr(65+i)}) {opt}{marker}") + print(f" {chr(65 + i)}) {opt}{marker}") print() # Cost estimate - est_tokens = len(qa_pairs) * 400 # slightly more with examples + calls = len(qa_pairs) + est_tokens = len(qa_pairs) * 450 + est_cost_mini = est_tokens * 0.4e-6 est_cost_4o = est_tokens * 6e-6 - print(f" === Cost Estimate (GPT naturalization) ===") + print(f" === Cost Estimate (1 API call per question) ===") print(f" Questions: {len(qa_pairs)}") + print(f" API calls: {calls}") print(f" Est. tokens: ~{est_tokens}") print(f" gpt-4o-mini: ~${est_cost_mini:.4f}") print(f" gpt-4o: ~${est_cost_4o:.4f}") @@ -1084,20 +999,18 @@ def dry_run(input_data: Dict): def main(): parser = argparse.ArgumentParser( - description="V8 Naturalization — Pre-process + GPT naturalize (V2/V3)", + description="Naturalize — Pre-process + GPT naturalize QA pairs", formatter_class=argparse.RawDescriptionHelpFormatter, ) parser.add_argument("--input", "-i", required=True, - help="Path to V8 QA JSON file") + help="Path to QA JSON file (e.g., SLOT.final.raw.json)") parser.add_argument("--output", "-o", - help="Output path (default: auto-generated)") + help="Output path (default: auto-generated .naturalized.json)") parser.add_argument("--model", "-m", default=DEFAULT_MODEL, help=f"GPT model (default: {DEFAULT_MODEL})") - parser.add_argument("--temperature", "-t", type=float, default=None, - help="Temperature (default: 0.7 for V2, 0.95 for V3)") - parser.add_argument("--v3", action="store_true", - help="V3 mode: more question variety, strip camera refs from temporal Qs") + parser.add_argument("--temperature", "-t", type=float, default=DEFAULT_TEMPERATURE, + help=f"Temperature (default: {DEFAULT_TEMPERATURE})") parser.add_argument("--preprocess-only", action="store_true", help="Only pre-process templates (no GPT call, FREE)") parser.add_argument("--dry-run", action="store_true", @@ -1107,19 +1020,14 @@ def main(): help="Skip confirmation prompt") args = parser.parse_args() - - # Resolve version and temperature - version = "v3" if args.v3 else "v2" - temperature = args.temperature if args.temperature is not None else ( - 0.95 if version == "v3" else DEFAULT_TEMPERATURE - ) + temperature = args.temperature input_path = Path(args.input) if not input_path.exists(): print(f"ERROR: Input not found: {input_path}") return - print(f"Loading: {input_path} (mode: {version}, temp: {temperature})") + print(f"Loading: {input_path} (temp: {temperature})") with open(input_path) as f: input_data = json.load(f) @@ -1130,17 +1038,17 @@ def main(): # Mode 1: Pre-process only (free) if args.preprocess_only: - result = preprocess_all(input_data, verbose=True, version=version) + result = preprocess_all(input_data, verbose=True) out_path = args.output or str(input_path).replace( - ".v8.json", ".v8.preprocessed.json") + ".json", ".preprocessed.json") with open(out_path, "w") as f: json.dump(result, f, indent=2, default=str) - print(f"\n Pre-processed output → {out_path}") + print(f"\n Pre-processed output -> {out_path}") # Show before/after for each question - print(f"\n === Before → After ===") + print(f"\n === Before -> After ===") for q in result["qa_pairs"]: if "original_template" in q: print(f"\n [{q['category']}]") @@ -1164,22 +1072,34 @@ def main(): return if not args.yes: - print(f"\n Will pre-process + naturalize {total} questions with {args.model} ({version}, temp={temperature})") + print(f"\n Will pre-process + naturalize {total} questions " + f"with {args.model} (temp={temperature})") + print(f" API calls: {total}") resp = input(" Continue? [y/N] ").strip().lower() if resp != "y": print(" Aborted.") return - result = naturalize_batch(input_data, args.model, temperature, - verbose=args.verbose, version=version) + result = naturalize_batch( + input_data, args.model, temperature, + verbose=args.verbose, + ) print(f"\n === Results ===") print(f" Naturalized: {total - result['failures']}/{total}") print(f" Failures: {result['failures']}") print(f" Total tokens: {result['total_tokens']}") - - suffix = ".v8.natural.v3.json" if version == "v3" else ".v8.natural.v2.json" - out_path = args.output or str(input_path).replace(".v8.json", suffix) + print(f" API calls: {total}") + + # Derive output path + if args.output: + out_path = args.output + elif ".final.raw.json" in str(input_path): + out_path = str(input_path).replace(".final.raw.json", ".final.naturalized.json") + elif ".v9.raw.json" in str(input_path): + out_path = str(input_path).replace(".v9.raw.json", ".v9.naturalized.json") + else: + out_path = str(input_path).replace(".json", ".naturalized.json") with open(out_path, "w") as f: json.dump(result, f, indent=2, default=str) print(f" Output: {out_path}") @@ -1188,14 +1108,15 @@ def main(): slot = input_data.get("slot", "unknown") log_dir = LOG_DIR / slot log_dir.mkdir(parents=True, exist_ok=True) - log_path = log_dir / f"naturalize_v8_{version}_{args.model}.json" + log_path = log_dir / f"naturalize_{args.model}.json" with open(log_path, "w") as f: json.dump({ "model": args.model, - "temperature": args.temperature, + "temperature": temperature, "total_tokens": result["total_tokens"], "questions_processed": total, "failures": result["failures"], + "api_calls": total, }, f, indent=2) print(f" Log: {log_path}") diff --git a/meva/scripts/v10/naturalize_v8_qa_v3.py b/meva/scripts/v10/naturalize_v8_qa_v3.py deleted file mode 100644 index ea51cad..0000000 --- a/meva/scripts/v10/naturalize_v8_qa_v3.py +++ /dev/null @@ -1,523 +0,0 @@ -#!/usr/bin/env python3 -""" -V8 Naturalization V3 — Single-Pass Naturalizer (V9 Pipeline) - -Merges the 2-pass naturalize + grammar-check pipeline from V2 into a single -GPT call per question, halving API calls from 18 to 9 per slot. - -Key changes from V2: -1. SYSTEM_PROMPT_UNIFIED replaces SYSTEM_PROMPT_V3 + GRAMMAR_CHECKER_PROMPT -2. Single _naturalize_and_polish_one() replaces _naturalize_one() + _grammar_check_one() -3. Unified temperature 0.8 (midpoint of V2's 0.7 and V3's 0.95) -4. V3's creative variety + temporal camera-ref stripping is the default behavior -5. Output suffix: .v8.natural.v4.json, version tag: v8_natural_v4 - -Pre-processing functions are imported from naturalize_v8_qa_v2 (no duplication). - -Usage: - # Pre-process only (free): - python3 scripts/v8/naturalize_v8_qa_v3.py --input data/qa_pairs/SLOT.v8.json --preprocess-only - - # Full pipeline (pre-process + single-pass GPT): - python3 scripts/v8/naturalize_v8_qa_v3.py --input data/qa_pairs/SLOT.v8.json - - # Dry-run (show what would be sent to GPT): - python3 scripts/v8/naturalize_v8_qa_v3.py --input data/qa_pairs/SLOT.v8.json --dry-run -""" - -import json -import time -import re -import argparse -import os -import sys -from pathlib import Path -from typing import Dict, Optional - -# --------------------------------------------------------------------------- -# Import pre-processing functions from V2 (no duplication) -# --------------------------------------------------------------------------- -sys.path.insert(0, str(Path(__file__).resolve().parent)) -from naturalize_v8_qa_v2 import ( - preprocess_all, - simplify_description, - CATEGORY_EXAMPLES_V3, -) - -# ============================================================================ -# Paths & Constants -# ============================================================================ - -QA_DIR = Path("/home/ah66742/data/qa_pairs") -LOG_DIR = Path("/home/ah66742/data/gpt_logs") - -DEFAULT_MODEL = "gpt-4o-mini" -DEFAULT_TEMPERATURE = 0.8 -MAX_RETRIES = 3 -RETRY_DELAY = 2.0 - -# ============================================================================ -# Unified System Prompt (merged naturalizer + grammar checker) -# ============================================================================ - -SYSTEM_PROMPT_UNIFIED = """\ -You are a skilled question writer AND meticulous copy editor for a multi-camera \ -surveillance video QA benchmark. - -Your task: rewrite each template question into varied, natural English with \ -perfect grammar, punctuation, and phrasing — all in a single step. Each \ -question should sound like a DIFFERENT person wrote it. - -IMPORTANT: You rewrite ONLY the question text and provide a reasoning sentence. \ -You do NOT rewrite the answer options — those are deterministically generated \ -and must not be changed. - -## Creative Rephrasing Rules -1. VARY your phrasing — use different sentence openings, structures, and \ -vocabulary each time. Avoid formulaic patterns like always starting with \ -"In this scene..." or "Looking at the cameras..." or "Two events are observed..." -2. Preserve ALL factual content: person descriptions (clothing colors, carried \ -objects), activities, spatial terms (near, moderate, far, meters), \ -"simultaneously", and "cannot be determined" -3. NEVER include raw camera identifiers (e.g., G421, G330) in the question text. \ -Camera references like "Camera G421" are acceptable ONLY in perception and \ -re-identification questions where cameras are inherent to the question. -4. Do NOT add information not in the template -5. Do NOT reorder or modify the answer options in any way -6. For PERCEPTION questions with the format "What activity is occurring on camera X?" \ -or "Which camera captures a ... event?", preserve this exact phrasing structure. \ -Do NOT rephrase into "Can you identify..." or "Identify the camera that..." — \ -keep the direct "What activity..." / "Which camera..." wording. - -## Ontology Translation -6. Translate robotic activity labels and rigid bounding-box descriptions into \ -natural human prose. For example, change "enters scene through structure" to \ -"walks into the building", "person_opens_facility_door" to "opens a door", \ -and smooth out awkward clothing lists into natural descriptions. \ -Do NOT invent new details — only rephrase what is given. - -## Grammar & Polish Rules (apply simultaneously) -7. Fix ALL grammatical errors, run-on sentences, and punctuation mistakes -8. Ensure proper capitalization and sentence structure -9. Eliminate awkward phrasing, redundancy, and unclear references -10. Be conservative with meaning — only fix form, never alter facts - -## Reasoning -11. Add a 1-sentence "reasoning" for why the correct answer is right - -Phrasing variety examples (do NOT copy these verbatim — invent your own): -- "A man in a gray hoodie appears near the entrance..." -- "Which of these events took place first?" -- "Based on the footage, what happened after..." -- "The woman carrying a red backpack was seen..." -- Direct question without preamble: "Who was spotted on more than one camera?" -- "After reviewing the video, can you determine..." -- Vary active/passive voice, question-first vs. description-first -- Sometimes be brief and direct, sometimes more descriptive - -Output format — respond with ONLY a JSON object: -{ - "question": "The creatively rephrased and grammar-polished question", - "reasoning": "Brief explanation of why the correct answer is right" -} -""" - -# ============================================================================ -# GPT Client -# ============================================================================ - -def _create_client(): - """Create OpenAI client.""" - import openai - return openai.OpenAI() - - -# ============================================================================ -# Post-processing helpers -# ============================================================================ - -_LETTER_PREFIX_RE = re.compile(r'^[A-Da-d]\)\s*') - -def _strip_letter_prefixes(options: list) -> list: - """Remove GPT-baked letter prefixes like 'A) ', 'B) ' from option text.""" - return [_LETTER_PREFIX_RE.sub('', opt) for opt in options] - - -# ============================================================================ -# Single-Pass Naturalize + Polish -# ============================================================================ - -def _naturalize_and_polish_one( - client, - question: Dict, - model: str, - temperature: float, -) -> Optional[Dict]: - """ - Single GPT call that rephrases the question text and generates reasoning. - - GPT only touches question + reasoning. Options are frozen (deterministic). - """ - category = question["category"] - template = question["question_template"] - options = question["options"] - verification = question.get("verification", {}) - - # Select category-specific few-shot examples - lookup_cat = question.get("subcategory", category) - cat_info = CATEGORY_EXAMPLES_V3.get( - lookup_cat, CATEGORY_EXAMPLES_V3.get(category, {}) - ) - hint = cat_info.get("hint", "Rephrase this question naturally with perfect grammar.") - example_in = cat_info.get("example_input", "") - example_out = cat_info.get("example_output", "") - - # Build user message - user_message = f"Category: {category}\n{hint}\n\n" - - if example_in and example_out: - user_message += ( - f"Example:\n Input: {example_in}\n Output: {example_out}\n\n" - ) - - user_message += ( - f"Now rewrite ONLY the question text (do NOT rewrite the options):\n\n" - f"Template: {template}\n\nOptions (for context only — do NOT modify these):\n" - ) - for i, opt in enumerate(options): - user_message += f" {chr(65 + i)}) {opt}\n" - - # Add verification context for reasoning - if category == "temporal" and "gap_sec" in verification: - user_message += ( - f"\nContext: The gap between events is {verification['gap_sec']}s.\n" - ) - elif category == "spatial" and "distance_meters" in verification: - user_message += ( - f"\nContext: Distance is {verification['distance_meters']}m.\n" - ) - elif category == "best_camera": - correct_cam = verification.get("correct_camera", "") - entrance_time = verification.get("entrance_time_sec", 0) - user_message += ( - f"\nContext: Camera transition logic — first entrance on {correct_cam} " - f"at {entrance_time}s.\n" - ) - - user_message += ( - "\nRespond with ONLY a JSON object: " - "{\"question\": \"...\", \"reasoning\": \"...\"}" - ) - - for attempt in range(MAX_RETRIES): - try: - response = client.chat.completions.create( - model=model, - temperature=temperature, - response_format={"type": "json_object"}, - messages=[ - {"role": "system", "content": SYSTEM_PROMPT_UNIFIED}, - {"role": "user", "content": user_message}, - ], - max_tokens=400, - ) - - result = json.loads(response.choices[0].message.content) - - if "question" not in result: - print(f" WARNING: Missing 'question' field, retry {attempt + 1}") - continue - - usage = { - "prompt_tokens": response.usage.prompt_tokens, - "completion_tokens": response.usage.completion_tokens, - "total_tokens": response.usage.total_tokens, - } - - # Options are frozen — pass through from pre-processed input unchanged - return { - "naturalized_question": result["question"], - "naturalized_options": options, # frozen, no GPT rewriting - "reasoning": result.get("reasoning", ""), - "usage": usage, - } - - except json.JSONDecodeError: - print(f" WARNING: Invalid JSON response, retry {attempt + 1}") - time.sleep(RETRY_DELAY) - except Exception as e: - print(f" WARNING: API error: {e}, retry {attempt + 1}") - time.sleep(RETRY_DELAY * (attempt + 1)) - - return None - - -# ============================================================================ -# Batch Processing -# ============================================================================ - -def naturalize_batch( - input_data: Dict, - model: str, - temperature: float, - verbose: bool = False, -) -> Dict: - """Pre-process + single-pass GPT naturalize all QA pairs.""" - - # Step 1: Pre-process (free) — uses V3 mode (strips camera refs from temporal Qs) - preprocessed = preprocess_all(input_data, verbose=verbose, version="v3") - - # Step 2: GPT naturalize + polish (single pass) - client = _create_client() - qa_pairs = preprocessed["qa_pairs"] - total = len(qa_pairs) - - print(f"\n Naturalizing {total} questions with {model} " - f"(single-pass, temp={temperature})...") - - naturalized_pairs = [] - total_tokens = 0 - failures = 0 - - for i, q in enumerate(qa_pairs): - if verbose: - print(f" [{i + 1}/{total}] {q['category']}: " - f"{q['question_template'][:60]}...") - - result = _naturalize_and_polish_one(client, q, model, temperature) - - nat_q = q.copy() - - if result is None: - failures += 1 - nat_q["naturalized_question"] = q["question_template"] - nat_q["naturalized_options"] = q["options"] - nat_q["reasoning"] = "" - nat_q["naturalization_failed"] = True - else: - nat_q["naturalized_question"] = result["naturalized_question"] - nat_q["naturalized_options"] = result["naturalized_options"] - nat_q["reasoning"] = result["reasoning"] - total_tokens += result["usage"]["total_tokens"] - - naturalized_pairs.append(nat_q) - - if (i + 1) % 5 == 0: - print(f" Progress: {i + 1}/{total} ({total_tokens} tokens)") - - output = { - "slot": input_data["slot"], - "version": "final_naturalized", - "generator": "naturalize_final.py", - "preprocessor": "v3_preprocess", - "model": model, - "temperature": temperature, - "total_tokens": total_tokens, - "total_questions": len(naturalized_pairs), - "failures": failures, - "cameras": input_data.get("cameras", []), - "mevid_supported": input_data.get("mevid_supported", False), - "mevid_persons_in_slot": input_data.get("mevid_persons_in_slot", 0), - "category_counts": input_data.get("category_counts", {}), - "stats": input_data.get("stats", input_data.get("v8_stats", {})), - "qa_pairs": naturalized_pairs, - } - - return output - - -# ============================================================================ -# Dry Run -# ============================================================================ - -def dry_run(input_data: Dict): - """Show pre-processed templates and what would be sent to GPT.""" - preprocessed = preprocess_all(input_data, verbose=True, version="v3") - qa_pairs = preprocessed["qa_pairs"] - - print(f"\n === DRY RUN — {len(qa_pairs)} pre-processed questions ===\n") - - for q in qa_pairs: - cat = q["category"] - subcat = q.get("subcategory", "") - original = q.get("original_template", q["question_template"]) - - print(f" [{cat}{' / ' + subcat if subcat else ''}]") - - if "original_template" in q: - print(f" BEFORE: {original[:100]}...") - print(f" AFTER: {q['question_template'][:100]}...") - else: - print(f" (no change): {q['question_template'][:100]}...") - - # Show options comparison - original_opts = q.get("original_options", q["options"]) - if original_opts != q["options"]: - print(f" OPTIONS BEFORE: {original_opts[0][:60]}...") - print(f" OPTIONS AFTER: {q['options'][0][:60]}...") - - for i, opt in enumerate(q["options"]): - marker = " *" if i == q.get("correct_answer_index") else "" - print(f" {chr(65 + i)}) {opt}{marker}") - print() - - # Cost estimate — single pass, so 1x tokens - est_tokens = len(qa_pairs) * 450 # slightly larger prompt (merged instructions) - est_cost_mini = est_tokens * 0.4e-6 - est_cost_4o = est_tokens * 6e-6 - - print(f" === Cost Estimate (single-pass GPT) ===") - print(f" Questions: {len(qa_pairs)}") - print(f" API calls: {len(qa_pairs)} (single-pass, down from {len(qa_pairs) * 2} in V2)") - print(f" Est. tokens: ~{est_tokens}") - print(f" gpt-4o-mini: ~${est_cost_mini:.4f}") - print(f" gpt-4o: ~${est_cost_4o:.4f}") - print() - print(f" TIP: Use --preprocess-only to get the pre-processed output for free.") - - -# ============================================================================ -# CLI -# ============================================================================ - -def main(): - parser = argparse.ArgumentParser( - description="V8 Naturalization V3 — Single-Pass Naturalizer (V9 Pipeline)", - formatter_class=argparse.RawDescriptionHelpFormatter, - ) - - parser.add_argument("--input", "-i", required=True, - help="Path to V8 QA JSON file") - parser.add_argument("--output", "-o", - help="Output path (default: auto-generated .v9.naturalized.json)") - parser.add_argument("--model", "-m", default=DEFAULT_MODEL, - help=f"GPT model (default: {DEFAULT_MODEL})") - parser.add_argument("--temperature", "-t", type=float, default=DEFAULT_TEMPERATURE, - help=f"Temperature (default: {DEFAULT_TEMPERATURE})") - parser.add_argument("--preprocess-only", action="store_true", - help="Only pre-process templates (no GPT call, FREE)") - parser.add_argument("--dry-run", action="store_true", - help="Show pre-processed templates and cost estimate") - parser.add_argument("--verbose", "-v", action="store_true") - parser.add_argument("--yes", "-y", action="store_true", - help="Skip confirmation prompt") - - args = parser.parse_args() - - input_path = Path(args.input) - if not input_path.exists(): - print(f"ERROR: Input not found: {input_path}") - return - - print(f"Loading: {input_path} (single-pass, temp: {args.temperature})") - with open(input_path) as f: - input_data = json.load(f) - - total = len(input_data.get("qa_pairs", [])) - print(f" Slot: {input_data.get('slot', 'N/A')}") - print(f" Version: {input_data.get('version', 'N/A')}") - print(f" Questions: {total}") - - # Mode 1: Pre-process only (free) - if args.preprocess_only: - result = preprocess_all(input_data, verbose=True, version="v3") - - out_path = args.output or str(input_path).replace( - ".v8.json", ".v8.preprocessed.json") - with open(out_path, "w") as f: - json.dump(result, f, indent=2, default=str) - - print(f"\n Pre-processed output -> {out_path}") - - # Show before/after for each question - print(f"\n === Before -> After ===") - for q in result["qa_pairs"]: - if "original_template" in q: - print(f"\n [{q['category']}]") - print(f" BEFORE: {q['original_template'][:120]}") - print(f" AFTER: {q['question_template'][:120]}") - if "original_options" in q: - print(f" OPTS BEFORE: {q['original_options'][0][:80]}") - print(f" OPTS AFTER: {q['options'][0][:80]}") - - return - - # Mode 2: Dry run - if args.dry_run: - dry_run(input_data) - return - - # Mode 3: Full pipeline (pre-process + single-pass GPT) - if not os.environ.get("OPENAI_API_KEY"): - print("ERROR: OPENAI_API_KEY not set") - print(" TIP: Use --preprocess-only for free pre-processing without GPT.") - return - - if not args.yes: - print(f"\n Will pre-process + naturalize {total} questions " - f"with {args.model} (single-pass, temp={args.temperature})") - print(f" API calls: {total} (down from {total * 2} in V2)") - resp = input(" Continue? [y/N] ").strip().lower() - if resp != "y": - print(" Aborted.") - return - - result = naturalize_batch( - input_data, args.model, args.temperature, verbose=args.verbose - ) - - print(f"\n === Results ===") - print(f" Naturalized: {total - result['failures']}/{total}") - print(f" Failures: {result['failures']}") - print(f" Total tokens: {result['total_tokens']}") - print(f" API calls: {total} (single-pass)") - - # Derive output path: .final.raw.json -> .final.naturalized.json - if args.output: - out_path = args.output - elif ".final.raw.json" in str(input_path): - out_path = str(input_path).replace(".final.raw.json", ".final.naturalized.json") - elif ".v9.raw.json" in str(input_path): - out_path = str(input_path).replace(".v9.raw.json", ".v9.naturalized.json") - else: - out_path = str(input_path).replace(".json", ".naturalized.json") - with open(out_path, "w") as f: - json.dump(result, f, indent=2, default=str) - print(f" Output: {out_path}") - - # Save GPT log - slot = input_data.get("slot", "unknown") - log_dir = LOG_DIR / slot - log_dir.mkdir(parents=True, exist_ok=True) - log_path = log_dir / f"naturalize_v8_v4_{args.model}.json" - with open(log_path, "w") as f: - json.dump({ - "model": args.model, - "temperature": args.temperature, - "total_tokens": result["total_tokens"], - "questions_processed": total, - "failures": result["failures"], - "api_calls": total, - "pipeline": "single-pass (v3)", - }, f, indent=2) - print(f" Log: {log_path}") - - # Show samples - print(f"\n === Sample Naturalized Questions ===") - seen_cats = set() - for q in result["qa_pairs"]: - if q["category"] in seen_cats: - continue - seen_cats.add(q["category"]) - - print(f"\n [{q['category']}]") - orig = q.get("original_template", q.get("question_template", "")) - print(f" RAW: {orig[:80]}...") - print(f" PREPROC: {q.get('question_template', '')[:80]}...") - print(f" NATURAL: {q.get('naturalized_question', '')[:80]}...") - if q.get("reasoning"): - print(f" REASON: {q['reasoning'][:80]}...") - - -if __name__ == "__main__": - main() diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py index 27329dd..be71518 100644 --- a/meva/scripts/v10/person_descriptions.py +++ b/meva/scripts/v10/person_descriptions.py @@ -266,43 +266,90 @@ def load_mevid_slots() -> Dict: return _mevid_slots_cache -def is_mevid_supported(slot: str) -> bool: - """Check if a slot has MEVID person support.""" +def _resolve_mevid_slot(slot: str) -> Optional[str]: + """Resolve a slot name to its key in mevid_supported_slots.json. + + The MEVID index uses HH-MM-SS format while the pipeline uses HH-MM. + This bridges the gap by trying both forms. + """ data = load_mevid_slots() slots = data.get("slots", {}) - return slot in slots + if slot in slots: + return slot + # Try appending -00 to get HH-MM-SS from HH-MM + parts = slot.split(".") + if len(parts) >= 2: + time_part = parts[1] + if len(time_part) == 5: # HH-MM + expanded = f"{parts[0]}.{time_part}-00.{'.' .join(parts[2:])}" + if expanded in slots: + return expanded + return None + + +def _resolve_all_mevid_slots(slot: str) -> List[str]: + """Return all MEVID slot keys matching a canonical HH-MM slot. + + A canonical HH-MM slot may map to multiple HH-MM-SS raw slots in the + MEVID index (e.g., 2018-03-11.11-25.school → 11-25-00, 11-25-01, etc.). + """ + data = load_mevid_slots() + slots = data.get("slots", {}) + if slot in slots: + return [slot] + parts = slot.split(".") + if len(parts) < 3 or len(parts[1]) != 5: + return [] + prefix = f"{parts[0]}.{parts[1]}" + site = parts[2] + return [k for k in slots if k.startswith(prefix) and k.endswith(f".{site}")] + + +def is_mevid_supported(slot: str) -> bool: + """Check if a slot has MEVID person support.""" + return len(_resolve_all_mevid_slots(slot)) > 0 def get_mevid_persons_for_slot(slot: str) -> List[str]: """ Get list of MEVID person IDs available for a slot. - + Reads from mevid_supported_slots.json which maps each slot to its MEVID persons (built by aggregate_mevid_slots.py). + Merges across all matching raw slots for canonical HH-MM lookups. """ data = load_mevid_slots() slots = data.get("slots", {}) - slot_info = slots.get(slot, {}) - return sorted(slot_info.get("mevid_persons", [])) + matching = _resolve_all_mevid_slots(slot) + all_persons = set() + for m in matching: + slot_info = slots.get(m, {}) + all_persons.update(slot_info.get("mevid_persons", [])) + return sorted(all_persons) def get_mevid_persons_with_cameras(slot: str) -> Dict[str, List[str]]: """ Get MEVID person IDs mapped to their cameras for this specific slot. - + Cross-references: - mevid_supported_slots.json → which persons and cameras are in this slot - person_database.json → which cameras each person globally appears on - + + Merges across all matching raw slots for canonical HH-MM lookups. Returns: {person_id: [camera_ids_in_this_slot]} """ - # Get slot info + # Get slot info (merge across all matching raw slots) slot_data = load_mevid_slots() slots = slot_data.get("slots", {}) - slot_info = slots.get(slot, {}) - - mevid_persons = slot_info.get("mevid_persons", []) - mevid_cameras = set(slot_info.get("mevid_cameras", [])) + matching = _resolve_all_mevid_slots(slot) + + mevid_persons = set() + mevid_cameras = set() + for m in matching: + slot_info = slots.get(m, {}) + mevid_persons.update(slot_info.get("mevid_persons", [])) + mevid_cameras.update(slot_info.get("mevid_cameras", [])) if not mevid_persons or not mevid_cameras: return {} diff --git a/meva/scripts/v10/render_question_validation.py b/meva/scripts/v10/render_question_validation.py index d532eb5..98fdbcc 100644 --- a/meva/scripts/v10/render_question_validation.py +++ b/meva/scripts/v10/render_question_validation.py @@ -1,43 +1,96 @@ #!/usr/bin/env python3 """ -Render question validation videos: multi-camera grid with geom overlays. +Render question validation videos: self-contained verification with activity highlighting. -Creates a video showing all cameras in a question side-by-side/grid, with: -- Bounding boxes from geom.yml overlayed -- Time span limited to the answer frame range -- Camera labels and timestamps +Creates a single video per question showing EVERYTHING needed to verify: +- Full question text with all options (correct answer marked in green) +- Multi-camera grid with bounding box overlays +- BLUE highlighted boxes on actors involved in the question's activities +- Green boxes on background actors (other people/objects) +- Activity labels on each camera during event frames +- 5-second context before first activity, 5 seconds after last +- Timeline progress bar showing event regions + playback cursor Usage: - python3 render_question_validation.py --qa-file qa.json --question-id 0 --output validated.mp4 - python3 render_question_validation.py --slot 2018-03-07.17-05.school --question-id 5 -v + python3 render_question_validation.py --slot 2018-03-07.17-05.school --question-id 0 + python3 render_question_validation.py --slot 2018-03-07.17-05.school --all + python3 render_question_validation.py --slot 2018-03-07.17-05.school --natural --all """ import argparse import json +import math import re import cv2 import numpy as np from pathlib import Path from collections import defaultdict import subprocess -from tempfile import TemporaryDirectory -from typing import Dict, List, Optional, Tuple +import shutil +from typing import Dict, List, Optional, Tuple, Set + +def _find_ffmpeg() -> Optional[str]: + """Find ffmpeg binary -- system PATH first, then imageio-ffmpeg fallback.""" + path = shutil.which("ffmpeg") + if path: + return path + try: + import imageio_ffmpeg + return imageio_ffmpeg.get_ffmpeg_exe() + except ImportError: + return None + +FFMPEG_BIN = _find_ffmpeg() + +# ============================================================================ # Paths +# ============================================================================ MEVA_MP4_ROOT = Path("/nas/mars/dataset/MEVA/mp4s") KITWARE_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware") KITWARE_TRAINING_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware-meva-training") QA_OUTPUT_DIR = Path("/home/ah66742/data/qa_pairs") -VIDEO_OUTPUT_DIR = Path("/home/ah66742/output/validation_videos") -VIDEO_OUTPUT_DIR.mkdir(parents=True, exist_ok=True) -# Color constants -COLOR_BOX = (0, 255, 0) # Green -COLOR_TEXT = (255, 255, 255) # White -COLOR_BGND = (50, 50, 50) # Dark gray background +def _get_video_output_dir(slot: str) -> Path: + """Return per-slot validation video directory.""" + d = QA_OUTPUT_DIR / slot / "validation_videos" + d.mkdir(parents=True, exist_ok=True) + return d + +# ============================================================================ +# Display constants +# ============================================================================ +CELL_W, CELL_H = 640, 360 # Each camera cell +PAD = 12 # Padding between cells +FONT = cv2.FONT_HERSHEY_SIMPLEX +FONT_AA = cv2.LINE_AA + +# Colors (BGR format) +COLOR_BG = (30, 30, 30) # Dark canvas background +COLOR_TEXT = (220, 220, 220) # Light gray text +COLOR_TITLE = (100, 200, 255) # Orange-yellow title +COLOR_CORRECT = (80, 255, 80) # Green for correct answer +COLOR_OPTION = (170, 170, 170) # Gray for regular options +COLOR_BOX_ACTIVE = (255, 180, 0) # BLUE highlight for relevant actors (BGR) +COLOR_BOX_BG = (0, 160, 0) # Green for background actors +COLOR_ACTIVITY_TXT = (255, 200, 50) # Bright blue for activity label text +COLOR_CONTEXT_TXT = (100, 100, 100) # Dim gray for context label +COLOR_CAM_LABEL = (0, 200, 255) # Orange camera label +COLOR_EVENT_BORDER = (255, 180, 0) # Blue border during events +COLOR_TL_BG = (60, 60, 60) # Timeline background +COLOR_TL_EVENT = (255, 180, 0) # Timeline event region (blue) +COLOR_TL_CURSOR = (0, 0, 255) # Red playback cursor +COLOR_SEPARATOR = (80, 80, 80) # Separator lines -# Geom parsing (copied from extract_entity_descriptions.py) +CONTEXT_PADDING_SEC = 5.0 # 5 seconds before/after activities +MAX_RENDER_FRAMES = 9000 # Up to 5 minutes at 30fps +DEFAULT_CONTEXT_FRAMES = 150 # For categories with no frame range (5s) + + +# ============================================================================ +# Geom parsing (regex approach -- fast, no YAML dependency) +# ============================================================================ _RE_ID1 = re.compile(r"['\"]?id1['\"]?\s*:\s*['\"]?(\d+)") _RE_TS0 = re.compile(r"['\"]?ts0['\"]?\s*:\s*['\"]?(\d+)") _RE_G0 = re.compile(r"['\"]?g0['\"]?\s*:\s*['\"]?(\d+)\s+(\d+)\s+(\d+)\s+(\d+)") @@ -45,37 +98,67 @@ def parse_geom_boxes(geom_file: Path) -> Dict[int, list]: """Extract bounding boxes from geom.yml by frame number. - + Returns {frame_number: [(x1, y1, x2, y2, actor_id), ...]} """ - boxes_by_frame = defaultdict(list) + boxes_by_frame: Dict[int, list] = defaultdict(list) if not geom_file.exists(): return boxes_by_frame - + with open(geom_file) as f: - content = f.read() - - # Parse lines (each line is a geom entry) - for line in content.split('\n'): - line = line.strip() - if not line or line.startswith('#'): - continue - - # Extract matches from this line - match_id1 = _RE_ID1.search(line) - match_ts0 = _RE_TS0.search(line) - match_g0 = _RE_G0.search(line) - - if match_id1 and match_ts0 and match_g0: - actor_id = int(match_id1.group(1)) - frame = int(match_ts0.group(1)) - x1, y1, x2, y2 = map(int, match_g0.groups()) - boxes_by_frame[frame].append((x1, y1, x2, y2, actor_id)) - + for line in f: + line = line.strip() + if not line or line.startswith('#'): + continue + m_id = _RE_ID1.search(line) + m_ts = _RE_TS0.search(line) + m_g0 = _RE_G0.search(line) + if m_id and m_ts and m_g0: + actor_id = int(m_id.group(1)) + frame = int(m_ts.group(1)) + x1, y1, x2, y2 = map(int, m_g0.groups()) + boxes_by_frame[frame].append((x1, y1, x2, y2, actor_id)) + return dict(boxes_by_frame) -def find_geom_file(date: str, hour: str, start_time: str, site: str, camera: str) -> Path: +# ============================================================================ +# File finders +# ============================================================================ + +def _slot_dir_name(date: str, start_time: str, site: str) -> str: + """Build slot directory name using HH-MM format (no seconds).""" + parts = start_time.split("-") + hh_mm = f"{parts[0]}-{parts[1]}" if len(parts) >= 2 else start_time + return f"{date}.{hh_mm}.{site}" + + +def find_mp4(date: str, hour: str, start_time: str, site: str, + end_time: str, camera: str) -> Optional[Path]: + """Find MP4 file for a camera.""" + slot_name = _slot_dir_name(date, start_time, site) + slot_dir = MEVA_MP4_ROOT / date / hour / slot_name + if not slot_dir.exists(): + parent = MEVA_MP4_ROOT / date / hour + if parent.exists(): + candidates = list(parent.glob(f"{date}.*{site}")) + if candidates: + slot_dir = candidates[0] + else: + return None + else: + return None + + pattern = f"*{camera}*.r13.mp4" + matches = list(slot_dir.glob(pattern)) + if matches: + return matches[0] + matches = list(slot_dir.glob(f"*{camera}*.mp4")) + return matches[0] if matches else None + + +def find_geom_file(date: str, hour: str, start_time: str, + site: str, camera: str) -> Optional[Path]: """Find geom.yml file for a camera.""" prefix = f"{date}.{start_time}" for kitware_dir in [KITWARE_BASE, KITWARE_TRAINING_BASE]: @@ -88,326 +171,757 @@ def find_geom_file(date: str, hour: str, start_time: str, site: str, camera: str return None -def find_mp4(date: str, hour: str, start_time: str, site: str, end_time: str, camera: str) -> Path: - """Find MP4 file for a camera.""" - slot_dir = MEVA_MP4_ROOT / date / hour / f"{date}.{start_time}.{site}" - if not slot_dir.exists(): - return None - - # Try to find exact match or fuzzy match - pattern = f"{date}.{start_time}*.{end_time}*.{site}.{camera}*.r13.mp4" - matches = list(slot_dir.glob(pattern)) - if matches: - return matches[0] - return None - - -def extract_clip_timing(clip_file: str) -> tuple: - """Extract date, hour, start_time, end_time, site from clip filename.""" - # Format: 2018-03-07.17-05-00.17-10-00.school.G330.r13.mp4 - parts = clip_file.replace(".r13.mp4", "").split(".") +def extract_clip_timing(clip_file: str) -> Optional[Tuple[str, str, str, str, str, str]]: + """Parse clip filename -> (date, hour, start_time, end_time, site, camera).""" + name = Path(clip_file).name + for suffix in [".r13.mp4", ".r13.avi", ".mp4", ".avi"]: + if name.endswith(suffix): + name = name[: -len(suffix)] + break + parts = name.split(".") if len(parts) >= 5: - date = parts[0] - start_time = parts[1] - end_time = parts[2] - site = parts[3] + date, start_time, end_time, site, camera = parts[0], parts[1], parts[2], parts[3], parts[4] hour = start_time.split("-")[0] - return date, hour, start_time, end_time, site + return date, hour, start_time, end_time, site, camera return None -def load_video_frames(mp4_path: Path, frame_start: int, frame_end: int, target_w: int = 640, target_h: int = 360): - """Load video frames as numpy arrays, resized to target dimensions.""" - if not mp4_path.exists(): - return None, None - +# ============================================================================ +# Event extraction -- handles ALL debug_info formats +# ============================================================================ + +def _extract_events(q: dict, slot: str) -> List[dict]: + """Extract a unified list of event dicts from any question category. + + Each returned event dict has at minimum: + camera, clip_file, frame_range, fps, label, actor_ids + """ + debug = q.get("debug_info", {}) + category = q.get("category", "") + events: List[dict] = [] + + # --- Pattern 1: top-level event dicts (temporal, perception, spatial, best_camera) --- + for key, val in debug.items(): + if isinstance(val, dict) and "camera" in val and val.get("clip_file"): + events.append({ + "camera": val["camera"], + "clip_file": val["clip_file"], + "frame_range": val.get("frame_range"), + "fps": val.get("fps", 30.0), + "actor_ids": val.get("actor_ids", []), + "label": val.get("activity", key), + }) + + # --- Pattern 2: events LIST (event_ordering) --- + if "events" in debug and isinstance(debug["events"], list): + for ev in debug["events"]: + if isinstance(ev, dict) and "camera" in ev and ev.get("clip_file"): + events.append({ + "camera": ev["camera"], + "clip_file": ev["clip_file"], + "frame_range": ev.get("frame_range"), + "fps": ev.get("fps", 30.0), + "actor_ids": ev.get("actor_ids", []), + "label": ev.get("activity", "event"), + }) + + # --- Pattern 3: no events, but clip_files list (summarization, counting) --- + if not events and "clip_files" in debug: + for cf in debug["clip_files"]: + timing = extract_clip_timing(cf) + if timing: + _date, _hour, _st, _et, _site, _camera = timing + events.append({ + "camera": _camera, + "clip_file": cf, + "frame_range": None, + "fps": 30.0, + "actor_ids": [], + "label": category, + }) + + # --- Pattern 4: no events, no clip_files, but cameras list --- + if not events: + cameras = q.get("requires_cameras", []) + slot_parts = slot.split(".") + if len(slot_parts) >= 3: + date = slot_parts[0] + hhmm = slot_parts[1] + site = slot_parts[2] + hour = hhmm.split("-")[0] + for cam in cameras: + mp4 = find_mp4(date, hour, f"{hhmm}-00", site, "", cam) + if mp4: + events.append({ + "camera": cam, + "clip_file": mp4.name, + "frame_range": None, + "fps": 30.0, + "actor_ids": [], + "label": category, + }) + + return events + + +# ============================================================================ +# Text wrapping utilities (for full question display in header) +# ============================================================================ + +def _wrap_text(text: str, max_chars: int = 95) -> List[str]: + """Word-wrap text to max_chars width.""" + words = text.split() + lines = [] + line = "" + for w in words: + if line and len(line) + 1 + len(w) > max_chars: + lines.append(line) + line = w + else: + line = (line + " " + w) if line else w + if line: + lines.append(line) + return lines or [""] + + +def _compute_header_layout(q_text: str, options: list, + correct_idx: int, category: str, + q_idx: int, canvas_w: int + ) -> Tuple[list, int]: + """Build header text lines and compute total header height. + + Returns (lines, header_height) where each line is (style, text). + style in {"title", "question", "option", "correct", "gap"} + """ + LINE_H = 22 + # Compute max chars based on canvas width (font scale 0.5 ~ 10px/char) + max_chars = max(60, int((canvas_w - 2 * PAD) / 9.5)) + + lines = [] + # Title + lines.append(("title", f"Q{q_idx}: {category.upper()}")) + lines.append(("gap", "")) + + # Full question text (word-wrapped, never truncated) + for wl in _wrap_text(q_text, max_chars): + lines.append(("question", wl)) + lines.append(("gap", "")) + + # Options with A/B/C/D labels + labels = "ABCDEFGH" + for i, opt in enumerate(options[:len(labels)]): + suffix = " << CORRECT" if i == correct_idx else "" + opt_full = f" {labels[i]}) {opt}{suffix}" + for ol in _wrap_text(opt_full, max_chars): + style = "correct" if i == correct_idx else "option" + lines.append((style, ol)) + + header_h = (len(lines) + 2) * LINE_H # +2 for top/bottom margins + if header_h % 2: + header_h += 1 + return lines, header_h + + +def _draw_header(canvas: np.ndarray, lines: list): + """Render header text lines onto the canvas.""" + LINE_H = 22 + y = LINE_H + 6 # top margin + + for style, text in lines: + if style == "gap": + y += 8 + continue + + if style == "title": + color, scale, thick = COLOR_TITLE, 0.6, 2 + elif style == "question": + color, scale, thick = COLOR_TEXT, 0.5, 1 + elif style == "correct": + color, scale, thick = COLOR_CORRECT, 0.48, 2 + else: # "option" + color, scale, thick = COLOR_OPTION, 0.45, 1 + + cv2.putText(canvas, text, (PAD + 4, y), FONT, scale, color, thick, FONT_AA) + y += LINE_H + + +# ============================================================================ +# Frame loading +# ============================================================================ + +def load_video_segment(mp4_path: Path, + frame_start: int, + frame_end: int, + target_w: int = CELL_W, + target_h: int = CELL_H + ) -> Tuple[Optional[List[np.ndarray]], float, float, float]: + """Load a range of frames, resized to target dims. + + Returns (frames, fps, scale_x, scale_y) or (None, 0, 0, 0). + scale_x/y map original coords -> display coords for box scaling. + """ + if not mp4_path or not mp4_path.exists(): + return None, 0, 0, 0 + cap = cv2.VideoCapture(str(mp4_path)) if not cap.isOpened(): - return None, None - + return None, 0, 0, 0 + fps = cap.get(cv2.CAP_PROP_FPS) or 30.0 - + orig_w = cap.get(cv2.CAP_PROP_FRAME_WIDTH) or 1920 + orig_h = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) or 1072 + total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + + frame_start = max(0, frame_start) + frame_end = min(frame_end, total_frames - 1) + n_frames = min(frame_end - frame_start + 1, MAX_RENDER_FRAMES) + + scale_x = target_w / orig_w + scale_y = target_h / orig_h + frames = [] cap.set(cv2.CAP_PROP_POS_FRAMES, frame_start) - for i in range(frame_end - frame_start + 1): + for _ in range(n_frames): ret, frame = cap.read() if not ret: break - # Resize to target - frame = cv2.resize(frame, (target_w, target_h)) - frames.append(frame) - + frames.append(cv2.resize(frame, (target_w, target_h))) + cap.release() - return frames, fps + return (frames, fps, scale_x, scale_y) if frames else (None, 0, 0, 0) + + +# ============================================================================ +# Bounding box overlay with activity highlighting +# ============================================================================ + +def overlay_boxes(frame: np.ndarray, boxes: list, + scale_x: float, scale_y: float, + highlight_ids: Optional[Set[int]] = None, + is_event_frame: bool = False) -> np.ndarray: + """Draw scaled bounding boxes on a frame. + During event frames: + - Actors in highlight_ids (or ALL if highlight_ids empty): BLUE, thick + - Other actors: green, thin + During context frames: + - All actors: green, thin + """ + out = frame.copy() + for (x1, y1, x2, y2, actor_id) in boxes: + sx1 = max(0, int(x1 * scale_x)) + sy1 = max(0, int(y1 * scale_y)) + sx2 = min(out.shape[1] - 1, int(x2 * scale_x)) + sy2 = min(out.shape[0] - 1, int(y2 * scale_y)) + + if is_event_frame: + # Highlight if actor is relevant (or if we have no specific IDs, highlight all) + is_relevant = (not highlight_ids) or (actor_id in highlight_ids) + if is_relevant: + color = COLOR_BOX_ACTIVE + thickness = 3 + label = f"A{actor_id} *" + else: + color = COLOR_BOX_BG + thickness = 1 + label = f"A{actor_id}" + else: + color = COLOR_BOX_BG + thickness = 1 + label = f"A{actor_id}" -def overlay_boxes(frame: np.ndarray, boxes: list, actor_ids: list = None) -> np.ndarray: - """Draw bounding boxes on frame.""" - output = frame.copy() - for box in boxes: - x1, y1, x2, y2, actor_id = box - # Scale boxes to match resized frame (this is approximate — better to pass scale factor) - label = f"A{actor_id}" - cv2.rectangle(output, (int(x1), int(y1)), (int(x2), int(y2)), COLOR_BOX, 2) - cv2.putText(output, label, (int(x1), int(y1) - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, COLOR_TEXT, 1) - return output + cv2.rectangle(out, (sx1, sy1), (sx2, sy2), color, thickness) + cv2.putText(out, label, (sx1, max(sy1 - 5, 12)), + FONT, 0.4, color, 1, FONT_AA) + return out -def compose_grid(frames_dict: Dict[str, list], cameras: list, fps: float = 30) -> list: - """Compose multiple camera views into a grid layout. - - Returns list of composed frames (all cameras aligned by frame index). +# ============================================================================ +# Grid composition with header, activity labels, and timeline +# ============================================================================ + +def compose_grid(frames_dict: Dict[str, List[np.ndarray]], + cam_metadata: Dict[str, dict], + q_text: str, + options: list, + correct_idx: int, + category: str, + q_idx: int, + fps: float = 30.0) -> List[np.ndarray]: + """Compose multi-camera views into a labelled grid with: + - Dynamic word-wrapped header (question + options + correct answer) + - Camera labels with frame counters + - Activity labels during event frames, [CONTEXT] otherwise + - Blue border around camera cell during events + - Timeline progress bar at bottom with event regions """ - # Grid layout: 2x2 for 4 cameras, 1x2 for 2, etc. + cameras = sorted(frames_dict.keys()) n_cams = len(cameras) - if n_cams <= 2: - grid_h, grid_w = 1, n_cams + if n_cams == 0: + return [] + + # Grid layout + if n_cams == 1: + grid_cols, grid_rows = 1, 1 + elif n_cams == 2: + grid_cols, grid_rows = 2, 1 elif n_cams <= 4: - grid_h, grid_w = 2, 2 + grid_cols, grid_rows = 2, 2 elif n_cams <= 6: - grid_h, grid_w = 2, 3 + grid_cols, grid_rows = 3, 2 else: - grid_h, grid_w = 3, 3 - - # Frame dimensions - frame_h, frame_w = 360, 640 - comp_h = grid_h * frame_h + 30 * (grid_h + 1) # 30px padding - comp_w = grid_w * frame_w + 30 * (grid_w + 1) - - # Get the number of frames (min across all cameras) - n_frames = min(len(v) for v in frames_dict.values() if v) if frames_dict else 0 - - composed_frames = [] - for frame_idx in range(n_frames): - # Create blank canvas - canvas = np.ones((comp_h, comp_w, 3), dtype=np.uint8) * 50 - - for cam_idx, camera in enumerate(cameras): - if camera not in frames_dict or not frames_dict[camera]: + grid_cols = min(5, math.ceil(math.sqrt(n_cams))) + grid_rows = math.ceil(n_cams / grid_cols) + + # Canvas dimensions + grid_w = grid_cols * CELL_W + PAD * (grid_cols + 1) + grid_h = grid_rows * CELL_H + PAD * (grid_rows + 1) + TIMELINE_H = 32 + + # Compute header + canvas_w = grid_w + header_lines, header_h = _compute_header_layout( + q_text, options, correct_idx, category, q_idx, canvas_w) + + canvas_h = header_h + grid_h + TIMELINE_H + if canvas_w % 2: + canvas_w += 1 + if canvas_h % 2: + canvas_h += 1 + + # Pad shorter camera feeds with last-frame freeze + max_frames = max(len(v) for v in frames_dict.values()) + for cam in cameras: + deficit = max_frames - len(frames_dict[cam]) + if deficit > 0: + frames_dict[cam].extend([frames_dict[cam][-1]] * deficit) + + # Precompute per-camera event local frame ranges (relative to loaded segment) + cam_event_locals: Dict[str, List[Tuple[int, int, str]]] = {} + for cam in cameras: + meta = cam_metadata.get(cam, {}) + f_offset = meta.get("f_start", 0) + event_ranges = meta.get("event_ranges", []) + local_ranges = [] + for er in event_ranges: + fr = er.get("frame_range") + if fr: + local_s = fr[0] - f_offset + local_e = fr[1] - f_offset + local_ranges.append((local_s, local_e, er.get("activity", ""))) + cam_event_locals[cam] = local_ranges + + composed = [] + for fi in range(max_frames): + canvas = np.full((canvas_h, canvas_w, 3), COLOR_BG, dtype=np.uint8) + + # --- Header --- + _draw_header(canvas, header_lines) + + # Separator line below header + cv2.line(canvas, (PAD, header_h - 4), (canvas_w - PAD, header_h - 4), + COLOR_SEPARATOR, 1) + + # --- Camera cells --- + for ci, cam in enumerate(cameras): + row, col = ci // grid_cols, ci % grid_cols + x = PAD + col * (CELL_W + PAD) + y = header_h + PAD + row * (CELL_H + PAD) + + # Safety: skip if cell outside canvas + if y + CELL_H > canvas_h - TIMELINE_H or x + CELL_W > canvas_w: continue - - frame = frames_dict[camera][frame_idx] - grid_row = cam_idx // grid_w - grid_col = cam_idx % grid_w - - x = 30 + grid_col * (frame_w + 30) - y = 30 + grid_row * (frame_h + 30) - - # Place frame - canvas[y:y + frame_h, x:x + frame_w] = frame - - # Add camera label - label = f"{camera} [{frame_idx+1}/{n_frames}]" - cv2.putText(canvas, label, (x + 10, y + 25), cv2.FONT_HERSHEY_SIMPLEX, 0.6, COLOR_TEXT, 2) - - composed_frames.append(canvas) - - return composed_frames - - -def write_video(frames: list, output_path: Path, fps: float = 30) -> bool: - """Write frames to MP4 video file.""" + + frame = frames_dict[cam][fi] + canvas[y:y + CELL_H, x:x + CELL_W] = frame + + # Check if this frame is during an event on this camera + ev_active = False + ev_label = "" + for ls, le, act_label in cam_event_locals.get(cam, []): + if ls <= fi <= le: + ev_active = True + ev_label = act_label + break + + # Camera label (top-left) + ts_sec = fi / fps + cam_label = f"{cam} [{fi + 1}/{max_frames}] {ts_sec:.1f}s" + cv2.putText(canvas, cam_label, (x + 8, y + 22), + FONT, 0.5, COLOR_CAM_LABEL, 2, FONT_AA) + + if ev_active: + # Blue border around cell during event + cv2.rectangle(canvas, (x, y), (x + CELL_W - 1, y + CELL_H - 1), + COLOR_EVENT_BORDER, 3) + + # Activity label at bottom of cell + act_display = f">> {ev_label}" + # Dark background for readability + cv2.rectangle(canvas, (x, y + CELL_H - 28), (x + CELL_W, y + CELL_H), + (0, 0, 0), -1) + cv2.putText(canvas, act_display, (x + 8, y + CELL_H - 8), + FONT, 0.5, COLOR_ACTIVITY_TXT, 1, FONT_AA) + elif cam_event_locals.get(cam): + # Context label at bottom (only if this camera has events) + cv2.putText(canvas, "[CONTEXT]", (x + 8, y + CELL_H - 8), + FONT, 0.4, COLOR_CONTEXT_TXT, 1, FONT_AA) + + # --- Timeline bar --- + tl_y = canvas_h - TIMELINE_H + tl_left = PAD + 4 + tl_right = canvas_w - PAD - 4 + tl_width = tl_right - tl_left + + # Timeline background + cv2.rectangle(canvas, (PAD, tl_y + 4), (canvas_w - PAD, tl_y + TIMELINE_H - 4), + COLOR_TL_BG, -1) + + # Draw event regions on timeline + if max_frames > 1: + for cam, locs in cam_event_locals.items(): + for ls, le, _ in locs: + x1 = tl_left + int(max(0, ls) / (max_frames - 1) * tl_width) + x2 = tl_left + int(min(max_frames - 1, le) / (max_frames - 1) * tl_width) + x1 = max(tl_left, min(tl_right, x1)) + x2 = max(tl_left, min(tl_right, x2)) + cv2.rectangle(canvas, (x1, tl_y + 6), (x2, tl_y + TIMELINE_H - 6), + COLOR_TL_EVENT, -1) + + # Playback cursor + cursor_x = tl_left + int(fi / (max_frames - 1) * tl_width) + cv2.line(canvas, (cursor_x, tl_y + 2), (cursor_x, tl_y + TIMELINE_H - 2), + COLOR_TL_CURSOR, 2) + + # "CONTEXT" / "EVENT" text on timeline + any_active = any( + any(ls <= fi <= le for ls, le, _ in locs) + for locs in cam_event_locals.values() + ) + status_txt = "ACTIVITY" if any_active else "CONTEXT" + cv2.putText(canvas, status_txt, (tl_left + tl_width + 8, tl_y + TIMELINE_H - 10), + FONT, 0.35, COLOR_TEXT, 1, FONT_AA) + + composed.append(canvas) + + return composed + + +# ============================================================================ +# Video writer +# ============================================================================ + +def write_video(frames: List[np.ndarray], output_path: Path, fps: float = 30.0) -> bool: + """Write frames to MP4 -- uses ffmpeg if available, cv2.VideoWriter fallback.""" if not frames: return False - + h, w = frames[0].shape[:2] - - # Use ffmpeg for better codec support - cmd = [ - 'ffmpeg', - '-f', 'rawvideo', - '-pix_fmt', 'bgr24', - '-s', f'{w}x{h}', - '-r', str(fps), - '-i', '-', - '-c:v', 'libx264', - '-crf', '23', - '-pix_fmt', 'yuv420p', - '-y', - str(output_path) - ] - - proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE) - for frame in frames: - proc.stdin.write(frame.tobytes()) - proc.stdin.close() - proc.wait() - - return output_path.exists() - - -def render_question(qa_data: dict, question_idx: int, output_path: Path = None): - """Render a single question into a validation video. - - Collects all events from debug_info and renders them in a single timeline grid. + if w % 2: + w -= 1 + if h % 2: + h -= 1 + + output_path.parent.mkdir(parents=True, exist_ok=True) + + if FFMPEG_BIN: + cmd = [ + FFMPEG_BIN, '-hide_banner', '-loglevel', 'error', + '-f', 'rawvideo', '-pix_fmt', 'bgr24', + '-s', f'{w}x{h}', '-r', str(fps), + '-i', '-', + '-c:v', 'libx264', '-crf', '26', '-preset', 'fast', + '-pix_fmt', 'yuv420p', '-y', str(output_path), + ] + proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE) + for frame in frames: + proc.stdin.write(frame[:h, :w].tobytes()) + proc.stdin.close() + proc.wait() + if proc.returncode != 0: + stderr = proc.stderr.read().decode() + print(f" ffmpeg error: {stderr[:200]}") + return False + return output_path.exists() + else: + fourcc = cv2.VideoWriter_fourcc(*'mp4v') + writer = cv2.VideoWriter(str(output_path), fourcc, fps, (w, h)) + if not writer.isOpened(): + print(f" cv2.VideoWriter failed to open") + return False + for frame in frames: + writer.write(frame[:h, :w]) + writer.release() + return output_path.exists() + + +# ============================================================================ +# Main render function +# ============================================================================ + +def render_question(qa_data: dict, question_idx: int, + output_path: Path = None, verbose: bool = False) -> Optional[Path]: + """Render a single question into a self-contained validation video. + + Features: + - Full question text + all options + correct answer highlighted + - Blue bounding boxes on actors involved in the activity + - 5-second context before/after events + - Activity labels and timeline bar """ - if question_idx >= len(qa_data["qa_pairs"]): - print(f"ERROR: Question index {question_idx} out of range (max {len(qa_data['qa_pairs']) - 1})") + qa_pairs = qa_data.get("qa_pairs", []) + if question_idx >= len(qa_pairs): + print(f" ERROR: Q{question_idx} out of range (max {len(qa_pairs) - 1})") return None - - q = qa_data["qa_pairs"][question_idx] - slot = qa_data["slot"] - cameras = q.get("requires_cameras", []) - - print(f"\n{'='*60}") - print(f"Rendering Q{question_idx}: {q['category'].upper()}") - print(f"Question: {q['question_template'][:80]}...") - print(f"Cameras: {cameras}") - print(f"{'='*60}") - - # Parse debug_info to extract events - debug = q.get("debug_info", {}) - if not debug: - print("ERROR: No debug_info in question") - return None - - # Collect events and their timing - events = {} - frame_ranges_by_camera = defaultdict(list) - timings_by_camera = {} - - for key, value in debug.items(): - if key in ["gap_sec", "connection_type", "connection_strength", "connection_score", - "relationship", "cluster_id", "mevid_validated", "mevid_person_id"]: - continue # Skip metadata keys - - if isinstance(value, dict) and "camera" in value: - camera = value["camera"] - frame_range = value.get("frame_range") - clip_file = value.get("clip_file") - fps = value.get("fps", 30.0) - - if frame_range and clip_file: - events[key] = value - frame_ranges_by_camera[camera].append((frame_range[0], frame_range[1], value.get("activity", key))) - timings_by_camera[camera] = (clip_file, fps) - + + q = qa_pairs[question_idx] + slot = qa_data.get("slot", "unknown") + category = q.get("category", "unknown") + q_text = q.get("naturalized_question") or q.get("question_template", "") + answer_text = q.get("correct_answer") or q.get("answer", "") + options = q.get("options", []) + correct_idx = q.get("correct_answer_index", -1) + + print(f"\n{'=' * 60}") + print(f"Q{question_idx}: {category.upper()}") + print(f" {q_text[:120]}...") + print(f" Answer: {answer_text[:80]}") + + # Extract events from debug_info + events = _extract_events(q, slot) if not events: - print("ERROR: No events in debug_info") + print(f" SKIP: No video events found in debug_info") return None - - # Compute overall frame range for each camera (covers all events for that camera) - frame_bounds = {} - for camera, ranges in frame_ranges_by_camera.items(): - if ranges: - min_frame = min(r[0] for r in ranges) - max_frame = max(r[1] for r in ranges) - frame_bounds[camera] = (min_frame, max_frame) - - print(f"Events: {len(events)} ({', '.join(events.keys())})") - for camera, frame_range in frame_bounds.items(): - frame_start, frame_end = frame_range - clip_file, fps = timings_by_camera[camera] - duration_sec = (frame_end - frame_start) / fps - print(f" {camera}: frames {frame_start}-{frame_end} ({duration_sec:.1f}s) from {Path(clip_file).name}") - - # Load frames for each camera - frames_dict = {} - geom_boxes_dict = {} - frame_offsets = {} # Map camera -> (date, hour, start_time, end_time, site, frame_offset) - - for camera in frame_bounds: - print(f" Loading {camera}...", end="", flush=True) - - clip_file, fps = timings_by_camera[camera] + + # Group events by camera + cam_events: Dict[str, list] = defaultdict(list) + for ev in events: + cam_events[ev["camera"]].append(ev) + + # Build per-camera metadata with 5-second padding + cam_info: Dict[str, dict] = {} + for cam, evts in cam_events.items(): + clip_file = evts[0]["clip_file"] + fps = evts[0]["fps"] timing = extract_clip_timing(clip_file) if not timing: - print(f" [ERROR: Could not parse clip file: {clip_file}]") + print(f" WARN: Cannot parse clip_file for {cam}: {clip_file}") continue - - date, hour, start_time, end_time, site = timing - frame_start, frame_end = frame_bounds[camera] - - # Find MP4 - mp4_path = find_mp4(date, hour, start_time, site, end_time, camera) + + date, hour, start_time, end_time, site, _ = timing + + # Individual event frame ranges for this camera + event_ranges = [] + for e in evts: + if e.get("frame_range"): + event_ranges.append({ + "frame_range": tuple(e["frame_range"]), + "actor_ids": set(e.get("actor_ids", [])), + "activity": e.get("label", "activity"), + }) + + # Compute loading range: union of all events + 5s padding + ranges = [er["frame_range"] for er in event_ranges] + if ranges: + padding_frames = int(fps * CONTEXT_PADDING_SEC) + f_start = max(0, min(r[0] for r in ranges) - padding_frames) + f_end = max(r[1] for r in ranges) + padding_frames + else: + # No frame range (summarization/counting): show first 10 seconds + f_start = 0 + f_end = int(fps * DEFAULT_CONTEXT_FRAMES / fps * 2) + + # Union of all highlight actor IDs for this camera + all_highlight_ids: Set[int] = set() + for er in event_ranges: + all_highlight_ids.update(er["actor_ids"]) + + cam_info[cam] = { + "clip_file": clip_file, + "fps": fps, + "date": date, + "hour": hour, + "start_time": start_time, + "end_time": end_time, + "site": site, + "f_start": f_start, + "f_end": f_end, + "event_ranges": event_ranges, + "highlight_ids": all_highlight_ids, + } + + if not cam_info: + print(f" SKIP: No parseable camera info") + return None + + # Load frames + geom for each camera + frames_dict: Dict[str, List[np.ndarray]] = {} + scales: Dict[str, Tuple[float, float]] = {} + geom_dict: Dict[str, Dict[int, list]] = {} + + for cam, info in cam_info.items(): + mp4_path = find_mp4(info["date"], info["hour"], info["start_time"], + info["site"], info["end_time"], cam) if not mp4_path: - print(f" [NOT FOUND]") + if verbose: + print(f" {cam}: MP4 NOT FOUND") continue - - # Load frames - frames, vid_fps = load_video_frames(mp4_path, frame_start, frame_end) + + frames, fps, sx, sy = load_video_segment( + mp4_path, info["f_start"], info["f_end"]) if not frames: - print(" [FAILED TO LOAD]") + if verbose: + print(f" {cam}: FAILED TO LOAD") continue - - frames_dict[camera] = frames - frame_offsets[camera] = (date, hour, start_time, end_time, site, frame_start) - - # Load geom boxes - geom_file = find_geom_file(date, hour, start_time, site, camera) - if geom_file: - boxes_by_frame = parse_geom_boxes(geom_file) - geom_boxes_dict[camera] = boxes_by_frame - print(f" [OK: {len(frames)} frames, {len(boxes_by_frame)} geom frames]") - else: - print(f" [OK: {len(frames)} frames, no geom]") - + + frames_dict[cam] = frames + scales[cam] = (sx, sy) + + # Load geom + geom_path = find_geom_file(info["date"], info["hour"], + info["start_time"], info["site"], cam) + if geom_path: + geom_dict[cam] = parse_geom_boxes(geom_path) + + n_geom = len(geom_dict.get(cam, {})) + print(f" {cam}: {len(frames)} frames " + f"(f{info['f_start']}-{info['f_end']}) | " + f"geom={n_geom} frames | {mp4_path.name}") + if not frames_dict: - print("ERROR: No frames loaded") + print(f" ERROR: No frames loaded for any camera") + return None + + # ---- Overlay bounding boxes with event-aware highlighting ---- + for cam in frames_dict: + boxes_by_frame = geom_dict.get(cam, {}) + if not boxes_by_frame: + continue + + sx, sy = scales[cam] + info = cam_info[cam] + f_offset = info["f_start"] + event_ranges = info["event_ranges"] + highlight_ids = info["highlight_ids"] + + for fi in range(len(frames_dict[cam])): + actual_frame = f_offset + fi + if actual_frame not in boxes_by_frame: + continue + + # Check if this frame is within any event range on this camera + is_event = any( + er["frame_range"][0] <= actual_frame <= er["frame_range"][1] + for er in event_ranges + ) + + frames_dict[cam][fi] = overlay_boxes( + frames_dict[cam][fi], + boxes_by_frame[actual_frame], + sx, sy, + highlight_ids=highlight_ids if is_event else None, + is_event_frame=is_event, + ) + + # ---- Compose grid with header, labels, timeline ---- + composed = compose_grid( + frames_dict, cam_info, + q_text, options, correct_idx, + category, question_idx, fps=30.0 + ) + if not composed: + print(f" ERROR: Grid composition produced no frames") return None - - # Overlay geom boxes on frames - print(f" Overlaying geom boxes...") - for camera in frames_dict: - boxes_by_frame = geom_boxes_dict.get(camera, {}) - frame_offset = frame_offsets[camera][5] # frame_start offset - for frame_idx, frame in enumerate(frames_dict[camera]): - actual_frame_num = frame_offset + frame_idx - if actual_frame_num in boxes_by_frame: - frames_dict[camera][frame_idx] = overlay_boxes(frame, boxes_by_frame[actual_frame_num]) - - # Compose grid - print(f" Composing grid for {len(cameras)} cameras...") - composed = compose_grid(frames_dict, cameras, 30.0) - - # Write video + + # Output path if not output_path: - output_path = VIDEO_OUTPUT_DIR / f"{slot}_q{question_idx}_{q['category']}.mp4" - - print(f" Writing to {output_path}...", end="", flush=True) + vid_dir = _get_video_output_dir(slot) + output_path = vid_dir / f"{slot}_q{question_idx}_{category}.mp4" + + print(f" Writing {len(composed)} frames -> {output_path.name} ...", end="", flush=True) if write_video(composed, output_path, 30.0): - print(" [OK]") + sz_mb = output_path.stat().st_size / (1024 * 1024) + duration_s = len(composed) / 30.0 + print(f" OK ({sz_mb:.1f} MB, {duration_s:.1f}s)") return output_path else: - print(" [FAILED]") + print(f" FAILED") return None +# ============================================================================ +# CLI +# ============================================================================ + def main(): - parser = argparse.ArgumentParser(description="Render question validation videos") + parser = argparse.ArgumentParser( + description="Render question validation videos with activity highlighting") parser.add_argument("--slot", help="Slot name (e.g., 2018-03-07.17-05.school)") parser.add_argument("--qa-file", help="QA JSON file path") - parser.add_argument("--question-id", type=int, help="Question index to render") - parser.add_argument("--output", "-o", help="Output video path") + parser.add_argument("--question-id", type=int, help="Question index to render (0-based)") + parser.add_argument("--all", action="store_true", help="Render ALL questions in the file") + parser.add_argument("--categories", nargs="+", + help="Only render these categories (e.g., temporal spatial)") + parser.add_argument("--output", "-o", help="Output video path (single question only)") + parser.add_argument("--natural", action="store_true", + help="Use .final.naturalized.json instead of .final.raw.json") parser.add_argument("-v", "--verbose", action="store_true") args = parser.parse_args() - - # Load QA data + + # Resolve QA file if args.qa_file: qa_path = Path(args.qa_file) elif args.slot: - qa_path = QA_OUTPUT_DIR / f"{args.slot}.final.raw.json" + suffix = ".final.naturalized.json" if args.natural else ".final.raw.json" + qa_path = QA_OUTPUT_DIR / f"{args.slot}{suffix}" + if not qa_path.exists() and args.natural: + qa_path = QA_OUTPUT_DIR / f"{args.slot}.final.raw.json" + print(f" (naturalized not found, falling back to raw)") else: parser.error("Must provide --slot or --qa-file") - + if not qa_path.exists(): print(f"ERROR: {qa_path} not found") return - + with open(qa_path) as f: qa_data = json.load(f) - - print(f"Loaded: {qa_path}") - print(f"Slot: {qa_data['slot']}") - print(f"Total questions: {qa_data.get('total_questions', len(qa_data['qa_pairs']))}") - - q_idx = args.question_id if args.question_id is not None else 0 - - output = render_question(qa_data, q_idx, Path(args.output) if args.output else None) - if output: - print(f"\nSaved: {output}") - if args.verbose: - print(f"Play with: ffplay {output}") + + slot = qa_data.get("slot", "unknown") + qa_pairs = qa_data.get("qa_pairs", []) + print(f"Loaded: {qa_path.name}") + print(f"Slot: {slot}") + print(f"Questions: {len(qa_pairs)}") + + # Determine which questions to render + if args.all: + indices = list(range(len(qa_pairs))) + elif args.question_id is not None: + indices = [args.question_id] + else: + indices = [0] + + if args.categories: + cats = set(c.lower() for c in args.categories) + indices = [i for i in indices if qa_pairs[i].get("category", "").lower() in cats] + + print(f"Rendering: {len(indices)} question(s)") + + successes, failures = 0, 0 + for idx in indices: + out = Path(args.output) if (args.output and len(indices) == 1) else None + result = render_question(qa_data, idx, out, verbose=args.verbose) + if result: + successes += 1 + else: + failures += 1 + + vid_dir = _get_video_output_dir(slot) + print(f"\n{'=' * 60}") + print(f"Done: {successes} rendered, {failures} skipped/failed") + print(f"Output dir: {vid_dir}") + if successes: + print(f"Play: ffplay {vid_dir}/{slot}_q*") if __name__ == "__main__": diff --git a/meva/scripts/v10/render_question_validation.py.bak b/meva/scripts/v10/render_question_validation.py.bak new file mode 100644 index 0000000..3efeac5 --- /dev/null +++ b/meva/scripts/v10/render_question_validation.py.bak @@ -0,0 +1,678 @@ +#!/usr/bin/env python3 +""" +Render question validation videos: multi-camera grid with geom overlays. + +Creates a video showing all cameras in a question side-by-side/grid, with: +- Bounding boxes from geom.yml overlayed (scaled to display resolution) +- Time span limited to the answer frame range +- Camera labels and timestamps +- Question text overlay at the bottom + +Handles ALL question categories: + temporal → event_a / event_b dicts + event_ordering→ debug_info["events"] list + perception → representative_event dict + spatial → entity_a / entity_b dicts + summarization → clip_files list (no events) + counting → clip_files or cameras_involved (no events) + best_camera → representative_event dict + +Usage: + python3 render_question_validation.py --slot 2018-03-07.17-05.school --question-id 0 + python3 render_question_validation.py --slot 2018-03-07.17-05.school --all + python3 render_question_validation.py --qa-file qa.json --question-id 5 -v +""" + +import argparse +import json +import re +import cv2 +import numpy as np +from pathlib import Path +from collections import defaultdict +import subprocess +import shutil +from typing import Dict, List, Optional, Tuple + + +def _find_ffmpeg() -> Optional[str]: + """Find ffmpeg binary — system PATH first, then imageio-ffmpeg fallback.""" + path = shutil.which("ffmpeg") + if path: + return path + try: + import imageio_ffmpeg + return imageio_ffmpeg.get_ffmpeg_exe() + except ImportError: + return None + +FFMPEG_BIN = _find_ffmpeg() + +# ============================================================================ +# Paths +# ============================================================================ +MEVA_MP4_ROOT = Path("/nas/mars/dataset/MEVA/mp4s") +KITWARE_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware") +KITWARE_TRAINING_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware-meva-training") +QA_OUTPUT_DIR = Path("/home/ah66742/data/qa_pairs") +VIDEO_OUTPUT_DIR = Path("/home/ah66742/output/validation_videos") + +VIDEO_OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + +# ============================================================================ +# Display constants +# ============================================================================ +CELL_W, CELL_H = 640, 360 # Each camera cell +PAD = 20 # Padding between cells +HEADER_H = 60 # Question text header height +COLOR_BOX = (0, 255, 0) # Green bounding boxes +COLOR_TEXT = (255, 255, 255) # White labels +COLOR_BGND = (40, 40, 40) # Dark gray canvas +COLOR_CAM = (0, 200, 255) # Orange camera label +MAX_RENDER_FRAMES = 300 # Cap at 10s @ 30fps (avoid huge files) +DEFAULT_CONTEXT_SEC = 5.0 # For categories with no frame range + +# ============================================================================ +# Geom parsing (regex approach — fast, no YAML dependency) +# ============================================================================ +_RE_ID1 = re.compile(r"['\"]?id1['\"]?\s*:\s*['\"]?(\d+)") +_RE_TS0 = re.compile(r"['\"]?ts0['\"]?\s*:\s*['\"]?(\d+)") +_RE_G0 = re.compile(r"['\"]?g0['\"]?\s*:\s*['\"]?(\d+)\s+(\d+)\s+(\d+)\s+(\d+)") + + +def parse_geom_boxes(geom_file: Path) -> Dict[int, list]: + """Extract bounding boxes from geom.yml by frame number. + + Returns {frame_number: [(x1, y1, x2, y2, actor_id), ...]} + """ + boxes_by_frame: Dict[int, list] = defaultdict(list) + if not geom_file.exists(): + return boxes_by_frame + + with open(geom_file) as f: + for line in f: + line = line.strip() + if not line or line.startswith('#'): + continue + m_id = _RE_ID1.search(line) + m_ts = _RE_TS0.search(line) + m_g0 = _RE_G0.search(line) + if m_id and m_ts and m_g0: + actor_id = int(m_id.group(1)) + frame = int(m_ts.group(1)) + x1, y1, x2, y2 = map(int, m_g0.groups()) + boxes_by_frame[frame].append((x1, y1, x2, y2, actor_id)) + + return dict(boxes_by_frame) + + +# ============================================================================ +# File finders +# ============================================================================ + +def _slot_dir_name(date: str, start_time: str, site: str) -> str: + """Build slot directory name using HH-MM format (no seconds). + + Clip filenames use HH-MM-SS, but slot directories use HH-MM. + Example: start_time='17-05-00' → dir '2018-03-07.17-05.school' + """ + parts = start_time.split("-") + hh_mm = f"{parts[0]}-{parts[1]}" if len(parts) >= 2 else start_time + return f"{date}.{hh_mm}.{site}" + + +def find_mp4(date: str, hour: str, start_time: str, site: str, + end_time: str, camera: str) -> Optional[Path]: + """Find MP4 file for a camera, using slot-grouped directory structure. + + Directory: /mp4s/{date}/{hour}/{date}.{HH-MM}.{site}/ + File: {date}.{start_time}.{end_time}.{site}.{camera}.r13.mp4 + """ + slot_name = _slot_dir_name(date, start_time, site) + slot_dir = MEVA_MP4_ROOT / date / hour / slot_name + if not slot_dir.exists(): + # Fallback: try globbing for the slot directory + parent = MEVA_MP4_ROOT / date / hour + if parent.exists(): + candidates = list(parent.glob(f"{date}.*{site}")) + if candidates: + slot_dir = candidates[0] + else: + return None + else: + return None + + # Try exact glob + pattern = f"*{camera}*.r13.mp4" + matches = list(slot_dir.glob(pattern)) + if matches: + return matches[0] + # Broader fallback + matches = list(slot_dir.glob(f"*{camera}*.mp4")) + return matches[0] if matches else None + + +def find_geom_file(date: str, hour: str, start_time: str, + site: str, camera: str) -> Optional[Path]: + """Find geom.yml file for a camera.""" + prefix = f"{date}.{start_time}" + for kitware_dir in [KITWARE_BASE, KITWARE_TRAINING_BASE]: + ann_dir = kitware_dir / date / hour + if not ann_dir.exists(): + continue + matches = list(ann_dir.glob(f"{prefix}*.{site}.{camera}.geom.yml")) + if matches: + return matches[0] + return None + + +def extract_clip_timing(clip_file: str) -> Optional[Tuple[str, str, str, str, str, str]]: + """Parse clip filename → (date, hour, start_time, end_time, site, camera). + + Input: '2018-03-07.17-05-00.17-10-00.school.G339.r13.mp4' + """ + name = Path(clip_file).name + # Strip common suffixes + for suffix in [".r13.mp4", ".r13.avi", ".mp4", ".avi"]: + if name.endswith(suffix): + name = name[: -len(suffix)] + break + parts = name.split(".") + if len(parts) >= 5: + date, start_time, end_time, site, camera = parts[0], parts[1], parts[2], parts[3], parts[4] + hour = start_time.split("-")[0] + return date, hour, start_time, end_time, site, camera + return None + + +# ============================================================================ +# Event extraction — handles ALL debug_info formats +# ============================================================================ + +def _extract_events(q: dict, slot: str) -> List[dict]: + """Extract a unified list of event dicts from any question category. + + Each returned event dict has at minimum: + camera, clip_file, frame_range, fps, label + """ + debug = q.get("debug_info", {}) + category = q.get("category", "") + events: List[dict] = [] + + # --- Pattern 1: top-level event dicts (temporal, perception, spatial, best_camera) --- + for key, val in debug.items(): + if isinstance(val, dict) and "camera" in val and val.get("clip_file"): + events.append({ + "camera": val["camera"], + "clip_file": val["clip_file"], + "frame_range": val.get("frame_range"), + "fps": val.get("fps", 30.0), + "actor_ids": val.get("actor_ids", []), + "label": val.get("activity", key), + }) + + # --- Pattern 2: events LIST (event_ordering) --- + if "events" in debug and isinstance(debug["events"], list): + for ev in debug["events"]: + if isinstance(ev, dict) and "camera" in ev and ev.get("clip_file"): + events.append({ + "camera": ev["camera"], + "clip_file": ev["clip_file"], + "frame_range": ev.get("frame_range"), + "fps": ev.get("fps", 30.0), + "actor_ids": ev.get("actor_ids", []), + "label": ev.get("activity", "event"), + }) + + # --- Pattern 3: no events, but clip_files list (summarization, counting) --- + if not events and "clip_files" in debug: + for cf in debug["clip_files"]: + timing = extract_clip_timing(cf) + if timing: + _date, _hour, _st, _et, _site, _camera = timing + events.append({ + "camera": _camera, + "clip_file": cf, + "frame_range": None, + "fps": 30.0, + "actor_ids": [], + "label": category, + }) + + # --- Pattern 4: no events, no clip_files, but cameras list --- + if not events: + cameras = q.get("requires_cameras", []) + # Try to derive clip_files from slot name + # slot format: 2018-03-07.17-05.school + slot_parts = slot.split(".") + if len(slot_parts) >= 3: + date = slot_parts[0] + hhmm = slot_parts[1] # e.g. 17-05 + site = slot_parts[2] + hour = hhmm.split("-")[0] + for cam in cameras: + mp4 = find_mp4(date, hour, f"{hhmm}-00", site, "", cam) + if mp4: + events.append({ + "camera": cam, + "clip_file": mp4.name, + "frame_range": None, + "fps": 30.0, + "actor_ids": [], + "label": category, + }) + + return events + + +# ============================================================================ +# Frame loading with proper scaling +# ============================================================================ + +def load_video_segment(mp4_path: Path, + frame_start: int, + frame_end: int, + target_w: int = CELL_W, + target_h: int = CELL_H + ) -> Tuple[Optional[List[np.ndarray]], float, float, float]: + """Load a range of frames, resized to target dims. + + Returns (frames, fps, scale_x, scale_y) or (None, 0, 0, 0). + scale_x/y map original coords → display coords for box scaling. + """ + if not mp4_path or not mp4_path.exists(): + return None, 0, 0, 0 + + cap = cv2.VideoCapture(str(mp4_path)) + if not cap.isOpened(): + return None, 0, 0, 0 + + fps = cap.get(cv2.CAP_PROP_FPS) or 30.0 + orig_w = cap.get(cv2.CAP_PROP_FRAME_WIDTH) or 1920 + orig_h = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) or 1072 + total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + + # Clamp frame range + frame_start = max(0, frame_start) + frame_end = min(frame_end, total_frames - 1) + n_frames = min(frame_end - frame_start + 1, MAX_RENDER_FRAMES) + + scale_x = target_w / orig_w + scale_y = target_h / orig_h + + frames = [] + cap.set(cv2.CAP_PROP_POS_FRAMES, frame_start) + for _ in range(n_frames): + ret, frame = cap.read() + if not ret: + break + frames.append(cv2.resize(frame, (target_w, target_h))) + + cap.release() + return (frames, fps, scale_x, scale_y) if frames else (None, 0, 0, 0) + + +def overlay_boxes(frame: np.ndarray, boxes: list, + scale_x: float, scale_y: float) -> np.ndarray: + """Draw scaled bounding boxes on a (resized) frame.""" + out = frame.copy() + for (x1, y1, x2, y2, actor_id) in boxes: + sx1, sy1 = int(x1 * scale_x), int(y1 * scale_y) + sx2, sy2 = int(x2 * scale_x), int(y2 * scale_y) + cv2.rectangle(out, (sx1, sy1), (sx2, sy2), COLOR_BOX, 2) + label = f"A{actor_id}" + cv2.putText(out, label, (sx1, max(sy1 - 5, 12)), + cv2.FONT_HERSHEY_SIMPLEX, 0.45, COLOR_TEXT, 1, cv2.LINE_AA) + return out + + +# ============================================================================ +# Grid composition +# ============================================================================ + +def compose_grid(frames_dict: Dict[str, List[np.ndarray]], + question_text: str, + answer_text: str = "", + fps: float = 30.0) -> List[np.ndarray]: + """Compose multi-camera views into a labelled grid with question header. + + Uses cameras present in frames_dict (not requires_cameras) so only + cameras that were successfully loaded appear. + """ + cameras = sorted(frames_dict.keys()) + n_cams = len(cameras) + if n_cams == 0: + return [] + + # Grid layout — compute rows/cols dynamically + import math + if n_cams == 1: + grid_rows, grid_cols = 1, 1 + elif n_cams == 2: + grid_rows, grid_cols = 1, 2 + elif n_cams <= 4: + grid_rows, grid_cols = 2, 2 + elif n_cams <= 6: + grid_rows, grid_cols = 2, 3 + else: + grid_cols = min(4, math.ceil(math.sqrt(n_cams))) + grid_rows = math.ceil(n_cams / grid_cols) + + comp_w = grid_cols * CELL_W + PAD * (grid_cols + 1) + comp_h = HEADER_H + grid_rows * CELL_H + PAD * (grid_rows + 1) + + # Pad shorter camera feeds with last-frame freeze + max_frames = max(len(v) for v in frames_dict.values()) + for cam in cameras: + deficit = max_frames - len(frames_dict[cam]) + if deficit > 0: + frames_dict[cam].extend([frames_dict[cam][-1]] * deficit) + + composed = [] + for fi in range(max_frames): + canvas = np.full((comp_h, comp_w, 3), COLOR_BGND, dtype=np.uint8) + + # Draw question text header + q_short = question_text[:120] + ("..." if len(question_text) > 120 else "") + cv2.putText(canvas, q_short, (PAD, 35), + cv2.FONT_HERSHEY_SIMPLEX, 0.5, COLOR_TEXT, 1, cv2.LINE_AA) + if answer_text: + a_short = f"Answer: {answer_text[:80]}" + cv2.putText(canvas, a_short, (PAD, 52), + cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0, 255, 100), 1, cv2.LINE_AA) + + for ci, cam in enumerate(cameras): + row, col = ci // grid_cols, ci % grid_cols + x = PAD + col * (CELL_W + PAD) + y = HEADER_H + PAD + row * (CELL_H + PAD) + + # Safety check — skip if cell falls outside canvas + if y + CELL_H > comp_h or x + CELL_W > comp_w: + continue + + frame = frames_dict[cam][fi] + canvas[y:y + CELL_H, x:x + CELL_W] = frame + + # Camera label with frame counter + label = f"{cam} [{fi + 1}/{max_frames}]" + cv2.putText(canvas, label, (x + 8, y + 22), + cv2.FONT_HERSHEY_SIMPLEX, 0.55, COLOR_CAM, 2, cv2.LINE_AA) + + composed.append(canvas) + + return composed + + +# ============================================================================ +# Video writer +# ============================================================================ + +def write_video(frames: List[np.ndarray], output_path: Path, fps: float = 30.0) -> bool: + """Write frames to MP4 — uses ffmpeg if available, cv2.VideoWriter fallback.""" + if not frames: + return False + + h, w = frames[0].shape[:2] + # Ensure dimensions are even (required by libx264) + if w % 2: w -= 1 + if h % 2: h -= 1 + + output_path.parent.mkdir(parents=True, exist_ok=True) + + if FFMPEG_BIN: + cmd = [ + FFMPEG_BIN, '-hide_banner', '-loglevel', 'error', + '-f', 'rawvideo', '-pix_fmt', 'bgr24', + '-s', f'{w}x{h}', '-r', str(fps), + '-i', '-', + '-c:v', 'libx264', '-crf', '26', '-preset', 'fast', + '-pix_fmt', 'yuv420p', '-y', str(output_path), + ] + proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE) + for frame in frames: + proc.stdin.write(frame[:h, :w].tobytes()) + proc.stdin.close() + proc.wait() + if proc.returncode != 0: + stderr = proc.stderr.read().decode() + print(f" ffmpeg error: {stderr[:200]}") + return False + return output_path.exists() + else: + # Fallback: cv2.VideoWriter with mp4v codec + fourcc = cv2.VideoWriter_fourcc(*'mp4v') + writer = cv2.VideoWriter(str(output_path), fourcc, fps, (w, h)) + if not writer.isOpened(): + print(f" cv2.VideoWriter failed to open") + return False + for frame in frames: + writer.write(frame[:h, :w]) + writer.release() + return output_path.exists() + + +# ============================================================================ +# Main render function +# ============================================================================ + +def render_question(qa_data: dict, question_idx: int, + output_path: Path = None, verbose: bool = False) -> Optional[Path]: + """Render a single question into a validation video. + + Works for ALL question categories by using _extract_events(). + """ + qa_pairs = qa_data.get("qa_pairs", []) + if question_idx >= len(qa_pairs): + print(f" ERROR: Q{question_idx} out of range (max {len(qa_pairs) - 1})") + return None + + q = qa_pairs[question_idx] + slot = qa_data.get("slot", "unknown") + category = q.get("category", "unknown") + q_text = q.get("naturalized_question") or q.get("question_template", "") + answer_text = q.get("correct_answer") or q.get("answer", "") + + print(f"\n{'='*60}") + print(f"Q{question_idx}: {category.upper()}") + print(f" {q_text[:100]}...") + print(f" Answer: {answer_text[:80]}") + + # Extract events from debug_info (handles all category formats) + events = _extract_events(q, slot) + if not events: + print(f" SKIP: No video events found in debug_info") + return None + + # Group events by camera + cam_events: Dict[str, list] = defaultdict(list) + for ev in events: + cam_events[ev["camera"]].append(ev) + + # Compute frame range per camera (union of all events on that camera) + cam_info: Dict[str, dict] = {} + for cam, evts in cam_events.items(): + # Pick clip_file from first event (all events on same camera share clip) + clip_file = evts[0]["clip_file"] + fps = evts[0]["fps"] + timing = extract_clip_timing(clip_file) + if not timing: + print(f" WARN: Cannot parse clip_file for {cam}: {clip_file}") + continue + + date, hour, start_time, end_time, site, _ = timing + + # Compute frame range — union of all events, with context padding + ranges = [e["frame_range"] for e in evts if e.get("frame_range")] + if ranges: + f_start = max(0, min(r[0] for r in ranges) - int(fps * 1.0)) # 1s before + f_end = max(r[1] for r in ranges) + int(fps * 1.0) # 1s after + else: + # No frame range (summarization/counting) — show middle 5 seconds + f_start = 0 + f_end = int(fps * DEFAULT_CONTEXT_SEC) + + cam_info[cam] = { + "clip_file": clip_file, + "fps": fps, + "date": date, + "hour": hour, + "start_time": start_time, + "end_time": end_time, + "site": site, + "f_start": f_start, + "f_end": f_end, + "actor_ids": list({aid for e in evts for aid in e.get("actor_ids", [])}), + } + + if not cam_info: + print(f" SKIP: No parseable camera info") + return None + + # Load frames + geom for each camera + frames_dict: Dict[str, List[np.ndarray]] = {} + scales: Dict[str, Tuple[float, float]] = {} + geom_dict: Dict[str, Dict[int, list]] = {} + + for cam, info in cam_info.items(): + mp4_path = find_mp4(info["date"], info["hour"], info["start_time"], + info["site"], info["end_time"], cam) + if not mp4_path: + if verbose: + print(f" {cam}: MP4 NOT FOUND") + continue + + frames, fps, sx, sy = load_video_segment( + mp4_path, info["f_start"], info["f_end"]) + if not frames: + if verbose: + print(f" {cam}: FAILED TO LOAD") + continue + + frames_dict[cam] = frames + scales[cam] = (sx, sy) + + # Load geom + geom_path = find_geom_file(info["date"], info["hour"], + info["start_time"], info["site"], cam) + if geom_path: + geom_dict[cam] = parse_geom_boxes(geom_path) + + n_geom = len(geom_dict.get(cam, {})) + print(f" {cam}: {len(frames)} frames " + f"(f{info['f_start']}-{info['f_end']}) | " + f"geom={n_geom} frames | {mp4_path.name}") + + if not frames_dict: + print(f" ERROR: No frames loaded for any camera") + return None + + # Overlay geom bounding boxes (scaled) + for cam in frames_dict: + boxes_by_frame = geom_dict.get(cam, {}) + if not boxes_by_frame: + continue + sx, sy = scales[cam] + f_offset = cam_info[cam]["f_start"] + for fi in range(len(frames_dict[cam])): + actual_frame = f_offset + fi + if actual_frame in boxes_by_frame: + frames_dict[cam][fi] = overlay_boxes( + frames_dict[cam][fi], boxes_by_frame[actual_frame], sx, sy) + + # Compose grid + composed = compose_grid(frames_dict, q_text, answer_text, 30.0) + if not composed: + print(f" ERROR: Grid composition produced no frames") + return None + + # Output path + if not output_path: + output_path = VIDEO_OUTPUT_DIR / f"{slot}_q{question_idx}_{category}.mp4" + + print(f" Writing {len(composed)} frames → {output_path.name} ...", end="", flush=True) + if write_video(composed, output_path, 30.0): + sz_mb = output_path.stat().st_size / (1024 * 1024) + print(f" OK ({sz_mb:.1f} MB)") + return output_path + else: + print(f" FAILED") + return None + + +# ============================================================================ +# CLI +# ============================================================================ + +def main(): + parser = argparse.ArgumentParser( + description="Render question validation videos with multi-camera grids") + parser.add_argument("--slot", help="Slot name (e.g., 2018-03-07.17-05.school)") + parser.add_argument("--qa-file", help="QA JSON file path") + parser.add_argument("--question-id", type=int, help="Question index to render (0-based)") + parser.add_argument("--all", action="store_true", help="Render ALL questions in the file") + parser.add_argument("--categories", nargs="+", + help="Only render these categories (e.g., temporal spatial)") + parser.add_argument("--output", "-o", help="Output video path (single question only)") + parser.add_argument("--natural", action="store_true", + help="Use .final.naturalized.json instead of .final.raw.json") + parser.add_argument("-v", "--verbose", action="store_true") + args = parser.parse_args() + + # Resolve QA file + if args.qa_file: + qa_path = Path(args.qa_file) + elif args.slot: + suffix = ".final.naturalized.json" if args.natural else ".final.raw.json" + qa_path = QA_OUTPUT_DIR / f"{args.slot}{suffix}" + if not qa_path.exists() and args.natural: + qa_path = QA_OUTPUT_DIR / f"{args.slot}.final.raw.json" + print(f" (naturalized not found, falling back to raw)") + else: + parser.error("Must provide --slot or --qa-file") + + if not qa_path.exists(): + print(f"ERROR: {qa_path} not found") + return + + with open(qa_path) as f: + qa_data = json.load(f) + + slot = qa_data.get("slot", "unknown") + qa_pairs = qa_data.get("qa_pairs", []) + print(f"Loaded: {qa_path.name}") + print(f"Slot: {slot}") + print(f"Questions: {len(qa_pairs)}") + + # Determine which questions to render + if args.all: + indices = list(range(len(qa_pairs))) + elif args.question_id is not None: + indices = [args.question_id] + else: + indices = [0] + + # Filter by category if requested + if args.categories: + cats = set(c.lower() for c in args.categories) + indices = [i for i in indices if qa_pairs[i].get("category", "").lower() in cats] + + print(f"Rendering: {len(indices)} question(s)") + + successes, failures = 0, 0 + for idx in indices: + out = Path(args.output) if (args.output and len(indices) == 1) else None + result = render_question(qa_data, idx, out, verbose=args.verbose) + if result: + successes += 1 + else: + failures += 1 + + print(f"\n{'='*60}") + print(f"Done: {successes} rendered, {failures} skipped/failed") + print(f"Output dir: {VIDEO_OUTPUT_DIR}") + if successes: + print(f"Play: ffplay {VIDEO_OUTPUT_DIR}/{slot}_q*") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/review_qa.py b/meva/scripts/v10/review_qa.py new file mode 100644 index 0000000..d2889a9 --- /dev/null +++ b/meva/scripts/v10/review_qa.py @@ -0,0 +1,454 @@ +#!/usr/bin/env python3 +""" +Interactive QA Review CLI — manual verification of generated questions. + +For each question in a slot, displays: + - Category, cameras, question text, answer, options + - Debug info summary (frame ranges, connection strength, etc.) + - Path to validation video (for playback) + - Checklist of things to verify + +Usage: + # Review a slot (auto-finds raw JSON) + python3 -m scripts.final.review_qa --slot 2018-03-07.17-05.school + + # Review naturalized version + python3 -m scripts.final.review_qa --slot 2018-03-07.17-05.school --natural + + # Review specific QA file + python3 -m scripts.final.review_qa --qa-file data/qa_pairs/SLOT.final.raw.json + + # Generate audit report without interactive prompts + python3 -m scripts.final.review_qa --slot 2018-03-07.17-05.school --report +""" + +import argparse +import json +import os +import sys +import textwrap +from pathlib import Path +from datetime import datetime + +QA_DIR = Path("/home/ah66742/data/qa_pairs") +VIDEO_DIR = Path("/home/ah66742/output/validation_videos") +AUDIT_DIR = Path("/home/ah66742/output/qa_audits") +AUDIT_DIR.mkdir(parents=True, exist_ok=True) + +# ANSI colors +C_RESET = "\033[0m" +C_BOLD = "\033[1m" +C_GREEN = "\033[32m" +C_RED = "\033[31m" +C_YELLOW = "\033[33m" +C_CYAN = "\033[36m" +C_DIM = "\033[2m" + +CATEGORY_ORDER = ["temporal", "event_ordering", "perception", "spatial", + "summarization", "counting", "best_camera"] + +CHECKLIST = [ + "Answer observable in video", + "Cameras minimal & sufficient", + "Geom boxes track actors", + "Question clear & unambiguous", + "Frame range covers activity", +] + + +def fmt_debug(q: dict) -> str: + """Format debug_info into a readable summary.""" + debug = q.get("debug_info", {}) + cat = q.get("category", "") + lines = [] + + # Temporal-specific + if cat == "temporal": + lines.append(f" Connection: {debug.get('connection_strength', '?')} " + f"(score={debug.get('connection_score', '?')})") + lines.append(f" Gap: {debug.get('gap_sec', '?')}s | " + f"MEVID: {debug.get('mevid_validated', False)}") + for key in ["event_a", "event_b"]: + ev = debug.get(key, {}) + if ev: + lines.append(f" {key}: {ev.get('activity','?')} on {ev.get('camera','?')} " + f"frames={ev.get('frame_range','?')}") + + # Event ordering + elif cat == "event_ordering": + events = debug.get("events", []) + lines.append(f" Events: {len(events)} | " + f"Group score: {debug.get('group_score', '?')} | " + f"MEVID: {debug.get('mevid_validated', False)}") + for i, ev in enumerate(events): + lines.append(f" [{i+1}] {ev.get('activity','?')} on {ev.get('camera','?')} " + f"frames={ev.get('frame_range','?')}") + + # Perception + elif cat == "perception": + lines.append(f" Type: {debug.get('question_type', '?')}") + rep = debug.get("representative_event", {}) + if rep: + lines.append(f" Event: {rep.get('activity','?')} on {rep.get('camera','?')} " + f"frames={rep.get('frame_range','?')}") + + # Spatial + elif cat == "spatial": + lines.append(f" Distance: {debug.get('distance_meters', '?')}m " + f"({debug.get('proximity', '?')})") + lines.append(f" Method: {debug.get('projection_method', '?')}") + for key in ["entity_a", "entity_b"]: + ent = debug.get(key, {}) + if ent: + lines.append(f" {key}: actor={ent.get('actor_ids','?')} on " + f"{ent.get('camera','?')} frames={ent.get('frame_range','?')}") + + # Summarization + elif cat == "summarization": + lines.append(f" Type: {debug.get('question_type', '?')}") + lines.append(f" Scene: {debug.get('scene_type', '?')}") + cf = debug.get("clip_files", []) + lines.append(f" Clip files: {len(cf)}") + + # Counting + elif cat == "counting": + lines.append(f" Subtype: {debug.get('subtype', '?')}") + lines.append(f" Correct count: {debug.get('correct_count', '?')}") + lines.append(f" Cross-camera: {debug.get('cross_camera', '?')}") + lines.append(f" Cameras: {debug.get('cameras_involved', '?')}") + + # Best camera + elif cat == "best_camera": + rep = debug.get("representative_event", {}) + if rep: + lines.append(f" Event: {rep.get('activity','?')} on {rep.get('camera','?')} " + f"frames={rep.get('frame_range','?')}") + + return "\n".join(lines) if lines else " (no debug info)" + + +def display_question(q: dict, idx: int, total: int, slot: str, show_video_path: bool = True): + """Display a single question for review.""" + cat = q.get("category", "unknown") + cameras = q.get("requires_cameras", []) + q_text = q.get("naturalized_question") or q.get("question_template", "") + answer = q.get("correct_answer") or q.get("answer", "N/A") + correct_idx = q.get("correct_answer_index") + options = q.get("options", []) + + print(f"\n{C_BOLD}{'='*72}{C_RESET}") + print(f"{C_BOLD}Q{idx}/{total-1} [{cat.upper()}] Cameras: {', '.join(cameras)}{C_RESET}") + print(f"{'='*72}") + + # Question text (wrapped) + print(f"\n{C_CYAN}Question:{C_RESET}") + for line in textwrap.wrap(q_text, width=70): + print(f" {line}") + + # Options + if options: + print(f"\n{C_CYAN}Options:{C_RESET}") + for i, opt in enumerate(options): + is_correct = (i == correct_idx) if correct_idx is not None else (opt.strip() == str(answer).strip()) + marker = f" {C_GREEN}← ANSWER{C_RESET}" if is_correct else "" + print(f" {chr(65+i)}) {opt[:80]}{marker}") + else: + print(f"\n{C_CYAN}Answer:{C_RESET} {answer}") + + # Debug summary + print(f"\n{C_CYAN}Debug:{C_RESET}") + print(fmt_debug(q)) + + # Video path + if show_video_path: + video = VIDEO_DIR / f"{slot}_q{idx}_{cat}.mp4" + if video.exists(): + sz = video.stat().st_size / 1024 + print(f"\n{C_DIM}Video: {video} ({sz:.0f}KB){C_RESET}") + else: + print(f"\n{C_YELLOW}Video: NOT RENDERED{C_RESET}") + + +def interactive_review(qa_data: dict): + """Interactive review loop — walk through each question.""" + slot = qa_data.get("slot", "unknown") + qa_pairs = qa_data.get("qa_pairs", []) + total = len(qa_pairs) + + verdicts = {} # idx -> {"verdict": "pass"/"fail"/"skip", "notes": "..."} + + print(f"\n{C_BOLD}╔══════════════════════════════════════════════════╗{C_RESET}") + print(f"{C_BOLD}║ Interactive QA Review — {slot:<24s}║{C_RESET}") + print(f"{C_BOLD}║ {total} questions to review{' '*26}║{C_RESET}") + print(f"{C_BOLD}╚══════════════════════════════════════════════════╝{C_RESET}") + + idx = 0 + while idx < total: + q = qa_pairs[idx] + display_question(q, idx, total, slot) + + # Checklist + print(f"\n{C_CYAN}Checklist:{C_RESET}") + for item in CHECKLIST: + print(f" □ {item}") + + # Prompt + print(f"\n{C_BOLD}Actions:{C_RESET}") + print(f" {C_GREEN}[p]ass{C_RESET} {C_RED}[f]ail{C_RESET} " + f"[s]kip [n]otes [v]ideo [b]ack [q]uit [j]ump #") + try: + resp = input(f"\n Q{idx} verdict > ").strip().lower() + except (EOFError, KeyboardInterrupt): + print("\n Interrupted.") + break + + if resp == 'q': + break + elif resp == 'b': + idx = max(0, idx - 1) + continue + elif resp.startswith('j'): + try: + target = int(resp[1:].strip()) + if 0 <= target < total: + idx = target + else: + print(f" Invalid index (0-{total-1})") + except ValueError: + print(f" Usage: j5 (jump to Q5)") + continue + elif resp == 'v': + video = VIDEO_DIR / f"{slot}_q{idx}_{q['category']}.mp4" + if video.exists(): + print(f" Opening: {video}") + os.system(f"nohup xdg-open '{video}' >/dev/null 2>&1 &") + else: + print(f" {C_RED}Video not found. Run render_question_validation.py --slot {slot} --all{C_RESET}") + continue + elif resp == 'n': + notes = input(" Notes > ").strip() + verdicts.setdefault(idx, {})["notes"] = notes + print(f" {C_DIM}Notes saved for Q{idx}{C_RESET}") + continue + elif resp in ('p', 'pass', ''): + verdicts[idx] = {**verdicts.get(idx, {}), "verdict": "pass"} + print(f" {C_GREEN}✓ Q{idx} PASS{C_RESET}") + elif resp in ('f', 'fail'): + notes = input(" Failure reason > ").strip() + verdicts[idx] = {"verdict": "fail", "notes": notes} + print(f" {C_RED}✗ Q{idx} FAIL: {notes}{C_RESET}") + elif resp == 's': + verdicts[idx] = {**verdicts.get(idx, {}), "verdict": "skip"} + print(f" {C_YELLOW}— Q{idx} SKIPPED{C_RESET}") + else: + print(f" Unknown command: {resp}") + continue + + idx += 1 + + # Summary + return print_summary(qa_data, verdicts) + + +def print_summary(qa_data: dict, verdicts: dict) -> dict: + """Print review summary and return audit dict.""" + slot = qa_data.get("slot", "unknown") + qa_pairs = qa_data.get("qa_pairs", []) + total = len(qa_pairs) + + passes = sum(1 for v in verdicts.values() if v.get("verdict") == "pass") + fails = sum(1 for v in verdicts.values() if v.get("verdict") == "fail") + skips = sum(1 for v in verdicts.values() if v.get("verdict") == "skip") + unreviewed = total - len(verdicts) + + print(f"\n{C_BOLD}{'='*72}{C_RESET}") + print(f"{C_BOLD}REVIEW SUMMARY — {slot}{C_RESET}") + print(f"{'='*72}") + print(f" {C_GREEN}Pass: {passes}{C_RESET} | {C_RED}Fail: {fails}{C_RESET} | " + f"{C_YELLOW}Skip: {skips}{C_RESET} | Unreviewed: {unreviewed}") + pct = (passes / total * 100) if total else 0 + print(f" Pass rate: {pct:.0f}% ({passes}/{total})") + + if pct >= 80: + print(f"\n {C_GREEN}✓ READY FOR BATCH PROCESSING{C_RESET}") + elif pct >= 50: + print(f"\n {C_YELLOW}⚠ NEEDS TARGETED FIXES{C_RESET}") + else: + print(f"\n {C_RED}✗ SIGNIFICANT ISSUES — DO NOT BATCH{C_RESET}") + + # Show failures + if fails: + print(f"\n{C_RED}FAILURES:{C_RESET}") + for idx, v in sorted(verdicts.items()): + if v.get("verdict") == "fail": + cat = qa_pairs[idx]["category"] + print(f" Q{idx} [{cat}]: {v.get('notes', 'no reason')}") + + # Per-category breakdown + print(f"\n{C_CYAN}Per-Category:{C_RESET}") + cat_stats = {} + for idx, q in enumerate(qa_pairs): + cat = q["category"] + v = verdicts.get(idx, {}).get("verdict", "unreviewed") + cat_stats.setdefault(cat, []).append(v) + for cat in CATEGORY_ORDER: + if cat in cat_stats: + results = cat_stats[cat] + p = results.count("pass") + f = results.count("fail") + icon = C_GREEN + "✓" if f == 0 else C_RED + "✗" + print(f" {icon} {cat:<18s}{C_RESET} pass={p} fail={f} total={len(results)}") + + # Build audit record + audit = { + "slot": slot, + "date": datetime.now().isoformat(), + "total": total, + "pass": passes, + "fail": fails, + "skip": skips, + "pass_rate": round(pct, 1), + "verdicts": {str(k): v for k, v in verdicts.items()}, + "version": qa_data.get("version", "unknown"), + } + return audit + + +def generate_report(qa_data: dict) -> dict: + """Non-interactive report — auto-checks for common issues.""" + slot = qa_data.get("slot", "unknown") + qa_pairs = qa_data.get("qa_pairs", []) + total = len(qa_pairs) + + print(f"\n{C_BOLD}AUTO-REPORT — {slot}{C_RESET}") + print(f"{'='*72}") + + issues = [] + verdicts = {} + + for idx, q in enumerate(qa_pairs): + cat = q.get("category", "") + debug = q.get("debug_info", {}) + cameras = q.get("requires_cameras", []) + q_text = q.get("question_template", "") + options = q.get("options", []) + q_issues = [] + + correct_answer = q.get("correct_answer") or q.get("answer", "") + correct_idx = q.get("correct_answer_index") + + # Check 1: Empty answer + if not correct_answer and correct_idx is None: + q_issues.append("EMPTY ANSWER") + + # Check 2: Answer not in options + if options and correct_answer and correct_answer not in options: + # Also check by index + if correct_idx is None or correct_idx >= len(options): + q_issues.append(f"ANSWER NOT IN OPTIONS") + + # Check 3: Too many cameras for simple categories + # best_camera inherently needs all cameras (it picks the best one) + if cat == "perception" and len(cameras) > 10: + q_issues.append(f"TOO MANY CAMERAS ({len(cameras)})") + + # Check 4: No debug_info + if not debug: + q_issues.append("NO DEBUG INFO") + + # Check 5: Missing frame range (for event-based categories) + if cat == "temporal": + for key in ["event_a", "event_b"]: + ev = debug.get(key, {}) + if ev and not ev.get("frame_range"): + q_issues.append(f"MISSING FRAME RANGE in {key}") + # Spatial entities use camera-center distance; frame_range is optional + # (entity may only have actor_ids + camera, no specific frames) + + # Check 6: Temporal — weak connection + if cat == "temporal": + strength = debug.get("connection_strength", "") + if strength == "weak": + q_issues.append(f"WEAK CONNECTION (low quality)") + + # Check 7: No clip_file in events + if cat in ("temporal", "spatial"): + for key in ["event_a", "event_b", "entity_a", "entity_b"]: + ev = debug.get(key, {}) + if ev and not ev.get("clip_file"): + q_issues.append(f"NO CLIP FILE in {key}") + + # Check 8: Video file exists for rendering + video = VIDEO_DIR / f"{slot}_q{idx}_{cat}.mp4" + has_video = video.exists() + + # Verdict + if q_issues: + verdict = "fail" + icon = C_RED + "✗" + else: + verdict = "pass" + icon = C_GREEN + "✓" + + verdicts[idx] = {"verdict": verdict, "notes": "; ".join(q_issues) if q_issues else ""} + + vid_icon = "📹" if has_video else " " + print(f" {icon} Q{idx:<2d} [{cat:<16s}]{C_RESET} {vid_icon} " + f"cams={len(cameras):<3d} " + f"{' '.join(q_issues) if q_issues else 'OK'}") + issues.extend([(idx, cat, iss) for iss in q_issues]) + + audit = print_summary(qa_data, verdicts) + audit["mode"] = "auto-report" + return audit + + +def main(): + parser = argparse.ArgumentParser(description="Interactive QA Review CLI") + parser.add_argument("--slot", help="Slot name") + parser.add_argument("--qa-file", help="QA JSON file") + parser.add_argument("--natural", action="store_true", + help="Use naturalized version") + parser.add_argument("--report", action="store_true", + help="Auto-report (non-interactive)") + parser.add_argument("--save", action="store_true", + help="Save audit to file") + args = parser.parse_args() + + # Resolve input file + if args.qa_file: + qa_path = Path(args.qa_file) + elif args.slot: + suffix = ".final.naturalized.json" if args.natural else ".final.raw.json" + qa_path = QA_DIR / f"{args.slot}{suffix}" + if not qa_path.exists() and args.natural: + qa_path = QA_DIR / f"{args.slot}.final.raw.json" + print(f" (naturalized not found, using raw)") + else: + parser.error("Must provide --slot or --qa-file") + + if not qa_path.exists(): + print(f"ERROR: {qa_path} not found") + return + + with open(qa_path) as f: + qa_data = json.load(f) + + print(f"Loaded: {qa_path.name}") + + if args.report: + audit = generate_report(qa_data) + else: + audit = interactive_review(qa_data) + + # Save audit + if args.save or args.report: + slot = qa_data.get("slot", "unknown") + audit_path = AUDIT_DIR / f"{slot}.audit.json" + with open(audit_path, "w") as f: + json.dump(audit, f, indent=2) + print(f"\n Audit saved: {audit_path}") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index 1da5f64..0044e9c 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -10,9 +10,9 @@ ADDED: best_camera (Camera Transition Logic) Usage: - python3 scripts/final/run_pipeline.py --slot "2018-03-11.11-25-00.school" -v - python3 scripts/final/run_pipeline.py --list-slots - python3 scripts/final/run_pipeline.py --slot "2018-03-11.11-25-00.school" --no-save + python3 scripts/v10/run_pipeline.py --slot "2018-03-11.11-25-00.school" -v + python3 scripts/v10/run_pipeline.py --list-slots + python3 scripts/v10/run_pipeline.py --slot "2018-03-11.11-25-00.school" --no-save """ import json @@ -40,21 +40,21 @@ from .generate_numerical import generate_numerical_qa from .generate_best_camera import generate_best_camera_qa except ImportError: - sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) - from scripts.final.parse_annotations import parse_slot_events, find_clips_for_slot - from scripts.final.build_scene_graph import build_scene_graph - from scripts.final.entity_resolution import resolve_entities - from scripts.final.person_descriptions import ( + sys.path.insert(0, str(Path(__file__).resolve().parent)) + from parse_annotations import parse_slot_events, find_clips_for_slot + from build_scene_graph import build_scene_graph + from entity_resolution import resolve_entities + from person_descriptions import ( enrich_entities, is_mevid_supported, get_mevid_persons_for_slot, get_mevid_persons_with_cameras, load_person_database, ) - from scripts.final.generate_temporal import generate_temporal_qa - from scripts.final.generate_spatial import generate_spatial_qa - from scripts.final.generate_perception import generate_perception_qa - from scripts.final.generate_scene_summary import generate_scene_summary_qa - from scripts.final.generate_event_ordering import generate_event_ordering_qa - from scripts.final.generate_numerical import generate_numerical_qa - from scripts.final.generate_best_camera import generate_best_camera_qa + from generate_temporal import generate_temporal_qa + from generate_spatial import generate_spatial_qa + from generate_perception import generate_perception_qa + from generate_scene_summary import generate_scene_summary_qa + from generate_event_ordering import generate_event_ordering_qa + from generate_numerical import generate_numerical_qa + from generate_best_camera import generate_best_camera_qa # ============================================================================ @@ -72,9 +72,9 @@ TARGET_PERCEPTION = 2 # includes attribute_verification if MEVID TARGET_SPATIAL = 3 # increased: ~70% slot hit rate requires 3/slot for 500 total TARGET_SUMMARIZATION = 1 # scene_summary (renamed for paper alignment) -TARGET_COUNTING = 2 # increased: need 500 total, ~75% slot success rate +TARGET_COUNTING = 1 # activity-counting only (entity-counting removed) TARGET_BEST_CAMERA = 3 # increased: Camera Transition Logic, ~70% hit rate -# Total target: ~12 questions per slot +# Total target: ~14 questions per slot # ============================================================================ @@ -535,15 +535,10 @@ def run_pipeline(slot: str, verbose: bool = False, for i, q in enumerate(unique_qa): q["question_id"] = f"final_{q['category']}_{i+1:03d}" - # Fix article agreement (a → an before vowels) in all text fields - for q in unique_qa: - if "question_template" in q: - q["question_template"] = fix_articles(q["question_template"]) - if "options" in q: - q["options"] = [fix_articles(str(o)) for o in q["options"]] - if "correct_answer" in q: - q["correct_answer"] = fix_articles(str(q["correct_answer"])) - + # NOTE: article fixes (a→an) and text polish happen in naturalization.py, + # not here. Generators produce raw mechanical text; naturalization owns all + # wording/grammar changes. + # Add video paths to each QA pair for q in unique_qa: q["video_paths"] = _build_video_paths(q, slot) From efbe817806540c2f1516cfd8b93f522f4f585e3e Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Thu, 26 Feb 2026 16:05:48 -0600 Subject: [PATCH 04/26] changed hardcoded paths --- meva/QUICKSTART.md | 134 ++++++++++++++++++ meva/run.sh | 44 +++++- meva/scripts/v10/export_to_multicam_format.py | 5 +- .../v10/extract_entity_descriptions.py | 4 +- meva/scripts/v10/naturalize.py | 7 +- meva/scripts/v10/parse_annotations.py | 7 +- meva/scripts/v10/person_descriptions.py | 14 +- .../scripts/v10/render_question_validation.py | 5 +- meva/scripts/v10/run_pipeline.py | 32 ++++- 9 files changed, 232 insertions(+), 20 deletions(-) create mode 100644 meva/QUICKSTART.md diff --git a/meva/QUICKSTART.md b/meva/QUICKSTART.md new file mode 100644 index 0000000..7573538 --- /dev/null +++ b/meva/QUICKSTART.md @@ -0,0 +1,134 @@ +# MEVA QA Pipeline — Quick Start + +## Prerequisites + +- Access to `/nas/mars/dataset/MEVA/` (shared on the `/nas` machine and remote cluster) +- Python 3.10+ +- `OPENAI_API_KEY` set in your environment (required for Step 2 — naturalization only) + +### Install dependencies +```bash +pip install pyyaml numpy opencv-python openai +``` +Or use the shared venv: +```bash +source /home/ah66742/venv/bin/activate +``` + +--- + +## Running the Pipeline + +All commands must be run from the **`meva/` directory** inside this repo: + +```bash +cd /path/to/repo/meva +export PYTHONPATH=$PYTHONPATH:$(pwd) +export OPENAI_API_KEY=sk-... # only needed for Step 2 +export MEVA_OUTPUT_DIR=~/data # where QA JSON + logs are saved (default: ~/data) +``` + +### Step 1 — Raw QA generation (free, ~5 seconds per slot) + +```bash +python3 -m scripts.v10.run_pipeline --slot "2018-03-15.15-00.school" -v --seed 42 +``` + +Output: `$MEVA_OUTPUT_DIR/qa_pairs/2018-03-15.15-00.school/2018-03-15.15-00.school.final.raw.json` + +### Step 2 — Naturalize with GPT (costs tokens, ~$0.002/slot with gpt-4o-mini) + +```bash +python3 -m scripts.v10.naturalize \ + --input $MEVA_OUTPUT_DIR/qa_pairs/2018-03-15.15-00.school/2018-03-15.15-00.school.final.raw.json \ + -v --yes +``` + +Output: `...2018-03-15.15-00.school.final.naturalized.json` + +Use `--preprocess-only` to run deterministic text cleanup without any GPT call (free): +```bash +python3 -m scripts.v10.naturalize --input --preprocess-only +``` + +### Step 3 — Export to multi-cam-dataset format + +```bash +python3 -m scripts.v10.export_to_multicam_format --slot "2018-03-15.15-00.school" +``` + +Output: `/nas/neurosymbolic/multi-cam-dataset/meva/qa_pairs/2018-03-15.15-00.school.json` + +### All-in-one + +Pass a slot as argument (or edit `SLOT=` inside the script): + +```bash +bash run.sh "2018-03-15.15-00.school" +``` + +--- + +## What's in `meva/data/`? + +These files are checked into the repo and are automatically found by the scripts: + +| File | Contents | +|------|----------| +| `data/canonical_slots.json` | 929 annotated slots with camera lists | +| `data/slot_index.json` | Clip-level annotation index | +| `data/person_database_yolo.json` | MEVID person descriptions (YOLO+GPT) | +| `data/person_database.json` | MEVID person descriptions (original) | +| `data/mevid_supported_slots.json` | Slots with MEVID re-ID coverage | +| `data/geom_slot_index.json` | Geom-file index for entity descriptions | + +--- + +## Slot Name Format + +Slots follow the pattern: `YYYY-MM-DD.HH-MM.site` + +Example: `2018-03-15.15-00.school` + +Sites: `school`, `admin`, `bus`, `hospital` + +To list all available annotated slots: +```bash +python3 -m scripts.v10.run_pipeline --list-slots +``` + +--- + +## Output Layout + +``` +$MEVA_OUTPUT_DIR/ + qa_pairs/ + 2018-03-15.15-00.school/ + 2018-03-15.15-00.school.final.raw.json ← Step 1 output + 2018-03-15.15-00.school.final.naturalized.json ← Step 2 output + validation_videos/ ← optional render step + gpt_logs/ + 2018-03-15.15-00.school/ + naturalize_gpt-4o-mini.json + entity_descriptions/ + 2018-03-15.15-00.school.json ← auto-generated on first run +``` + +--- + +## Common Issues + +**`canonical slot and slot index is required`** +→ You ran `python -m meva.scripts.v10.run_pipeline` from the repo root. There is no `meva/__init__.py`, so that path doesn't work. +→ **Fix**: `cd meva/ && export PYTHONPATH=$PYTHONPATH:$(pwd)` first, then use `python3 -m scripts.v10.run_pipeline`. + +**`No events found for slot ...`** +→ Check the slot exists: `python3 -m scripts.v10.run_pipeline --list-slots | grep ` +→ Slot format must be `YYYY-MM-DD.HH-MM.site` (no seconds). + +**`OPENAI_API_KEY not set`** +→ Only needed for Step 2. Steps 1 and 3 are free. + +**Output goes to wrong directory** +→ Set `export MEVA_OUTPUT_DIR=/your/home/data` before running. diff --git a/meva/run.sh b/meva/run.sh index 23b3f27..856c945 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -1,9 +1,45 @@ #!/usr/bin/env bash +# run.sh — Full V10 QA pipeline for one MEVA slot. +# +# SETUP (one-time): +# 1. cd into this directory: cd /path/to/repo/meva +# 2. Set your API key: export OPENAI_API_KEY=sk-... +# 3. (Optional) Set output dir: export MEVA_OUTPUT_DIR=~/data +# Defaults to ~/data if not set. QA JSON + logs go there. +# 4. Run: bash run.sh +# +# DATASET (shared, read-only): +# /nas/mars/dataset/MEVA/ — videos, annotations, camera models +# +# REQUIREMENTS: +# pip install pyyaml numpy opencv-python openai +# (or: source /home/ah66742/venv/bin/activate) + +set -e + +SLOT="${1:-2018-03-11.11-25.school}" +OUTPUT_DIR="${MEVA_OUTPUT_DIR:-$HOME/data}" -# Add current directory to path export PYTHONPATH=$PYTHONPATH:$(pwd) -python -m scripts.v10.run_pipeline \ - --slot "2018-03-11.11-25.school" \ +echo "=== Step 1: Raw QA generation (slot: $SLOT) ===" +python3 -m scripts.v10.run_pipeline \ + --slot "$SLOT" \ -v \ - --seed 42 \ + --seed 42 + +RAW_JSON="$OUTPUT_DIR/qa_pairs/$SLOT/$SLOT.final.raw.json" + +echo "" +echo "=== Step 2: Naturalization (GPT — requires OPENAI_API_KEY) ===" +python3 -m scripts.v10.naturalize \ + --input "$RAW_JSON" \ + -v --yes + +echo "" +echo "=== Step 3: Export to multi-cam-dataset format ===" +python3 -m scripts.v10.export_to_multicam_format \ + --slot "$SLOT" + +echo "" +echo "Done. Output in $OUTPUT_DIR/qa_pairs/$SLOT/" diff --git a/meva/scripts/v10/export_to_multicam_format.py b/meva/scripts/v10/export_to_multicam_format.py index 0c7365e..18450bf 100644 --- a/meva/scripts/v10/export_to_multicam_format.py +++ b/meva/scripts/v10/export_to_multicam_format.py @@ -25,12 +25,15 @@ import json import argparse +import os import sys from pathlib import Path from typing import Dict, List, Any, Optional # Paths -INPUT_DIR = Path("/home/ah66742/data/qa_pairs") +# User output directory — override with MEVA_OUTPUT_DIR env var +_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) +INPUT_DIR = _OUTPUT / "qa_pairs" OUTPUT_DIR = Path("/nas/neurosymbolic/multi-cam-dataset/meva/qa_pairs") LETTER_MAP = {0: "A", 1: "B", 2: "C", 3: "D", 4: "E", 5: "F"} diff --git a/meva/scripts/v10/extract_entity_descriptions.py b/meva/scripts/v10/extract_entity_descriptions.py index b0df94d..9b3981c 100644 --- a/meva/scripts/v10/extract_entity_descriptions.py +++ b/meva/scripts/v10/extract_entity_descriptions.py @@ -43,7 +43,9 @@ KITWARE_TRAINING_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware-meva-training") AVI_BASE = Path("/nas/mars/dataset/MEVA/avis") # Raw AVIs — lossless, better color MP4_BASE = Path("/nas/mars/dataset/MEVA/mp4s") # Fallback (CRF 32 re-encode) -OUTPUT_DIR = Path("/home/ah66742/data/entity_descriptions") +# User output directory — override with MEVA_OUTPUT_DIR env var +_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) +OUTPUT_DIR = _OUTPUT / "entity_descriptions" # ============================================================================ # Constants diff --git a/meva/scripts/v10/naturalize.py b/meva/scripts/v10/naturalize.py index b95ffa2..f79ef46 100644 --- a/meva/scripts/v10/naturalize.py +++ b/meva/scripts/v10/naturalize.py @@ -44,8 +44,11 @@ # Paths & Constants # ============================================================================ -QA_DIR = Path("/home/ah66742/data/qa_pairs") -LOG_DIR = Path("/home/ah66742/data/gpt_logs") +# User output directory — override with MEVA_OUTPUT_DIR env var +_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) + +QA_DIR = _OUTPUT / "qa_pairs" +LOG_DIR = _OUTPUT / "gpt_logs" DEFAULT_MODEL = "gpt-4o-mini" DEFAULT_TEMPERATURE = 0.3 # Low: naturalize only, no creative drift diff --git a/meva/scripts/v10/parse_annotations.py b/meva/scripts/v10/parse_annotations.py index 02781ff..5eed798 100644 --- a/meva/scripts/v10/parse_annotations.py +++ b/meva/scripts/v10/parse_annotations.py @@ -6,6 +6,7 @@ """ import json +import os import re from pathlib import Path from typing import Any, Dict, List, Optional @@ -19,7 +20,9 @@ ANNOTATION_BASE = MEVA_ROOT / "meva-data-repo" / "annotation" / "DIVA-phase-2" / "MEVA" KITWARE_ROOT = ANNOTATION_BASE / "kitware" KITWARE_TRAINING_ROOT = ANNOTATION_BASE / "kitware-meva-training" -SLOT_INDEX_PATH = Path("/home/ah66742/data/slot_index.json") +# Repo-relative data directory (meva/data/) — works for any clone location +_REPO_DATA = Path(__file__).resolve().parent.parent.parent / "data" +SLOT_INDEX_PATH = _REPO_DATA / "slot_index.json" DEFAULT_FRAMERATE = 30.0 @@ -141,7 +144,7 @@ def _parse_activities_yml(path: Path, camera_id: str, site: str, # Slot-Level Annotation Discovery # ============================================================================ -CANONICAL_SLOTS_PATH = Path("/home/ah66742/data/canonical_slots.json") +CANONICAL_SLOTS_PATH = _REPO_DATA / "canonical_slots.json" def _resolve_to_raw_slots(slot: str) -> List[str]: """Resolve a slot name to raw slot names. diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py index be71518..521c269 100644 --- a/meva/scripts/v10/person_descriptions.py +++ b/meva/scripts/v10/person_descriptions.py @@ -10,6 +10,7 @@ 3. Activity-verb description (V7 style, no MEVID) """ +import os import re import json from pathlib import Path @@ -22,9 +23,14 @@ # Paths # ============================================================================ -PERSON_DB_PATH = Path("/home/ah66742/data/person_database_yolo.json") -PERSON_DB_ORIG_PATH = Path("/home/ah66742/data/person_database.json") -MEVID_SLOTS_PATH = Path("/home/ah66742/data/mevid_supported_slots.json") +# Repo-relative data directory (meva/data/) — works for any clone location +_REPO_DATA = Path(__file__).resolve().parent.parent.parent / "data" +# User output directory — override with MEVA_OUTPUT_DIR env var +_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) + +PERSON_DB_PATH = _REPO_DATA / "person_database_yolo.json" +PERSON_DB_ORIG_PATH = _REPO_DATA / "person_database.json" +MEVID_SLOTS_PATH = _REPO_DATA / "mevid_supported_slots.json" # ============================================================================ @@ -375,7 +381,7 @@ def get_mevid_persons_with_cameras(slot: str) -> Dict[str, List[str]]: # ============================================================================ # Geom-extracted description bank directory -_GEOM_DESC_DIR = Path("/home/ah66742/data/entity_descriptions") +_GEOM_DESC_DIR = _OUTPUT / "entity_descriptions" def _load_geom_descriptions(slot: str) -> Dict[str, str]: diff --git a/meva/scripts/v10/render_question_validation.py b/meva/scripts/v10/render_question_validation.py index 98fdbcc..9dc462d 100644 --- a/meva/scripts/v10/render_question_validation.py +++ b/meva/scripts/v10/render_question_validation.py @@ -20,6 +20,7 @@ import argparse import json import math +import os import re import cv2 import numpy as np @@ -49,7 +50,9 @@ def _find_ffmpeg() -> Optional[str]: MEVA_MP4_ROOT = Path("/nas/mars/dataset/MEVA/mp4s") KITWARE_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware") KITWARE_TRAINING_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware-meva-training") -QA_OUTPUT_DIR = Path("/home/ah66742/data/qa_pairs") +# User output directory — override with MEVA_OUTPUT_DIR env var +_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) +QA_OUTPUT_DIR = _OUTPUT / "qa_pairs" def _get_video_output_dir(slot: str) -> Path: diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index 0044e9c..9cd9080 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -9,14 +9,31 @@ REMOVED from V9: re_identification, causality ADDED: best_camera (Camera Transition Logic) +Setup (run from the meva/ directory inside the repo): + cd /path/to/repo/meva + export PYTHONPATH=$PYTHONPATH:$(pwd) + export OPENAI_API_KEY=sk-... # required only for naturalization step + export MEVA_OUTPUT_DIR=~/data # optional: where QA output is saved (default: ~/data) + Usage: - python3 scripts/v10/run_pipeline.py --slot "2018-03-11.11-25-00.school" -v - python3 scripts/v10/run_pipeline.py --list-slots - python3 scripts/v10/run_pipeline.py --slot "2018-03-11.11-25-00.school" --no-save + # Step 1 — generate raw QA (free, ~5s/slot) + python3 -m scripts.v10.run_pipeline --slot "2018-03-11.11-25.school" -v + + # Step 2 — naturalize with GPT (costs tokens, requires OPENAI_API_KEY) + python3 -m scripts.v10.naturalize \\ + --input $MEVA_OUTPUT_DIR/qa_pairs/2018-03-11.11-25.school/2018-03-11.11-25.school.final.raw.json \\ + -v --yes + + # Step 3 — export to multi-cam-dataset repo format + python3 -m scripts.v10.export_to_multicam_format --slot "2018-03-11.11-25.school" + + # List all available slots + python3 -m scripts.v10.run_pipeline --list-slots """ import json import argparse +import os import random import sys import time @@ -61,9 +78,14 @@ # Constants # ============================================================================ -OUTPUT_DIR = Path("/home/ah66742/data/qa_pairs") +# Repo-relative data directory (meva/data/) — works for any clone location +_REPO_DATA = Path(__file__).resolve().parent.parent.parent / "data" +# User output directory — override with MEVA_OUTPUT_DIR env var +_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) + +OUTPUT_DIR = _OUTPUT / "qa_pairs" MEVA_MP4_BASE = Path("/nas/mars/dataset/MEVA/mp4s") -CANONICAL_SLOTS_PATH = Path("/home/ah66742/data/canonical_slots.json") +CANONICAL_SLOTS_PATH = _REPO_DATA / "canonical_slots.json" RANDOM_SEED = 42 # 7 categories — target question counts per slot From 27d5d7f8cca3f03f59c94af9133182c050032a22 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Thu, 26 Feb 2026 16:40:32 -0600 Subject: [PATCH 05/26] v10: fix entity_descriptions path + add MEVA_ENTITY_DESC_DIR env var - Add MEVA_ENTITY_DESC_DIR env var (default: /nas/mars/dataset/MEVA/entity_descriptions) so geom-color descriptions load correctly regardless of MEVA_OUTPUT_DIR - Fix run_pipeline.py: desc_path (Step 3.5) was hardcoded to /home/ah66742/data/ - Fix person_descriptions.py: _GEOM_DESC_DIR now uses _ENTITY_DESC_DIR not _OUTPUT - Without this fix: all entities fall back to 'someone' -> 0 temporal/spatial/ordering questions Other path fixes from session 57 (collaborator onboarding): - All scripts use _REPO_DATA for read-only data files (slot_index, person_db, etc.) - All scripts use MEVA_OUTPUT_DIR for writable output dirs - run.sh and QUICKSTART.md updated with correct invocation --- meva/QUICKSTART.md | 4 ++-- meva/run.sh | 2 +- meva/scripts/v10/export_to_multicam_format.py | 2 +- meva/scripts/v10/extract_entity_descriptions.py | 2 +- meva/scripts/v10/generate_temporal.py | 2 +- meva/scripts/v10/naturalize.py | 2 +- meva/scripts/v10/person_descriptions.py | 15 ++++++++++++--- meva/scripts/v10/render_question_validation.py | 2 +- meva/scripts/v10/run_pipeline.py | 8 +++++--- 9 files changed, 25 insertions(+), 14 deletions(-) diff --git a/meva/QUICKSTART.md b/meva/QUICKSTART.md index 7573538..0654a83 100644 --- a/meva/QUICKSTART.md +++ b/meva/QUICKSTART.md @@ -25,7 +25,7 @@ All commands must be run from the **`meva/` directory** inside this repo: cd /path/to/repo/meva export PYTHONPATH=$PYTHONPATH:$(pwd) export OPENAI_API_KEY=sk-... # only needed for Step 2 -export MEVA_OUTPUT_DIR=~/data # where QA JSON + logs are saved (default: ~/data) +export OUTPUT_DIR=~/data # where QA JSON + logs are saved (default: ~/data) ``` ### Step 1 — Raw QA generation (free, ~5 seconds per slot) @@ -131,4 +131,4 @@ $MEVA_OUTPUT_DIR/ → Only needed for Step 2. Steps 1 and 3 are free. **Output goes to wrong directory** -→ Set `export MEVA_OUTPUT_DIR=/your/home/data` before running. +→ Set `export OUTPUT_DIR=/your/home/data` before running. diff --git a/meva/run.sh b/meva/run.sh index 856c945..45cd6dd 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -18,7 +18,7 @@ set -e SLOT="${1:-2018-03-11.11-25.school}" -OUTPUT_DIR="${MEVA_OUTPUT_DIR:-$HOME/data}" +OUTPUT_DIR="${OUTPUT_DIR:-$HOME/data}" export PYTHONPATH=$PYTHONPATH:$(pwd) diff --git a/meva/scripts/v10/export_to_multicam_format.py b/meva/scripts/v10/export_to_multicam_format.py index 18450bf..61057a0 100644 --- a/meva/scripts/v10/export_to_multicam_format.py +++ b/meva/scripts/v10/export_to_multicam_format.py @@ -32,7 +32,7 @@ # Paths # User output directory — override with MEVA_OUTPUT_DIR env var -_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) +_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) INPUT_DIR = _OUTPUT / "qa_pairs" OUTPUT_DIR = Path("/nas/neurosymbolic/multi-cam-dataset/meva/qa_pairs") diff --git a/meva/scripts/v10/extract_entity_descriptions.py b/meva/scripts/v10/extract_entity_descriptions.py index 9b3981c..e6ee278 100644 --- a/meva/scripts/v10/extract_entity_descriptions.py +++ b/meva/scripts/v10/extract_entity_descriptions.py @@ -44,7 +44,7 @@ AVI_BASE = Path("/nas/mars/dataset/MEVA/avis") # Raw AVIs — lossless, better color MP4_BASE = Path("/nas/mars/dataset/MEVA/mp4s") # Fallback (CRF 32 re-encode) # User output directory — override with MEVA_OUTPUT_DIR env var -_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) +_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) OUTPUT_DIR = _OUTPUT / "entity_descriptions" # ============================================================================ diff --git a/meva/scripts/v10/generate_temporal.py b/meva/scripts/v10/generate_temporal.py index 21ef792..edbc6a2 100644 --- a/meva/scripts/v10/generate_temporal.py +++ b/meva/scripts/v10/generate_temporal.py @@ -25,7 +25,7 @@ # Constants # ============================================================================ -MIN_GAP = 3.0 +MIN_GAP = 1.0 MAX_GAP = 15.0 FALLBACK_MAX_GAP = 20.0 DEFAULT_FPS = 30.0 diff --git a/meva/scripts/v10/naturalize.py b/meva/scripts/v10/naturalize.py index f79ef46..d3c3e7d 100644 --- a/meva/scripts/v10/naturalize.py +++ b/meva/scripts/v10/naturalize.py @@ -45,7 +45,7 @@ # ============================================================================ # User output directory — override with MEVA_OUTPUT_DIR env var -_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) +_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) QA_DIR = _OUTPUT / "qa_pairs" LOG_DIR = _OUTPUT / "gpt_logs" diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py index 521c269..ad7dba8 100644 --- a/meva/scripts/v10/person_descriptions.py +++ b/meva/scripts/v10/person_descriptions.py @@ -26,7 +26,9 @@ # Repo-relative data directory (meva/data/) — works for any clone location _REPO_DATA = Path(__file__).resolve().parent.parent.parent / "data" # User output directory — override with MEVA_OUTPUT_DIR env var -_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) +_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) +# Entity descriptions directory — override with MEVA_ENTITY_DESC_DIR env var +_ENTITY_DESC_DIR = Path(os.environ.get("MEVA_ENTITY_DESC_DIR") or "/nas/mars/dataset/MEVA/entity_descriptions") PERSON_DB_PATH = _REPO_DATA / "person_database_yolo.json" PERSON_DB_ORIG_PATH = _REPO_DATA / "person_database.json" @@ -381,7 +383,7 @@ def get_mevid_persons_with_cameras(slot: str) -> Dict[str, List[str]]: # ============================================================================ # Geom-extracted description bank directory -_GEOM_DESC_DIR = _OUTPUT / "entity_descriptions" +_GEOM_DESC_DIR = _ENTITY_DESC_DIR def _load_geom_descriptions(slot: str) -> Dict[str, str]: @@ -506,9 +508,16 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: print(f" Entity enrichment: {mevid_count} MEVID, {geom_count} geom-color, " f"{fallback_count} fallback ({total} total)") - # Build set of entity IDs that got fallback (non-visual) descriptions + # Build set of PERSON entity IDs that got fallback (non-visual) descriptions. + # Non-person entities (vehicles, objects) always get generic descriptions like + # "a vehicle" — that's correct and complete, not a quality failure. + # Only person entities with generic fallbacks ("a person", "someone walking") + # degrade question quality, so only they are flagged here. fallback_eids = set() for eid, desc in entity_descriptions.items(): + entity = sg.entities.get(eid) + if entity and entity.entity_type != "person": + continue # vehicles/objects: "a vehicle" is acceptable, not fallback if not is_visual_description(desc): fallback_eids.add(eid) diff --git a/meva/scripts/v10/render_question_validation.py b/meva/scripts/v10/render_question_validation.py index 9dc462d..95d7e90 100644 --- a/meva/scripts/v10/render_question_validation.py +++ b/meva/scripts/v10/render_question_validation.py @@ -51,7 +51,7 @@ def _find_ffmpeg() -> Optional[str]: KITWARE_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware") KITWARE_TRAINING_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware-meva-training") # User output directory — override with MEVA_OUTPUT_DIR env var -_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) +_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) QA_OUTPUT_DIR = _OUTPUT / "qa_pairs" diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index 9cd9080..141501f 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -13,7 +13,7 @@ cd /path/to/repo/meva export PYTHONPATH=$PYTHONPATH:$(pwd) export OPENAI_API_KEY=sk-... # required only for naturalization step - export MEVA_OUTPUT_DIR=~/data # optional: where QA output is saved (default: ~/data) + export OUTPUT_DIR=~/data # optional: where QA output is saved (default: ~/data) Usage: # Step 1 — generate raw QA (free, ~5s/slot) @@ -81,10 +81,12 @@ # Repo-relative data directory (meva/data/) — works for any clone location _REPO_DATA = Path(__file__).resolve().parent.parent.parent / "data" # User output directory — override with MEVA_OUTPUT_DIR env var -_OUTPUT = Path(os.environ.get("MEVA_OUTPUT_DIR", str(Path.home() / "data"))) +_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) OUTPUT_DIR = _OUTPUT / "qa_pairs" MEVA_MP4_BASE = Path("/nas/mars/dataset/MEVA/mp4s") +# Entity descriptions directory — override with MEVA_ENTITY_DESC_DIR env var +_ENTITY_DESC_DIR = Path(os.environ.get("MEVA_ENTITY_DESC_DIR") or "/nas/mars/dataset/MEVA/entity_descriptions") CANONICAL_SLOTS_PATH = _REPO_DATA / "canonical_slots.json" RANDOM_SEED = 42 @@ -481,7 +483,7 @@ def run_pipeline(slot: str, verbose: bool = False, resolved = resolve_entities(sg, verbose=verbose) # Step 3.5: Auto-extract entity descriptions if not yet done - desc_path = Path("/home/ah66742/data/entity_descriptions") / f"{slot}.json" + desc_path = _ENTITY_DESC_DIR / f"{slot}.json" if not desc_path.exists(): if verbose: print(f"\nStep 3.5: Extracting entity descriptions (YOLO+HSV)...") From f62b6d128fd2188a3181efa5498824f21bf4c49c Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Thu, 26 Feb 2026 16:45:33 -0600 Subject: [PATCH 06/26] v10: fix remaining hardcoded /home/ah66742/data paths in utility scripts - batch_extract_all_slots.py: SLOT_INDEX_PATH, OUTPUT_DIR - build_geom_slot_index.py: SLOT_INDEX_PATH, OUTPUT_PATH - review_qa.py: QA_DIR Verified with strace: pipeline now has zero runtime reads from /home/ah66742/data --- meva/scripts/v10/batch_extract_all_slots.py | 4 ++-- meva/scripts/v10/build_geom_slot_index.py | 4 ++-- meva/scripts/v10/review_qa.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/meva/scripts/v10/batch_extract_all_slots.py b/meva/scripts/v10/batch_extract_all_slots.py index 690779a..d22476f 100755 --- a/meva/scripts/v10/batch_extract_all_slots.py +++ b/meva/scripts/v10/batch_extract_all_slots.py @@ -40,8 +40,8 @@ # Paths # ============================================================================ -SLOT_INDEX_PATH = Path("/home/ah66742/data/geom_slot_index.json") -OUTPUT_DIR = Path("/home/ah66742/data/entity_descriptions") +SLOT_INDEX_PATH = Path("/home/ah66742/data_back/geom_slot_index.json") +OUTPUT_DIR = Path("/home/ah66742/data_back/entity_descriptions") LOG_DIR = Path("/home/ah66742/output/extraction_logs") PROGRESS_FILE = LOG_DIR / "batch_progress.json" EXTRACTION_SCRIPT = Path("/home/ah66742/scripts/final/extract_entity_descriptions.py") diff --git a/meva/scripts/v10/build_geom_slot_index.py b/meva/scripts/v10/build_geom_slot_index.py index be85977..8c88738 100755 --- a/meva/scripts/v10/build_geom_slot_index.py +++ b/meva/scripts/v10/build_geom_slot_index.py @@ -19,8 +19,8 @@ from pathlib import Path from typing import Dict -SLOT_INDEX_PATH = Path("/home/ah66742/data/slot_index.json") -OUTPUT_PATH = Path("/home/ah66742/data/geom_slot_index.json") +SLOT_INDEX_PATH = Path("/home/ah66742/data_back/slot_index.json") +OUTPUT_PATH = Path("/home/ah66742/data_back/geom_slot_index.json") EXTRACTION_SCRIPT = Path("/home/ah66742/scripts/final/extract_entity_descriptions.py") diff --git a/meva/scripts/v10/review_qa.py b/meva/scripts/v10/review_qa.py index d2889a9..ed46d95 100644 --- a/meva/scripts/v10/review_qa.py +++ b/meva/scripts/v10/review_qa.py @@ -30,7 +30,7 @@ from pathlib import Path from datetime import datetime -QA_DIR = Path("/home/ah66742/data/qa_pairs") +QA_DIR = Path("/home/ah66742/data_back/qa_pairs") VIDEO_DIR = Path("/home/ah66742/output/validation_videos") AUDIT_DIR = Path("/home/ah66742/output/qa_audits") AUDIT_DIR.mkdir(parents=True, exist_ok=True) From 0db3a040a50cdd317247773c070357e8533a000f Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Thu, 26 Feb 2026 16:46:40 -0600 Subject: [PATCH 07/26] v10: properly fix utility script paths with env vars (not data_back) batch_extract_all_slots.py: - SLOT_INDEX_PATH: _REPO_DATA/geom_slot_index.json - OUTPUT_DIR: MEVA_ENTITY_DESC_DIR env var (default: /nas/mars/dataset/MEVA/entity_descriptions) - LOG_DIR: _OUTPUT/extraction_logs - EXTRACTION_SCRIPT: repo-relative (scripts/v10/extract_entity_descriptions.py) build_geom_slot_index.py: - SLOT_INDEX_PATH/OUTPUT_PATH: _REPO_DATA relative - EXTRACTION_SCRIPT: repo-relative review_qa.py: - QA_DIR/VIDEO_DIR/AUDIT_DIR: _OUTPUT (MEVA_OUTPUT_DIR env var) Verified: zero Path('/home/ah66742/') code-level references remain in v10/ --- meva/scripts/v10/batch_extract_all_slots.py | 12 ++++++++---- meva/scripts/v10/build_geom_slot_index.py | 8 +++++--- meva/scripts/v10/review_qa.py | 8 +++++--- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/meva/scripts/v10/batch_extract_all_slots.py b/meva/scripts/v10/batch_extract_all_slots.py index d22476f..8755927 100755 --- a/meva/scripts/v10/batch_extract_all_slots.py +++ b/meva/scripts/v10/batch_extract_all_slots.py @@ -29,6 +29,7 @@ import argparse import json +import os import sys import time import subprocess @@ -40,11 +41,14 @@ # Paths # ============================================================================ -SLOT_INDEX_PATH = Path("/home/ah66742/data_back/geom_slot_index.json") -OUTPUT_DIR = Path("/home/ah66742/data_back/entity_descriptions") -LOG_DIR = Path("/home/ah66742/output/extraction_logs") +_REPO_DATA = Path(__file__).resolve().parent.parent.parent / "data" +_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) + +SLOT_INDEX_PATH = _REPO_DATA / "geom_slot_index.json" +OUTPUT_DIR = Path(os.environ.get("MEVA_ENTITY_DESC_DIR") or "/nas/mars/dataset/MEVA/entity_descriptions") +LOG_DIR = _OUTPUT / "extraction_logs" PROGRESS_FILE = LOG_DIR / "batch_progress.json" -EXTRACTION_SCRIPT = Path("/home/ah66742/scripts/final/extract_entity_descriptions.py") +EXTRACTION_SCRIPT = Path(__file__).resolve().parent / "extract_entity_descriptions.py" # ============================================================================ # Progress Tracking diff --git a/meva/scripts/v10/build_geom_slot_index.py b/meva/scripts/v10/build_geom_slot_index.py index 8c88738..e82bbf3 100755 --- a/meva/scripts/v10/build_geom_slot_index.py +++ b/meva/scripts/v10/build_geom_slot_index.py @@ -19,9 +19,11 @@ from pathlib import Path from typing import Dict -SLOT_INDEX_PATH = Path("/home/ah66742/data_back/slot_index.json") -OUTPUT_PATH = Path("/home/ah66742/data_back/geom_slot_index.json") -EXTRACTION_SCRIPT = Path("/home/ah66742/scripts/final/extract_entity_descriptions.py") +_REPO_DATA = Path(__file__).resolve().parent.parent.parent / "data" + +SLOT_INDEX_PATH = _REPO_DATA / "slot_index.json" +OUTPUT_PATH = _REPO_DATA / "geom_slot_index.json" +EXTRACTION_SCRIPT = Path(__file__).resolve().parent / "extract_entity_descriptions.py" def main(): diff --git a/meva/scripts/v10/review_qa.py b/meva/scripts/v10/review_qa.py index ed46d95..3483c23 100644 --- a/meva/scripts/v10/review_qa.py +++ b/meva/scripts/v10/review_qa.py @@ -30,9 +30,11 @@ from pathlib import Path from datetime import datetime -QA_DIR = Path("/home/ah66742/data_back/qa_pairs") -VIDEO_DIR = Path("/home/ah66742/output/validation_videos") -AUDIT_DIR = Path("/home/ah66742/output/qa_audits") +_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) + +QA_DIR = _OUTPUT / "qa_pairs" +VIDEO_DIR = _OUTPUT / "validation_videos" +AUDIT_DIR = _OUTPUT / "qa_audits" AUDIT_DIR.mkdir(parents=True, exist_ok=True) # ANSI colors From 172672f2955fac557323d33c8a1a4f3b54f217d5 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Thu, 26 Feb 2026 16:56:09 -0600 Subject: [PATCH 08/26] v10: fix export OUTPUT_DIR + run.sh RAW_JSON path bug export_to_multicam_format.py: - OUTPUT_DIR now uses MEVA_MULTICAM_OUT env var - Default: /nas/neurosymbolic/multi-cam-dataset/meva/data/qa_pairs - Was hardcoded to .../meva/qa_pairs (wrong path) run.sh: - Fix RAW_JSON path: remove extra $SLOT/ subdirectory - Was: $OUTPUT_DIR/qa_pairs/$SLOT/$SLOT.final.raw.json - Now: $OUTPUT_DIR/qa_pairs/$SLOT.final.raw.json Verified: full 3-step pipeline (generate + naturalize + export) with MEVA_OUTPUT_DIR=/nas/neurosymbolic/multi-cam-dataset/meva/data writes all output to NAS, zero reads from ~/data --- meva/run.sh | 2 +- meva/scripts/v10/export_to_multicam_format.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/meva/run.sh b/meva/run.sh index 45cd6dd..1c3bbc9 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -28,7 +28,7 @@ python3 -m scripts.v10.run_pipeline \ -v \ --seed 42 -RAW_JSON="$OUTPUT_DIR/qa_pairs/$SLOT/$SLOT.final.raw.json" +RAW_JSON="$OUTPUT_DIR/qa_pairs/$SLOT.final.raw.json" echo "" echo "=== Step 2: Naturalization (GPT — requires OPENAI_API_KEY) ===" diff --git a/meva/scripts/v10/export_to_multicam_format.py b/meva/scripts/v10/export_to_multicam_format.py index 61057a0..eb68add 100644 --- a/meva/scripts/v10/export_to_multicam_format.py +++ b/meva/scripts/v10/export_to_multicam_format.py @@ -34,7 +34,8 @@ # User output directory — override with MEVA_OUTPUT_DIR env var _OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) INPUT_DIR = _OUTPUT / "qa_pairs" -OUTPUT_DIR = Path("/nas/neurosymbolic/multi-cam-dataset/meva/qa_pairs") +# Export destination — override with MEVA_MULTICAM_OUT env var +OUTPUT_DIR = Path(os.environ.get("MEVA_MULTICAM_OUT") or "/nas/neurosymbolic/multi-cam-dataset/meva/data/qa_pairs") LETTER_MAP = {0: "A", 1: "B", 2: "C", 3: "D", 4: "E", 5: "F"} From 6a1c27e3a78b55a27490e63097a0d907915cbd84 Mon Sep 17 00:00:00 2001 From: Syzygianinfern0 Date: Thu, 26 Feb 2026 17:08:27 -0600 Subject: [PATCH 09/26] Make runs deterministic --- meva/run.sh | 31 +++++++++++++------------ meva/scripts/v10/build_scene_graph.py | 3 ++- meva/scripts/v10/parse_annotations.py | 4 ++-- meva/scripts/v10/person_descriptions.py | 2 +- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/meva/run.sh b/meva/run.sh index 1c3bbc9..35dc258 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -15,14 +15,15 @@ # pip install pyyaml numpy opencv-python openai # (or: source /home/ah66742/venv/bin/activate) -set -e +# set -e +export MEVA_OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data" SLOT="${1:-2018-03-11.11-25.school}" -OUTPUT_DIR="${OUTPUT_DIR:-$HOME/data}" +OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data" -export PYTHONPATH=$PYTHONPATH:$(pwd) +# export PYTHONPATH=$PYTHONPATH:$(pwd) -echo "=== Step 1: Raw QA generation (slot: $SLOT) ===" +# echo "=== Step 1: Raw QA generation (slot: $SLOT) ===" python3 -m scripts.v10.run_pipeline \ --slot "$SLOT" \ -v \ @@ -30,16 +31,16 @@ python3 -m scripts.v10.run_pipeline \ RAW_JSON="$OUTPUT_DIR/qa_pairs/$SLOT.final.raw.json" -echo "" -echo "=== Step 2: Naturalization (GPT — requires OPENAI_API_KEY) ===" -python3 -m scripts.v10.naturalize \ - --input "$RAW_JSON" \ - -v --yes +# echo "" +# echo "=== Step 2: Naturalization (GPT — requires OPENAI_API_KEY) ===" +# python3 -m scripts.v10.naturalize \ +# --input "$RAW_JSON" \ +# -v --yes -echo "" -echo "=== Step 3: Export to multi-cam-dataset format ===" -python3 -m scripts.v10.export_to_multicam_format \ - --slot "$SLOT" +# echo "" +# echo "=== Step 3: Export to multi-cam-dataset format ===" +# python3 -m scripts.v10.export_to_multicam_format \ +# --slot "$SLOT" -echo "" -echo "Done. Output in $OUTPUT_DIR/qa_pairs/$SLOT/" +# echo "" +# echo "Done. Output in $OUTPUT_DIR/qa_pairs/$SLOT/" diff --git a/meva/scripts/v10/build_scene_graph.py b/meva/scripts/v10/build_scene_graph.py index 3c11e72..0b6dade 100644 --- a/meva/scripts/v10/build_scene_graph.py +++ b/meva/scripts/v10/build_scene_graph.py @@ -205,7 +205,8 @@ def build_scene_graph(slot: str, events: List[Event], entities: Dict[str, Entity] = {} framerate = DEFAULT_FRAMERATE - for cam_id, actor_ids in entity_actor_ids.items(): + for cam_id in sorted(entity_actor_ids.keys()): + actor_ids = sorted(entity_actor_ids[cam_id]) cam_ranges = entity_frame_ranges.get(cam_id, {}) cam_bboxes = entity_bboxes.get(cam_id, {}) diff --git a/meva/scripts/v10/parse_annotations.py b/meva/scripts/v10/parse_annotations.py index 5eed798..6411034 100644 --- a/meva/scripts/v10/parse_annotations.py +++ b/meva/scripts/v10/parse_annotations.py @@ -208,7 +208,7 @@ def find_clips_for_slot(slot: str) -> List[Dict]: if not ann_dir.exists(): continue - for cam_id in info["cameras"]: + for cam_id in sorted(info["cameras"]): if cam_id in cameras_seen: continue if cam_id not in info["sources"].get(source_name, []): @@ -216,7 +216,7 @@ def find_clips_for_slot(slot: str) -> List[Dict]: # Find matching activities.yml (minute-level match) pattern = f"{date}.{slot_time}*{cam_id}*.activities.yml" - matches = list(ann_dir.glob(pattern)) + matches = sorted(ann_dir.glob(pattern)) if matches: act_file = matches[0] clip_name = act_file.stem.replace(".activities", "") diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py index ad7dba8..7855498 100644 --- a/meva/scripts/v10/person_descriptions.py +++ b/meva/scripts/v10/person_descriptions.py @@ -367,7 +367,7 @@ def get_mevid_persons_with_cameras(slot: str) -> Dict[str, List[str]]: orig_persons = orig_db.get("persons", {}) result = {} - for pid in mevid_persons: + for pid in sorted(mevid_persons): person_data = orig_persons.get(pid, {}) person_cameras = set(person_data.get("cameras", {}).keys()) # Intersect with this slot's MEVID cameras From 6cb4993645b30322faf2b64daf2b55296d513211 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Thu, 26 Feb 2026 17:46:41 -0600 Subject: [PATCH 10/26] fix spatial: lower MIN_BBOX_AREA for KRTD (wide-field) cameras MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wide-field outdoor cameras (G328, G336, G339, G424, G638, G639) annotate people that appear much smaller in frame (~6k-11k px²) compared to close-up entrance cameras (G419, G420, G421) where people appear at ~100k px². MIN_BBOX_AREA = 41472 (2% of 1920x1080) was silently dropping every single actor on KRTD cameras, producing 0 spatial questions on all slots. Fix: add MIN_BBOX_AREA_KRTD = 2048 (0.1% of 1920x1080, ~46x46 px) and apply it when cameras[cam_id].has_krtd is True. Non-KRTD cameras keep the original 41472 threshold. Verified: 2018-03-13.16-20.school now yields 455 entities with 3D positions and 3 spatial questions (was 0 before). --- meva/scripts/v10/build_scene_graph.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/meva/scripts/v10/build_scene_graph.py b/meva/scripts/v10/build_scene_graph.py index 0b6dade..51f71d2 100644 --- a/meva/scripts/v10/build_scene_graph.py +++ b/meva/scripts/v10/build_scene_graph.py @@ -19,7 +19,11 @@ # 2% of 1920×1080 = 2,073,600 × 0.02 ≈ 41,472 px² (~200×208 px minimum) +# For close-up cameras (G419, G420, G421 etc.) where people fill the frame MIN_BBOX_AREA = 41472 +# 0.1% of 1920×1080 ≈ 2,073 px² (~46×46 px minimum) +# For wide-field outdoor KRTD cameras (G336, G328, G638 etc.) where people are small +MIN_BBOX_AREA_KRTD = 2048 # ============================================================================ # Data Structures @@ -240,13 +244,17 @@ def build_scene_graph(slot: str, events: List[Event], events=entity_events.get(cam_id, {}).get(aid, []), ) - # Filter out entities whose bounding boxes are too small + # Filter out entities whose bounding boxes are too small. + # Wide-field KRTD cameras have a much lower threshold since people + # appear small but are still valid for 3D projection. if entity.keyframe_bboxes: areas = [(bb[2]-bb[0]) * (bb[3]-bb[1]) for bb in entity.keyframe_bboxes.values()] median_area = sorted(areas)[len(areas)//2] - if median_area < MIN_BBOX_AREA: + is_krtd_cam = cameras[cam_id].has_krtd + threshold = MIN_BBOX_AREA_KRTD if is_krtd_cam else MIN_BBOX_AREA + if median_area < threshold: if verbose: - print(f" Skipping {entity_id}: median bbox area {median_area} < {MIN_BBOX_AREA}") + print(f" Skipping {entity_id}: median bbox area {median_area} < {threshold}") continue entities[entity_id] = entity From c234283cb41e5db7a3981b90bc99cd20f7b6859f Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Thu, 26 Feb 2026 18:11:25 -0600 Subject: [PATCH 11/26] =?UTF-8?q?v10:=20rebuild=20MEVID=20slots=20index=20?= =?UTF-8?q?(23=E2=86=9280=20persons)=20+=20env=20var=20paths?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add build_mevid_slots.py: standalone script to rebuild mevid_supported_slots.json from authoritative MEVID annotation sources (train/test_name.txt + video URLs) - Rebuild mevid_supported_slots.json: 80 cross-camera persons across 168 slots (was 23 persons / 887 slots from stale source) - Add MEVA_MEVID_DATA_DIR / MEVA_MEVID_URLS env var overrides in both build_mevid_slots.py and utils/mevid.py (NAS defaults preserved) - Remove all /home/ah66742 references from live code (docstrings, run.sh) --- meva/data/mevid_supported_slots.json | 39629 +++------------- meva/run.sh | 2 +- meva/scripts/v10/batch_extract_all_slots.py | 6 +- meva/scripts/v10/build_mevid_slots.py | 188 + meva/scripts/v10/export_to_multicam_format.py | 4 +- meva/scripts/v10/utils/mevid.py | 5 +- 6 files changed, 7573 insertions(+), 32261 deletions(-) create mode 100644 meva/scripts/v10/build_mevid_slots.py diff --git a/meva/data/mevid_supported_slots.json b/meva/data/mevid_supported_slots.json index 85765f5..c2fbea1 100644 --- a/meva/data/mevid_supported_slots.json +++ b/meva/data/mevid_supported_slots.json @@ -1,961 +1,8 @@ { - "metadata": { - "extracted_persons": [ - 8, - 10, - 32, - 40, - 46, - 48, - 52, - 53, - 54, - 74, - 76, - 80, - 97, - 110, - 202, - 211, - 229, - 238, - 260, - 268, - 271, - 280, - 292 - ], - "total_persons": 23, - "cameras": [ - "G299", - "G300", - "G326", - "G328", - "G329", - "G330", - "G331", - "G336", - "G339", - "G340", - "G341", - "G419", - "G420", - "G421", - "G423", - "G424", - "G436", - "G505", - "G506", - "G507", - "G508", - "G509", - "G638", - "G639" - ], - "total_cameras": 24, - "total_slots": 887 - }, - "by_site": { - "admin": [ - "2018-03-05.13-10-00.admin", - "2018-03-05.13-15-00.admin", - "2018-03-05.13-20-00.admin", - "2018-03-05.14-00-00.admin", - "2018-03-05.14-05-00.admin", - "2018-03-05.14-10-00.admin", - "2018-03-07.10-55-00.admin", - "2018-03-07.10-55-01.admin", - "2018-03-07.11-00-00.admin", - "2018-03-07.11-00-01.admin", - "2018-03-07.11-05-00.admin", - "2018-03-07.11-05-01.admin", - "2018-03-07.11-10-00.admin", - "2018-03-07.11-10-01.admin", - "2018-03-07.16-50-00.admin", - "2018-03-07.16-50-01.admin", - "2018-03-07.16-55-00.admin", - "2018-03-07.16-55-01.admin", - "2018-03-07.17-00-00.admin", - "2018-03-07.17-00-01.admin", - "2018-03-07.17-05-00.admin", - "2018-03-07.17-05-01.admin", - "2018-03-07.17-20-00.admin", - "2018-03-07.17-20-01.admin", - "2018-03-07.17-25-00.admin", - "2018-03-07.17-25-01.admin", - "2018-03-07.17-30-00.admin", - "2018-03-07.17-30-01.admin", - "2018-03-07.17-35-00.admin", - "2018-03-07.17-35-01.admin", - "2018-03-09.10-10-01.admin", - "2018-03-09.10-15-01.admin", - "2018-03-09.10-20-01.admin", - "2018-03-09.10-25-01.admin", - "2018-03-09.10-30-01.admin", - "2018-03-09.10-35-01.admin", - "2018-03-09.10-40-01.admin", - "2018-03-11.11-20-00.admin", - "2018-03-11.11-20-01.admin", - "2018-03-11.11-25-00.admin", - "2018-03-11.11-25-01.admin", - "2018-03-11.11-30-00.admin", - "2018-03-11.11-30-01.admin", - "2018-03-11.11-35-00.admin", - "2018-03-11.11-35-01.admin", - "2018-03-11.11-40-00.admin", - "2018-03-11.11-40-01.admin", - "2018-03-11.11-45-00.admin", - "2018-03-11.11-45-01.admin", - "2018-03-11.11-50-00.admin", - "2018-03-11.11-50-01.admin", - "2018-03-11.11-55-00.admin", - "2018-03-11.11-55-01.admin", - "2018-03-11.13-50-00.admin", - "2018-03-11.13-50-01.admin", - "2018-03-11.13-55-00.admin", - "2018-03-11.13-55-01.admin", - "2018-03-11.14-00-00.admin", - "2018-03-11.14-00-01.admin", - "2018-03-11.14-05-00.admin", - "2018-03-11.14-05-01.admin", - "2018-03-11.14-10-00.admin", - "2018-03-11.14-10-01.admin", - "2018-03-11.14-15-00.admin", - "2018-03-11.14-15-01.admin", - "2018-03-11.14-20-00.admin", - "2018-03-11.14-20-01.admin", - "2018-03-11.16-10-01.admin", - "2018-03-11.16-15-01.admin", - "2018-03-11.16-20-01.admin", - "2018-03-11.16-25-01.admin", - "2018-03-11.16-30-01.admin", - "2018-03-11.16-35-01.admin", - "2018-03-11.16-40-01.admin", - "2018-03-11.17-10-01.admin", - "2018-03-11.17-15-01.admin", - "2018-03-11.17-20-01.admin", - "2018-03-11.17-25-01.admin", - "2018-03-12.10-00-01.admin", - "2018-03-12.10-00-02.admin", - "2018-03-12.10-05-01.admin", - "2018-03-12.10-10-01.admin", - "2018-03-12.10-15-01.admin", - "2018-03-12.10-20-01.admin", - "2018-03-12.10-25-01.admin", - "2018-03-12.10-30-00.admin", - "2018-03-12.10-30-01.admin", - "2018-03-12.10-40-00.admin", - "2018-03-12.10-40-01.admin", - "2018-03-12.10-45-00.admin", - "2018-03-12.10-45-01.admin", - "2018-03-12.10-50-01.admin", - "2018-03-12.10-50-02.admin", - "2018-03-12.10-55-01.admin", - "2018-03-12.10-55-02.admin", - "2018-03-12.11-00-01.admin", - "2018-03-12.11-05-01.admin", - "2018-03-12.11-10-01.admin", - "2018-03-13.15-50-01.admin", - "2018-03-13.15-55-01.admin", - "2018-03-13.16-00-01.admin", - "2018-03-13.16-05-01.admin", - "2018-03-13.16-10-01.admin", - "2018-03-13.16-15-01.admin", - "2018-03-13.16-20-01.admin", - "2018-03-13.16-25-01.admin", - "2018-03-13.16-30-01.admin", - "2018-03-13.17-05-01.admin", - "2018-03-13.17-10-01.admin", - "2018-03-13.17-15-01.admin", - "2018-03-13.17-20-01.admin", - "2018-03-13.17-25-01.admin", - "2018-03-13.17-30-01.admin", - "2018-03-13.17-35-01.admin", - "2018-03-13.17-40-01.admin", - "2018-03-15.14-50-01.admin", - "2018-03-15.14-55-01.admin", - "2018-03-15.15-00-01.admin", - "2018-03-15.15-05-01.admin", - "2018-03-15.15-10-01.admin", - "2018-03-15.15-15-01.admin", - "2018-03-15.15-30-01.admin", - "2018-03-15.15-35-01.admin", - "2018-03-15.15-40-01.admin", - "2018-03-15.15-45-01.admin", - "2018-03-15.15-50-01.admin", - "2018-03-15.15-55-01.admin" - ], - "bus": [ - "2018-03-05.13-10-00.bus", - "2018-03-05.13-10-01.bus", - "2018-03-05.13-15-00.bus", - "2018-03-05.13-15-01.bus", - "2018-03-05.13-20-00.bus", - "2018-03-05.13-20-01.bus", - "2018-03-05.14-00-00.bus", - "2018-03-05.14-00-01.bus", - "2018-03-05.14-05-00.bus", - "2018-03-05.14-05-01.bus", - "2018-03-05.14-10-00.bus", - "2018-03-05.14-10-01.bus", - "2018-03-07.10-55-00.bus", - "2018-03-07.10-55-01.bus", - "2018-03-07.10-55-06.bus", - "2018-03-07.11-00-00.bus", - "2018-03-07.11-00-01.bus", - "2018-03-07.11-00-06.bus", - "2018-03-07.11-05-00.bus", - "2018-03-07.11-05-01.bus", - "2018-03-07.11-05-06.bus", - "2018-03-07.11-10-00.bus", - "2018-03-07.11-10-01.bus", - "2018-03-07.11-10-06.bus", - "2018-03-07.16-50-00.bus", - "2018-03-07.16-50-01.bus", - "2018-03-07.16-55-00.bus", - "2018-03-07.16-55-01.bus", - "2018-03-07.17-00-00.bus", - "2018-03-07.17-00-01.bus", - "2018-03-07.17-05-00.bus", - "2018-03-07.17-05-01.bus", - "2018-03-07.17-20-00.bus", - "2018-03-07.17-20-01.bus", - "2018-03-07.17-25-00.bus", - "2018-03-07.17-25-01.bus", - "2018-03-07.17-30-00.bus", - "2018-03-07.17-30-01.bus", - "2018-03-07.17-35-00.bus", - "2018-03-07.17-35-01.bus", - "2018-03-09.10-10-00.bus", - "2018-03-09.10-10-01.bus", - "2018-03-09.10-15-00.bus", - "2018-03-09.10-15-01.bus", - "2018-03-09.10-20-00.bus", - "2018-03-09.10-20-01.bus", - "2018-03-09.10-25-00.bus", - "2018-03-09.10-25-01.bus", - "2018-03-09.10-30-00.bus", - "2018-03-09.10-30-01.bus", - "2018-03-09.10-35-00.bus", - "2018-03-09.10-35-01.bus", - "2018-03-09.10-40-00.bus", - "2018-03-09.10-40-01.bus", - "2018-03-11.11-20-00.bus", - "2018-03-11.11-20-01.bus", - "2018-03-11.11-20-08.bus", - "2018-03-11.11-25-00.bus", - "2018-03-11.11-25-01.bus", - "2018-03-11.11-25-08.bus", - "2018-03-11.11-30-00.bus", - "2018-03-11.11-30-01.bus", - "2018-03-11.11-30-08.bus", - "2018-03-11.11-35-00.bus", - "2018-03-11.11-35-01.bus", - "2018-03-11.11-35-08.bus", - "2018-03-11.11-40-00.bus", - "2018-03-11.11-40-01.bus", - "2018-03-11.11-40-08.bus", - "2018-03-11.11-45-00.bus", - "2018-03-11.11-45-01.bus", - "2018-03-11.11-45-08.bus", - "2018-03-11.11-50-00.bus", - "2018-03-11.11-50-01.bus", - "2018-03-11.11-50-08.bus", - "2018-03-11.11-55-00.bus", - "2018-03-11.11-55-01.bus", - "2018-03-11.11-55-08.bus", - "2018-03-11.13-50-00.bus", - "2018-03-11.13-50-01.bus", - "2018-03-11.13-50-08.bus", - "2018-03-11.13-55-00.bus", - "2018-03-11.13-55-01.bus", - "2018-03-11.13-55-08.bus", - "2018-03-11.14-00-00.bus", - "2018-03-11.14-00-01.bus", - "2018-03-11.14-00-08.bus", - "2018-03-11.14-05-00.bus", - "2018-03-11.14-05-01.bus", - "2018-03-11.14-05-08.bus", - "2018-03-11.14-10-00.bus", - "2018-03-11.14-10-01.bus", - "2018-03-11.14-10-08.bus", - "2018-03-11.14-15-00.bus", - "2018-03-11.14-15-01.bus", - "2018-03-11.14-15-08.bus", - "2018-03-11.14-20-00.bus", - "2018-03-11.14-20-01.bus", - "2018-03-11.14-20-08.bus", - "2018-03-11.16-10-00.bus", - "2018-03-11.16-10-01.bus", - "2018-03-11.16-10-08.bus", - "2018-03-11.16-15-00.bus", - "2018-03-11.16-15-01.bus", - "2018-03-11.16-15-08.bus", - "2018-03-11.16-20-00.bus", - "2018-03-11.16-20-01.bus", - "2018-03-11.16-20-08.bus", - "2018-03-11.16-25-00.bus", - "2018-03-11.16-25-01.bus", - "2018-03-11.16-25-08.bus", - "2018-03-11.16-30-00.bus", - "2018-03-11.16-30-01.bus", - "2018-03-11.16-30-08.bus", - "2018-03-11.16-35-00.bus", - "2018-03-11.16-35-01.bus", - "2018-03-11.16-35-08.bus", - "2018-03-11.16-40-00.bus", - "2018-03-11.16-40-01.bus", - "2018-03-11.16-40-08.bus", - "2018-03-11.16-45-00.bus", - "2018-03-11.17-10-00.bus", - "2018-03-11.17-10-01.bus", - "2018-03-11.17-10-08.bus", - "2018-03-11.17-15-00.bus", - "2018-03-11.17-15-01.bus", - "2018-03-11.17-15-08.bus", - "2018-03-11.17-20-00.bus", - "2018-03-11.17-20-01.bus", - "2018-03-11.17-20-08.bus", - "2018-03-11.17-25-00.bus", - "2018-03-11.17-25-01.bus", - "2018-03-11.17-25-08.bus", - "2018-03-12.10-00-00.bus", - "2018-03-12.10-00-01.bus", - "2018-03-12.10-05-00.bus", - "2018-03-12.10-05-01.bus", - "2018-03-12.10-10-00.bus", - "2018-03-12.10-10-01.bus", - "2018-03-12.10-15-00.bus", - "2018-03-12.10-15-01.bus", - "2018-03-12.10-20-00.bus", - "2018-03-12.10-20-01.bus", - "2018-03-12.10-25-00.bus", - "2018-03-12.10-25-01.bus", - "2018-03-12.10-30-00.bus", - "2018-03-12.10-30-01.bus", - "2018-03-12.10-40-00.bus", - "2018-03-12.10-40-01.bus", - "2018-03-12.10-45-00.bus", - "2018-03-12.10-45-01.bus", - "2018-03-12.10-50-00.bus", - "2018-03-12.10-50-01.bus", - "2018-03-12.10-55-00.bus", - "2018-03-12.11-00-00.bus", - "2018-03-12.11-00-01.bus", - "2018-03-12.11-05-00.bus", - "2018-03-12.11-05-01.bus", - "2018-03-12.11-10-00.bus", - "2018-03-13.15-50-00.bus", - "2018-03-13.15-50-04.bus", - "2018-03-13.15-55-00.bus", - "2018-03-13.15-55-04.bus", - "2018-03-13.16-00-00.bus", - "2018-03-13.16-00-05.bus", - "2018-03-13.16-05-00.bus", - "2018-03-13.16-05-05.bus", - "2018-03-13.16-10-00.bus", - "2018-03-13.16-10-05.bus", - "2018-03-13.16-15-00.bus", - "2018-03-13.16-15-05.bus", - "2018-03-13.16-20-00.bus", - "2018-03-13.16-20-05.bus", - "2018-03-13.16-25-00.bus", - "2018-03-13.16-25-05.bus", - "2018-03-13.16-30-00.bus", - "2018-03-13.16-30-04.bus", - "2018-03-13.17-05-00.bus", - "2018-03-13.17-05-05.bus", - "2018-03-13.17-10-00.bus", - "2018-03-13.17-10-05.bus", - "2018-03-13.17-15-00.bus", - "2018-03-13.17-15-05.bus", - "2018-03-13.17-20-00.bus", - "2018-03-13.17-20-05.bus", - "2018-03-13.17-25-00.bus", - "2018-03-13.17-25-05.bus", - "2018-03-13.17-30-00.bus", - "2018-03-13.17-30-01.bus", - "2018-03-13.17-30-05.bus", - "2018-03-13.17-35-00.bus", - "2018-03-13.17-35-01.bus", - "2018-03-13.17-35-05.bus", - "2018-03-13.17-40-00.bus", - "2018-03-13.17-40-01.bus", - "2018-03-13.17-40-05.bus", - "2018-03-15.14-50-00.bus", - "2018-03-15.14-50-01.bus", - "2018-03-15.14-50-04.bus", - "2018-03-15.14-55-00.bus", - "2018-03-15.14-55-01.bus", - "2018-03-15.14-55-04.bus", - "2018-03-15.15-00-00.bus", - "2018-03-15.15-00-01.bus", - "2018-03-15.15-00-04.bus", - "2018-03-15.15-05-00.bus", - "2018-03-15.15-05-01.bus", - "2018-03-15.15-05-04.bus", - "2018-03-15.15-10-00.bus", - "2018-03-15.15-10-01.bus", - "2018-03-15.15-10-04.bus", - "2018-03-15.15-15-00.bus", - "2018-03-15.15-15-01.bus", - "2018-03-15.15-15-04.bus", - "2018-03-15.15-30-00.bus", - "2018-03-15.15-30-01.bus", - "2018-03-15.15-30-04.bus", - "2018-03-15.15-35-00.bus", - "2018-03-15.15-35-01.bus", - "2018-03-15.15-35-04.bus", - "2018-03-15.15-40-00.bus", - "2018-03-15.15-40-01.bus", - "2018-03-15.15-40-04.bus", - "2018-03-15.15-45-00.bus", - "2018-03-15.15-45-01.bus", - "2018-03-15.15-45-04.bus", - "2018-03-15.15-50-00.bus", - "2018-03-15.15-50-01.bus", - "2018-03-15.15-50-04.bus", - "2018-03-15.15-55-00.bus", - "2018-03-15.15-55-01.bus", - "2018-03-15.15-55-04.bus" - ], - "hospital": [ - "2018-03-05.13-10-00.hospital", - "2018-03-05.13-15-00.hospital", - "2018-03-05.13-20-00.hospital", - "2018-03-05.14-00-00.hospital", - "2018-03-05.14-05-00.hospital", - "2018-03-05.14-10-00.hospital", - "2018-03-07.10-55-00.hospital", - "2018-03-07.10-55-04.hospital", - "2018-03-07.11-00-00.hospital", - "2018-03-07.11-00-04.hospital", - "2018-03-07.11-05-00.hospital", - "2018-03-07.11-05-04.hospital", - "2018-03-07.11-10-00.hospital", - "2018-03-07.11-10-04.hospital", - "2018-03-07.16-50-01.hospital", - "2018-03-07.16-50-05.hospital", - "2018-03-07.16-55-01.hospital", - "2018-03-07.16-55-05.hospital", - "2018-03-07.17-00-01.hospital", - "2018-03-07.17-00-05.hospital", - "2018-03-07.17-05-01.hospital", - "2018-03-07.17-05-05.hospital", - "2018-03-07.17-20-01.hospital", - "2018-03-07.17-20-05.hospital", - "2018-03-07.17-25-01.hospital", - "2018-03-07.17-25-05.hospital", - "2018-03-07.17-30-01.hospital", - "2018-03-07.17-30-05.hospital", - "2018-03-07.17-35-01.hospital", - "2018-03-07.17-35-05.hospital", - "2018-03-09.10-10-01.hospital", - "2018-03-09.10-10-02.hospital", - "2018-03-09.10-15-01.hospital", - "2018-03-09.10-15-02.hospital", - "2018-03-09.10-20-01.hospital", - "2018-03-09.10-20-02.hospital", - "2018-03-09.10-25-01.hospital", - "2018-03-09.10-30-01.hospital", - "2018-03-09.10-30-02.hospital", - "2018-03-09.10-35-01.hospital", - "2018-03-09.10-35-02.hospital", - "2018-03-09.10-40-01.hospital", - "2018-03-09.10-40-02.hospital", - "2018-03-11.11-15-08.hospital", - "2018-03-11.11-20-08.hospital", - "2018-03-11.11-25-08.hospital", - "2018-03-11.11-30-08.hospital", - "2018-03-11.11-35-08.hospital", - "2018-03-11.11-40-08.hospital", - "2018-03-11.11-45-08.hospital", - "2018-03-11.11-50-08.hospital", - "2018-03-11.11-55-08.hospital", - "2018-03-11.13-50-08.hospital", - "2018-03-11.13-55-08.hospital", - "2018-03-11.14-00-08.hospital", - "2018-03-11.14-05-08.hospital", - "2018-03-11.14-10-08.hospital", - "2018-03-11.14-15-08.hospital", - "2018-03-11.14-20-08.hospital", - "2018-03-11.16-10-08.hospital", - "2018-03-11.16-15-08.hospital", - "2018-03-11.16-20-08.hospital", - "2018-03-11.16-25-08.hospital", - "2018-03-11.16-30-08.hospital", - "2018-03-11.16-30-09.hospital", - "2018-03-11.16-35-08.hospital", - "2018-03-11.16-40-08.hospital", - "2018-03-11.17-10-08.hospital", - "2018-03-11.17-10-09.hospital", - "2018-03-11.17-15-08.hospital", - "2018-03-11.17-15-09.hospital", - "2018-03-11.17-20-08.hospital", - "2018-03-11.17-20-09.hospital", - "2018-03-11.17-25-08.hospital", - "2018-03-11.17-25-09.hospital", - "2018-03-12.10-00-00.hospital", - "2018-03-12.10-05-00.hospital", - "2018-03-12.10-10-00.hospital", - "2018-03-12.10-15-00.hospital", - "2018-03-12.10-20-00.hospital", - "2018-03-12.10-25-00.hospital", - "2018-03-12.10-30-00.hospital", - "2018-03-12.10-40-00.hospital", - "2018-03-12.10-45-00.hospital", - "2018-03-12.10-50-00.hospital", - "2018-03-12.10-55-00.hospital", - "2018-03-12.11-00-00.hospital", - "2018-03-12.11-05-00.hospital", - "2018-03-12.11-10-00.hospital", - "2018-03-13.15-50-02.hospital", - "2018-03-13.15-55-02.hospital", - "2018-03-13.16-00-02.hospital", - "2018-03-13.16-05-02.hospital", - "2018-03-13.16-10-02.hospital", - "2018-03-13.16-15-02.hospital", - "2018-03-13.16-20-02.hospital", - "2018-03-13.16-25-02.hospital", - "2018-03-13.16-30-02.hospital", - "2018-03-13.17-05-02.hospital", - "2018-03-13.17-05-03.hospital", - "2018-03-13.17-10-02.hospital", - "2018-03-13.17-10-03.hospital", - "2018-03-13.17-15-02.hospital", - "2018-03-13.17-15-03.hospital", - "2018-03-13.17-20-02.hospital", - "2018-03-13.17-20-03.hospital", - "2018-03-13.17-25-02.hospital", - "2018-03-13.17-25-03.hospital", - "2018-03-13.17-30-02.hospital", - "2018-03-13.17-30-03.hospital", - "2018-03-13.17-35-02.hospital", - "2018-03-13.17-35-03.hospital", - "2018-03-13.17-40-02.hospital", - "2018-03-13.17-40-03.hospital", - "2018-03-15.14-50-06.hospital", - "2018-03-15.14-50-07.hospital", - "2018-03-15.14-55-06.hospital", - "2018-03-15.14-55-07.hospital", - "2018-03-15.15-00-06.hospital", - "2018-03-15.15-00-07.hospital", - "2018-03-15.15-05-06.hospital", - "2018-03-15.15-05-07.hospital", - "2018-03-15.15-10-06.hospital", - "2018-03-15.15-10-07.hospital", - "2018-03-15.15-15-06.hospital", - "2018-03-15.15-15-07.hospital", - "2018-03-15.15-30-06.hospital", - "2018-03-15.15-30-07.hospital", - "2018-03-15.15-35-06.hospital", - "2018-03-15.15-35-07.hospital", - "2018-03-15.15-40-06.hospital", - "2018-03-15.15-40-07.hospital", - "2018-03-15.15-45-06.hospital", - "2018-03-15.15-45-07.hospital", - "2018-03-15.15-50-06.hospital", - "2018-03-15.15-50-07.hospital", - "2018-03-15.15-55-06.hospital", - "2018-03-15.15-55-07.hospital" - ], - "school": [ - "2018-03-05.13-10-00.school", - "2018-03-05.13-10-01.school", - "2018-03-05.13-15-00.school", - "2018-03-05.13-15-01.school", - "2018-03-05.13-20-00.school", - "2018-03-05.13-20-01.school", - "2018-03-05.14-00-00.school", - "2018-03-05.14-00-01.school", - "2018-03-05.14-05-00.school", - "2018-03-05.14-05-01.school", - "2018-03-05.14-10-00.school", - "2018-03-05.14-10-01.school", - "2018-03-07.10-55-00.school", - "2018-03-07.10-55-01.school", - "2018-03-07.10-55-05.school", - "2018-03-07.10-55-06.school", - "2018-03-07.10-55-07.school", - "2018-03-07.11-00-00.school", - "2018-03-07.11-00-01.school", - "2018-03-07.11-00-05.school", - "2018-03-07.11-00-06.school", - "2018-03-07.11-00-07.school", - "2018-03-07.11-05-00.school", - "2018-03-07.11-05-01.school", - "2018-03-07.11-05-05.school", - "2018-03-07.11-05-06.school", - "2018-03-07.11-05-07.school", - "2018-03-07.11-10-00.school", - "2018-03-07.11-10-01.school", - "2018-03-07.11-10-05.school", - "2018-03-07.11-10-06.school", - "2018-03-07.11-10-07.school", - "2018-03-07.16-50-00.school", - "2018-03-07.16-50-01.school", - "2018-03-07.16-50-06.school", - "2018-03-07.16-55-00.school", - "2018-03-07.16-55-01.school", - "2018-03-07.16-55-06.school", - "2018-03-07.17-00-00.school", - "2018-03-07.17-00-01.school", - "2018-03-07.17-00-06.school", - "2018-03-07.17-05-00.school", - "2018-03-07.17-05-01.school", - "2018-03-07.17-05-06.school", - "2018-03-07.17-20-00.school", - "2018-03-07.17-20-01.school", - "2018-03-07.17-20-06.school", - "2018-03-07.17-23-58.school", - "2018-03-07.17-25-00.school", - "2018-03-07.17-25-01.school", - "2018-03-07.17-25-03.school", - "2018-03-07.17-25-06.school", - "2018-03-07.17-25-10.school", - "2018-03-07.17-30-00.school", - "2018-03-07.17-30-01.school", - "2018-03-07.17-30-03.school", - "2018-03-07.17-30-06.school", - "2018-03-07.17-35-00.school", - "2018-03-07.17-35-01.school", - "2018-03-07.17-35-03.school", - "2018-03-07.17-35-06.school", - "2018-03-09.10-10-00.school", - "2018-03-09.10-10-01.school", - "2018-03-09.10-15-00.school", - "2018-03-09.10-15-01.school", - "2018-03-09.10-20-00.school", - "2018-03-09.10-20-01.school", - "2018-03-09.10-25-00.school", - "2018-03-09.10-25-01.school", - "2018-03-09.10-30-00.school", - "2018-03-09.10-30-01.school", - "2018-03-09.10-35-00.school", - "2018-03-09.10-35-01.school", - "2018-03-09.10-40-00.school", - "2018-03-09.10-40-01.school", - "2018-03-11.11-15-00.school", - "2018-03-11.11-15-01.school", - "2018-03-11.11-15-04.school", - "2018-03-11.11-20-00.school", - "2018-03-11.11-20-01.school", - "2018-03-11.11-20-04.school", - "2018-03-11.11-25-00.school", - "2018-03-11.11-25-01.school", - "2018-03-11.11-25-04.school", - "2018-03-11.11-30-00.school", - "2018-03-11.11-30-01.school", - "2018-03-11.11-30-04.school", - "2018-03-11.11-35-00.school", - "2018-03-11.11-35-01.school", - "2018-03-11.11-35-04.school", - "2018-03-11.11-40-00.school", - "2018-03-11.11-40-01.school", - "2018-03-11.11-40-02.school", - "2018-03-11.11-40-04.school", - "2018-03-11.11-45-00.school", - "2018-03-11.11-45-01.school", - "2018-03-11.11-45-04.school", - "2018-03-11.11-50-00.school", - "2018-03-11.11-50-01.school", - "2018-03-11.11-50-04.school", - "2018-03-11.11-55-00.school", - "2018-03-11.11-55-01.school", - "2018-03-11.11-55-04.school", - "2018-03-11.12-00-00.school", - "2018-03-11.13-50-00.school", - "2018-03-11.13-50-01.school", - "2018-03-11.13-50-04.school", - "2018-03-11.13-55-00.school", - "2018-03-11.13-55-01.school", - "2018-03-11.13-55-04.school", - "2018-03-11.14-00-00.school", - "2018-03-11.14-00-01.school", - "2018-03-11.14-00-02.school", - "2018-03-11.14-00-04.school", - "2018-03-11.14-05-00.school", - "2018-03-11.14-05-01.school", - "2018-03-11.14-05-02.school", - "2018-03-11.14-05-04.school", - "2018-03-11.14-10-00.school", - "2018-03-11.14-10-01.school", - "2018-03-11.14-10-02.school", - "2018-03-11.14-10-04.school", - "2018-03-11.14-15-00.school", - "2018-03-11.14-15-01.school", - "2018-03-11.14-15-02.school", - "2018-03-11.14-15-04.school", - "2018-03-11.14-20-00.school", - "2018-03-11.14-20-01.school", - "2018-03-11.14-20-02.school", - "2018-03-11.14-20-04.school", - "2018-03-11.16-10-01.school", - "2018-03-11.16-15-00.school", - "2018-03-11.16-15-01.school", - "2018-03-11.16-15-02.school", - "2018-03-11.16-15-04.school", - "2018-03-11.16-20-00.school", - "2018-03-11.16-20-01.school", - "2018-03-11.16-20-02.school", - "2018-03-11.16-20-04.school", - "2018-03-11.16-25-00.school", - "2018-03-11.16-25-01.school", - "2018-03-11.16-25-02.school", - "2018-03-11.16-25-04.school", - "2018-03-11.16-30-00.school", - "2018-03-11.16-30-01.school", - "2018-03-11.16-30-02.school", - "2018-03-11.16-30-04.school", - "2018-03-11.16-35-00.school", - "2018-03-11.16-35-01.school", - "2018-03-11.16-35-02.school", - "2018-03-11.16-35-04.school", - "2018-03-11.16-40-00.school", - "2018-03-11.16-40-01.school", - "2018-03-11.16-40-02.school", - "2018-03-11.16-40-04.school", - "2018-03-11.16-45-00.school", - "2018-03-11.17-10-00.school", - "2018-03-11.17-10-01.school", - "2018-03-11.17-10-02.school", - "2018-03-11.17-10-04.school", - "2018-03-11.17-15-00.school", - "2018-03-11.17-15-01.school", - "2018-03-11.17-15-02.school", - "2018-03-11.17-15-04.school", - "2018-03-11.17-20-00.school", - "2018-03-11.17-20-01.school", - "2018-03-11.17-20-02.school", - "2018-03-11.17-20-04.school", - "2018-03-11.17-25-00.school", - "2018-03-11.17-25-01.school", - "2018-03-11.17-25-02.school", - "2018-03-11.17-25-04.school", - "2018-03-12.10-00-00.school", - "2018-03-12.10-00-01.school", - "2018-03-12.10-00-02.school", - "2018-03-12.10-00-04.school", - "2018-03-12.10-00-05.school", - "2018-03-12.10-05-00.school", - "2018-03-12.10-05-01.school", - "2018-03-12.10-05-02.school", - "2018-03-12.10-05-03.school", - "2018-03-12.10-05-04.school", - "2018-03-12.10-05-05.school", - "2018-03-12.10-10-00.school", - "2018-03-12.10-10-01.school", - "2018-03-12.10-10-02.school", - "2018-03-12.10-10-03.school", - "2018-03-12.10-10-04.school", - "2018-03-12.10-10-05.school", - "2018-03-12.10-15-00.school", - "2018-03-12.10-15-01.school", - "2018-03-12.10-15-02.school", - "2018-03-12.10-15-03.school", - "2018-03-12.10-15-04.school", - "2018-03-12.10-15-05.school", - "2018-03-12.10-20-00.school", - "2018-03-12.10-20-01.school", - "2018-03-12.10-20-02.school", - "2018-03-12.10-20-03.school", - "2018-03-12.10-20-04.school", - "2018-03-12.10-20-05.school", - "2018-03-12.10-25-00.school", - "2018-03-12.10-25-01.school", - "2018-03-12.10-25-02.school", - "2018-03-12.10-25-03.school", - "2018-03-12.10-25-04.school", - "2018-03-12.10-25-05.school", - "2018-03-12.10-30-00.school", - "2018-03-12.10-30-01.school", - "2018-03-12.10-30-02.school", - "2018-03-12.10-30-03.school", - "2018-03-12.10-30-04.school", - "2018-03-12.10-30-05.school", - "2018-03-12.10-40-00.school", - "2018-03-12.10-40-01.school", - "2018-03-12.10-40-02.school", - "2018-03-12.10-40-03.school", - "2018-03-12.10-40-04.school", - "2018-03-12.10-40-05.school", - "2018-03-12.10-45-00.school", - "2018-03-12.10-45-01.school", - "2018-03-12.10-45-02.school", - "2018-03-12.10-45-03.school", - "2018-03-12.10-45-04.school", - "2018-03-12.10-45-05.school", - "2018-03-12.10-50-00.school", - "2018-03-12.10-50-01.school", - "2018-03-12.10-50-02.school", - "2018-03-12.10-50-03.school", - "2018-03-12.10-50-04.school", - "2018-03-12.10-50-05.school", - "2018-03-12.10-55-00.school", - "2018-03-12.10-55-01.school", - "2018-03-12.10-55-02.school", - "2018-03-12.10-55-03.school", - "2018-03-12.10-55-04.school", - "2018-03-12.10-55-05.school", - "2018-03-12.11-00-00.school", - "2018-03-12.11-00-01.school", - "2018-03-12.11-00-02.school", - "2018-03-12.11-00-03.school", - "2018-03-12.11-00-04.school", - "2018-03-12.11-00-05.school", - "2018-03-12.11-05-00.school", - "2018-03-12.11-05-01.school", - "2018-03-12.11-05-02.school", - "2018-03-12.11-05-03.school", - "2018-03-12.11-05-04.school", - "2018-03-12.11-05-05.school", - "2018-03-12.11-10-00.school", - "2018-03-12.11-10-01.school", - "2018-03-12.11-10-02.school", - "2018-03-12.11-10-03.school", - "2018-03-12.11-10-04.school", - "2018-03-12.11-10-05.school", - "2018-03-13.15-50-00.school", - "2018-03-13.15-50-01.school", - "2018-03-13.15-50-02.school", - "2018-03-13.15-50-03.school", - "2018-03-13.15-50-05.school", - "2018-03-13.15-50-08.school", - "2018-03-13.15-55-00.school", - "2018-03-13.15-55-01.school", - "2018-03-13.15-55-02.school", - "2018-03-13.15-55-03.school", - "2018-03-13.15-55-05.school", - "2018-03-13.15-55-08.school", - "2018-03-13.16-00-00.school", - "2018-03-13.16-00-01.school", - "2018-03-13.16-00-02.school", - "2018-03-13.16-00-03.school", - "2018-03-13.16-00-05.school", - "2018-03-13.16-00-08.school", - "2018-03-13.16-05-00.school", - "2018-03-13.16-05-01.school", - "2018-03-13.16-05-02.school", - "2018-03-13.16-05-03.school", - "2018-03-13.16-05-05.school", - "2018-03-13.16-05-08.school", - "2018-03-13.16-10-00.school", - "2018-03-13.16-10-01.school", - "2018-03-13.16-10-03.school", - "2018-03-13.16-10-05.school", - "2018-03-13.16-10-08.school", - "2018-03-13.16-15-00.school", - "2018-03-13.16-15-01.school", - "2018-03-13.16-15-03.school", - "2018-03-13.16-15-05.school", - "2018-03-13.16-15-08.school", - "2018-03-13.16-16-02.school", - "2018-03-13.16-20-00.school", - "2018-03-13.16-20-01.school", - "2018-03-13.16-20-03.school", - "2018-03-13.16-20-05.school", - "2018-03-13.16-20-08.school", - "2018-03-13.16-25-00.school", - "2018-03-13.16-25-01.school", - "2018-03-13.16-25-03.school", - "2018-03-13.16-25-05.school", - "2018-03-13.16-25-08.school", - "2018-03-13.16-26-28.school", - "2018-03-13.16-30-00.school", - "2018-03-13.16-30-01.school", - "2018-03-13.16-30-03.school", - "2018-03-13.16-30-05.school", - "2018-03-13.16-30-08.school", - "2018-03-13.16-32-54.school", - "2018-03-13.17-05-00.school", - "2018-03-13.17-05-01.school", - "2018-03-13.17-05-03.school", - "2018-03-13.17-05-05.school", - "2018-03-13.17-05-08.school", - "2018-03-13.17-10-00.school", - "2018-03-13.17-10-01.school", - "2018-03-13.17-10-03.school", - "2018-03-13.17-10-05.school", - "2018-03-13.17-10-08.school", - "2018-03-13.17-15-00.school", - "2018-03-13.17-15-01.school", - "2018-03-13.17-15-03.school", - "2018-03-13.17-15-05.school", - "2018-03-13.17-15-08.school", - "2018-03-13.17-16-48.school", - "2018-03-13.17-20-00.school", - "2018-03-13.17-20-01.school", - "2018-03-13.17-20-03.school", - "2018-03-13.17-20-05.school", - "2018-03-13.17-20-08.school", - "2018-03-13.17-20-14.school", - "2018-03-13.17-21-20.school", - "2018-03-13.17-24-36.school", - "2018-03-13.17-25-00.school", - "2018-03-13.17-25-01.school", - "2018-03-13.17-25-03.school", - "2018-03-13.17-25-05.school", - "2018-03-13.17-25-08.school", - "2018-03-13.17-30-00.school", - "2018-03-13.17-30-01.school", - "2018-03-13.17-30-03.school", - "2018-03-13.17-30-05.school", - "2018-03-13.17-30-08.school", - "2018-03-13.17-35-00.school", - "2018-03-13.17-35-01.school", - "2018-03-13.17-35-03.school", - "2018-03-13.17-35-05.school", - "2018-03-13.17-35-08.school", - "2018-03-13.17-40-00.school", - "2018-03-13.17-40-01.school", - "2018-03-13.17-40-03.school", - "2018-03-13.17-40-05.school", - "2018-03-13.17-40-08.school", - "2018-03-13.17-41-20.school", - "2018-03-13.17-42-52.school", - "2018-03-15.14-50-00.school", - "2018-03-15.14-50-01.school", - "2018-03-15.14-50-03.school", - "2018-03-15.14-55-00.school", - "2018-03-15.14-55-01.school", - "2018-03-15.14-55-03.school", - "2018-03-15.15-00-00.school", - "2018-03-15.15-00-01.school", - "2018-03-15.15-00-03.school", - "2018-03-15.15-05-00.school", - "2018-03-15.15-05-01.school", - "2018-03-15.15-05-03.school", - "2018-03-15.15-10-00.school", - "2018-03-15.15-10-01.school", - "2018-03-15.15-10-03.school", - "2018-03-15.15-15-00.school", - "2018-03-15.15-15-01.school", - "2018-03-15.15-15-03.school", - "2018-03-15.15-30-00.school", - "2018-03-15.15-30-01.school", - "2018-03-15.15-30-03.school", - "2018-03-15.15-35-00.school", - "2018-03-15.15-35-01.school", - "2018-03-15.15-35-03.school", - "2018-03-15.15-40-00.school", - "2018-03-15.15-40-01.school", - "2018-03-15.15-40-03.school", - "2018-03-15.15-45-00.school", - "2018-03-15.15-45-01.school", - "2018-03-15.15-45-02.school", - "2018-03-15.15-45-03.school", - "2018-03-15.15-50-00.school", - "2018-03-15.15-50-01.school", - "2018-03-15.15-50-03.school", - "2018-03-15.15-55-00.school", - "2018-03-15.15-55-01.school", - "2018-03-15.15-55-03.school" - ] - }, "slots": { - "2018-03-05.13-10-00.admin": { - "date": "2018-03-05", - "time": "13-10-00", + "2018-03-07.10-55.admin": { + "date": "2018-03-07", + "time": "10-55-00", "site": "admin", "all_cameras": 2, "mevid_cameras": [ @@ -963,214 +10,544 @@ "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-05.13-10-00.bus": { - "date": "2018-03-05", - "time": "13-10-00", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-07.10-55.bus": { + "date": "2018-03-07", + "time": "10-55-00", "site": "bus", - "all_cameras": 3, + "all_cameras": 6, "mevid_cameras": [ "G340", - "G505", "G506" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0292" + "0002", + "0003", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0055", + "0056", + "0057", + "0064", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0097", + "0101", + "0109" + ] + }, + "2018-03-07.10-55.school": { + "date": "2018-03-07", + "time": "10-55-00", + "site": "school", + "all_cameras": 11, + "mevid_cameras": [ + "G339", + "G419", + "G420", + "G424" ], - "sources": { - "kitware-training": [ - "G340", - "G505", - "G506" - ] - } - }, - "2018-03-05.13-10-00.hospital": { - "date": "2018-03-05", - "time": "13-10-00", - "site": "hospital", - "all_cameras": 3, + "mevid_persons": [ + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-07.11-00.admin": { + "date": "2018-03-07", + "time": "11-00-00", + "site": "admin", + "all_cameras": 2, "mevid_cameras": [ - "G341", - "G436" + "G326", + "G329" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-07.11-00.bus": { + "date": "2018-03-07", + "time": "11-00-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G340", + "G505", + "G506", + "G508" ], - "sources": { - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-05.13-10-00.school": { - "date": "2018-03-05", - "time": "13-10-00", + "mevid_persons": [ + "0002", + "0003", + "0004", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0048", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0089", + "0090", + "0097", + "0099", + "0101", + "0109", + "0205", + "0211", + "0218", + "0230", + "0231", + "0232", + "0234", + "0243", + "0271", + "0296" + ] + }, + "2018-03-07.11-00.school": { + "date": "2018-03-07", + "time": "11-00-00", "site": "school", - "all_cameras": 7, + "all_cameras": 11, "mevid_cameras": [ "G299", - "G300", "G330", - "G336", - "G421", + "G339", + "G420", "G423", "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-07.11-05.admin": { + "date": "2018-03-07", + "time": "11-05-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" ], - "sources": { - "kitware-training": [ - "G299", - "G300", - "G330", - "G336", - "G421", - "G423", - "G424" - ] - } - }, - "2018-03-05.13-10-01.bus": { - "date": "2018-03-05", - "time": "13-10-01", + "mevid_persons": [ + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-07.11-05.bus": { + "date": "2018-03-07", + "time": "11-05-00", "site": "bus", - "all_cameras": 3, + "all_cameras": 6, "mevid_cameras": [ - "G331", - "G508", - "G509" + "G340", + "G505", + "G506", + "G508" ], "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0202", - "0211", - "0229", - "0271", - "0280" + "0002", + "0003", + "0004", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0048", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0089", + "0090", + "0097", + "0099", + "0101", + "0109", + "0205", + "0211", + "0218", + "0230", + "0231", + "0232", + "0234", + "0243", + "0271", + "0296" + ] + }, + "2018-03-07.11-05.school": { + "date": "2018-03-07", + "time": "11-05-00", + "site": "school", + "all_cameras": 11, + "mevid_cameras": [ + "G299", + "G419", + "G420", + "G423" ], - "sources": { - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } - }, - "2018-03-05.13-10-01.school": { - "date": "2018-03-05", - "time": "13-10-01", + "mevid_persons": [ + "0002", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0025", + "0035", + "0036", + "0039", + "0040", + "0041", + "0042", + "0051", + "0055", + "0056", + "0057", + "0067", + "0068", + "0082", + "0083", + "0085", + "0097", + "0099" + ] + }, + "2018-03-07.11-10.bus": { + "date": "2018-03-07", + "time": "11-10-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G340", + "G506", + "G508" + ], + "mevid_persons": [ + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-07.11-10.school": { + "date": "2018-03-07", + "time": "11-10-00", "site": "school", - "all_cameras": 4, + "all_cameras": 11, "mevid_cameras": [ - "G328", "G339", "G419", - "G420" + "G420", + "G423", + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110" - ], - "sources": { - "kitware-training": [ - "G328", - "G339", - "G419", - "G420" - ] - } - }, - "2018-03-05.13-15-00.admin": { - "date": "2018-03-05", - "time": "13-15-00", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-07.16-50.admin": { + "date": "2018-03-07", + "time": "16-50-00", "site": "admin", "all_cameras": 2, "mevid_cameras": [ @@ -1178,220 +555,430 @@ "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-05.13-15-00.bus": { - "date": "2018-03-05", - "time": "13-15-00", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-07.16-50.bus": { + "date": "2018-03-07", + "time": "16-50-00", "site": "bus", - "all_cameras": 3, + "all_cameras": 6, "mevid_cameras": [ + "G331", "G340", "G505", - "G506" + "G506", + "G508" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G340", - "G505", - "G506" - ] - } - }, - "2018-03-05.13-15-00.hospital": { - "date": "2018-03-05", - "time": "13-15-00", - "site": "hospital", - "all_cameras": 3, + "0002", + "0003", + "0004", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0048", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0089", + "0090", + "0097", + "0099", + "0101", + "0109", + "0205", + "0211", + "0218", + "0230", + "0231", + "0232", + "0234", + "0243", + "0271", + "0296" + ] + }, + "2018-03-07.16-50.school": { + "date": "2018-03-07", + "time": "16-50-00", + "site": "school", + "all_cameras": 12, "mevid_cameras": [ - "G341", - "G436" + "G339", + "G419", + "G423", + "G424" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-07.16-55.bus": { + "date": "2018-03-07", + "time": "16-55-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G340", + "G505", + "G506" ], - "sources": { - "kitware": [ - "G341" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-05.13-15-00.school": { - "date": "2018-03-05", - "time": "13-15-00", + "mevid_persons": [ + "0002", + "0003", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0048", + "0055", + "0056", + "0057", + "0062", + "0064", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0089", + "0097", + "0101", + "0109", + "0205", + "0218", + "0230", + "0231", + "0232", + "0234", + "0243" + ] + }, + "2018-03-07.16-55.school": { + "date": "2018-03-07", + "time": "16-55-00", "site": "school", - "all_cameras": 7, + "all_cameras": 12, "mevid_cameras": [ - "G299", - "G300", - "G330", "G336", + "G339", + "G419", + "G420", "G421", "G423", "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-07.17-00.admin": { + "date": "2018-03-07", + "time": "17-00-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" ], - "sources": { - "kitware": [ - "G423", - "G424" - ], - "kitware-training": [ - "G299", - "G300", - "G330", - "G336", - "G421" - ] - } - }, - "2018-03-05.13-15-01.bus": { - "date": "2018-03-05", - "time": "13-15-01", + "mevid_persons": [ + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-07.17-00.bus": { + "date": "2018-03-07", + "time": "17-00-00", "site": "bus", - "all_cameras": 3, + "all_cameras": 6, "mevid_cameras": [ - "G331", - "G508", - "G509" + "G340", + "G505", + "G506", + "G508" ], "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0202", - "0211", - "0229", - "0271", - "0280" - ], - "sources": { - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } - }, - "2018-03-05.13-15-01.school": { - "date": "2018-03-05", - "time": "13-15-01", + "0002", + "0003", + "0004", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0048", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0089", + "0090", + "0097", + "0099", + "0101", + "0109", + "0205", + "0211", + "0218", + "0230", + "0231", + "0232", + "0234", + "0243", + "0271", + "0296" + ] + }, + "2018-03-07.17-00.school": { + "date": "2018-03-07", + "time": "17-00-00", "site": "school", - "all_cameras": 4, + "all_cameras": 12, "mevid_cameras": [ - "G328", "G339", - "G419", - "G420" + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110" - ], - "sources": { - "kitware": [ - "G328" - ], - "kitware-training": [ - "G339", - "G419", - "G420" - ] - } - }, - "2018-03-05.13-20-00.admin": { - "date": "2018-03-05", - "time": "13-20-00", + "0003", + "0004", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-07.17-05.admin": { + "date": "2018-03-07", + "time": "17-05-00", "site": "admin", "all_cameras": 2, "mevid_cameras": [ @@ -1399,223 +986,343 @@ "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-05.13-20-00.bus": { - "date": "2018-03-05", - "time": "13-20-00", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-07.17-05.bus": { + "date": "2018-03-07", + "time": "17-05-00", "site": "bus", - "all_cameras": 2, + "all_cameras": 6, "mevid_cameras": [ "G340", + "G505", "G506" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware": [ - "G340" - ], - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-05.13-20-00.hospital": { - "date": "2018-03-05", - "time": "13-20-00", - "site": "hospital", - "all_cameras": 3, + "0002", + "0003", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0048", + "0055", + "0056", + "0057", + "0062", + "0064", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0089", + "0097", + "0101", + "0109", + "0205", + "0218", + "0230", + "0231", + "0232", + "0234", + "0243" + ] + }, + "2018-03-07.17-05.school": { + "date": "2018-03-07", + "time": "17-05-00", + "site": "school", + "all_cameras": 12, "mevid_cameras": [ - "G341", - "G436" + "G330", + "G339", + "G423", + "G424" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" + "0002", + "0003", + "0004", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-07.17-20.bus": { + "date": "2018-03-07", + "time": "17-20-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G340", + "G506" ], - "sources": { - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-05.13-20-00.school": { - "date": "2018-03-05", - "time": "13-20-00", + "mevid_persons": [ + "0002", + "0003", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0055", + "0056", + "0057", + "0064", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0097", + "0101", + "0109" + ] + }, + "2018-03-07.17-20.school": { + "date": "2018-03-07", + "time": "17-20-00", "site": "school", - "all_cameras": 7, + "all_cameras": 12, "mevid_cameras": [ - "G299", - "G300", - "G330", - "G336", - "G421", + "G339", + "G419", + "G420", "G423", - "G424" + "G638" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0025", + "0032", + "0033", + "0034", + "0035", + "0036", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0067", + "0068", + "0072", + "0082", + "0083", + "0085", + "0090", + "0095", + "0097", + "0099", + "0101", + "0109" + ] + }, + "2018-03-07.17-25.admin": { + "date": "2018-03-07", + "time": "17-25-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" ], - "sources": { - "kitware": [ - "G336", - "G423", - "G424" - ], - "kitware-training": [ - "G299", - "G300", - "G330", - "G421" - ] - } - }, - "2018-03-05.13-20-01.bus": { - "date": "2018-03-05", - "time": "13-20-01", + "mevid_persons": [ + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-07.17-25.bus": { + "date": "2018-03-07", + "time": "17-25-00", "site": "bus", - "all_cameras": 4, + "all_cameras": 6, "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" + "G340", + "G508" ], "mevid_persons": [ - "0008", - "0010", + "0003", + "0014", "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", + "0045", + "0047", + "0056", + "0057", + "0082", + "0099", + "0109", "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G331" - ], - "kitware-training": [ - "G505", - "G508", - "G509" - ] - } + "0296" + ] }, - "2018-03-05.13-20-01.school": { - "date": "2018-03-05", - "time": "13-20-01", + "2018-03-07.17-25.school": { + "date": "2018-03-07", + "time": "17-25-00", "site": "school", - "all_cameras": 4, + "all_cameras": 13, "mevid_cameras": [ - "G328", "G339", - "G419", - "G420" + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110" - ], - "sources": { - "kitware": [ - "G328", - "G419", - "G420" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-05.14-00-00.admin": { - "date": "2018-03-05", - "time": "14-00-00", + "0003", + "0004", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-07.17-30.admin": { + "date": "2018-03-07", + "time": "17-30-00", "site": "admin", "all_cameras": 2, "mevid_cameras": [ @@ -1623,29 +1330,30 @@ "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-05.14-00-00.bus": { - "date": "2018-03-05", - "time": "14-00-00", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-07.17-30.bus": { + "date": "2018-03-07", + "time": "17-30-00", "site": "bus", - "all_cameras": 4, + "all_cameras": 6, "mevid_cameras": [ "G340", "G505", @@ -1653,185 +1361,553 @@ "G508" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" + "0002", + "0003", + "0004", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0048", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0089", + "0090", + "0097", + "0099", + "0101", + "0109", + "0205", + "0211", + "0218", + "0230", + "0231", + "0232", + "0234", + "0243", + "0271", + "0296" + ] + }, + "2018-03-07.17-30.school": { + "date": "2018-03-07", + "time": "17-30-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G339", + "G419", + "G420", + "G423", + "G424" ], - "sources": { - "kitware-training": [ - "G340", - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-05.14-00-00.hospital": { - "date": "2018-03-05", - "time": "14-00-00", - "site": "hospital", - "all_cameras": 3, + "mevid_persons": [ + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-07.17-35.admin": { + "date": "2018-03-07", + "time": "17-35-00", + "site": "admin", + "all_cameras": 2, "mevid_cameras": [ - "G341", - "G436" + "G326", + "G329" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-07.17-35.bus": { + "date": "2018-03-07", + "time": "17-35-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G505", + "G506", + "G508" ], - "sources": { - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } + "mevid_persons": [ + "0003", + "0004", + "0009", + "0014", + "0015", + "0025", + "0031", + "0032", + "0039", + "0045", + "0047", + "0048", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", + "0076", + "0082", + "0089", + "0090", + "0109", + "0271" + ] }, - "2018-03-05.14-00-00.school": { - "date": "2018-03-05", - "time": "14-00-00", + "2018-03-07.17-35.school": { + "date": "2018-03-07", + "time": "17-35-00", "site": "school", - "all_cameras": 8, + "all_cameras": 13, "mevid_cameras": [ "G299", - "G300", + "G328", "G330", - "G336", + "G339", + "G419", "G420", - "G421", "G423", "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G420" - ], - "kitware-training": [ - "G299", - "G300", - "G330", - "G336", - "G421", - "G423", - "G424" - ] - } - }, - "2018-03-05.14-00-01.bus": { - "date": "2018-03-05", - "time": "14-00-01", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-09.10-10.bus": { + "date": "2018-03-09", + "time": "10-10-00", "site": "bus", - "all_cameras": 2, + "all_cameras": 6, "mevid_cameras": [ - "G331", - "G509" + "G506", + "G508" ], "mevid_persons": [ - "0008", + "0003", + "0004", + "0009", + "0014", + "0031", "0032", - "0046", - "0053", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", "0076", - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G331", - "G509" - ] - } + "0082", + "0090", + "0109" + ] }, - "2018-03-05.14-00-01.school": { - "date": "2018-03-05", - "time": "14-00-01", + "2018-03-09.10-10.school": { + "date": "2018-03-09", + "time": "10-10-00", "site": "school", - "all_cameras": 3, + "all_cameras": 13, "mevid_cameras": [ "G328", + "G330", "G339", - "G419" + "G424" + ], + "mevid_persons": [ + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-09.10-20.school": { + "date": "2018-03-09", + "time": "10-20-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G419", + "G420" ], "mevid_persons": [ + "0004", + "0007", "0008", - "0010", - "0032", + "0014", + "0015", + "0016", + "0025", + "0035", + "0036", + "0039", "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", + "0041", + "0042", + "0051", + "0055", + "0056", + "0057", + "0082", + "0083", + "0085", "0097", - "0110" + "0099" + ] + }, + "2018-03-09.10-25.school": { + "date": "2018-03-09", + "time": "10-25-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G420", + "G423" ], - "sources": { - "kitware-training": [ - "G328", - "G339", - "G419" - ] - } + "mevid_persons": [ + "0002", + "0004", + "0014", + "0015", + "0035", + "0036", + "0039", + "0040", + "0042", + "0051", + "0055", + "0056", + "0057", + "0082", + "0083", + "0097", + "0099" + ] }, - "2018-03-05.14-05-00.admin": { - "date": "2018-03-05", - "time": "14-05-00", + "2018-03-09.10-40.school": { + "date": "2018-03-09", + "time": "10-40-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G328", + "G339", + "G424" + ], + "mevid_persons": [ + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.11-15.school": { + "date": "2018-03-11", + "time": "11-15-00", + "site": "school", + "all_cameras": 10, + "mevid_cameras": [ + "G299", + "G300", + "G328", + "G419", + "G420", + "G421", + "G424", + "G638" + ], + "mevid_persons": [ + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.11-20.admin": { + "date": "2018-03-11", + "time": "11-20-00", "site": "admin", "all_cameras": 2, "mevid_cameras": [ @@ -1839,219 +1915,473 @@ "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } + "0099" + ] }, - "2018-03-05.14-05-00.bus": { - "date": "2018-03-05", - "time": "14-05-00", - "site": "bus", - "all_cameras": 4, + "2018-03-11.11-20.school": { + "date": "2018-03-11", + "time": "11-20-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G340", - "G505", - "G506", - "G508" + "G330", + "G336", + "G419", + "G420", + "G421", + "G423", + "G638" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G506" - ], - "kitware-training": [ - "G340", - "G505", - "G508" - ] - } - }, - "2018-03-05.14-05-00.hospital": { - "date": "2018-03-05", - "time": "14-05-00", - "site": "hospital", - "all_cameras": 3, + "0002", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0034", + "0035", + "0036", + "0039", + "0040", + "0041", + "0042", + "0043", + "0051", + "0055", + "0056", + "0057", + "0062", + "0067", + "0068", + "0082", + "0083", + "0085", + "0088", + "0090", + "0097", + "0099", + "0201", + "0210", + "0218", + "0239", + "0258", + "0271", + "0277", + "0285", + "0295" + ] + }, + "2018-03-11.11-25.admin": { + "date": "2018-03-11", + "time": "11-25-00", + "site": "admin", + "all_cameras": 2, "mevid_cameras": [ - "G341", - "G436" + "G326", + "G329" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } + "0099" + ] }, - "2018-03-05.14-05-00.school": { - "date": "2018-03-05", - "time": "14-05-00", + "2018-03-11.11-25.school": { + "date": "2018-03-11", + "time": "11-25-00", "site": "school", - "all_cameras": 8, + "all_cameras": 13, "mevid_cameras": [ - "G299", "G300", - "G330", + "G328", "G336", - "G420", + "G339", "G421", - "G423", "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.11-30.admin": { + "date": "2018-03-11", + "time": "11-30-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" ], - "sources": { - "kitware-training": [ - "G299", - "G300", - "G330", - "G336", - "G420", - "G421", - "G423", - "G424" - ] - } + "mevid_persons": [ + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] }, - "2018-03-05.14-05-01.bus": { - "date": "2018-03-05", - "time": "14-05-01", + "2018-03-11.11-30.school": { + "date": "2018-03-11", + "time": "11-30-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G300", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G638" + ], + "mevid_persons": [ + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.11-35.bus": { + "date": "2018-03-11", + "time": "11-35-00", "site": "bus", - "all_cameras": 2, + "all_cameras": 6, "mevid_cameras": [ - "G331", - "G509" + "G506", + "G508" ], "mevid_persons": [ - "0008", + "0003", + "0004", + "0009", + "0014", + "0031", "0032", - "0046", - "0053", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", "0076", - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G331", - "G509" - ] - } + "0082", + "0090", + "0109" + ] }, - "2018-03-05.14-05-01.school": { - "date": "2018-03-05", - "time": "14-05-01", + "2018-03-11.11-35.school": { + "date": "2018-03-11", + "time": "11-35-00", "site": "school", - "all_cameras": 3, + "all_cameras": 13, "mevid_cameras": [ + "G300", "G328", + "G336", "G339", - "G419" + "G419", + "G420", + "G638" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.11-40.school": { + "date": "2018-03-11", + "time": "11-40-00", + "site": "school", + "all_cameras": 14, + "mevid_cameras": [ + "G300", + "G419", + "G420", + "G421", + "G423", + "G638" ], - "sources": { - "kitware": [ - "G328" - ], - "kitware-training": [ - "G339", - "G419" - ] - } - }, - "2018-03-05.14-10-00.admin": { - "date": "2018-03-05", - "time": "14-10-00", + "mevid_persons": [ + "0002", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0025", + "0034", + "0035", + "0036", + "0039", + "0040", + "0041", + "0042", + "0043", + "0051", + "0055", + "0056", + "0057", + "0062", + "0067", + "0068", + "0082", + "0083", + "0085", + "0088", + "0090", + "0097", + "0099" + ] + }, + "2018-03-11.11-45.school": { + "date": "2018-03-11", + "time": "11-45-00", + "site": "school", + "all_cameras": 14, + "mevid_cameras": [ + "G300", + "G419", + "G420", + "G421", + "G638" + ], + "mevid_persons": [ + "0002", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0025", + "0034", + "0035", + "0036", + "0039", + "0040", + "0041", + "0042", + "0043", + "0051", + "0055", + "0056", + "0057", + "0062", + "0067", + "0068", + "0082", + "0083", + "0085", + "0088", + "0090", + "0097", + "0099" + ] + }, + "2018-03-11.11-50.admin": { + "date": "2018-03-11", + "time": "11-50-00", "site": "admin", "all_cameras": 2, "mevid_cameras": [ @@ -2059,62 +2389,28 @@ "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-05.14-10-00.bus": { - "date": "2018-03-05", - "time": "14-10-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G340", - "G505", - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", "0097", - "0211", - "0229", - "0238", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G340", - "G505", - "G506" - ] - } + "0099" + ] }, - "2018-03-05.14-10-00.hospital": { - "date": "2018-03-05", - "time": "14-10-00", + "2018-03-11.11-50.hospital": { + "date": "2018-03-11", + "time": "11-50-00", "site": "hospital", "all_cameras": 3, "mevid_cameras": [ @@ -2122,29918 +2418,4336 @@ "G436" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } + "0009", + "0036", + "0051", + "0067", + "0068", + "0082", + "0083" + ] }, - "2018-03-05.14-10-00.school": { - "date": "2018-03-05", - "time": "14-10-00", + "2018-03-11.11-50.school": { + "date": "2018-03-11", + "time": "11-50-00", "site": "school", - "all_cameras": 8, + "all_cameras": 13, "mevid_cameras": [ - "G299", "G300", - "G330", "G336", + "G339", + "G419", "G420", "G421", - "G423", - "G424" + "G424", + "G638" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G330", - "G420", - "G421", - "G424" - ], - "kitware-training": [ - "G299", - "G300", - "G336", - "G423" - ] - } - }, - "2018-03-05.14-10-01.bus": { - "date": "2018-03-05", - "time": "14-10-01", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.11-55.bus": { + "date": "2018-03-11", + "time": "11-55-00", "site": "bus", - "all_cameras": 3, + "all_cameras": 6, "mevid_cameras": [ - "G331", - "G508", - "G509" + "G506", + "G508" ], "mevid_persons": [ - "0008", + "0003", + "0004", + "0009", + "0014", + "0031", "0032", - "0046", - "0053", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", "0076", - "0202", - "0211", - "0229", - "0271", - "0280" + "0082", + "0090", + "0109" + ] + }, + "2018-03-11.11-55.hospital": { + "date": "2018-03-11", + "time": "11-55-00", + "site": "hospital", + "all_cameras": 3, + "mevid_cameras": [ + "G341", + "G436" ], - "sources": { - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } + "mevid_persons": [ + "0009", + "0036", + "0051", + "0067", + "0068", + "0082", + "0083" + ] }, - "2018-03-05.14-10-01.school": { - "date": "2018-03-05", - "time": "14-10-01", + "2018-03-11.11-55.school": { + "date": "2018-03-11", + "time": "11-55-00", "site": "school", - "all_cameras": 3, + "all_cameras": 13, "mevid_cameras": [ + "G299", + "G300", "G328", + "G330", "G339", - "G419" + "G419", + "G420", + "G421", + "G424", + "G638" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.12-00.school": { + "date": "2018-03-11", + "time": "12-00-00", + "site": "school", + "all_cameras": 3, + "mevid_cameras": [ + "G299", + "G336", + "G420" ], - "sources": { - "kitware-training": [ - "G328", - "G339", - "G419" - ] - } - }, - "2018-03-07.10-55-00.admin": { - "date": "2018-03-07", - "time": "10-55-00", + "mevid_persons": [ + "0002", + "0004", + "0009", + "0014", + "0036", + "0039", + "0042", + "0051", + "0055", + "0056", + "0057", + "0067", + "0068", + "0082", + "0083", + "0099" + ] + }, + "2018-03-11.13-50.admin": { + "date": "2018-03-11", + "time": "13-50-00", "site": "admin", - "all_cameras": 1, + "all_cameras": 2, "mevid_cameras": [ + "G326", "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } + "0099" + ] }, - "2018-03-07.10-55-00.bus": { - "date": "2018-03-07", - "time": "10-55-00", + "2018-03-11.13-50.bus": { + "date": "2018-03-11", + "time": "13-50-00", "site": "bus", - "all_cameras": 2, + "all_cameras": 6, "mevid_cameras": [ - "G331", + "G506", "G508" ], "mevid_persons": [ - "0008", + "0003", + "0004", + "0009", + "0014", + "0031", "0032", - "0046", - "0053", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", "0076", - "0211", - "0271", - "0280" - ], - "sources": { - "kitware": [ - "G508" - ], - "kitware-training": [ - "G331" - ] - } + "0082", + "0090", + "0109" + ] }, - "2018-03-07.10-55-00.hospital": { - "date": "2018-03-07", - "time": "10-55-00", - "site": "hospital", - "all_cameras": 1, + "2018-03-11.13-50.school": { + "date": "2018-03-11", + "time": "13-50-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G436" + "G328", + "G339", + "G421", + "G424" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.13-55.bus": { + "date": "2018-03-11", + "time": "13-55-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G340", + "G506", + "G508" ], - "sources": { - "kitware-training": [ - "G436" - ] - } - }, - "2018-03-07.10-55-00.school": { - "date": "2018-03-07", - "time": "10-55-00", + "mevid_persons": [ + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-11.13-55.school": { + "date": "2018-03-11", + "time": "13-55-00", "site": "school", - "all_cameras": 3, + "all_cameras": 13, "mevid_cameras": [ - "G299", - "G330", - "G420" + "G328", + "G339", + "G419" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "kitware-training": [ - "G299", - "G330", - "G420" - ] - } - }, - "2018-03-07.10-55-01.admin": { - "date": "2018-03-07", - "time": "10-55-01", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.14-00.admin": { + "date": "2018-03-11", + "time": "14-00-00", "site": "admin", - "all_cameras": 1, + "all_cameras": 2, "mevid_cameras": [ - "G326" + "G326", + "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] }, - "2018-03-07.10-55-01.bus": { - "date": "2018-03-07", - "time": "10-55-01", - "site": "bus", - "all_cameras": 3, + "2018-03-11.14-00.school": { + "date": "2018-03-11", + "time": "14-00-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G505", - "G506", - "G509" + "G339", + "G419", + "G420", + "G421", + "G424" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G505" - ], - "kitware-training": [ - "G506", - "G509" - ] - } - }, - "2018-03-07.10-55-01.school": { - "date": "2018-03-07", - "time": "10-55-01", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.14-05.school": { + "date": "2018-03-11", + "time": "14-05-00", "site": "school", - "all_cameras": 4, + "all_cameras": 13, "mevid_cameras": [ "G328", + "G339", + "G419", + "G420", + "G421" + ], + "mevid_persons": [ + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.14-10.school": { + "date": "2018-03-11", + "time": "14-10-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G339", "G419", + "G420", "G421", "G423" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110" + "0002", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0076", + "0082", + "0083", + "0085", + "0088", + "0090", + "0095", + "0097", + "0099", + "0109" + ] + }, + "2018-03-11.14-15.admin": { + "date": "2018-03-11", + "time": "14-15-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" ], - "sources": { - "kitware": [ - "G328", - "G419", - "G423" - ], - "kitware-training": [ - "G421" - ] - } + "mevid_persons": [ + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] }, - "2018-03-07.10-55-04.hospital": { - "date": "2018-03-07", - "time": "10-55-04", - "site": "hospital", - "all_cameras": 1, + "2018-03-11.14-15.bus": { + "date": "2018-03-11", + "time": "14-15-00", + "site": "bus", + "all_cameras": 6, "mevid_cameras": [ - "G341" + "G506", + "G508" ], "mevid_persons": [ - "0010", + "0003", + "0004", + "0009", + "0014", + "0031", "0032", - "0046", - "0048", - "0052", - "0053", - "0054", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G341" - ] - } + "0082", + "0090", + "0109" + ] }, - "2018-03-07.10-55-05.school": { - "date": "2018-03-07", - "time": "10-55-05", + "2018-03-11.14-15.school": { + "date": "2018-03-11", + "time": "14-15-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ + "G328", + "G339", + "G419", + "G421", "G424" ], "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "kitware": [ - "G424" - ] - } - }, - "2018-03-07.10-55-06.bus": { - "date": "2018-03-07", - "time": "10-55-06", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.14-20.bus": { + "date": "2018-03-11", + "time": "14-20-00", "site": "bus", - "all_cameras": 1, + "all_cameras": 6, "mevid_cameras": [ - "G340" + "G331", + "G340", + "G505", + "G506", + "G508" ], "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-07.10-55-06.school": { - "date": "2018-03-07", - "time": "10-55-06", + "0002", + "0003", + "0004", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0048", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0089", + "0090", + "0097", + "0099", + "0101", + "0109", + "0205", + "0211", + "0218", + "0230", + "0231", + "0232", + "0234", + "0243", + "0271", + "0296" + ] + }, + "2018-03-11.14-20.school": { + "date": "2018-03-11", + "time": "14-20-00", "site": "school", - "all_cameras": 2, + "all_cameras": 13, "mevid_cameras": [ - "G300", - "G336" + "G328", + "G339", + "G419", + "G420", + "G421", + "G423", + "G424" ], "mevid_persons": [ - "0010", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.16-10.admin": { + "date": "2018-03-11", + "time": "16-10-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" ], - "sources": { - "kitware-training": [ - "G300", - "G336" - ] - } + "mevid_persons": [ + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] }, - "2018-03-07.10-55-07.school": { - "date": "2018-03-07", - "time": "10-55-07", - "site": "school", - "all_cameras": 1, + "2018-03-11.16-10.bus": { + "date": "2018-03-11", + "time": "16-10-00", + "site": "bus", + "all_cameras": 5, "mevid_cameras": [ - "G339" + "G331", + "G506", + "G509" ], "mevid_persons": [ - "0008", - "0010", + "0002", + "0024", + "0031", "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G339" - ] - } + "0036", + "0038", + "0047", + "0051", + "0057", + "0067", + "0068", + "0078", + "0082", + "0083", + "0087", + "0088", + "0101" + ] }, - "2018-03-07.11-00-00.admin": { - "date": "2018-03-07", - "time": "11-00-00", + "2018-03-11.16-15.admin": { + "date": "2018-03-11", + "time": "16-15-00", "site": "admin", - "all_cameras": 1, + "all_cameras": 2, "mevid_cameras": [ + "G326", "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware": [ - "G329" - ] - } + "0099" + ] }, - "2018-03-07.11-00-00.bus": { - "date": "2018-03-07", - "time": "11-00-00", + "2018-03-11.16-15.bus": { + "date": "2018-03-11", + "time": "16-15-00", "site": "bus", - "all_cameras": 2, + "all_cameras": 6, "mevid_cameras": [ "G331", - "G508" + "G506", + "G508", + "G509" ], "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0211", - "0271", - "0280" - ], - "sources": { - "kitware": [ - "G508" - ], - "kitware-training": [ - "G331" - ] - } - }, - "2018-03-07.11-00-00.hospital": { - "date": "2018-03-07", - "time": "11-00-00", + "0002", + "0003", + "0004", + "0009", + "0014", + "0024", + "0031", + "0032", + "0036", + "0038", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0101", + "0109", + "0271", + "0298" + ] + }, + "2018-03-11.16-15.hospital": { + "date": "2018-03-11", + "time": "16-15-00", "site": "hospital", - "all_cameras": 1, + "all_cameras": 4, "mevid_cameras": [ + "G341", "G436" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G436" - ] - } + "0009", + "0036", + "0051", + "0067", + "0068", + "0082", + "0083" + ] }, - "2018-03-07.11-00-00.school": { - "date": "2018-03-07", - "time": "11-00-00", + "2018-03-11.16-15.school": { + "date": "2018-03-11", + "time": "16-15-00", "site": "school", - "all_cameras": 4, + "all_cameras": 13, "mevid_cameras": [ "G299", + "G300", "G330", - "G420", - "G423" + "G336", + "G339", + "G419", + "G421", + "G423", + "G638" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "kitware": [ - "G420" - ], - "kitware-training": [ - "G299", - "G330", - "G423" - ] - } - }, - "2018-03-07.11-00-01.admin": { - "date": "2018-03-07", - "time": "11-00-01", - "site": "admin", - "all_cameras": 1, + "0002", + "0003", + "0004", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0082", + "0083", + "0085", + "0090", + "0095", + "0097", + "0099", + "0101", + "0109", + "0201", + "0210", + "0218", + "0239", + "0258", + "0271", + "0277", + "0285", + "0295" + ] + }, + "2018-03-11.16-20.admin": { + "date": "2018-03-11", + "time": "16-20-00", + "site": "admin", + "all_cameras": 2, "mevid_cameras": [ - "G326" + "G326", + "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] }, - "2018-03-07.11-00-01.bus": { - "date": "2018-03-07", - "time": "11-00-01", + "2018-03-11.16-20.bus": { + "date": "2018-03-11", + "time": "16-20-00", "site": "bus", - "all_cameras": 3, + "all_cameras": 6, "mevid_cameras": [ - "G505", + "G331", "G506", + "G508", "G509" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0229", - "0271", - "0292" + "0002", + "0003", + "0004", + "0009", + "0014", + "0024", + "0031", + "0032", + "0036", + "0038", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0101", + "0109", + "0271", + "0298" + ] + }, + "2018-03-11.16-20.hospital": { + "date": "2018-03-11", + "time": "16-20-00", + "site": "hospital", + "all_cameras": 4, + "mevid_cameras": [ + "G341", + "G436" ], - "sources": { - "kitware": [ - "G505", - "G506", - "G509" - ] - } + "mevid_persons": [ + "0009", + "0036", + "0051", + "0067", + "0068", + "0082", + "0083" + ] }, - "2018-03-07.11-00-01.school": { - "date": "2018-03-07", - "time": "11-00-01", + "2018-03-11.16-20.school": { + "date": "2018-03-11", + "time": "16-20-00", "site": "school", - "all_cameras": 3, + "all_cameras": 12, "mevid_cameras": [ + "G300", "G328", + "G336", "G419", - "G421" + "G420", + "G421", + "G423", + "G424", + "G638" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110" - ], - "sources": { - "kitware": [ - "G328", - "G419", - "G421" - ] - } - }, - "2018-03-07.11-00-04.hospital": { - "date": "2018-03-07", - "time": "11-00-04", - "site": "hospital", - "all_cameras": 1, + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.16-25.bus": { + "date": "2018-03-11", + "time": "16-25-00", + "site": "bus", + "all_cameras": 6, "mevid_cameras": [ - "G341" + "G331", + "G508", + "G509" ], "mevid_persons": [ - "0010", + "0031", "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G341" - ] - } + "0047", + "0051", + "0057", + "0067", + "0068", + "0082", + "0271", + "0298" + ] }, - "2018-03-07.11-00-05.school": { - "date": "2018-03-07", - "time": "11-00-05", + "2018-03-11.16-25.school": { + "date": "2018-03-11", + "time": "16-25-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ - "G424" + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G424", + "G638" ], "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.16-30.school": { + "date": "2018-03-11", + "time": "16-30-00", + "site": "school", + "all_cameras": 14, + "mevid_cameras": [ + "G339", + "G419", + "G420", + "G421", + "G423" ], - "sources": { - "kitware-training": [ - "G424" - ] - } + "mevid_persons": [ + "0002", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0076", + "0082", + "0083", + "0085", + "0088", + "0090", + "0095", + "0097", + "0099", + "0109" + ] + }, + "2018-03-11.16-35.admin": { + "date": "2018-03-11", + "time": "16-35-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" + ], + "mevid_persons": [ + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] }, - "2018-03-07.11-00-06.bus": { - "date": "2018-03-07", - "time": "11-00-06", + "2018-03-11.16-35.bus": { + "date": "2018-03-11", + "time": "16-35-00", "site": "bus", - "all_cameras": 1, + "all_cameras": 6, "mevid_cameras": [ - "G340" + "G331", + "G506" ], "mevid_persons": [ - "0010", + "0002", + "0024", + "0031", "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } + "0036", + "0038", + "0047", + "0051", + "0057", + "0067", + "0068", + "0078", + "0082", + "0083", + "0087", + "0088", + "0101" + ] }, - "2018-03-07.11-00-06.school": { - "date": "2018-03-07", - "time": "11-00-06", - "site": "school", - "all_cameras": 2, + "2018-03-11.16-35.hospital": { + "date": "2018-03-11", + "time": "16-35-00", + "site": "hospital", + "all_cameras": 4, "mevid_cameras": [ - "G300", - "G336" + "G341", + "G436" ], "mevid_persons": [ - "0010", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G300", - "G336" - ] - } + "0009", + "0036", + "0051", + "0067", + "0068", + "0082", + "0083" + ] }, - "2018-03-07.11-00-07.school": { - "date": "2018-03-07", - "time": "11-00-07", + "2018-03-11.16-35.school": { + "date": "2018-03-11", + "time": "16-35-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ - "G339" + "G300", + "G328", + "G336", + "G339", + "G419", + "G420", + "G421", + "G423", + "G638" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G339" - ] - } - }, - "2018-03-07.11-05-00.admin": { - "date": "2018-03-07", - "time": "11-05-00", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.16-40.admin": { + "date": "2018-03-11", + "time": "16-40-00", "site": "admin", - "all_cameras": 1, + "all_cameras": 2, "mevid_cameras": [ - "G326" + "G326", + "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G326" - ] - } + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] }, - "2018-03-07.11-05-00.bus": { - "date": "2018-03-07", - "time": "11-05-00", + "2018-03-11.16-40.bus": { + "date": "2018-03-11", + "time": "16-40-00", "site": "bus", - "all_cameras": 2, + "all_cameras": 6, "mevid_cameras": [ "G331", - "G508" + "G506" ], "mevid_persons": [ - "0008", + "0002", + "0024", + "0031", "0032", - "0046", - "0053", - "0076", - "0211", - "0271", - "0280" - ], - "sources": { - "kitware": [ - "G331", - "G508" - ] - } + "0036", + "0038", + "0047", + "0051", + "0057", + "0067", + "0068", + "0078", + "0082", + "0083", + "0087", + "0088", + "0101" + ] }, - "2018-03-07.11-05-00.hospital": { - "date": "2018-03-07", - "time": "11-05-00", + "2018-03-11.16-40.hospital": { + "date": "2018-03-11", + "time": "16-40-00", "site": "hospital", - "all_cameras": 1, + "all_cameras": 3, "mevid_cameras": [ + "G341", "G436" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G436" - ] - } + "0009", + "0036", + "0051", + "0067", + "0068", + "0082", + "0083" + ] }, - "2018-03-07.11-05-00.school": { - "date": "2018-03-07", - "time": "11-05-00", + "2018-03-11.16-40.school": { + "date": "2018-03-11", + "time": "16-40-00", "site": "school", - "all_cameras": 4, + "all_cameras": 13, "mevid_cameras": [ "G299", + "G300", "G330", + "G336", + "G339", "G420", - "G423" + "G421", + "G423", + "G424", + "G638" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109", + "0201", + "0210", + "0218", + "0239", + "0258", + "0271", + "0277", + "0285", + "0295" + ] + }, + "2018-03-11.16-45.bus": { + "date": "2018-03-11", + "time": "16-45-00", + "site": "bus", + "all_cameras": 3, + "mevid_cameras": [ + "G331", + "G509" ], - "sources": { - "kitware-training": [ - "G299", - "G330", - "G420", - "G423" - ] - } + "mevid_persons": [ + "0051", + "0067" + ] }, - "2018-03-07.11-05-01.admin": { - "date": "2018-03-07", - "time": "11-05-01", - "site": "admin", - "all_cameras": 1, + "2018-03-11.16-45.school": { + "date": "2018-03-11", + "time": "16-45-00", + "site": "school", + "all_cameras": 4, "mevid_cameras": [ - "G329" + "G299", + "G421" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-07.11-05-01.bus": { - "date": "2018-03-07", - "time": "11-05-01", + "0002", + "0004", + "0009", + "0014", + "0036", + "0039", + "0042", + "0051", + "0056", + "0067", + "0068", + "0082", + "0083", + "0099" + ] + }, + "2018-03-11.17-10.bus": { + "date": "2018-03-11", + "time": "17-10-00", "site": "bus", - "all_cameras": 3, + "all_cameras": 6, "mevid_cameras": [ - "G505", "G506", - "G509" + "G508" ], "mevid_persons": [ - "0010", + "0003", + "0004", + "0009", + "0014", + "0031", "0032", - "0046", - "0048", - "0052", - "0053", - "0054", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", "0076", - "0080", - "0097", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G505", - "G506", - "G509" - ] - } + "0082", + "0090", + "0109" + ] }, - "2018-03-07.11-05-01.school": { - "date": "2018-03-07", - "time": "11-05-01", + "2018-03-11.17-10.school": { + "date": "2018-03-11", + "time": "17-10-00", "site": "school", - "all_cameras": 3, + "all_cameras": 13, "mevid_cameras": [ - "G328", - "G419", - "G421" + "G339", + "G421", + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110" - ], - "sources": { - "kitware": [ - "G328", - "G419" - ], - "kitware-training": [ - "G421" - ] - } - }, - "2018-03-07.11-05-04.hospital": { - "date": "2018-03-07", - "time": "11-05-04", - "site": "hospital", - "all_cameras": 1, + "0003", + "0004", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.17-15.bus": { + "date": "2018-03-11", + "time": "17-15-00", + "site": "bus", + "all_cameras": 6, "mevid_cameras": [ - "G341" + "G506", + "G508" ], "mevid_persons": [ - "0010", + "0003", + "0004", + "0009", + "0014", + "0031", "0032", - "0046", - "0048", - "0052", - "0053", - "0054", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G341" - ] - } + "0082", + "0090", + "0109" + ] }, - "2018-03-07.11-05-05.school": { - "date": "2018-03-07", - "time": "11-05-05", + "2018-03-11.17-15.school": { + "date": "2018-03-11", + "time": "17-15-00", "site": "school", - "all_cameras": 1, + "all_cameras": 12, "mevid_cameras": [ + "G339", + "G419", + "G420", + "G421", "G424" ], "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.17-20.school": { + "date": "2018-03-11", + "time": "17-20-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G328", + "G339", + "G419", + "G421" ], - "sources": { - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-07.11-05-06.bus": { - "date": "2018-03-07", - "time": "11-05-06", - "site": "bus", - "all_cameras": 1, + "mevid_persons": [ + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-11.17-25.admin": { + "date": "2018-03-11", + "time": "17-25-00", + "site": "admin", + "all_cameras": 2, "mevid_cameras": [ - "G340" + "G326", + "G329" ], "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", "0097", - "0211", - "0238" - ], - "sources": { - "kitware": [ - "G340" - ] - } + "0099" + ] }, - "2018-03-07.11-05-06.school": { - "date": "2018-03-07", - "time": "11-05-06", + "2018-03-11.17-25.school": { + "date": "2018-03-11", + "time": "17-25-00", "site": "school", - "all_cameras": 2, + "all_cameras": 13, "mevid_cameras": [ - "G300", - "G336" + "G328", + "G339", + "G419", + "G421", + "G424" ], "mevid_persons": [ - "0010", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G300" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-07.11-05-07.school": { - "date": "2018-03-07", - "time": "11-05-07", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.10-00.school": { + "date": "2018-03-12", + "time": "10-00-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ - "G339" + "G328", + "G339", + "G419", + "G420", + "G421", + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G339" - ] - } - }, - "2018-03-07.11-10-00.admin": { - "date": "2018-03-07", - "time": "11-10-00", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.10-05.admin": { + "date": "2018-03-12", + "time": "10-05-00", "site": "admin", - "all_cameras": 1, + "all_cameras": 2, "mevid_cameras": [ - "G326" + "G326", + "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G326" - ] - } + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] }, - "2018-03-07.11-10-00.bus": { - "date": "2018-03-07", - "time": "11-10-00", - "site": "bus", - "all_cameras": 2, + "2018-03-12.10-05.school": { + "date": "2018-03-12", + "time": "10-05-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G331", - "G508" + "G328", + "G339", + "G421", + "G424" ], "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0211", - "0271", - "0280" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.10-10.school": { + "date": "2018-03-12", + "time": "10-10-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G328", + "G420", + "G421", + "G424" ], - "sources": { - "kitware": [ - "G508" - ], - "kitware-training": [ - "G331" - ] - } - }, - "2018-03-07.11-10-00.hospital": { - "date": "2018-03-07", - "time": "11-10-00", - "site": "hospital", - "all_cameras": 1, + "mevid_persons": [ + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0025", + "0030", + "0032", + "0033", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0097", + "0099", + "0101", + "0103" + ] + }, + "2018-03-12.10-25.school": { + "date": "2018-03-12", + "time": "10-25-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G436" + "G328", + "G339", + "G419", + "G421", + "G424" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.10-30.admin": { + "date": "2018-03-12", + "time": "10-30-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" ], - "sources": { - "kitware": [ - "G436" - ] - } + "mevid_persons": [ + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] }, - "2018-03-07.11-10-00.school": { - "date": "2018-03-07", - "time": "11-10-00", + "2018-03-12.10-30.school": { + "date": "2018-03-12", + "time": "10-30-00", "site": "school", - "all_cameras": 4, + "all_cameras": 13, "mevid_cameras": [ "G299", + "G328", "G330", + "G419", "G420", - "G423" + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "kitware": [ - "G299", - "G420" - ], - "kitware-training": [ - "G330", - "G423" - ] - } - }, - "2018-03-07.11-10-01.admin": { - "date": "2018-03-07", - "time": "11-10-01", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0067", + "0068", + "0072", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.10-40.admin": { + "date": "2018-03-12", + "time": "10-40-00", "site": "admin", - "all_cameras": 1, + "all_cameras": 2, "mevid_cameras": [ + "G326", "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware": [ - "G329" - ] - } + "0099" + ] }, - "2018-03-07.11-10-01.bus": { - "date": "2018-03-07", - "time": "11-10-01", - "site": "bus", - "all_cameras": 3, + "2018-03-12.10-40.school": { + "date": "2018-03-12", + "time": "10-40-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G505", - "G506", - "G509" + "G328", + "G339", + "G424" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0229", - "0271", - "0292" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.10-45.school": { + "date": "2018-03-12", + "time": "10-45-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G328", + "G339", + "G421", + "G424" ], - "sources": { - "kitware": [ - "G505", - "G506" - ], - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-07.11-10-01.school": { - "date": "2018-03-07", - "time": "11-10-01", + "mevid_persons": [ + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.10-50.school": { + "date": "2018-03-12", + "time": "10-50-00", "site": "school", - "all_cameras": 3, + "all_cameras": 13, "mevid_cameras": [ "G328", + "G339", "G419", - "G421" + "G420", + "G421", + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110" - ], - "sources": { - "kitware": [ - "G419", - "G421" - ], - "kitware-training": [ - "G328" - ] - } - }, - "2018-03-07.11-10-04.hospital": { - "date": "2018-03-07", - "time": "11-10-04", - "site": "hospital", - "all_cameras": 1, + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.10-55.bus": { + "date": "2018-03-12", + "time": "10-55-00", + "site": "bus", + "all_cameras": 5, "mevid_cameras": [ - "G341" + "G340", + "G506" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G341" - ] - } - }, - "2018-03-07.11-10-05.school": { - "date": "2018-03-07", - "time": "11-10-05", + "0002", + "0003", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0055", + "0056", + "0057", + "0064", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0097", + "0101", + "0109" + ] + }, + "2018-03-12.10-55.school": { + "date": "2018-03-12", + "time": "10-55-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ + "G339", + "G420", + "G421", "G424" ], "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-07.11-10-06.bus": { - "date": "2018-03-07", - "time": "11-10-06", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.11-00.bus": { + "date": "2018-03-12", + "time": "11-00-00", "site": "bus", - "all_cameras": 1, + "all_cameras": 6, "mevid_cameras": [ - "G340" + "G340", + "G506" ], "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-07.11-10-06.school": { - "date": "2018-03-07", - "time": "11-10-06", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G300", - "G336" - ], - "mevid_persons": [ - "0010", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G300" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-07.11-10-07.school": { - "date": "2018-03-07", - "time": "11-10-07", + "0002", + "0003", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0055", + "0056", + "0057", + "0064", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0097", + "0101", + "0109" + ] + }, + "2018-03-12.11-05.school": { + "date": "2018-03-12", + "time": "11-05-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ - "G339" + "G339", + "G421", + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G339" - ] - } - }, - "2018-03-07.16-50-00.admin": { - "date": "2018-03-07", - "time": "16-50-00", + "0003", + "0004", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-12.11-10.admin": { + "date": "2018-03-12", + "time": "11-10-00", "site": "admin", - "all_cameras": 1, + "all_cameras": 2, "mevid_cameras": [ + "G326", "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware": [ - "G329" - ], - "nist-json": [ - "G329" - ] - } - }, - "2018-03-07.16-50-00.bus": { - "date": "2018-03-07", - "time": "16-50-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G340", - "G506", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340" - ], - "contrib/UMD-v1-train": [ - "G331", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G331", - "G340", - "G506", - "G509" - ], - "nist-json": [ - "G331" - ] - } + "0099" + ] }, - "2018-03-07.16-50-00.school": { - "date": "2018-03-07", - "time": "16-50-00", + "2018-03-12.11-10.school": { + "date": "2018-03-12", + "time": "11-10-00", "site": "school", - "all_cameras": 5, + "all_cameras": 13, "mevid_cameras": [ "G299", + "G328", "G330", + "G339", "G419", + "G420", "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0271" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G421" - ], - "contrib/UMD-v1-train": [ - "G330", - "G419", - "G638" - ], - "kitware": [ - "G330", - "G419", - "G421", - "G638" - ], - "kitware-training": [ - "G299" - ] - } - }, - "2018-03-07.16-50-01.admin": { - "date": "2018-03-07", - "time": "16-50-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" + "G424" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G326" - ], - "kitware": [ - "G326" - ], - "nist-json": [ - "G326" - ] - } - }, - "2018-03-07.16-50-01.bus": { - "date": "2018-03-07", - "time": "16-50-01", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.15-50.bus": { + "date": "2018-03-13", + "time": "15-50-00", "site": "bus", - "all_cameras": 2, + "all_cameras": 6, "mevid_cameras": [ - "G505", - "G508" + "G331", + "G506" ], "mevid_persons": [ - "0010", + "0002", + "0024", + "0031", "0032", - "0048", - "0053", - "0076", - "0080", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "contrib/UMD-v1-train": [ - "G508" - ], - "kitware": [ - "G505" - ], - "kitware-training": [ - "G508" - ] - } + "0036", + "0038", + "0047", + "0051", + "0057", + "0067", + "0068", + "0078", + "0082", + "0083", + "0087", + "0088", + "0101" + ] }, - "2018-03-07.16-50-01.hospital": { - "date": "2018-03-07", - "time": "16-50-01", - "site": "hospital", - "all_cameras": 1, + "2018-03-13.15-50.school": { + "date": "2018-03-13", + "time": "15-50-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G436" + "G328", + "G339", + "G423", + "G424" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.15-55.bus": { + "date": "2018-03-13", + "time": "15-55-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G340", + "G506" ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware-training": [ - "G436" - ] - } - }, - "2018-03-07.16-50-01.school": { - "date": "2018-03-07", - "time": "16-50-01", + "mevid_persons": [ + "0002", + "0003", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0097", + "0101", + "0109" + ] + }, + "2018-03-13.15-55.school": { + "date": "2018-03-13", + "time": "15-55-00", "site": "school", - "all_cameras": 3, + "all_cameras": 13, "mevid_cameras": [ + "G299", "G328", + "G330", + "G339", + "G419", "G420", - "G423" + "G423", + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "contrib/UMD-v1-train": [ - "G420", - "G423" - ], - "kitware": [ - "G423" - ], - "kitware-training": [ - "G328", - "G420" - ], - "nist-json": [ - "G328" - ] - } - }, - "2018-03-07.16-50-05.hospital": { - "date": "2018-03-07", - "time": "16-50-05", - "site": "hospital", - "all_cameras": 1, + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.16-00.bus": { + "date": "2018-03-13", + "time": "16-00-00", + "site": "bus", + "all_cameras": 6, "mevid_cameras": [ - "G341" + "G331", + "G340", + "G506" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-07.16-50-06.school": { - "date": "2018-03-07", - "time": "16-50-06", + "0002", + "0003", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0097", + "0101", + "0109" + ] + }, + "2018-03-13.16-00.school": { + "date": "2018-03-13", + "time": "16-00-00", "site": "school", - "all_cameras": 4, + "all_cameras": 12, "mevid_cameras": [ - "G300", - "G336", + "G328", "G339", "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G300", - "G336", - "G339", - "G424" - ], - "kitware": [ - "G300" - ], - "kitware-training": [ - "G336", - "G339", - "G424" - ], - "nist-json": [ - "G336" - ] - } - }, - "2018-03-07.16-55-00.admin": { - "date": "2018-03-07", - "time": "16-55-00", - "site": "admin", - "all_cameras": 1, + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.16-05.school": { + "date": "2018-03-13", + "time": "16-05-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G329" + "G328", + "G339", + "G419", + "G420", + "G421", + "G424" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware": [ - "G329" - ], - "nist-json": [ - "G329" - ] - } - }, - "2018-03-07.16-55-00.bus": { - "date": "2018-03-07", - "time": "16-55-00", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.16-10.bus": { + "date": "2018-03-13", + "time": "16-10-00", "site": "bus", - "all_cameras": 4, + "all_cameras": 6, "mevid_cameras": [ "G331", "G340", "G506", - "G509" + "G508" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340" - ], - "contrib/UMD-v1-train": [ - "G331", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G340", - "G506", - "G509" - ], - "kitware-training": [ - "G331" - ], - "nist-json": [ - "G340" - ] - } - }, - "2018-03-07.16-55-00.school": { - "date": "2018-03-07", - "time": "16-55-00", + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-13.16-10.school": { + "date": "2018-03-13", + "time": "16-10-00", "site": "school", - "all_cameras": 5, + "all_cameras": 13, "mevid_cameras": [ - "G299", + "G328", "G330", + "G339", "G419", + "G420", "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0271" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G421" - ], - "contrib/UMD-v1-train": [ - "G638" - ], - "kitware": [ - "G419", - "G421", - "G638" - ], - "kitware-training": [ - "G299", - "G330" - ] - } - }, - "2018-03-07.16-55-01.admin": { - "date": "2018-03-07", - "time": "16-55-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" + "G423", + "G424" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G326" - ], - "kitware": [ - "G326" - ] - } - }, - "2018-03-07.16-55-01.bus": { - "date": "2018-03-07", - "time": "16-55-01", + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.16-15.bus": { + "date": "2018-03-13", + "time": "16-15-00", "site": "bus", - "all_cameras": 2, + "all_cameras": 6, "mevid_cameras": [ - "G505", + "G340", + "G506", "G508" ], "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0076", - "0080", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "contrib/UMD-v1-train": [ - "G508" - ], - "kitware": [ - "G505" - ], - "kitware-training": [ - "G508" - ] - } - }, - "2018-03-07.16-55-01.hospital": { - "date": "2018-03-07", - "time": "16-55-01", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware-training": [ - "G436" - ] - } - }, - "2018-03-07.16-55-01.school": { - "date": "2018-03-07", - "time": "16-55-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G328", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "contrib/UMD-v1-train": [ - "G420", - "G423" - ], - "kitware": [ - "G328", - "G420", - "G423" - ] - } - }, - "2018-03-07.16-55-05.hospital": { - "date": "2018-03-07", - "time": "16-55-05", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-07.16-55-06.school": { - "date": "2018-03-07", - "time": "16-55-06", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G300", - "G336", - "G339", - "G424" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G336", - "G339", - "G424" - ], - "kitware": [ - "G300", - "G336", - "G424" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-07.17-00-00.admin": { - "date": "2018-03-07", - "time": "17-00-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware": [ - "G329" - ] - } - }, - "2018-03-07.17-00-00.bus": { - "date": "2018-03-07", - "time": "17-00-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G331", - "G506", - "G508", - "G509" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-07.17-00-00.school": { - "date": "2018-03-07", - "time": "17-00-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G419", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0271" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G421" - ], - "contrib/UMD-v1-train": [ - "G330", - "G638" - ], - "kitware": [ - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G419", - "G421" - ] - } - }, - "2018-03-07.17-00-01.admin": { - "date": "2018-03-07", - "time": "17-00-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G326" - ], - "kitware": [ - "G326" - ] - } - }, - "2018-03-07.17-00-01.bus": { - "date": "2018-03-07", - "time": "17-00-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "kitware": [ - "G505" - ] - } - }, - "2018-03-07.17-00-01.hospital": { - "date": "2018-03-07", - "time": "17-00-01", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware-training": [ - "G436" - ] - } - }, - "2018-03-07.17-00-01.school": { - "date": "2018-03-07", - "time": "17-00-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G328", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "contrib/UMD-v1-train": [ - "G423" - ], - "kitware-training": [ - "G328", - "G420", - "G423" - ] - } - }, - "2018-03-07.17-00-05.hospital": { - "date": "2018-03-07", - "time": "17-00-05", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ], - "kitware": [ - "G341" - ] - } - }, - "2018-03-07.17-00-06.school": { - "date": "2018-03-07", - "time": "17-00-06", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G300", - "G336", - "G339", - "G424" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G336", - "G339", - "G424" - ], - "kitware-training": [ - "G300", - "G336", - "G339", - "G424" - ] - } - }, - "2018-03-07.17-05-00.admin": { - "date": "2018-03-07", - "time": "17-05-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware": [ - "G329" - ] - } - }, - "2018-03-07.17-05-00.bus": { - "date": "2018-03-07", - "time": "17-05-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G508", - "G509" - ], - "kitware-training": [ - "G331", - "G340", - "G506" - ], - "nist-json": [ - "G331", - "G340" - ] - } - }, - "2018-03-07.17-05-00.school": { - "date": "2018-03-07", - "time": "17-05-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G419", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G299", - "G421" - ], - "contrib/UMD-v1-train": [ - "G330", - "G336", - "G419", - "G638" - ], - "kitware": [ - "G336", - "G419" - ], - "kitware-training": [ - "G299", - "G330", - "G421", - "G638" - ], - "nist-json": [ - "G299", - "G336" - ] - } - }, - "2018-03-07.17-05-01.admin": { - "date": "2018-03-07", - "time": "17-05-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G326" - ], - "kitware": [ - "G326" - ] - } - }, - "2018-03-07.17-05-01.bus": { - "date": "2018-03-07", - "time": "17-05-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "kitware": [ - "G505" - ] - } - }, - "2018-03-07.17-05-01.hospital": { - "date": "2018-03-07", - "time": "17-05-01", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware": [ - "G436" - ] - } - }, - "2018-03-07.17-05-01.school": { - "date": "2018-03-07", - "time": "17-05-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G328", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "contrib/UMD-v1-train": [ - "G420", - "G423" - ], - "kitware": [ - "G420", - "G423" - ], - "kitware-training": [ - "G328" - ] - } - }, - "2018-03-07.17-05-05.hospital": { - "date": "2018-03-07", - "time": "17-05-05", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ], - "kitware": [ - "G341" - ] - } - }, - "2018-03-07.17-05-06.school": { - "date": "2018-03-07", - "time": "17-05-06", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G300", - "G339", - "G424" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G339", - "G424" - ], - "kitware": [ - "G424" - ], - "kitware-training": [ - "G300", - "G339" - ] - } - }, - "2018-03-07.17-20-00.admin": { - "date": "2018-03-07", - "time": "17-20-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware": [ - "G329" - ] - } - }, - "2018-03-07.17-20-00.bus": { - "date": "2018-03-07", - "time": "17-20-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G331", - "G506", - "G508" - ], - "kitware-training": [ - "G340", - "G509" - ] - } - }, - "2018-03-07.17-20-00.school": { - "date": "2018-03-07", - "time": "17-20-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G421" - ], - "contrib/UMD-v1-train": [ - "G330", - "G336", - "G638" - ], - "kitware": [ - "G336", - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G421" - ] - } - }, - "2018-03-07.17-20-01.admin": { - "date": "2018-03-07", - "time": "17-20-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-07.17-20-01.bus": { - "date": "2018-03-07", - "time": "17-20-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "kitware": [ - "G505" - ] - } - }, - "2018-03-07.17-20-01.hospital": { - "date": "2018-03-07", - "time": "17-20-01", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware": [ - "G436" - ] - } - }, - "2018-03-07.17-20-01.school": { - "date": "2018-03-07", - "time": "17-20-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "contrib/UMD-v1-train": [ - "G419", - "G420", - "G423" - ], - "kitware": [ - "G419", - "G420", - "G423" - ], - "kitware-training": [ - "G328" - ] - } - }, - "2018-03-07.17-20-05.hospital": { - "date": "2018-03-07", - "time": "17-20-05", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ], - "kitware": [ - "G341" - ] - } - }, - "2018-03-07.17-20-06.school": { - "date": "2018-03-07", - "time": "17-20-06", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G300", - "G339", - "G424" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G300", - "G339", - "G424" - ], - "kitware": [ - "G300", - "G424" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-07.17-23-58.school": { - "date": "2018-03-07", - "time": "17-23-58", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G639" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G639" - ] - } - }, - "2018-03-07.17-25-00.admin": { - "date": "2018-03-07", - "time": "17-25-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware": [ - "G329" - ] - } - }, - "2018-03-07.17-25-00.bus": { - "date": "2018-03-07", - "time": "17-25-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G340", - "G506", - "G508", - "G509" - ], - "kitware-training": [ - "G331" - ] - } - }, - "2018-03-07.17-25-00.school": { - "date": "2018-03-07", - "time": "17-25-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G419", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G421" - ], - "contrib/UMD-v1-train": [ - "G336", - "G638" - ], - "kitware": [ - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G336", - "G419", - "G421" - ] - } - }, - "2018-03-07.17-25-01.admin": { - "date": "2018-03-07", - "time": "17-25-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G326" - ], - "kitware": [ - "G326" - ] - } - }, - "2018-03-07.17-25-01.bus": { - "date": "2018-03-07", - "time": "17-25-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "kitware": [ - "G505" - ] - } - }, - "2018-03-07.17-25-01.hospital": { - "date": "2018-03-07", - "time": "17-25-01", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware": [ - "G436" - ] - } - }, - "2018-03-07.17-25-01.school": { - "date": "2018-03-07", - "time": "17-25-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G328", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "kitware-training": [ - "G328", - "G420", - "G423" - ] - } - }, - "2018-03-07.17-25-03.school": { - "date": "2018-03-07", - "time": "17-25-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-07.17-25-05.hospital": { - "date": "2018-03-07", - "time": "17-25-05", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-07.17-25-06.school": { - "date": "2018-03-07", - "time": "17-25-06", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G339", - "G424" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G339", - "G424" - ], - "kitware": [ - "G424" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-07.17-25-10.school": { - "date": "2018-03-07", - "time": "17-25-10", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G639" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G639" - ], - "kitware-training": [ - "G639" - ] - } - }, - "2018-03-07.17-30-00.admin": { - "date": "2018-03-07", - "time": "17-30-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware": [ - "G329" - ] - } - }, - "2018-03-07.17-30-00.bus": { - "date": "2018-03-07", - "time": "17-30-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G340", - "G506", - "G508", - "G509" - ], - "kitware-training": [ - "G331" - ] - } - }, - "2018-03-07.17-30-00.school": { - "date": "2018-03-07", - "time": "17-30-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G421", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G299", - "G421", - "G639" - ], - "contrib/UMD-v1-train": [ - "G336", - "G638" - ], - "kitware": [ - "G421", - "G638", - "G639" - ], - "kitware-training": [ - "G299", - "G330", - "G336" - ] - } - }, - "2018-03-07.17-30-01.admin": { - "date": "2018-03-07", - "time": "17-30-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G326" - ], - "kitware": [ - "G326" - ] - } - }, - "2018-03-07.17-30-01.bus": { - "date": "2018-03-07", - "time": "17-30-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "kitware": [ - "G505" - ], - "nist-json": [ - "G505" - ] - } - }, - "2018-03-07.17-30-01.hospital": { - "date": "2018-03-07", - "time": "17-30-01", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware-training": [ - "G436" - ] - } - }, - "2018-03-07.17-30-01.school": { - "date": "2018-03-07", - "time": "17-30-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "contrib/UMD-v1-train": [ - "G419", - "G420", - "G423" - ], - "kitware": [ - "G419", - "G420", - "G423" - ], - "kitware-training": [ - "G328" - ] - } - }, - "2018-03-07.17-30-03.school": { - "date": "2018-03-07", - "time": "17-30-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-07.17-30-05.hospital": { - "date": "2018-03-07", - "time": "17-30-05", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ], - "kitware": [ - "G341" - ] - } - }, - "2018-03-07.17-30-06.school": { - "date": "2018-03-07", - "time": "17-30-06", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G339", - "G424" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G339", - "G424" - ], - "kitware-training": [ - "G339", - "G424" - ] - } - }, - "2018-03-07.17-35-00.admin": { - "date": "2018-03-07", - "time": "17-35-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware": [ - "G329" - ] - } - }, - "2018-03-07.17-35-00.bus": { - "date": "2018-03-07", - "time": "17-35-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-07.17-35-00.school": { - "date": "2018-03-07", - "time": "17-35-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G421", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G299", - "G421", - "G639" - ], - "contrib/UMD-v1-train": [ - "G330", - "G336", - "G638" - ], - "kitware": [ - "G299", - "G421", - "G638" - ], - "kitware-training": [ - "G330", - "G336", - "G639" - ], - "nist-json": [ - "G421" - ] - } - }, - "2018-03-07.17-35-01.admin": { - "date": "2018-03-07", - "time": "17-35-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G326" - ], - "kitware": [ - "G326" - ] - } - }, - "2018-03-07.17-35-01.bus": { - "date": "2018-03-07", - "time": "17-35-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "kitware": [ - "G505" - ] - } - }, - "2018-03-07.17-35-01.hospital": { - "date": "2018-03-07", - "time": "17-35-01", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware": [ - "G436" - ] - } - }, - "2018-03-07.17-35-01.school": { - "date": "2018-03-07", - "time": "17-35-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "contrib/UMD-v1-train": [ - "G419", - "G420", - "G423" - ], - "kitware": [ - "G419", - "G420", - "G423" - ], - "kitware-training": [ - "G328" - ] - } - }, - "2018-03-07.17-35-03.school": { - "date": "2018-03-07", - "time": "17-35-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-07.17-35-05.hospital": { - "date": "2018-03-07", - "time": "17-35-05", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ], - "kitware": [ - "G341" - ] - } - }, - "2018-03-07.17-35-06.school": { - "date": "2018-03-07", - "time": "17-35-06", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G339", - "G424" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G339", - "G424" - ], - "kitware": [ - "G339" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-09.10-10-00.bus": { - "date": "2018-03-09", - "time": "10-10-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G508", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G506", - "G508", - "G509" - ], - "kitware-training": [ - "G331" - ] - } - }, - "2018-03-09.10-10-00.school": { - "date": "2018-03-09", - "time": "10-10-00", - "site": "school", - "all_cameras": 10, - "mevid_cameras": [ - "G299", - "G300", - "G328", - "G330", - "G336", - "G419", - "G421", - "G423", - "G424", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G299", - "G328", - "G421", - "G639" - ], - "contrib/UMD-v1-train": [ - "G300", - "G330", - "G336", - "G419", - "G423", - "G424" - ], - "kitware": [ - "G299", - "G300", - "G328", - "G336", - "G419", - "G421", - "G423", - "G639" - ], - "kitware-training": [ - "G330", - "G424" - ], - "nist-json": [ - "G328" - ] - } - }, - "2018-03-09.10-10-01.admin": { - "date": "2018-03-09", - "time": "10-10-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G326", - "G329" - ], - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-09.10-10-01.bus": { - "date": "2018-03-09", - "time": "10-10-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G340", - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340", - "G505" - ], - "kitware": [ - "G340", - "G505" - ], - "nist-json": [ - "G340" - ] - } - }, - "2018-03-09.10-10-01.hospital": { - "date": "2018-03-09", - "time": "10-10-01", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-09.10-10-01.school": { - "date": "2018-03-09", - "time": "10-10-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G339", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G339", - "G420", - "G638" - ], - "kitware": [ - "G339", - "G638" - ], - "kitware-training": [ - "G420" - ] - } - }, - "2018-03-09.10-10-02.hospital": { - "date": "2018-03-09", - "time": "10-10-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ], - "kitware": [ - "G341" - ] - } - }, - "2018-03-09.10-15-00.bus": { - "date": "2018-03-09", - "time": "10-15-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } - }, - "2018-03-09.10-15-00.school": { - "date": "2018-03-09", - "time": "10-15-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G300", - "G330", - "G336", - "G419", - "G421", - "G423", - "G424", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G299", - "G421", - "G639" - ], - "contrib/UMD-v1-train": [ - "G300", - "G330", - "G336", - "G419", - "G423", - "G424" - ], - "kitware": [ - "G299", - "G300", - "G336", - "G421" - ], - "kitware-training": [ - "G330", - "G419", - "G423", - "G424", - "G639" - ] - } - }, - "2018-03-09.10-15-01.admin": { - "date": "2018-03-09", - "time": "10-15-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G326", - "G329" - ], - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-09.10-15-01.bus": { - "date": "2018-03-09", - "time": "10-15-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G340", - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G340", - "G505" - ], - "kitware": [ - "G340", - "G505" - ] - } - }, - "2018-03-09.10-15-01.hospital": { - "date": "2018-03-09", - "time": "10-15-01", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "contrib/UMD-v1-val": [ - "G301" - ], - "kitware": [ - "G301", - "G436" - ] - } - }, - "2018-03-09.10-15-01.school": { - "date": "2018-03-09", - "time": "10-15-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G339", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "contrib/UMD-v1-train": [ - "G339", - "G420", - "G638" - ], - "kitware": [ - "G328", - "G638" - ], - "kitware-training": [ - "G339", - "G420" - ] - } - }, - "2018-03-09.10-15-02.hospital": { - "date": "2018-03-09", - "time": "10-15-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-09.10-20-00.bus": { - "date": "2018-03-09", - "time": "10-20-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } - }, - "2018-03-09.10-20-00.school": { - "date": "2018-03-09", - "time": "10-20-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G300", - "G330", - "G336", - "G419", - "G421", - "G423", - "G424", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G299", - "G421", - "G639" - ], - "contrib/UMD-v1-train": [ - "G330", - "G336", - "G419", - "G423" - ], - "kitware": [ - "G336", - "G419", - "G423", - "G424", - "G639" - ], - "kitware-training": [ - "G299", - "G300", - "G330", - "G421" - ] - } - }, - "2018-03-09.10-20-01.admin": { - "date": "2018-03-09", - "time": "10-20-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-09.10-20-01.bus": { - "date": "2018-03-09", - "time": "10-20-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G340", - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "kitware-training": [ - "G340", - "G505" - ] - } - }, - "2018-03-09.10-20-01.hospital": { - "date": "2018-03-09", - "time": "10-20-01", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-09.10-20-01.school": { - "date": "2018-03-09", - "time": "10-20-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G339", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G328" - ], - "contrib/UMD-v1-train": [ - "G339", - "G420", - "G638" - ], - "kitware": [ - "G328", - "G420" - ], - "kitware-training": [ - "G339", - "G638" - ] - } - }, - "2018-03-09.10-20-02.hospital": { - "date": "2018-03-09", - "time": "10-20-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G341" - ] - } - }, - "2018-03-09.10-25-00.bus": { - "date": "2018-03-09", - "time": "10-25-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271", - "0280" - ], - "sources": { - "kitware-training": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-09.10-25-00.school": { - "date": "2018-03-09", - "time": "10-25-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G300", - "G330", - "G336", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G299", - "G421", - "G639" - ], - "contrib/UMD-v1-train": [ - "G330", - "G336", - "G419", - "G423" - ], - "kitware": [ - "G299", - "G330", - "G336", - "G419", - "G421", - "G423", - "G639" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-09.10-25-01.admin": { - "date": "2018-03-09", - "time": "10-25-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-09.10-25-01.bus": { - "date": "2018-03-09", - "time": "10-25-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-test": [ - "G505" - ], - "kitware-training": [ - "G505" - ] - } - }, - "2018-03-09.10-25-01.hospital": { - "date": "2018-03-09", - "time": "10-25-01", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-09.10-25-01.school": { - "date": "2018-03-09", - "time": "10-25-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G339", - "G420", - "G424", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G420", - "G638" - ], - "kitware": [ - "G420" - ], - "kitware-training": [ - "G328", - "G339", - "G424", - "G638" - ] - } - }, - "2018-03-09.10-30-00.bus": { - "date": "2018-03-09", - "time": "10-30-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271", - "0280" - ], - "sources": { - "kitware": [ - "G340" - ], - "kitware-training": [ - "G331", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-09.10-30-00.school": { - "date": "2018-03-09", - "time": "10-30-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G300", - "G330", - "G336", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G419", - "G421", - "G423" - ], - "contrib/IBM-person-person": [ - "G330" - ], - "kitware": [ - "G330", - "G419", - "G423" - ], - "kitware-training": [ - "G299", - "G300", - "G336", - "G421", - "G639" - ] - } - }, - "2018-03-09.10-30-01.admin": { - "date": "2018-03-09", - "time": "10-30-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-09.10-30-01.bus": { - "date": "2018-03-09", - "time": "10-30-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G505" - ] - } - }, - "2018-03-09.10-30-01.hospital": { - "date": "2018-03-09", - "time": "10-30-01", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301" - ], - "kitware": [ - "G301" - ], - "kitware-training": [ - "G436" - ] - } - }, - "2018-03-09.10-30-01.school": { - "date": "2018-03-09", - "time": "10-30-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G339", - "G420", - "G424", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G420" - ], - "contrib/IBM-person-vehicle": [ - "G328" - ], - "kitware": [ - "G328", - "G420", - "G424" - ], - "kitware-training": [ - "G339", - "G638" - ] - } - }, - "2018-03-09.10-30-02.hospital": { - "date": "2018-03-09", - "time": "10-30-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-09.10-35-00.bus": { - "date": "2018-03-09", - "time": "10-35-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280" - ], - "sources": { - "kitware-training": [ - "G331", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-09.10-35-00.school": { - "date": "2018-03-09", - "time": "10-35-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G300", - "G330", - "G336", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G336", - "G419", - "G421", - "G423", - "G639" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "kitware": [ - "G336", - "G423", - "G639" - ], - "kitware-training": [ - "G299", - "G300", - "G330", - "G419", - "G421" - ] - } - }, - "2018-03-09.10-35-01.admin": { - "date": "2018-03-09", - "time": "10-35-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-09.10-35-01.bus": { - "date": "2018-03-09", - "time": "10-35-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G340", - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G340", - "G505" - ] - } - }, - "2018-03-09.10-35-01.hospital": { - "date": "2018-03-09", - "time": "10-35-01", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G301", - "G436" - ] - } - }, - "2018-03-09.10-35-01.school": { - "date": "2018-03-09", - "time": "10-35-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G339", - "G420", - "G424", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G420", - "G424", - "G638" - ], - "kitware": [ - "G328", - "G339", - "G424" - ], - "kitware-training": [ - "G420", - "G638" - ] - } - }, - "2018-03-09.10-35-02.hospital": { - "date": "2018-03-09", - "time": "10-35-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G341" - ] - } - }, - "2018-03-09.10-40-00.bus": { - "date": "2018-03-09", - "time": "10-40-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G475" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } - }, - "2018-03-09.10-40-00.school": { - "date": "2018-03-09", - "time": "10-40-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G300", - "G330", - "G336", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G300", - "G330", - "G336", - "G419", - "G421", - "G423", - "G474", - "G639" - ], - "contrib/IBM-person-person": [ - "G299" - ], - "contrib/UMD-v1-train": [ - "G330", - "G419" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G330", - "G336", - "G419" - ], - "kitware-training": [ - "G299", - "G300", - "G421", - "G423", - "G639" - ] - } - }, - "2018-03-09.10-40-01.admin": { - "date": "2018-03-09", - "time": "10-40-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "kitware": [ - "G326" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-09.10-40-01.bus": { - "date": "2018-03-09", - "time": "10-40-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G340", - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G340", - "G505" - ], - "kitware-training": [ - "G340", - "G505" - ] - } - }, - "2018-03-09.10-40-01.hospital": { - "date": "2018-03-09", - "time": "10-40-01", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-09.10-40-01.school": { - "date": "2018-03-09", - "time": "10-40-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G339", - "G420", - "G424", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G339", - "G420", - "G424", - "G638" - ], - "contrib/UMD-v1-train": [ - "G638" - ], - "kitware": [ - "G339" - ], - "kitware-training": [ - "G328", - "G420", - "G424", - "G638" - ] - } - }, - "2018-03-09.10-40-02.hospital": { - "date": "2018-03-09", - "time": "10-40-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G341" - ] - } - }, - "2018-03-11.11-15-00.school": { - "date": "2018-03-11", - "time": "11-15-00", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G421" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G421" - ] - } - }, - "2018-03-11.11-15-01.school": { - "date": "2018-03-11", - "time": "11-15-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G424", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "kitware": [ - "G424", - "G638" - ] - } - }, - "2018-03-11.11-15-04.school": { - "date": "2018-03-11", - "time": "11-15-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.11-15-08.hospital": { - "date": "2018-03-11", - "time": "11-15-08", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G436" - ] - } - }, - "2018-03-11.11-20-00.admin": { - "date": "2018-03-11", - "time": "11-20-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.11-20-00.bus": { - "date": "2018-03-11", - "time": "11-20-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G508" - ], - "contrib/UMD-IBM": [ - "G506", - "G508" - ], - "kitware-training": [ - "G331", - "G506", - "G508" - ] - } - }, - "2018-03-11.11-20-00.school": { - "date": "2018-03-11", - "time": "11-20-00", - "site": "school", - "all_cameras": 10, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G336", - "G419", - "G420", - "G423", - "G474", - "G639" - ], - "contrib/IBM-person-person": [ - "G330" - ], - "contrib/IBM-person-vehicle": [ - "G330" - ], - "contrib/UMD-IBM": [ - "G328", - "G330", - "G336", - "G419", - "G420", - "G423", - "G474", - "G639" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G421", - "G423", - "G639" - ] - } - }, - "2018-03-11.11-20-01.admin": { - "date": "2018-03-11", - "time": "11-20-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "contrib/UMD-IBM": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.11-20-01.bus": { - "date": "2018-03-11", - "time": "11-20-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G505", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G509" - ], - "contrib/UMD-IBM": [ - "G505", - "G509" - ], - "kitware-training": [ - "G505", - "G509" - ] - } - }, - "2018-03-11.11-20-01.school": { - "date": "2018-03-11", - "time": "11-20-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G339", - "G424", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G638" - ], - "contrib/UMD-IBM": [ - "G339", - "G424", - "G638" - ], - "kitware": [ - "G424", - "G638" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-11.11-20-04.school": { - "date": "2018-03-11", - "time": "11-20-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.11-20-08.bus": { - "date": "2018-03-11", - "time": "11-20-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.11-20-08.hospital": { - "date": "2018-03-11", - "time": "11-20-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-11.11-25-00.admin": { - "date": "2018-03-11", - "time": "11-25-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.11-25-00.bus": { - "date": "2018-03-11", - "time": "11-25-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G506", - "G508" - ], - "contrib/UMD-IBM": [ - "G475", - "G506", - "G508" - ], - "kitware-training": [ - "G331", - "G506", - "G508" - ] - } - }, - "2018-03-11.11-25-00.school": { - "date": "2018-03-11", - "time": "11-25-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G421", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G421", - "G423", - "G474" - ], - "contrib/IBM-person-person": [ - "G299", - "G330" - ], - "contrib/IBM-person-vehicle": [ - "G330" - ], - "contrib/UMD-IBM": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G421", - "G423" - ], - "kitware": [ - "G299", - "G328", - "G330", - "G336", - "G420", - "G421", - "G423" - ], - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-11.11-25-01.admin": { - "date": "2018-03-11", - "time": "11-25-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "contrib/UMD-IBM": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.11-25-01.bus": { - "date": "2018-03-11", - "time": "11-25-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G505", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G505", - "G509" - ] - } - }, - "2018-03-11.11-25-01.school": { - "date": "2018-03-11", - "time": "11-25-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G339", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G339", - "G424", - "G638", - "G639" - ], - "contrib/UMD-IBM": [ - "G424", - "G638", - "G639" - ], - "contrib/UMD-v1-train": [ - "G339" - ], - "kitware": [ - "G424", - "G638" - ], - "kitware-training": [ - "G339", - "G639" - ] - } - }, - "2018-03-11.11-25-04.school": { - "date": "2018-03-11", - "time": "11-25-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.11-25-08.bus": { - "date": "2018-03-11", - "time": "11-25-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.11-25-08.hospital": { - "date": "2018-03-11", - "time": "11-25-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-11.11-30-00.admin": { - "date": "2018-03-11", - "time": "11-30-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware": [ - "G329" - ] - } - }, - "2018-03-11.11-30-00.bus": { - "date": "2018-03-11", - "time": "11-30-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G506", - "G508" - ], - "contrib/UMD-IBM": [ - "G506", - "G508" - ], - "kitware-training": [ - "G331", - "G506", - "G508" - ] - } - }, - "2018-03-11.11-30-00.school": { - "date": "2018-03-11", - "time": "11-30-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G336", - "G419", - "G420", - "G423" - ], - "contrib/IBM-person-vehicle": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G336", - "G419", - "G420", - "G423", - "G474" - ], - "kitware": [ - "G328", - "G330", - "G336", - "G419", - "G420", - "G423" - ], - "kitware-training": [ - "G299" - ] - } - }, - "2018-03-11.11-30-01.admin": { - "date": "2018-03-11", - "time": "11-30-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "contrib/UMD-IBM": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.11-30-01.bus": { - "date": "2018-03-11", - "time": "11-30-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G505", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G505", - "G509" - ] - } - }, - "2018-03-11.11-30-01.school": { - "date": "2018-03-11", - "time": "11-30-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G421", - "G424", - "G638", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G424", - "G638" - ], - "contrib/UMD-IBM": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "kitware": [ - "G421", - "G424", - "G638" - ], - "kitware-training": [ - "G339", - "G639" - ], - "nist-json": [ - "G421" - ] - } - }, - "2018-03-11.11-30-04.school": { - "date": "2018-03-11", - "time": "11-30-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/UMD-IBM": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.11-30-08.bus": { - "date": "2018-03-11", - "time": "11-30-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.11-30-08.hospital": { - "date": "2018-03-11", - "time": "11-30-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-11.11-35-00.admin": { - "date": "2018-03-11", - "time": "11-35-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.11-35-00.bus": { - "date": "2018-03-11", - "time": "11-35-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G508" - ], - "contrib/UMD-IBM": [ - "G475", - "G506", - "G508" - ], - "kitware-training": [ - "G331", - "G506", - "G508" - ] - } - }, - "2018-03-11.11-35-00.school": { - "date": "2018-03-11", - "time": "11-35-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423", - "G474" - ], - "contrib/IBM-person-vehicle": [ - "G299" - ], - "contrib/UMD-IBM": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423", - "G474" - ], - "kitware": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423" - ] - } - }, - "2018-03-11.11-35-01.admin": { - "date": "2018-03-11", - "time": "11-35-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.11-35-01.bus": { - "date": "2018-03-11", - "time": "11-35-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G505", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505", - "G509" - ], - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G505", - "G509" - ] - } - }, - "2018-03-11.11-35-01.school": { - "date": "2018-03-11", - "time": "11-35-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G421", - "G424", - "G638", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G638" - ], - "contrib/UMD-IBM": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "kitware": [ - "G421", - "G424", - "G638" - ], - "kitware-training": [ - "G339", - "G639" - ], - "nist-json": [ - "G421" - ] - } - }, - "2018-03-11.11-35-04.school": { - "date": "2018-03-11", - "time": "11-35-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/UMD-IBM": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.11-35-08.bus": { - "date": "2018-03-11", - "time": "11-35-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.11-35-08.hospital": { - "date": "2018-03-11", - "time": "11-35-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-11.11-40-00.admin": { - "date": "2018-03-11", - "time": "11-40-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.11-40-00.bus": { - "date": "2018-03-11", - "time": "11-40-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "kitware-training": [ - "G331", - "G506", - "G508" - ] - } - }, - "2018-03-11.11-40-00.school": { - "date": "2018-03-11", - "time": "11-40-00", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G419", - "G420" - ], - "contrib/UMD-IBM": [ - "G419", - "G420" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G299", - "G328", - "G336", - "G419", - "G420", - "G474" - ], - "kitware-training": [ - "G330" - ] - } - }, - "2018-03-11.11-40-01.admin": { - "date": "2018-03-11", - "time": "11-40-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.11-40-01.bus": { - "date": "2018-03-11", - "time": "11-40-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G505", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G505", - "G509" - ] - } - }, - "2018-03-11.11-40-01.school": { - "date": "2018-03-11", - "time": "11-40-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G421", - "G638", - "G639" - ], - "contrib/UMD-IBM": [ - "G421" - ], - "contrib/UMD-v1-train": [ - "G638" - ], - "kitware": [ - "G424", - "G638" - ], - "kitware-training": [ - "G339", - "G421", - "G639" - ] - } - }, - "2018-03-11.11-40-02.school": { - "date": "2018-03-11", - "time": "11-40-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G423" - ], - "mevid_persons": [ - "0008", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G423" - ], - "contrib/UMD-IBM": [ - "G423" - ], - "kitware": [ - "G423" - ] - } - }, - "2018-03-11.11-40-04.school": { - "date": "2018-03-11", - "time": "11-40-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.11-40-08.bus": { - "date": "2018-03-11", - "time": "11-40-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.11-40-08.hospital": { - "date": "2018-03-11", - "time": "11-40-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-11.11-45-00.admin": { - "date": "2018-03-11", - "time": "11-45-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.11-45-00.bus": { - "date": "2018-03-11", - "time": "11-45-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "kitware-training": [ - "G331", - "G506", - "G508" - ] - } - }, - "2018-03-11.11-45-00.school": { - "date": "2018-03-11", - "time": "11-45-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G419", - "G420", - "G423" - ], - "contrib/IBM-person-person": [ - "G299" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G419", - "G420", - "G423" - ], - "kitware": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423", - "G474" - ] - } - }, - "2018-03-11.11-45-01.admin": { - "date": "2018-03-11", - "time": "11-45-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.11-45-01.bus": { - "date": "2018-03-11", - "time": "11-45-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G505", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G505", - "G509" - ] - } - }, - "2018-03-11.11-45-01.school": { - "date": "2018-03-11", - "time": "11-45-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G421", - "G638" - ], - "contrib/UMD-IBM": [ - "G421", - "G638", - "G639" - ], - "kitware": [ - "G421", - "G424", - "G638" - ], - "kitware-training": [ - "G339", - "G639" - ] - } - }, - "2018-03-11.11-45-04.school": { - "date": "2018-03-11", - "time": "11-45-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.11-45-08.bus": { - "date": "2018-03-11", - "time": "11-45-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.11-45-08.hospital": { - "date": "2018-03-11", - "time": "11-45-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-11.11-50-00.admin": { - "date": "2018-03-11", - "time": "11-50-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.11-50-00.bus": { - "date": "2018-03-11", - "time": "11-50-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "contrib/UMD-IBM": [ - "G475", - "G506" - ], - "kitware-training": [ - "G331", - "G506", - "G508" - ] - } - }, - "2018-03-11.11-50-00.school": { - "date": "2018-03-11", - "time": "11-50-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G419", - "G420", - "G423", - "G474" - ], - "contrib/IBM-person-person": [ - "G299" - ], - "contrib/IBM-person-vehicle": [ - "G330" - ], - "contrib/UMD-IBM": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G474" - ], - "contrib/UMD-v1-train": [ - "G423" - ], - "kitware": [ - "G299", - "G328", - "G336", - "G419", - "G420", - "G423" - ], - "kitware-training": [ - "G330" - ] - } - }, - "2018-03-11.11-50-01.admin": { - "date": "2018-03-11", - "time": "11-50-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-IBM": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.11-50-01.bus": { - "date": "2018-03-11", - "time": "11-50-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G505", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G505", - "G509" - ] - } - }, - "2018-03-11.11-50-01.school": { - "date": "2018-03-11", - "time": "11-50-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "kitware": [ - "G421", - "G424", - "G638", - "G639" - ], - "kitware-training": [ - "G339" - ], - "nist-json": [ - "G424" - ] - } - }, - "2018-03-11.11-50-04.school": { - "date": "2018-03-11", - "time": "11-50-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/UMD-IBM": [ - "G300" - ], - "kitware": [ - "G300" - ], - "nist-json": [ - "G300" - ] - } - }, - "2018-03-11.11-50-08.bus": { - "date": "2018-03-11", - "time": "11-50-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.11-50-08.hospital": { - "date": "2018-03-11", - "time": "11-50-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-IBM": [ - "G436" - ], - "kitware": [ - "G341", - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-11.11-55-00.admin": { - "date": "2018-03-11", - "time": "11-55-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.11-55-00.bus": { - "date": "2018-03-11", - "time": "11-55-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G506", - "G508" - ], - "kitware-training": [ - "G331", - "G506", - "G508" - ] - } - }, - "2018-03-11.11-55-00.school": { - "date": "2018-03-11", - "time": "11-55-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423", - "G474" - ], - "kitware": [ - "G299", - "G328", - "G330", - "G336", - "G419", - "G420", - "G423" - ] - } - }, - "2018-03-11.11-55-01.admin": { - "date": "2018-03-11", - "time": "11-55-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.11-55-01.bus": { - "date": "2018-03-11", - "time": "11-55-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G505", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505", - "G509" - ], - "kitware-training": [ - "G505", - "G509" - ] - } - }, - "2018-03-11.11-55-01.school": { - "date": "2018-03-11", - "time": "11-55-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "kitware": [ - "G421", - "G424", - "G638", - "G639" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-11.11-55-04.school": { - "date": "2018-03-11", - "time": "11-55-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.11-55-08.bus": { - "date": "2018-03-11", - "time": "11-55-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.11-55-08.hospital": { - "date": "2018-03-11", - "time": "11-55-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436" - ], - "kitware": [ - "G341", - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-11.12-00-00.school": { - "date": "2018-03-11", - "time": "12-00-00", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G299", - "G336", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G299", - "G336", - "G420" - ] - } - }, - "2018-03-11.13-50-00.admin": { - "date": "2018-03-11", - "time": "13-50-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "contrib/UMD-IBM": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.13-50-00.bus": { - "date": "2018-03-11", - "time": "13-50-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G509" - ], - "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0202", - "0229", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G509" - ], - "contrib/UMD-IBM": [ - "G475", - "G509" - ], - "kitware-training": [ - "G331", - "G509" - ] - } - }, - "2018-03-11.13-50-00.school": { - "date": "2018-03-11", - "time": "13-50-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G420", - "G638" - ], - "nist-json": [ - "G299", - "G330" - ] - } - }, - "2018-03-11.13-50-01.admin": { - "date": "2018-03-11", - "time": "13-50-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.13-50-01.bus": { - "date": "2018-03-11", - "time": "13-50-01", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505", - "G506", - "G508" - ], - "contrib/UMD-IBM": [ - "G505", - "G506", - "G508" - ], - "kitware-training": [ - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-11.13-50-01.school": { - "date": "2018-03-11", - "time": "13-50-01", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G639" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G639" - ], - "kitware": [ - "G339", - "G421", - "G423" - ], - "kitware-training": [ - "G328", - "G336", - "G419", - "G424", - "G639" - ], - "nist-json": [ - "G328", - "G336", - "G339", - "G421" - ] - } - }, - "2018-03-11.13-50-04.school": { - "date": "2018-03-11", - "time": "13-50-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/UMD-IBM": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.13-50-08.bus": { - "date": "2018-03-11", - "time": "13-50-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/UMD-IBM": [ - "G340" - ], - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.13-50-08.hospital": { - "date": "2018-03-11", - "time": "13-50-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G341", - "G436" - ], - "kitware": [ - "G341" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-11.13-55-00.admin": { - "date": "2018-03-11", - "time": "13-55-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.13-55-00.bus": { - "date": "2018-03-11", - "time": "13-55-00", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G331", - "G509" - ], - "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0202", - "0229", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G509" - ], - "kitware-training": [ - "G331", - "G509" - ] - } - }, - "2018-03-11.13-55-00.school": { - "date": "2018-03-11", - "time": "13-55-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "kitware": [ - "G420", - "G638" - ], - "kitware-training": [ - "G299", - "G330" - ] - } - }, - "2018-03-11.13-55-01.admin": { - "date": "2018-03-11", - "time": "13-55-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.13-55-01.bus": { - "date": "2018-03-11", - "time": "13-55-01", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505", - "G506", - "G508" - ], - "kitware-training": [ - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-11.13-55-01.school": { - "date": "2018-03-11", - "time": "13-55-01", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424" - ], - "contrib/UMD-v1-train": [ - "G339" - ], - "kitware": [ - "G339", - "G639" - ], - "kitware-training": [ - "G328", - "G336", - "G419", - "G421", - "G423", - "G424" - ] - } - }, - "2018-03-11.13-55-04.school": { - "date": "2018-03-11", - "time": "13-55-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.13-55-08.bus": { - "date": "2018-03-11", - "time": "13-55-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.13-55-08.hospital": { - "date": "2018-03-11", - "time": "13-55-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ], - "nist-json": [ - "G436" - ] - } - }, - "2018-03-11.14-00-00.admin": { - "date": "2018-03-11", - "time": "14-00-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "contrib/UMD-IBM": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.14-00-00.bus": { - "date": "2018-03-11", - "time": "14-00-00", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G331", - "G509" - ], - "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G331", - "G509" - ] - } - }, - "2018-03-11.14-00-00.school": { - "date": "2018-03-11", - "time": "14-00-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "contrib/IBM-person-person": [ - "G299" - ], - "contrib/IBM-person-vehicle": [ - "G299", - "G330" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G420", - "G638" - ] - } - }, - "2018-03-11.14-00-01.admin": { - "date": "2018-03-11", - "time": "14-00-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.14-00-01.bus": { - "date": "2018-03-11", - "time": "14-00-01", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-11.14-00-01.school": { - "date": "2018-03-11", - "time": "14-00-01", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G419", - "G421", - "G423", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G423" - ], - "contrib/UMD-IBM": [ - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "kitware": [ - "G423" - ], - "kitware-training": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G639" - ] - } - }, - "2018-03-11.14-00-02.school": { - "date": "2018-03-11", - "time": "14-00-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-11.14-00-04.school": { - "date": "2018-03-11", - "time": "14-00-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.14-00-08.bus": { - "date": "2018-03-11", - "time": "14-00-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.14-00-08.hospital": { - "date": "2018-03-11", - "time": "14-00-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-11.14-05-00.admin": { - "date": "2018-03-11", - "time": "14-05-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.14-05-00.bus": { - "date": "2018-03-11", - "time": "14-05-00", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G331", - "G509" - ], - "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G331", - "G509" - ] - } - }, - "2018-03-11.14-05-00.school": { - "date": "2018-03-11", - "time": "14-05-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "contrib/IBM-person-person": [ - "G330" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G474", - "G638" - ], - "contrib/UMD-v1-train": [ - "G420" - ], - "kitware": [ - "G420" - ], - "kitware-training": [ - "G299", - "G330", - "G638" - ] - } - }, - "2018-03-11.14-05-01.admin": { - "date": "2018-03-11", - "time": "14-05-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.14-05-01.bus": { - "date": "2018-03-11", - "time": "14-05-01", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-11.14-05-01.school": { - "date": "2018-03-11", - "time": "14-05-01", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G419", - "G421", - "G423", - "G639" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "kitware": [ - "G423" - ], - "kitware-training": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G639" - ] - } - }, - "2018-03-11.14-05-02.school": { - "date": "2018-03-11", - "time": "14-05-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-11.14-05-04.school": { - "date": "2018-03-11", - "time": "14-05-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.14-05-08.bus": { - "date": "2018-03-11", - "time": "14-05-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.14-05-08.hospital": { - "date": "2018-03-11", - "time": "14-05-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-11.14-10-00.admin": { - "date": "2018-03-11", - "time": "14-10-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.14-10-00.bus": { - "date": "2018-03-11", - "time": "14-10-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G509" - ], - "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0202", - "0229", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G475" - ], - "kitware-training": [ - "G331", - "G509" - ] - } - }, - "2018-03-11.14-10-00.school": { - "date": "2018-03-11", - "time": "14-10-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G474", - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G420", - "G638" - ] - } - }, - "2018-03-11.14-10-01.admin": { - "date": "2018-03-11", - "time": "14-10-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.14-10-01.bus": { - "date": "2018-03-11", - "time": "14-10-01", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-11.14-10-01.school": { - "date": "2018-03-11", - "time": "14-10-01", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G421", - "G423", - "G639" - ], - "kitware-training": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ] - } - }, - "2018-03-11.14-10-02.school": { - "date": "2018-03-11", - "time": "14-10-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-v1-train": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-11.14-10-04.school": { - "date": "2018-03-11", - "time": "14-10-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.14-10-08.bus": { - "date": "2018-03-11", - "time": "14-10-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.14-10-08.hospital": { - "date": "2018-03-11", - "time": "14-10-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-11.14-15-00.admin": { - "date": "2018-03-11", - "time": "14-15-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "contrib/UMD-IBM": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.14-15-00.bus": { - "date": "2018-03-11", - "time": "14-15-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G509" - ], - "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0202", - "0229", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G475", - "G509" - ], - "contrib/UMD-IBM": [ - "G475", - "G509" - ], - "kitware-training": [ - "G331", - "G509" - ] - } - }, - "2018-03-11.14-15-00.school": { - "date": "2018-03-11", - "time": "14-15-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "contrib/IBM-person-person": [ - "G299" - ], - "contrib/IBM-person-vehicle": [ - "G299" - ], - "contrib/UMD-IBM": [ - "G299", - "G420", - "G474", - "G638" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "kitware": [ - "G299", - "G638" - ], - "kitware-training": [ - "G330", - "G420" - ] - } - }, - "2018-03-11.14-15-01.admin": { - "date": "2018-03-11", - "time": "14-15-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.14-15-01.bus": { - "date": "2018-03-11", - "time": "14-15-01", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505", - "G508" - ], - "contrib/UMD-IBM": [ - "G505", - "G506", - "G508" - ], - "kitware-training": [ - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-11.14-15-01.school": { - "date": "2018-03-11", - "time": "14-15-01", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G328" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "kitware": [ - "G339", - "G423", - "G639" - ], - "kitware-training": [ - "G328", - "G336", - "G419", - "G421" - ] - } - }, - "2018-03-11.14-15-02.school": { - "date": "2018-03-11", - "time": "14-15-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-11.14-15-04.school": { - "date": "2018-03-11", - "time": "14-15-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.14-15-08.bus": { - "date": "2018-03-11", - "time": "14-15-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.14-15-08.hospital": { - "date": "2018-03-11", - "time": "14-15-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G341" - ], - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-11.14-20-00.admin": { - "date": "2018-03-11", - "time": "14-20-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.14-20-00.bus": { - "date": "2018-03-11", - "time": "14-20-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G509" - ], - "mevid_persons": [ - "0008", - "0032", - "0046", - "0053", - "0076", - "0202", - "0229", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G475", - "G509" - ], - "contrib/UMD-IBM": [ - "G475", - "G509" - ], - "kitware-training": [ - "G331", - "G509" - ] - } - }, - "2018-03-11.14-20-00.school": { - "date": "2018-03-11", - "time": "14-20-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "contrib/IBM-person-person": [ - "G330" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "kitware": [ - "G299", - "G330", - "G420" - ], - "kitware-training": [ - "G638" - ] - } - }, - "2018-03-11.14-20-01.admin": { - "date": "2018-03-11", - "time": "14-20-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-11.14-20-01.bus": { - "date": "2018-03-11", - "time": "14-20-01", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505", - "G506", - "G508" - ], - "contrib/UMD-IBM": [ - "G505", - "G506", - "G508" - ], - "kitware": [ - "G506", - "G508" - ], - "kitware-training": [ - "G505" - ] - } - }, - "2018-03-11.14-20-01.school": { - "date": "2018-03-11", - "time": "14-20-01", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G639" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G339", - "G419", - "G421", - "G423", - "G639" - ], - "kitware": [ - "G419" - ], - "kitware-training": [ - "G328", - "G336", - "G339", - "G421", - "G423", - "G639" - ] - } - }, - "2018-03-11.14-20-02.school": { - "date": "2018-03-11", - "time": "14-20-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-11.14-20-04.school": { - "date": "2018-03-11", - "time": "14-20-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.14-20-08.bus": { - "date": "2018-03-11", - "time": "14-20-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.14-20-08.hospital": { - "date": "2018-03-11", - "time": "14-20-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436" - ], - "contrib/UMD-IBM": [ - "G341", - "G436" - ], - "kitware": [ - "G341" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-11.16-10-00.bus": { - "date": "2018-03-11", - "time": "16-10-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G505", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-11.16-10-01.admin": { - "date": "2018-03-11", - "time": "16-10-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-11.16-10-01.bus": { - "date": "2018-03-11", - "time": "16-10-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "kitware": [ - "G506" - ] - } - }, - "2018-03-11.16-10-01.school": { - "date": "2018-03-11", - "time": "16-10-01", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G339" - ] - } - }, - "2018-03-11.16-10-08.bus": { - "date": "2018-03-11", - "time": "16-10-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.16-10-08.hospital": { - "date": "2018-03-11", - "time": "16-10-08", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G301", - "G341" - ] - } - }, - "2018-03-11.16-15-00.bus": { - "date": "2018-03-11", - "time": "16-15-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G505", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G505", - "G509" - ], - "contrib/UMD-IBM": [ - "G331", - "G505", - "G509" - ], - "kitware": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-11.16-15-00.school": { - "date": "2018-03-11", - "time": "16-15-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G421", - "G474", - "G638", - "G639" - ], - "contrib/UMD-IBM": [ - "G421", - "G474", - "G638", - "G639" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G299", - "G421", - "G638" - ], - "kitware-training": [ - "G330", - "G639" - ], - "nist-json": [ - "G421" - ] - } - }, - "2018-03-11.16-15-01.admin": { - "date": "2018-03-11", - "time": "16-15-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "contrib/UMD-IBM": [ - "G326", - "G329" - ], - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-11.16-15-01.bus": { - "date": "2018-03-11", - "time": "16-15-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G508" - ], - "contrib/UMD-IBM": [ - "G506", - "G508" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G508" - ] - } - }, - "2018-03-11.16-15-01.school": { - "date": "2018-03-11", - "time": "16-15-01", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423" - ], - "contrib/IBM-person-person": [ - "G420" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423" - ], - "kitware": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423" - ] - } - }, - "2018-03-11.16-15-02.school": { - "date": "2018-03-11", - "time": "16-15-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-11.16-15-04.school": { - "date": "2018-03-11", - "time": "16-15-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.16-15-08.bus": { - "date": "2018-03-11", - "time": "16-15-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.16-15-08.hospital": { - "date": "2018-03-11", - "time": "16-15-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436" - ], - "contrib/UMD-IBM": [ - "G341", - "G436" - ], - "kitware": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-11.16-20-00.bus": { - "date": "2018-03-11", - "time": "16-20-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G505", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G509" - ], - "contrib/UMD-IBM": [ - "G331", - "G505", - "G509" - ], - "kitware": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-11.16-20-00.school": { - "date": "2018-03-11", - "time": "16-20-00", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G421", - "G423", - "G474", - "G638", - "G639" - ], - "contrib/IBM-person-person": [ - "G299" - ], - "contrib/UMD-IBM": [ - "G299", - "G421", - "G423", - "G638", - "G639" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "kitware": [ - "G299", - "G330", - "G421", - "G423", - "G638" - ], - "kitware-training": [ - "G639" - ] - } - }, - "2018-03-11.16-20-01.admin": { - "date": "2018-03-11", - "time": "16-20-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "contrib/UMD-IBM": [ - "G326", - "G329" - ], - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-11.16-20-01.bus": { - "date": "2018-03-11", - "time": "16-20-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G506", - "G508" - ], - "contrib/UMD-IBM": [ - "G506", - "G508" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G508" - ] - } - }, - "2018-03-11.16-20-01.school": { - "date": "2018-03-11", - "time": "16-20-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G339", - "G419", - "G420" - ], - "contrib/IBM-person-person": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G419", - "G420" - ], - "kitware": [ - "G328", - "G336", - "G419", - "G420" - ] - } - }, - "2018-03-11.16-20-02.school": { - "date": "2018-03-11", - "time": "16-20-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-11.16-20-04.school": { - "date": "2018-03-11", - "time": "16-20-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/UMD-IBM": [ - "G300" - ], - "kitware": [ - "G300" - ], - "nist-json": [ - "G300" - ] - } - }, - "2018-03-11.16-20-08.bus": { - "date": "2018-03-11", - "time": "16-20-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.16-20-08.hospital": { - "date": "2018-03-11", - "time": "16-20-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436" - ], - "contrib/UMD-IBM": [ - "G341", - "G436" - ], - "kitware": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-11.16-25-00.bus": { - "date": "2018-03-11", - "time": "16-25-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G505", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G505", - "G509" - ], - "contrib/UMD-IBM": [ - "G475", - "G505" - ], - "kitware": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-11.16-25-00.school": { - "date": "2018-03-11", - "time": "16-25-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G421", - "G474" - ], - "contrib/IBM-person-person": [ - "G330" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G421", - "G639" - ], - "kitware": [ - "G299", - "G330", - "G421", - "G639" - ] - } - }, - "2018-03-11.16-25-01.admin": { - "date": "2018-03-11", - "time": "16-25-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-11.16-25-01.bus": { - "date": "2018-03-11", - "time": "16-25-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G508" - ], - "contrib/UMD-IBM": [ - "G508" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G508" - ] - } - }, - "2018-03-11.16-25-01.school": { - "date": "2018-03-11", - "time": "16-25-01", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G339", - "G419", - "G420", - "G423" - ], - "contrib/IBM-person-vehicle": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423" - ], - "kitware": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423" - ] - } - }, - "2018-03-11.16-25-02.school": { - "date": "2018-03-11", - "time": "16-25-02", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G424", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware": [ - "G424", - "G638" - ], - "nist-json": [ - "G424" - ] - } - }, - "2018-03-11.16-25-04.school": { - "date": "2018-03-11", - "time": "16-25-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/UMD-IBM": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.16-25-08.bus": { - "date": "2018-03-11", - "time": "16-25-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/UMD-IBM": [ - "G340" - ], - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.16-25-08.hospital": { - "date": "2018-03-11", - "time": "16-25-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436" - ], - "contrib/UMD-IBM": [ - "G341", - "G436" - ], - "kitware": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-11.16-30-00.bus": { - "date": "2018-03-11", - "time": "16-30-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G505", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G331", - "G475", - "G505", - "G509" - ] - } - }, - "2018-03-11.16-30-00.school": { - "date": "2018-03-11", - "time": "16-30-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G639" - ], - "contrib/IBM-person-person": [ - "G299" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G639" - ], - "kitware": [ - "G299", - "G330", - "G421", - "G474" - ], - "kitware-training": [ - "G639" - ] - } - }, - "2018-03-11.16-30-01.admin": { - "date": "2018-03-11", - "time": "16-30-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-11.16-30-01.bus": { - "date": "2018-03-11", - "time": "16-30-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-IBM": [ - "G506" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G508" - ] - } - }, - "2018-03-11.16-30-01.school": { - "date": "2018-03-11", - "time": "16-30-01", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G339", - "G419", - "G420", - "G423" - ], - "contrib/IBM-person-vehicle": [ - "G328" - ], - "contrib/UMD-IBM": [ - "G328", - "G339", - "G419", - "G420", - "G423" - ], - "kitware": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423" - ] - } - }, - "2018-03-11.16-30-02.school": { - "date": "2018-03-11", - "time": "16-30-02", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G424", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424", - "G638" - ], - "kitware": [ - "G424", - "G638" - ] - } - }, - "2018-03-11.16-30-04.school": { - "date": "2018-03-11", - "time": "16-30-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/UMD-IBM": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.16-30-08.bus": { - "date": "2018-03-11", - "time": "16-30-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.16-30-08.hospital": { - "date": "2018-03-11", - "time": "16-30-08", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G301", - "G436" - ] - } - }, - "2018-03-11.16-30-09.hospital": { - "date": "2018-03-11", - "time": "16-30-09", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G341" - ] - } - }, - "2018-03-11.16-35-00.bus": { - "date": "2018-03-11", - "time": "16-35-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G505", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G505" - ], - "contrib/UMD-IBM": [ - "G505" - ], - "kitware": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-11.16-35-00.school": { - "date": "2018-03-11", - "time": "16-35-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G421", - "G474", - "G639" - ], - "contrib/IBM-person-person": [ - "G299" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G474", - "G639" - ], - "kitware": [ - "G330", - "G421" - ], - "kitware-training": [ - "G299", - "G639" - ] - } - }, - "2018-03-11.16-35-01.admin": { - "date": "2018-03-11", - "time": "16-35-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "contrib/UMD-IBM": [ - "G326", - "G329" - ], - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-11.16-35-01.bus": { - "date": "2018-03-11", - "time": "16-35-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G508" - ] - } - }, - "2018-03-11.16-35-01.school": { - "date": "2018-03-11", - "time": "16-35-01", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423", - "G638" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G638" - ], - "contrib/UMD-v1-train": [ - "G423" - ], - "kitware": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G423", - "G638" - ] - } - }, - "2018-03-11.16-35-02.school": { - "date": "2018-03-11", - "time": "16-35-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/IBM-person-vehicle": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-11.16-35-04.school": { - "date": "2018-03-11", - "time": "16-35-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/UMD-IBM": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.16-35-08.bus": { - "date": "2018-03-11", - "time": "16-35-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.16-35-08.hospital": { - "date": "2018-03-11", - "time": "16-35-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436" - ], - "contrib/IBM-person-person": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G341", - "G436" - ], - "kitware": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-11.16-40-00.bus": { - "date": "2018-03-11", - "time": "16-40-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G505", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G505" - ], - "contrib/UMD-IBM": [ - "G331", - "G505" - ], - "kitware": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-11.16-40-00.school": { - "date": "2018-03-11", - "time": "16-40-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G423", - "G474", - "G639" - ], - "contrib/IBM-person-person": [ - "G330" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G423", - "G474", - "G639" - ], - "kitware": [ - "G299", - "G330", - "G421", - "G423" - ], - "kitware-training": [ - "G639" - ] - } - }, - "2018-03-11.16-40-01.admin": { - "date": "2018-03-11", - "time": "16-40-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "contrib/UMD-IBM": [ - "G326", - "G329" - ], - "kitware": [ - "G326", - "G329" - ] - } - }, - "2018-03-11.16-40-01.bus": { - "date": "2018-03-11", - "time": "16-40-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G506", - "G508" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0211", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "contrib/UMD-IBM": [ - "G506" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G508" - ] - } - }, - "2018-03-11.16-40-01.school": { - "date": "2018-03-11", - "time": "16-40-01", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G638" - ], - "contrib/UMD-IBM": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G638" - ], - "kitware": [ - "G328", - "G336", - "G339", - "G419", - "G420", - "G638" - ] - } - }, - "2018-03-11.16-40-02.school": { - "date": "2018-03-11", - "time": "16-40-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-11.16-40-04.school": { - "date": "2018-03-11", - "time": "16-40-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.16-40-08.bus": { - "date": "2018-03-11", - "time": "16-40-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.16-40-08.hospital": { - "date": "2018-03-11", - "time": "16-40-08", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G341", - "G436" - ], - "kitware": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-11.16-45-00.bus": { - "date": "2018-03-11", - "time": "16-45-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G505", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0229", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-11.16-45-00.school": { - "date": "2018-03-11", - "time": "16-45-00", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G423" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "kitware": [ - "G299", - "G330", - "G421", - "G423" - ] - } - }, - "2018-03-11.17-10-00.bus": { - "date": "2018-03-11", - "time": "17-10-00", - "site": "bus", - "all_cameras": 3, - "mevid_cameras": [ - "G331", - "G505", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G505" - ], - "kitware-training": [ - "G331", - "G508" - ] - } - }, - "2018-03-11.17-10-00.school": { - "date": "2018-03-11", - "time": "17-10-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G330", - "G421", - "G423", - "G639" - ], - "kitware-training": [ - "G299", - "G328" - ] - } - }, - "2018-03-11.17-10-01.admin": { - "date": "2018-03-11", - "time": "17-10-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.17-10-01.bus": { - "date": "2018-03-11", - "time": "17-10-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G506", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G506", - "G509" - ] - } - }, - "2018-03-11.17-10-01.school": { - "date": "2018-03-11", - "time": "17-10-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G336", - "G339", - "G419", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G339", - "G419" - ], - "kitware-training": [ - "G336", - "G420", - "G638" - ] - } - }, - "2018-03-11.17-10-02.school": { - "date": "2018-03-11", - "time": "17-10-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "kitware": [ - "G424" - ] - } - }, - "2018-03-11.17-10-04.school": { - "date": "2018-03-11", - "time": "17-10-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.17-10-08.bus": { - "date": "2018-03-11", - "time": "17-10-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.17-10-08.hospital": { - "date": "2018-03-11", - "time": "17-10-08", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-11.17-10-09.hospital": { - "date": "2018-03-11", - "time": "17-10-09", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware": [ - "G341" - ] - } - }, - "2018-03-11.17-15-00.bus": { - "date": "2018-03-11", - "time": "17-15-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware-training": [ - "G331", - "G505", - "G508", - "G509" - ] - } - }, - "2018-03-11.17-15-00.school": { - "date": "2018-03-11", - "time": "17-15-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G299", - "G423" - ], - "kitware-training": [ - "G330", - "G421", - "G639" - ] - } - }, - "2018-03-11.17-15-01.admin": { - "date": "2018-03-11", - "time": "17-15-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.17-15-01.bus": { - "date": "2018-03-11", - "time": "17-15-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-11.17-15-01.school": { - "date": "2018-03-11", - "time": "17-15-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G336", - "G339", - "G419", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G336" - ], - "kitware-training": [ - "G339", - "G419", - "G420", - "G638" - ] - } - }, - "2018-03-11.17-15-02.school": { - "date": "2018-03-11", - "time": "17-15-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-11.17-15-04.school": { - "date": "2018-03-11", - "time": "17-15-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.17-15-08.bus": { - "date": "2018-03-11", - "time": "17-15-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.17-15-08.hospital": { - "date": "2018-03-11", - "time": "17-15-08", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-11.17-15-09.hospital": { - "date": "2018-03-11", - "time": "17-15-09", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-11.17-20-00.bus": { - "date": "2018-03-11", - "time": "17-20-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware-training": [ - "G331", - "G505", - "G508", - "G509" - ] - } - }, - "2018-03-11.17-20-00.school": { - "date": "2018-03-11", - "time": "17-20-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G328", - "G423" - ], - "kitware-training": [ - "G299", - "G330", - "G421", - "G639" - ] - } - }, - "2018-03-11.17-20-01.admin": { - "date": "2018-03-11", - "time": "17-20-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-11.17-20-01.bus": { - "date": "2018-03-11", - "time": "17-20-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-11.17-20-01.school": { - "date": "2018-03-11", - "time": "17-20-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G336", - "G339", - "G419", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G420" - ], - "kitware-training": [ - "G336", - "G339", - "G419", - "G638" - ] - } - }, - "2018-03-11.17-20-02.school": { - "date": "2018-03-11", - "time": "17-20-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-11.17-20-04.school": { - "date": "2018-03-11", - "time": "17-20-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-11.17-20-08.bus": { - "date": "2018-03-11", - "time": "17-20-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-11.17-20-08.hospital": { - "date": "2018-03-11", - "time": "17-20-08", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-11.17-20-09.hospital": { - "date": "2018-03-11", - "time": "17-20-09", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-11.17-25-00.bus": { - "date": "2018-03-11", - "time": "17-25-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware-training": [ - "G331", - "G505", - "G508", - "G509" - ] - } - }, - "2018-03-11.17-25-00.school": { - "date": "2018-03-11", - "time": "17-25-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G299", - "G328", - "G330", - "G423" - ], - "kitware-training": [ - "G421", - "G639" - ] - } - }, - "2018-03-11.17-25-01.admin": { - "date": "2018-03-11", - "time": "17-25-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-11.17-25-01.bus": { - "date": "2018-03-11", - "time": "17-25-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "kitware": [ - "G506" - ] - } - }, - "2018-03-11.17-25-01.school": { - "date": "2018-03-11", - "time": "17-25-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G336", - "G339", - "G419", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware": [ - "G336", - "G419", - "G638" - ], - "kitware-training": [ - "G339", - "G420" - ] - } - }, - "2018-03-11.17-25-02.school": { - "date": "2018-03-11", - "time": "17-25-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "kitware": [ - "G424" - ] - } - }, - "2018-03-11.17-25-04.school": { - "date": "2018-03-11", - "time": "17-25-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware": [ - "G300" - ] - } - }, - "2018-03-11.17-25-08.bus": { - "date": "2018-03-11", - "time": "17-25-08", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware": [ - "G340" - ] - } - }, - "2018-03-11.17-25-08.hospital": { - "date": "2018-03-11", - "time": "17-25-08", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-11.17-25-09.hospital": { - "date": "2018-03-11", - "time": "17-25-09", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-12.10-00-00.bus": { - "date": "2018-03-12", - "time": "10-00-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-IBM": [ - "G340", - "G505", - "G506" - ], - "kitware": [ - "G340" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-12.10-00-00.hospital": { - "date": "2018-03-12", - "time": "10-00-00", - "site": "hospital", - "all_cameras": 4, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G301", - "G436", - "G479" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ], - "nist-json": [ - "G436" - ] - } - }, - "2018-03-12.10-00-00.school": { - "date": "2018-03-12", - "time": "10-00-00", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G299", - "G330", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420" - ], - "contrib/IBM-person-vehicle": [ - "G299", - "G330" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G420", - "G474" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "kitware": [ - "G299", - "G330", - "G420" - ] - } - }, - "2018-03-12.10-00-01.admin": { - "date": "2018-03-12", - "time": "10-00-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ] - } - }, - "2018-03-12.10-00-01.bus": { - "date": "2018-03-12", - "time": "10-00-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.10-00-01.school": { - "date": "2018-03-12", - "time": "10-00-01", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G328", - "G419", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G421", - "G423", - "G638", - "G639" - ], - "contrib/IBM-person-person": [ - "G423" - ], - "contrib/UMD-IBM": [ - "G328", - "G419", - "G421", - "G423", - "G638", - "G639" - ], - "contrib/UMD-v1-val": [ - "G328" - ], - "kitware-training": [ - "G328", - "G419", - "G421", - "G423", - "G638", - "G639" - ], - "nist-json": [ - "G423" - ] - } - }, - "2018-03-12.10-00-02.admin": { - "date": "2018-03-12", - "time": "10-00-02", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "contrib/UMD-IBM": [ - "G326" - ], - "kitware-training": [ - "G326" - ], - "nist-json": [ - "G326" - ] - } - }, - "2018-03-12.10-00-02.school": { - "date": "2018-03-12", - "time": "10-00-02", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G339" - ], - "contrib/UMD-IBM": [ - "G336", - "G339" - ], - "kitware-training": [ - "G336", - "G339" - ], - "nist-json": [ - "G339" - ] - } - }, - "2018-03-12.10-00-04.school": { - "date": "2018-03-12", - "time": "10-00-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-12.10-00-05.school": { - "date": "2018-03-12", - "time": "10-00-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/UMD-IBM": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.10-05-00.bus": { - "date": "2018-03-12", - "time": "10-05-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "contrib/UMD-v1-val": [ - "G505" - ], - "kitware": [ - "G340" - ], - "kitware-training": [ - "G331", - "G505", - "G508" - ] - } - }, - "2018-03-12.10-05-00.hospital": { - "date": "2018-03-12", - "time": "10-05-00", - "site": "hospital", - "all_cameras": 4, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G341", - "G436", - "G479" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-12.10-05-00.school": { - "date": "2018-03-12", - "time": "10-05-00", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G299", - "G330", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G474" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G299", - "G330" - ], - "kitware-training": [ - "G420" - ] - } - }, - "2018-03-12.10-05-01.admin": { - "date": "2018-03-12", - "time": "10-05-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-12.10-05-01.bus": { - "date": "2018-03-12", - "time": "10-05-01", - "site": "bus", - "all_cameras": 2, - "mevid_cameras": [ - "G506", - "G509" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G506", - "G509" - ] - } - }, - "2018-03-12.10-05-01.school": { - "date": "2018-03-12", - "time": "10-05-01", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G328", - "G419", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G421", - "G423", - "G638", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G639" - ], - "contrib/UMD-v1-train": [ - "G419", - "G423" - ], - "kitware": [ - "G328", - "G639" - ], - "kitware-training": [ - "G419", - "G421", - "G423", - "G638" - ] - } - }, - "2018-03-12.10-05-02.school": { - "date": "2018-03-12", - "time": "10-05-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "contrib/IBM-person-vehicle": [ - "G336" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-12.10-05-03.school": { - "date": "2018-03-12", - "time": "10-05-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.10-05-04.school": { - "date": "2018-03-12", - "time": "10-05-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-12.10-05-05.school": { - "date": "2018-03-12", - "time": "10-05-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.10-10-00.bus": { - "date": "2018-03-12", - "time": "10-10-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "kitware-training": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-12.10-10-00.hospital": { - "date": "2018-03-12", - "time": "10-10-00", - "site": "hospital", - "all_cameras": 4, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G341", - "G476" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-12.10-10-00.school": { - "date": "2018-03-12", - "time": "10-10-00", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G299", - "G330", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G474" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware-training": [ - "G299", - "G330", - "G420" - ], - "nist-json": [ - "G299" - ] - } - }, - "2018-03-12.10-10-01.admin": { - "date": "2018-03-12", - "time": "10-10-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-12.10-10-01.bus": { - "date": "2018-03-12", - "time": "10-10-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.10-10-01.school": { - "date": "2018-03-12", - "time": "10-10-01", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G328", - "G419", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G423", - "G638" - ], - "contrib/IBM-person-person": [ - "G423" - ], - "kitware": [ - "G421", - "G423" - ], - "kitware-training": [ - "G328", - "G419", - "G638", - "G639" - ] - } - }, - "2018-03-12.10-10-02.school": { - "date": "2018-03-12", - "time": "10-10-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-12.10-10-03.school": { - "date": "2018-03-12", - "time": "10-10-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.10-10-04.school": { - "date": "2018-03-12", - "time": "10-10-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-12.10-10-05.school": { - "date": "2018-03-12", - "time": "10-10-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.10-15-00.bus": { - "date": "2018-03-12", - "time": "10-15-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G331", - "G340", - "G505", - "G508" - ] - } - }, - "2018-03-12.10-15-00.hospital": { - "date": "2018-03-12", - "time": "10-15-00", - "site": "hospital", - "all_cameras": 5, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G341", - "G436", - "G476", - "G479" - ], - "contrib/IBM-person-person": [ - "G341", - "G476" - ], - "contrib/IBM-person-vehicle": [ - "G341", - "G476" - ], - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-12.10-15-00.school": { - "date": "2018-03-12", - "time": "10-15-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G421" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G474" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G299" - ], - "kitware-training": [ - "G330", - "G420", - "G421" - ] - } - }, - "2018-03-12.10-15-01.admin": { - "date": "2018-03-12", - "time": "10-15-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-12.10-15-01.bus": { - "date": "2018-03-12", - "time": "10-15-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.10-15-01.school": { - "date": "2018-03-12", - "time": "10-15-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G419", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G423", - "G639" - ], - "kitware-training": [ - "G328", - "G419", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-12.10-15-02.school": { - "date": "2018-03-12", - "time": "10-15-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "contrib/IBM-person-vehicle": [ - "G336" - ], - "kitware": [ - "G336" - ] - } - }, - "2018-03-12.10-15-03.school": { - "date": "2018-03-12", - "time": "10-15-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.10-15-04.school": { - "date": "2018-03-12", - "time": "10-15-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/IBM-person-vehicle": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-12.10-15-05.school": { - "date": "2018-03-12", - "time": "10-15-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.10-20-00.bus": { - "date": "2018-03-12", - "time": "10-20-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "kitware": [ - "G505" - ], - "kitware-training": [ - "G331", - "G340", - "G506", - "G508" - ] - } - }, - "2018-03-12.10-20-00.hospital": { - "date": "2018-03-12", - "time": "10-20-00", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-12.10-20-00.school": { - "date": "2018-03-12", - "time": "10-20-00", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G421" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware-training": [ - "G299", - "G330", - "G420", - "G421" - ] - } - }, - "2018-03-12.10-20-01.admin": { - "date": "2018-03-12", - "time": "10-20-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-12.10-20-01.bus": { - "date": "2018-03-12", - "time": "10-20-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.10-20-01.school": { - "date": "2018-03-12", - "time": "10-20-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G419", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G423" - ], - "contrib/UMD-v1-train": [ - "G423" - ], - "kitware-training": [ - "G328", - "G419", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-12.10-20-02.school": { - "date": "2018-03-12", - "time": "10-20-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-12.10-20-03.school": { - "date": "2018-03-12", - "time": "10-20-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.10-20-04.school": { - "date": "2018-03-12", - "time": "10-20-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-12.10-20-05.school": { - "date": "2018-03-12", - "time": "10-20-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.10-25-00.bus": { - "date": "2018-03-12", - "time": "10-25-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware": [ - "G340" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-12.10-25-00.hospital": { - "date": "2018-03-12", - "time": "10-25-00", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-12.10-25-00.school": { - "date": "2018-03-12", - "time": "10-25-00", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G420" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G299", - "G638" - ], - "kitware-training": [ - "G330", - "G420" - ] - } - }, - "2018-03-12.10-25-01.admin": { - "date": "2018-03-12", - "time": "10-25-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-12.10-25-01.bus": { - "date": "2018-03-12", - "time": "10-25-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.10-25-01.school": { - "date": "2018-03-12", - "time": "10-25-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G419", - "G421", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G421", - "G423", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G421" - ], - "contrib/UMD-v1-train": [ - "G423" - ], - "kitware": [ - "G328", - "G421" - ], - "kitware-training": [ - "G419", - "G423", - "G639" - ] - } - }, - "2018-03-12.10-25-02.school": { - "date": "2018-03-12", - "time": "10-25-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "kitware": [ - "G336" - ] - } - }, - "2018-03-12.10-25-03.school": { - "date": "2018-03-12", - "time": "10-25-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.10-25-04.school": { - "date": "2018-03-12", - "time": "10-25-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-12.10-25-05.school": { - "date": "2018-03-12", - "time": "10-25-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware": [ - "G300" - ] - } - }, - "2018-03-12.10-30-00.admin": { - "date": "2018-03-12", - "time": "10-30-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "contrib/UMD-v1-train": [ - "G326" - ], - "kitware": [ - "G326" - ] - } - }, - "2018-03-12.10-30-00.bus": { - "date": "2018-03-12", - "time": "10-30-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "kitware": [ - "G505" - ], - "kitware-training": [ - "G331", - "G340", - "G506", - "G508" - ] - } - }, - "2018-03-12.10-30-00.hospital": { - "date": "2018-03-12", - "time": "10-30-00", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-12.10-30-00.school": { - "date": "2018-03-12", - "time": "10-30-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G421", - "G474", - "G638" - ], - "contrib/IBM-person-person": [ - "G299", - "G330" - ], - "kitware": [ - "G330", - "G421" - ], - "kitware-training": [ - "G299", - "G420", - "G638" - ] - } - }, - "2018-03-12.10-30-01.admin": { - "date": "2018-03-12", - "time": "10-30-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware": [ - "G329" - ] - } - }, - "2018-03-12.10-30-01.bus": { - "date": "2018-03-12", - "time": "10-30-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.10-30-01.school": { - "date": "2018-03-12", - "time": "10-30-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G419", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G423", - "G639" - ], - "kitware-training": [ - "G328", - "G419", - "G423", - "G639" - ] - } - }, - "2018-03-12.10-30-02.school": { - "date": "2018-03-12", - "time": "10-30-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "kitware": [ - "G336" - ] - } - }, - "2018-03-12.10-30-03.school": { - "date": "2018-03-12", - "time": "10-30-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.10-30-04.school": { - "date": "2018-03-12", - "time": "10-30-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-12.10-30-05.school": { - "date": "2018-03-12", - "time": "10-30-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.10-40-00.admin": { - "date": "2018-03-12", - "time": "10-40-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-12.10-40-00.bus": { - "date": "2018-03-12", - "time": "10-40-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G340", - "G475", - "G505", - "G506" - ], - "kitware": [ - "G340" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-12.10-40-00.hospital": { - "date": "2018-03-12", - "time": "10-40-00", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ], - "nist-json": [ - "G436" - ] - } - }, - "2018-03-12.10-40-00.school": { - "date": "2018-03-12", - "time": "10-40-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G421", - "G474", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G421" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G299", - "G330", - "G421", - "G638" - ], - "kitware-training": [ - "G420" - ] - } - }, - "2018-03-12.10-40-01.admin": { - "date": "2018-03-12", - "time": "10-40-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "kitware": [ - "G329" - ] - } - }, - "2018-03-12.10-40-01.bus": { - "date": "2018-03-12", - "time": "10-40-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.10-40-01.school": { - "date": "2018-03-12", - "time": "10-40-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G419", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G423", - "G639" - ], - "contrib/IBM-person-person": [ - "G423" - ], - "kitware-training": [ - "G328", - "G419", - "G423", - "G639" - ], - "nist-json": [ - "G328" - ] - } - }, - "2018-03-12.10-40-02.school": { - "date": "2018-03-12", - "time": "10-40-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-12.10-40-03.school": { - "date": "2018-03-12", - "time": "10-40-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "kitware": [ - "G339" - ] - } - }, - "2018-03-12.10-40-04.school": { - "date": "2018-03-12", - "time": "10-40-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-12.10-40-05.school": { - "date": "2018-03-12", - "time": "10-40-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.10-45-00.admin": { - "date": "2018-03-12", - "time": "10-45-00", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-12.10-45-00.bus": { - "date": "2018-03-12", - "time": "10-45-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G340", - "G505", - "G506" - ], - "kitware": [ - "G505" - ], - "kitware-training": [ - "G331", - "G340", - "G506", - "G508" - ] - } - }, - "2018-03-12.10-45-00.hospital": { - "date": "2018-03-12", - "time": "10-45-00", - "site": "hospital", - "all_cameras": 4, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436", - "G479" - ], - "kitware": [ - "G301", - "G436" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-12.10-45-00.school": { - "date": "2018-03-12", - "time": "10-45-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G421", - "G474", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G420" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G330", - "G421" - ], - "kitware-training": [ - "G299", - "G420", - "G638" - ], - "nist-json": [ - "G638" - ] - } - }, - "2018-03-12.10-45-01.admin": { - "date": "2018-03-12", - "time": "10-45-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-12.10-45-01.bus": { - "date": "2018-03-12", - "time": "10-45-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.10-45-01.school": { - "date": "2018-03-12", - "time": "10-45-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G419", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G423", - "G639" - ], - "kitware": [ - "G328", - "G639" - ], - "kitware-training": [ - "G419", - "G423" - ], - "nist-json": [ - "G328" - ] - } - }, - "2018-03-12.10-45-02.school": { - "date": "2018-03-12", - "time": "10-45-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-12.10-45-03.school": { - "date": "2018-03-12", - "time": "10-45-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.10-45-04.school": { - "date": "2018-03-12", - "time": "10-45-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware-training": [ - "G424" - ], - "nist-json": [ - "G424" - ] - } - }, - "2018-03-12.10-45-05.school": { - "date": "2018-03-12", - "time": "10-45-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.10-50-00.bus": { - "date": "2018-03-12", - "time": "10-50-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G340", - "G475", - "G505", - "G506" - ], - "kitware": [ - "G340" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-12.10-50-00.hospital": { - "date": "2018-03-12", - "time": "10-50-00", - "site": "hospital", - "all_cameras": 4, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436", - "G479" - ], - "contrib/UMD-v1-val": [ - "G301" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-12.10-50-00.school": { - "date": "2018-03-12", - "time": "10-50-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G421", - "G474", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G638" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G299", - "G330" - ], - "kitware-training": [ - "G420", - "G421", - "G638" - ] - } - }, - "2018-03-12.10-50-01.admin": { - "date": "2018-03-12", - "time": "10-50-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-12.10-50-01.bus": { - "date": "2018-03-12", - "time": "10-50-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.10-50-01.school": { - "date": "2018-03-12", - "time": "10-50-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G419", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G423" - ], - "contrib/IBM-person-person": [ - "G423" - ], - "kitware": [ - "G423", - "G639" - ], - "kitware-training": [ - "G328", - "G419" - ], - "nist-json": [ - "G423" - ] - } - }, - "2018-03-12.10-50-02.admin": { - "date": "2018-03-12", - "time": "10-50-02", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-12.10-50-02.school": { - "date": "2018-03-12", - "time": "10-50-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-12.10-50-03.school": { - "date": "2018-03-12", - "time": "10-50-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-v1-train": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.10-50-04.school": { - "date": "2018-03-12", - "time": "10-50-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-12.10-50-05.school": { - "date": "2018-03-12", - "time": "10-50-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.10-55-00.bus": { - "date": "2018-03-12", - "time": "10-55-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G340", - "G475", - "G505", - "G506" - ], - "contrib/UMD-v1-val": [ - "G340" - ], - "kitware-training": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-12.10-55-00.hospital": { - "date": "2018-03-12", - "time": "10-55-00", - "site": "hospital", - "all_cameras": 5, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G341", - "G436", - "G476", - "G479" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-12.10-55-00.school": { - "date": "2018-03-12", - "time": "10-55-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G421", - "G474", - "G638" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "kitware": [ - "G330", - "G421" - ], - "kitware-training": [ - "G299", - "G638" - ] - } - }, - "2018-03-12.10-55-01.admin": { - "date": "2018-03-12", - "time": "10-55-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G329" - ] - } - }, - "2018-03-12.10-55-01.school": { - "date": "2018-03-12", - "time": "10-55-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G419", - "G420", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G420", - "G423" - ], - "contrib/IBM-person-person": [ - "G423" - ], - "kitware-training": [ - "G328", - "G419", - "G420", - "G423", - "G639" - ] - } - }, - "2018-03-12.10-55-02.admin": { - "date": "2018-03-12", - "time": "10-55-02", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-12.10-55-02.school": { - "date": "2018-03-12", - "time": "10-55-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-12.10-55-03.school": { - "date": "2018-03-12", - "time": "10-55-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.10-55-04.school": { - "date": "2018-03-12", - "time": "10-55-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-12.10-55-05.school": { - "date": "2018-03-12", - "time": "10-55-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.11-00-00.bus": { - "date": "2018-03-12", - "time": "11-00-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G340", - "G505", - "G506" - ], - "contrib/IBM-person-person": [ - "G475" - ], - "contrib/IBM-person-vehicle": [ - "G340" - ], - "kitware": [ - "G340" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508" - ], - "nist-json": [ - "G340" - ] - } - }, - "2018-03-12.11-00-00.hospital": { - "date": "2018-03-12", - "time": "11-00-00", - "site": "hospital", - "all_cameras": 4, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436", - "G476" - ], - "contrib/IBM-person-person": [ - "G341" - ], - "contrib/IBM-person-vehicle": [ - "G341", - "G476" - ], - "kitware": [ - "G341", - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-12.11-00-00.school": { - "date": "2018-03-12", - "time": "11-00-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G420", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G420", - "G474", - "G638" - ], - "contrib/UMD-v1-train": [ - "G330" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware-training": [ - "G299", - "G330", - "G420", - "G421", - "G638" - ] - } - }, - "2018-03-12.11-00-01.admin": { - "date": "2018-03-12", - "time": "11-00-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-12.11-00-01.bus": { - "date": "2018-03-12", - "time": "11-00-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.11-00-01.school": { - "date": "2018-03-12", - "time": "11-00-01", - "site": "school", - "all_cameras": 4, - "mevid_cameras": [ - "G328", - "G419", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G423" - ], - "kitware": [ - "G423", - "G639" - ], - "kitware-training": [ - "G328", - "G419" - ] - } - }, - "2018-03-12.11-00-02.school": { - "date": "2018-03-12", - "time": "11-00-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "contrib/IBM-person-vehicle": [ - "G336" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-12.11-00-03.school": { - "date": "2018-03-12", - "time": "11-00-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/IBM-person-vehicle": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.11-00-04.school": { - "date": "2018-03-12", - "time": "11-00-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/IBM-person-vehicle": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-12.11-00-05.school": { - "date": "2018-03-12", - "time": "11-00-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.11-05-00.bus": { - "date": "2018-03-12", - "time": "11-05-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G475" - ], - "kitware-training": [ - "G331", - "G340", - "G505", - "G506", - "G508" - ] - } - }, - "2018-03-12.11-05-00.hospital": { - "date": "2018-03-12", - "time": "11-05-00", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-12.11-05-00.school": { - "date": "2018-03-12", - "time": "11-05-00", - "site": "school", - "all_cameras": 6, - "mevid_cameras": [ - "G299", - "G330", - "G419", - "G420", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G419", - "G420", - "G421", - "G638" - ], - "contrib/IBM-person-person": [ - "G299", - "G330" - ], - "kitware": [ - "G330", - "G420" - ], - "kitware-training": [ - "G299", - "G419", - "G421", - "G638" - ] - } - }, - "2018-03-12.11-05-01.admin": { - "date": "2018-03-12", - "time": "11-05-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-12.11-05-01.bus": { - "date": "2018-03-12", - "time": "11-05-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G509" - ], - "mevid_persons": [ - "0202", - "0229", - "0271" - ], - "sources": { - "kitware-training": [ - "G509" - ] - } - }, - "2018-03-12.11-05-01.school": { - "date": "2018-03-12", - "time": "11-05-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G328", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G639" - ], - "contrib/UMD-v1-train": [ - "G423" - ], - "contrib/UMD-v1-val": [ - "G328" - ], - "kitware": [ - "G328", - "G423" - ], - "kitware-training": [ - "G639" - ] - } - }, - "2018-03-12.11-05-02.school": { - "date": "2018-03-12", - "time": "11-05-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-12.11-05-03.school": { - "date": "2018-03-12", - "time": "11-05-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.11-05-04.school": { - "date": "2018-03-12", - "time": "11-05-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-12.11-05-05.school": { - "date": "2018-03-12", - "time": "11-05-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-12.11-10-00.bus": { - "date": "2018-03-12", - "time": "11-10-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G340", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "kitware": [ - "G340" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-12.11-10-00.hospital": { - "date": "2018-03-12", - "time": "11-10-00", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-12.11-10-00.school": { - "date": "2018-03-12", - "time": "11-10-00", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G299", - "G330", - "G421", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0271" - ], - "sources": { - "contrib/CMU-v2": [ - "G421", - "G474", - "G638" - ], - "contrib/UMD-v1-train": [ - "G638" - ], - "kitware": [ - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G421" - ] - } - }, - "2018-03-12.11-10-01.admin": { - "date": "2018-03-12", - "time": "11-10-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-12.11-10-01.school": { - "date": "2018-03-12", - "time": "11-10-01", - "site": "school", - "all_cameras": 5, - "mevid_cameras": [ - "G328", - "G419", - "G420", - "G423", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G420", - "G423" - ], - "contrib/IBM-person-vehicle": [ - "G423" - ], - "kitware": [ - "G328" - ], - "kitware-training": [ - "G419", - "G420", - "G423", - "G639" - ], - "nist-json": [ - "G423" - ] - } - }, - "2018-03-12.11-10-02.school": { - "date": "2018-03-12", - "time": "11-10-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "contrib/IBM-person-vehicle": [ - "G336" - ], - "kitware": [ - "G336" - ] - } - }, - "2018-03-12.11-10-03.school": { - "date": "2018-03-12", - "time": "11-10-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-12.11-10-04.school": { - "date": "2018-03-12", - "time": "11-10-04", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-12.11-10-05.school": { - "date": "2018-03-12", - "time": "11-10-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.15-50-00.bus": { - "date": "2018-03-13", - "time": "15-50-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G505" - ], - "contrib/UMD-IBM": [ - "G331", - "G505", - "G506" - ], - "kitware": [ - "G505", - "G506" - ], - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } - }, - "2018-03-13.15-50-00.school": { - "date": "2018-03-13", - "time": "15-50-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G421", - "G423", - "G474", - "G638" - ], - "contrib/UMD-IBM": [ - "G330", - "G423", - "G474", - "G639" - ], - "contrib/UMD-v1-train": [ - "G638" - ], - "contrib/UMD-v1-val": [ - "G328", - "G421" - ], - "kitware": [ - "G421", - "G638" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G423", - "G639" - ] - } - }, - "2018-03-13.15-50-01.admin": { - "date": "2018-03-13", - "time": "15-50-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "contrib/UMD-IBM": [ - "G326", - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.15-50-01.school": { - "date": "2018-03-13", - "time": "15-50-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419", - "G420" - ], - "contrib/UMD-IBM": [ - "G419", - "G420" - ], - "kitware": [ - "G419" - ], - "kitware-training": [ - "G420" - ] - } - }, - "2018-03-13.15-50-02.hospital": { - "date": "2018-03-13", - "time": "15-50-02", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436" - ], - "contrib/UMD-IBM": [ - "G341", - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-13.15-50-02.school": { - "date": "2018-03-13", - "time": "15-50-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-v1-train": [ - "G424" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-13.15-50-03.school": { - "date": "2018-03-13", - "time": "15-50-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G336" - ], - "kitware": [ - "G336" - ] - } - }, - "2018-03-13.15-50-04.bus": { - "date": "2018-03-13", - "time": "15-50-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.15-50-05.school": { - "date": "2018-03-13", - "time": "15-50-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.15-50-08.school": { - "date": "2018-03-13", - "time": "15-50-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.15-55-00.bus": { - "date": "2018-03-13", - "time": "15-55-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G505" - ], - "contrib/UMD-IBM": [ - "G331", - "G505", - "G506" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.15-55-00.school": { - "date": "2018-03-13", - "time": "15-55-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G421", - "G423", - "G638" - ], - "contrib/IBM-person-person": [ - "G421", - "G474" - ], - "contrib/UMD-IBM": [ - "G299", - "G421", - "G423", - "G474", - "G638", - "G639" - ], - "contrib/UMD-v1-train": [ - "G638" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G299", - "G330", - "G638" - ], - "kitware-training": [ - "G328", - "G421", - "G423", - "G639" - ] - } - }, - "2018-03-13.15-55-01.admin": { - "date": "2018-03-13", - "time": "15-55-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.15-55-01.school": { - "date": "2018-03-13", - "time": "15-55-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G420" - ], - "contrib/UMD-IBM": [ - "G419", - "G420" - ], - "kitware-training": [ - "G419", - "G420" - ] - } - }, - "2018-03-13.15-55-02.hospital": { - "date": "2018-03-13", - "time": "15-55-02", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G341" - ], - "contrib/UMD-IBM": [ - "G301", - "G341", - "G436" - ], - "kitware": [ - "G301", - "G436" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-13.15-55-02.school": { - "date": "2018-03-13", - "time": "15-55-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-13.15-55-03.school": { - "date": "2018-03-13", - "time": "15-55-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G336" - ], - "contrib/UMD-v1-train": [ - "G336" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-13.15-55-04.bus": { - "date": "2018-03-13", - "time": "15-55-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.15-55-05.school": { - "date": "2018-03-13", - "time": "15-55-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.15-55-08.school": { - "date": "2018-03-13", - "time": "15-55-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.16-00-00.bus": { - "date": "2018-03-13", - "time": "16-00-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G505" - ], - "contrib/UMD-IBM": [ - "G331", - "G475", - "G505", - "G506" - ], - "contrib/UMD-v1-train": [ - "G331" - ], - "kitware": [ - "G505" - ], - "kitware-training": [ - "G331", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.16-00-00.school": { - "date": "2018-03-13", - "time": "16-00-00", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G639" - ], - "contrib/UMD-IBM": [ - "G328", - "G474", - "G638", - "G639" - ], - "kitware": [ - "G638", - "G639" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G423" - ] - } - }, - "2018-03-13.16-00-01.admin": { - "date": "2018-03-13", - "time": "16-00-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-13.16-00-01.school": { - "date": "2018-03-13", - "time": "16-00-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "kitware-training": [ - "G419", - "G420" - ] - } - }, - "2018-03-13.16-00-02.hospital": { - "date": "2018-03-13", - "time": "16-00-02", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301" - ], - "contrib/IBM-person-person": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G301", - "G341", - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-13.16-00-02.school": { - "date": "2018-03-13", - "time": "16-00-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-13.16-00-03.school": { - "date": "2018-03-13", - "time": "16-00-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G336" - ], - "contrib/UMD-v1-train": [ - "G336" - ], - "kitware": [ - "G336" - ] - } - }, - "2018-03-13.16-00-05.bus": { - "date": "2018-03-13", - "time": "16-00-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.16-00-05.school": { - "date": "2018-03-13", - "time": "16-00-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.16-00-08.school": { - "date": "2018-03-13", - "time": "16-00-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.16-05-00.bus": { - "date": "2018-03-13", - "time": "16-05-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G505", - "G508", - "G509" - ], - "contrib/UMD-IBM": [ - "G475", - "G505", - "G506", - "G508", - "G509" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G505", - "G506" - ], - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } - }, - "2018-03-13.16-05-00.school": { - "date": "2018-03-13", - "time": "16-05-00", - "site": "school", - "all_cameras": 7, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G421", - "G639" - ], - "contrib/UMD-IBM": [ - "G328", - "G421", - "G638" - ], - "kitware": [ - "G328", - "G421" - ], - "kitware-training": [ - "G299", - "G330", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.16-05-01.admin": { - "date": "2018-03-13", - "time": "16-05-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.16-05-01.school": { - "date": "2018-03-13", - "time": "16-05-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419", - "G420" - ], - "contrib/UMD-IBM": [ - "G419", - "G420" - ], - "kitware-training": [ - "G419", - "G420" - ] - } - }, - "2018-03-13.16-05-02.hospital": { - "date": "2018-03-13", - "time": "16-05-02", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/IBM-person-person": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G341", - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-13.16-05-02.school": { - "date": "2018-03-13", - "time": "16-05-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "contrib/UMD-v1-train": [ - "G424" - ], - "kitware": [ - "G424" - ] - } - }, - "2018-03-13.16-05-03.school": { - "date": "2018-03-13", - "time": "16-05-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G336" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336" - ], - "contrib/IBM-person-person": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G336" - ], - "kitware": [ - "G336" - ] - } - }, - "2018-03-13.16-05-05.bus": { - "date": "2018-03-13", - "time": "16-05-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.16-05-05.school": { - "date": "2018-03-13", - "time": "16-05-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.16-05-08.school": { - "date": "2018-03-13", - "time": "16-05-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.16-10-00.bus": { - "date": "2018-03-13", - "time": "16-10-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G508" - ], - "contrib/IBM-person-person": [ - "G506" - ], - "contrib/UMD-IBM": [ - "G475", - "G505", - "G506", - "G508", - "G509" - ], - "kitware": [ - "G506" - ], - "kitware-training": [ - "G331", - "G505", - "G508", - "G509" - ] - } - }, - "2018-03-13.16-10-00.school": { - "date": "2018-03-13", - "time": "16-10-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G421", - "G423" - ], - "contrib/UMD-IBM": [ - "G299", - "G330", - "G421", - "G423", - "G474", - "G638" - ], - "kitware": [ - "G423" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G421", - "G638", - "G639" - ] - } - }, - "2018-03-13.16-10-01.admin": { - "date": "2018-03-13", - "time": "16-10-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.16-10-01.school": { - "date": "2018-03-13", - "time": "16-10-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419", - "G420" - ], - "contrib/UMD-IBM": [ - "G419", - "G420" - ], - "kitware-training": [ - "G419", - "G420" - ] - } - }, - "2018-03-13.16-10-02.hospital": { - "date": "2018-03-13", - "time": "16-10-02", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436" - ], - "contrib/IBM-person-person": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G301", - "G341", - "G436" - ], - "contrib/UMD-v1-val": [ - "G301" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-13.16-10-03.school": { - "date": "2018-03-13", - "time": "16-10-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/IBM-person-person": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G336", - "G424" - ], - "kitware": [ - "G424" - ], - "kitware-training": [ - "G336" - ] - } - }, - "2018-03-13.16-10-05.bus": { - "date": "2018-03-13", - "time": "16-10-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.16-10-05.school": { - "date": "2018-03-13", - "time": "16-10-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.16-10-08.school": { - "date": "2018-03-13", - "time": "16-10-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.16-15-00.bus": { - "date": "2018-03-13", - "time": "16-15-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G508", - "G509" - ], - "contrib/UMD-IBM": [ - "G475", - "G505", - "G508", - "G509" - ], - "contrib/UMD-v1-train": [ - "G508" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.16-15-00.school": { - "date": "2018-03-13", - "time": "16-15-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G421", - "G638" - ], - "contrib/IBM-person-person": [ - "G474" - ], - "contrib/UMD-IBM": [ - "G421", - "G474", - "G638" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.16-15-01.admin": { - "date": "2018-03-13", - "time": "16-15-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.16-15-01.school": { - "date": "2018-03-13", - "time": "16-15-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "kitware-training": [ - "G419", - "G420" - ] - } - }, - "2018-03-13.16-15-02.hospital": { - "date": "2018-03-13", - "time": "16-15-02", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/UMD-IBM": [ - "G301", - "G341", - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341" - ] - } - }, - "2018-03-13.16-15-03.school": { - "date": "2018-03-13", - "time": "16-15-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/IBM-person-person": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G336", - "G424" - ], - "kitware-training": [ - "G336", - "G424" - ] - } - }, - "2018-03-13.16-15-05.bus": { - "date": "2018-03-13", - "time": "16-15-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "contrib/UMD-v1-val": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.16-15-05.school": { - "date": "2018-03-13", - "time": "16-15-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.16-15-08.school": { - "date": "2018-03-13", - "time": "16-15-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.16-16-02.school": { - "date": "2018-03-13", - "time": "16-16-02", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G421" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G421" - ], - "contrib/UMD-IBM": [ - "G421" - ] - } - }, - "2018-03-13.16-20-00.bus": { - "date": "2018-03-13", - "time": "16-20-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G475", - "G505", - "G506" - ], - "contrib/UMD-IBM": [ - "G475", - "G505", - "G506" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.16-20-00.school": { - "date": "2018-03-13", - "time": "16-20-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G421" - ], - "contrib/IBM-person-person": [ - "G638" - ], - "contrib/UMD-IBM": [ - "G328", - "G421", - "G474", - "G638" - ], - "contrib/UMD-v1-train": [ - "G638" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.16-20-01.admin": { - "date": "2018-03-13", - "time": "16-20-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.16-20-01.school": { - "date": "2018-03-13", - "time": "16-20-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419", - "G420" - ], - "contrib/UMD-IBM": [ - "G419", - "G420" - ], - "kitware-training": [ - "G419", - "G420" - ] - } - }, - "2018-03-13.16-20-02.hospital": { - "date": "2018-03-13", - "time": "16-20-02", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436" - ], - "contrib/IBM-person-person": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G301", - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-13.16-20-03.school": { - "date": "2018-03-13", - "time": "16-20-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G424" - ], - "contrib/IBM-person-person": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G336", - "G424" - ], - "contrib/UMD-v1-train": [ - "G336" - ], - "kitware": [ - "G336", - "G424" - ] - } - }, - "2018-03-13.16-20-05.bus": { - "date": "2018-03-13", - "time": "16-20-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.16-20-05.school": { - "date": "2018-03-13", - "time": "16-20-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware": [ - "G339" - ] - } - }, - "2018-03-13.16-20-08.school": { - "date": "2018-03-13", - "time": "16-20-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.16-25-00.bus": { - "date": "2018-03-13", - "time": "16-25-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "contrib/UMD-IBM": [ - "G475", - "G505", - "G506" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.16-25-00.school": { - "date": "2018-03-13", - "time": "16-25-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G421", - "G423", - "G474", - "G638", - "G639" - ], - "contrib/UMD-IBM": [ - "G328", - "G421", - "G423", - "G474", - "G638", - "G639" - ], - "contrib/UMD-v1-val": [ - "G328" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.16-25-01.admin": { - "date": "2018-03-13", - "time": "16-25-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.16-25-01.school": { - "date": "2018-03-13", - "time": "16-25-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419", - "G420" - ], - "contrib/UMD-IBM": [ - "G419", - "G420" - ], - "kitware-training": [ - "G419", - "G420" - ] - } - }, - "2018-03-13.16-25-02.hospital": { - "date": "2018-03-13", - "time": "16-25-02", - "site": "hospital", - "all_cameras": 3, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "kitware-training": [ - "G301", - "G341", - "G436" - ] - } - }, - "2018-03-13.16-25-03.school": { - "date": "2018-03-13", - "time": "16-25-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "kitware-training": [ - "G336", - "G424" - ] - } - }, - "2018-03-13.16-25-05.bus": { - "date": "2018-03-13", - "time": "16-25-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.16-25-05.school": { - "date": "2018-03-13", - "time": "16-25-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.16-25-08.school": { - "date": "2018-03-13", - "time": "16-25-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.16-26-28.school": { - "date": "2018-03-13", - "time": "16-26-28", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G421" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G421" - ], - "contrib/UMD-IBM": [ - "G421" - ] - } - }, - "2018-03-13.16-30-00.bus": { - "date": "2018-03-13", - "time": "16-30-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505", - "G506" - ], - "contrib/UMD-IBM": [ - "G475", - "G505", - "G506" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.16-30-00.school": { - "date": "2018-03-13", - "time": "16-30-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G421", - "G474", - "G638", - "G639" - ], - "contrib/UMD-IBM": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G474", - "G638", - "G639" - ], - "contrib/UMD-v1-val": [ - "G639" - ], - "kitware": [ - "G423" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G638", - "G639" - ] - } - }, - "2018-03-13.16-30-01.admin": { - "date": "2018-03-13", - "time": "16-30-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.16-30-01.school": { - "date": "2018-03-13", - "time": "16-30-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419", - "G420" - ], - "contrib/UMD-IBM": [ - "G419", - "G420" - ], - "kitware-training": [ - "G419", - "G420" - ] - } - }, - "2018-03-13.16-30-02.hospital": { - "date": "2018-03-13", - "time": "16-30-02", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G341", - "G436" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G341", - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware-training": [ - "G341", - "G436" - ] - } - }, - "2018-03-13.16-30-03.school": { - "date": "2018-03-13", - "time": "16-30-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G424" - ], - "contrib/UMD-IBM": [ - "G336", - "G424" - ], - "kitware-training": [ - "G336", - "G424" - ] - } - }, - "2018-03-13.16-30-04.bus": { - "date": "2018-03-13", - "time": "16-30-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.16-30-05.school": { - "date": "2018-03-13", - "time": "16-30-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.16-30-08.school": { - "date": "2018-03-13", - "time": "16-30-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/UMD-IBM": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.16-32-54.school": { - "date": "2018-03-13", - "time": "16-32-54", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G421" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G421" - ], - "contrib/UMD-IBM": [ - "G421" - ], - "contrib/UMD-v1-val": [ - "G421" - ] - } - }, - "2018-03-13.17-05-00.bus": { - "date": "2018-03-13", - "time": "17-05-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G475", - "G505" - ], - "contrib/UMD-IBM": [ - "G475", - "G505", - "G506" - ], - "kitware": [ - "G505" - ], - "kitware-training": [ - "G331", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.17-05-00.school": { - "date": "2018-03-13", - "time": "17-05-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G420", - "G421", - "G474", - "G638", - "G639" - ], - "contrib/UMD-IBM": [ - "G299", - "G420", - "G423", - "G474", - "G638", - "G639" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G299", - "G423", - "G639" - ], - "kitware-training": [ - "G328", - "G330", - "G420", - "G421", - "G638" - ], - "nist-json": [ - "G328", - "G421" - ] - } - }, - "2018-03-13.17-05-01.admin": { - "date": "2018-03-13", - "time": "17-05-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.17-05-01.school": { - "date": "2018-03-13", - "time": "17-05-01", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G419" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419" - ], - "contrib/UMD-v1-train": [ - "G419" - ], - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-13.17-05-02.hospital": { - "date": "2018-03-13", - "time": "17-05-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-13.17-05-03.hospital": { - "date": "2018-03-13", - "time": "17-05-03", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-13.17-05-03.school": { - "date": "2018-03-13", - "time": "17-05-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G424" - ], - "contrib/UMD-IBM": [ - "G336", - "G424" - ], - "kitware": [ - "G424" - ], - "kitware-training": [ - "G336" - ], - "nist-json": [ - "G336" - ] - } - }, - "2018-03-13.17-05-05.bus": { - "date": "2018-03-13", - "time": "17-05-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.17-05-05.school": { - "date": "2018-03-13", - "time": "17-05-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.17-05-08.school": { - "date": "2018-03-13", - "time": "17-05-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.17-10-00.bus": { - "date": "2018-03-13", - "time": "17-10-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-IBM": [ - "G475", - "G505" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.17-10-00.school": { - "date": "2018-03-13", - "time": "17-10-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G330", - "G420", - "G421", - "G423", - "G474", - "G638" - ], - "contrib/UMD-IBM": [ - "G328", - "G330", - "G638", - "G639" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G421" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G420", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.17-10-01.admin": { - "date": "2018-03-13", - "time": "17-10-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.17-10-01.school": { - "date": "2018-03-13", - "time": "17-10-01", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G419" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-13.17-10-02.hospital": { - "date": "2018-03-13", - "time": "17-10-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-13.17-10-03.hospital": { - "date": "2018-03-13", - "time": "17-10-03", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-13.17-10-03.school": { - "date": "2018-03-13", - "time": "17-10-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G424" - ], - "contrib/UMD-v1-train": [ - "G336", - "G424" - ], - "kitware": [ - "G336" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-13.17-10-05.bus": { - "date": "2018-03-13", - "time": "17-10-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.17-10-05.school": { - "date": "2018-03-13", - "time": "17-10-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.17-10-08.school": { - "date": "2018-03-13", - "time": "17-10-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.17-15-00.bus": { - "date": "2018-03-13", - "time": "17-15-00", - "site": "bus", - "all_cameras": 6, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-IBM": [ - "G475", - "G505" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.17-15-00.school": { - "date": "2018-03-13", - "time": "17-15-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G474", - "G638" - ], - "contrib/UMD-IBM": [ - "G299", - "G328", - "G330", - "G421", - "G423", - "G638" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G420", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.17-15-01.admin": { - "date": "2018-03-13", - "time": "17-15-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.17-15-01.school": { - "date": "2018-03-13", - "time": "17-15-01", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G419" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-13.17-15-02.hospital": { - "date": "2018-03-13", - "time": "17-15-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-13.17-15-03.hospital": { - "date": "2018-03-13", - "time": "17-15-03", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-13.17-15-03.school": { - "date": "2018-03-13", - "time": "17-15-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G424" - ], - "contrib/UMD-IBM": [ - "G336", - "G424" - ], - "kitware": [ - "G336", - "G424" - ] - } - }, - "2018-03-13.17-15-05.bus": { - "date": "2018-03-13", - "time": "17-15-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.17-15-05.school": { - "date": "2018-03-13", - "time": "17-15-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.17-15-08.school": { - "date": "2018-03-13", - "time": "17-15-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.17-16-48.school": { - "date": "2018-03-13", - "time": "17-16-48", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G421" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G421" - ], - "contrib/UMD-IBM": [ - "G421" - ] - } - }, - "2018-03-13.17-20-00.bus": { - "date": "2018-03-13", - "time": "17-20-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.17-20-00.school": { - "date": "2018-03-13", - "time": "17-20-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G420", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G420", - "G474", - "G639" - ], - "contrib/UMD-IBM": [ - "G299", - "G328", - "G330", - "G420", - "G474", - "G638", - "G639" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G420", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.17-20-01.admin": { - "date": "2018-03-13", - "time": "17-20-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.17-20-01.school": { - "date": "2018-03-13", - "time": "17-20-01", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G419" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419" - ], - "contrib/UMD-IBM": [ - "G419" - ], - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-13.17-20-02.hospital": { - "date": "2018-03-13", - "time": "17-20-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-13.17-20-03.hospital": { - "date": "2018-03-13", - "time": "17-20-03", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-13.17-20-03.school": { - "date": "2018-03-13", - "time": "17-20-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G424" - ], - "contrib/IBM-person-person": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G336", - "G424" - ], - "kitware": [ - "G336" - ], - "kitware-training": [ - "G424" - ] - } - }, - "2018-03-13.17-20-05.bus": { - "date": "2018-03-13", - "time": "17-20-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.17-20-05.school": { - "date": "2018-03-13", - "time": "17-20-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.17-20-08.school": { - "date": "2018-03-13", - "time": "17-20-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.17-20-14.school": { - "date": "2018-03-13", - "time": "17-20-14", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G421" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G421" - ] - } - }, - "2018-03-13.17-21-20.school": { - "date": "2018-03-13", - "time": "17-21-20", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G421" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-val": [ - "G421" - ] - } - }, - "2018-03-13.17-24-36.school": { - "date": "2018-03-13", - "time": "17-24-36", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G421" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G421" - ], - "contrib/UMD-IBM": [ - "G421" - ] - } - }, - "2018-03-13.17-25-00.bus": { - "date": "2018-03-13", - "time": "17-25-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/IBM-person-person": [ - "G506" - ], - "contrib/UMD-IBM": [ - "G506" - ], - "kitware-training": [ - "G331", - "G505", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.17-25-00.school": { - "date": "2018-03-13", - "time": "17-25-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G330", - "G420", - "G421", - "G474", - "G638", - "G639" - ], - "contrib/IBM-person-person": [ - "G474" - ], - "contrib/UMD-IBM": [ - "G328", - "G330", - "G420", - "G421", - "G474", - "G638", - "G639" - ], - "contrib/UMD-v1-val": [ - "G299" - ], - "kitware": [ - "G421" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G420", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.17-25-01.admin": { - "date": "2018-03-13", - "time": "17-25-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-13.17-25-01.school": { - "date": "2018-03-13", - "time": "17-25-01", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G419" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419" - ], - "contrib/IBM-person-vehicle": [ - "G419" - ], - "contrib/UMD-IBM": [ - "G419" - ], - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-13.17-25-02.hospital": { - "date": "2018-03-13", - "time": "17-25-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-13.17-25-03.hospital": { - "date": "2018-03-13", - "time": "17-25-03", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-13.17-25-03.school": { - "date": "2018-03-13", - "time": "17-25-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "contrib/UMD-v1-train": [ - "G336" - ], - "kitware": [ - "G336" - ], - "kitware-training": [ - "G424" - ], - "nist-json": [ - "G336" - ] - } - }, - "2018-03-13.17-25-05.bus": { - "date": "2018-03-13", - "time": "17-25-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/UMD-v1-val": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.17-25-05.school": { - "date": "2018-03-13", - "time": "17-25-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.17-25-08.school": { - "date": "2018-03-13", - "time": "17-25-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.17-30-00.bus": { - "date": "2018-03-13", - "time": "17-30-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G475" - ], - "contrib/UMD-IBM": [ - "G475" - ], - "kitware-training": [ - "G331", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.17-30-00.school": { - "date": "2018-03-13", - "time": "17-30-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G421", - "G474" - ], - "contrib/UMD-IBM": [ - "G299", - "G328", - "G330", - "G421", - "G474", - "G638", - "G639" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.17-30-01.admin": { - "date": "2018-03-13", - "time": "17-30-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "contrib/UMD-IBM": [ - "G329" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-13.17-30-01.bus": { - "date": "2018-03-13", - "time": "17-30-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-v1-val": [ - "G505" - ], - "kitware-training": [ - "G505" - ] - } - }, - "2018-03-13.17-30-01.school": { - "date": "2018-03-13", - "time": "17-30-01", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G419" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-13.17-30-02.hospital": { - "date": "2018-03-13", - "time": "17-30-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-val": [ - "G341" - ], - "kitware-training": [ - "G341" - ], - "nist-json": [ - "G341" - ] - } - }, - "2018-03-13.17-30-03.hospital": { - "date": "2018-03-13", - "time": "17-30-03", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/IBM-person-person": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-13.17-30-03.school": { - "date": "2018-03-13", - "time": "17-30-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G424" - ], - "contrib/IBM-person-person": [ - "G336" - ], - "contrib/UMD-IBM": [ - "G336", - "G424" - ], - "kitware-training": [ - "G336", - "G424" - ] - } - }, - "2018-03-13.17-30-05.bus": { - "date": "2018-03-13", - "time": "17-30-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ], - "nist-json": [ - "G340" - ] - } - }, - "2018-03-13.17-30-05.school": { - "date": "2018-03-13", - "time": "17-30-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.17-30-08.school": { - "date": "2018-03-13", - "time": "17-30-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.17-35-00.bus": { - "date": "2018-03-13", - "time": "17-35-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280" - ], - "sources": { - "contrib/UMD-IBM": [ - "G506" - ], - "kitware-training": [ - "G331", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.17-35-00.school": { - "date": "2018-03-13", - "time": "17-35-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "contrib/IBM-person-person": [ - "G421" - ], - "contrib/IBM-person-vehicle": [ - "G299" - ], - "contrib/UMD-IBM": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G639" - ], - "contrib/UMD-v1-train": [ - "G638" - ], - "kitware": [ - "G330" - ], - "kitware-training": [ - "G299", - "G328", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "nist-json": [ - "G299" - ] - } - }, - "2018-03-13.17-35-01.admin": { - "date": "2018-03-13", - "time": "17-35-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.17-35-01.bus": { - "date": "2018-03-13", - "time": "17-35-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G505" - ], - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G505" - ] - } - }, - "2018-03-13.17-35-01.school": { - "date": "2018-03-13", - "time": "17-35-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G419" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419", - "G474" - ], - "contrib/UMD-IBM": [ - "G419", - "G474" - ], - "kitware": [ - "G419" - ] - } - }, - "2018-03-13.17-35-02.hospital": { - "date": "2018-03-13", - "time": "17-35-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-13.17-35-03.hospital": { - "date": "2018-03-13", - "time": "17-35-03", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-IBM": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-13.17-35-03.school": { - "date": "2018-03-13", - "time": "17-35-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G424" - ], - "contrib/UMD-IBM": [ - "G424" - ], - "contrib/UMD-v1-train": [ - "G336" - ], - "kitware-training": [ - "G336", - "G424" - ] - } - }, - "2018-03-13.17-35-05.bus": { - "date": "2018-03-13", - "time": "17-35-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.17-35-05.school": { - "date": "2018-03-13", - "time": "17-35-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G339" - ], - "contrib/UMD-IBM": [ - "G339" - ], - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.17-35-08.school": { - "date": "2018-03-13", - "time": "17-35-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/UMD-IBM": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-13.17-40-00.bus": { - "date": "2018-03-13", - "time": "17-40-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G506", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097", - "0202", - "0211", - "0229", - "0271", - "0280" - ], - "sources": { - "kitware-training": [ - "G331", - "G506", - "G508", - "G509" - ] - } - }, - "2018-03-13.17-40-00.school": { - "date": "2018-03-13", - "time": "17-40-00", - "site": "school", - "all_cameras": 8, - "mevid_cameras": [ - "G299", - "G328", - "G330", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G420", - "G421", - "G423" - ], - "contrib/UMD-IBM": [ - "G299", - "G328", - "G420", - "G421", - "G423", - "G638", - "G639" - ], - "kitware-training": [ - "G299", - "G328", - "G330", - "G420", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-13.17-40-01.admin": { - "date": "2018-03-13", - "time": "17-40-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-13.17-40-01.bus": { - "date": "2018-03-13", - "time": "17-40-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G505" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0053", - "0080", - "0229", - "0271", - "0292" - ], - "sources": { - "contrib/UMD-IBM": [ - "G505" - ], - "kitware-training": [ - "G505" - ] - } - }, - "2018-03-13.17-40-01.school": { - "date": "2018-03-13", - "time": "17-40-01", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G419" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G419" - ], - "contrib/UMD-IBM": [ - "G419" - ], - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-13.17-40-02.hospital": { - "date": "2018-03-13", - "time": "17-40-02", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-13.17-40-03.hospital": { - "date": "2018-03-13", - "time": "17-40-03", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436" - ], - "contrib/UMD-IBM": [ - "G301", - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-13.17-40-03.school": { - "date": "2018-03-13", - "time": "17-40-03", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G336", - "G424" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/UMD-IBM": [ - "G336", - "G424" - ], - "kitware-training": [ - "G336", - "G424" - ] - } - }, - "2018-03-13.17-40-05.bus": { - "date": "2018-03-13", - "time": "17-40-05", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-13.17-40-05.school": { - "date": "2018-03-13", - "time": "17-40-05", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G339" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "kitware-training": [ - "G339" - ] - } - }, - "2018-03-13.17-40-08.school": { - "date": "2018-03-13", - "time": "17-40-08", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/UMD-IBM": [ - "G300" - ], - "kitware": [ - "G300" - ], - "nist-json": [ - "G300" - ] - } - }, - "2018-03-13.17-41-20.school": { - "date": "2018-03-13", - "time": "17-41-20", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G421" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G421" - ], - "contrib/IBM-person-vehicle": [ - "G421" - ], - "contrib/UMD-IBM": [ - "G421" - ] - } - }, - "2018-03-13.17-42-52.school": { - "date": "2018-03-13", - "time": "17-42-52", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G421" - ], - "mevid_persons": [ - "0008", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G421" - ], - "contrib/UMD-IBM": [ - "G421" - ] - } - }, - "2018-03-15.14-50-00.bus": { - "date": "2018-03-15", - "time": "14-50-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G505", - "G508", - "G509" - ], - "contrib/IBM-person-vehicle": [ - "G475", - "G505" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508" - ], - "kitware": [ - "G508" - ], - "kitware-training": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-15.14-50-00.school": { - "date": "2018-03-15", - "time": "14-50-00", - "site": "school", - "all_cameras": 11, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G474", - "G638", - "G639" - ], - "contrib/IBM-person-person": [ - "G424" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G424", - "G638" - ], - "contrib/UMD-v1-train": [ - "G339" - ], - "kitware": [ - "G421" - ], - "kitware-training": [ - "G299", - "G330", - "G336", - "G339", - "G419", - "G424", - "G638", - "G639" - ], - "nist-json": [ - "G424", - "G638" - ] - } - }, - "2018-03-15.14-50-01.admin": { - "date": "2018-03-15", - "time": "14-50-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "kitware": [ - "G329" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-15.14-50-01.bus": { - "date": "2018-03-15", - "time": "14-50-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-15.14-50-01.school": { - "date": "2018-03-15", - "time": "14-50-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G328", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G420" - ], - "contrib/UMD-v1-val": [ - "G328" - ], - "kitware": [ - "G420" - ], - "kitware-training": [ - "G328" - ] - } - }, - "2018-03-15.14-50-03.school": { - "date": "2018-03-15", - "time": "14-50-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-15.14-50-04.bus": { - "date": "2018-03-15", - "time": "14-50-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/IBM-person-vehicle": [ - "G340" - ], - "kitware": [ - "G340" - ] - } - }, - "2018-03-15.14-50-06.hospital": { - "date": "2018-03-15", - "time": "14-50-06", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/UMD-v1-val": [ - "G341" - ], - "kitware-training": [ - "G341" - ], - "nist-json": [ - "G341" - ] - } - }, - "2018-03-15.14-50-07.hospital": { - "date": "2018-03-15", - "time": "14-50-07", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-15.14-55-00.bus": { - "date": "2018-03-15", - "time": "14-55-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G508", - "G509" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508" - ], - "kitware": [ - "G505" - ], - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } - }, - "2018-03-15.14-55-00.school": { - "date": "2018-03-15", - "time": "14-55-00", - "site": "school", - "all_cameras": 11, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G336", - "G419", - "G421", - "G424", - "G638" - ], - "contrib/IBM-person-person": [ - "G421", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G419", - "G424", - "G474", - "G638" - ], - "contrib/UMD-v1-train": [ - "G339" - ], - "kitware": [ - "G336", - "G339", - "G421", - "G638", - "G639" - ], - "kitware-training": [ - "G299", - "G330", - "G419", - "G423", - "G424" - ], - "nist-json": [ - "G421" - ] - } - }, - "2018-03-15.14-55-01.admin": { - "date": "2018-03-15", - "time": "14-55-01", - "site": "admin", - "all_cameras": 1, - "mevid_cameras": [ - "G326" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-15.14-55-01.bus": { - "date": "2018-03-15", - "time": "14-55-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-15.14-55-01.school": { - "date": "2018-03-15", - "time": "14-55-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G328", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G420" - ], - "contrib/IBM-person-vehicle": [ - "G328" - ], - "kitware": [ - "G328" - ], - "kitware-training": [ - "G420" - ] - } - }, - "2018-03-15.14-55-03.school": { - "date": "2018-03-15", - "time": "14-55-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware": [ - "G300" - ] - } - }, - "2018-03-15.14-55-04.bus": { - "date": "2018-03-15", - "time": "14-55-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/IBM-person-vehicle": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-15.14-55-06.hospital": { - "date": "2018-03-15", - "time": "14-55-06", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/UMD-v1-val": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-15.14-55-07.hospital": { - "date": "2018-03-15", - "time": "14-55-07", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ], - "nist-json": [ - "G436" - ] - } - }, - "2018-03-15.15-00-00.bus": { - "date": "2018-03-15", - "time": "15-00-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G508", - "G509" - ], - "contrib/UMD-v1-train": [ - "G331" - ], - "kitware-training": [ - "G331", - "G505", - "G508", - "G509" - ] - } - }, - "2018-03-15.15-00-00.school": { - "date": "2018-03-15", - "time": "15-00-00", - "site": "school", - "all_cameras": 10, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G421", - "G424" - ], - "contrib/IBM-person-person": [ - "G299", - "G423" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G424" - ], - "contrib/UMD-v1-train": [ - "G638" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G299", - "G330", - "G339" - ], - "kitware-training": [ - "G336", - "G419", - "G421", - "G423", - "G424", - "G638", - "G639" - ] - } - }, - "2018-03-15.15-00-01.admin": { - "date": "2018-03-15", - "time": "15-00-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-15.15-00-01.bus": { - "date": "2018-03-15", - "time": "15-00-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-15.15-00-01.school": { - "date": "2018-03-15", - "time": "15-00-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G328", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G420" - ], - "kitware-training": [ - "G328", - "G420" - ] - } - }, - "2018-03-15.15-00-03.school": { - "date": "2018-03-15", - "time": "15-00-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-15.15-00-04.bus": { - "date": "2018-03-15", - "time": "15-00-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware": [ - "G340" - ] - } - }, - "2018-03-15.15-00-06.hospital": { - "date": "2018-03-15", - "time": "15-00-06", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/UMD-v1-val": [ - "G341" - ], - "kitware": [ - "G341" - ] - } - }, - "2018-03-15.15-00-07.hospital": { - "date": "2018-03-15", - "time": "15-00-07", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G301", - "G436" - ], - "kitware": [ - "G301", - "G436" - ] - } - }, - "2018-03-15.15-05-00.bus": { - "date": "2018-03-15", - "time": "15-05-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G505", - "G508" - ], - "contrib/UMD-v1-train": [ - "G331" - ], - "kitware": [ - "G508" - ], - "kitware-training": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-15.15-05-00.school": { - "date": "2018-03-15", - "time": "15-05-00", - "site": "school", - "all_cameras": 11, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G330", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G474", - "G638", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G339", - "G638" - ], - "contrib/UMD-v1-train": [ - "G419" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G336", - "G339" - ], - "kitware-training": [ - "G299", - "G330", - "G419", - "G421", - "G424", - "G638", - "G639" - ] - } - }, - "2018-03-15.15-05-01.admin": { - "date": "2018-03-15", - "time": "15-05-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "contrib/IBM-person-vehicle": [ - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-15.15-05-01.bus": { - "date": "2018-03-15", - "time": "15-05-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-15.15-05-01.school": { - "date": "2018-03-15", - "time": "15-05-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G328", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G420" - ], - "kitware-training": [ - "G328", - "G420" - ] - } - }, - "2018-03-15.15-05-03.school": { - "date": "2018-03-15", - "time": "15-05-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-15.15-05-04.bus": { - "date": "2018-03-15", - "time": "15-05-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-15.15-05-06.hospital": { - "date": "2018-03-15", - "time": "15-05-06", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-15.15-05-07.hospital": { - "date": "2018-03-15", - "time": "15-05-07", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-15.15-10-00.bus": { - "date": "2018-03-15", - "time": "15-10-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G505", - "G508", - "G509" - ], - "contrib/IBM-person-vehicle": [ - "G475" - ], - "contrib/UMD-v1-train": [ - "G331" - ], - "contrib/UMD-v1-val": [ - "G505" - ], - "kitware-training": [ - "G331", - "G508", - "G509" - ], - "nist-json": [ - "G331" - ] - } - }, - "2018-03-15.15-10-00.school": { - "date": "2018-03-15", - "time": "15-10-00", - "site": "school", - "all_cameras": 11, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G474", - "G638", - "G639" - ], - "contrib/IBM-person-person": [ - "G421", - "G424" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G339", - "G424", - "G638" - ], - "kitware": [ - "G336", - "G339", - "G421", - "G424" - ], - "kitware-training": [ - "G299", - "G330", - "G419", - "G423", - "G638", - "G639" - ] - } - }, - "2018-03-15.15-10-01.admin": { - "date": "2018-03-15", - "time": "15-10-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-15.15-10-01.bus": { - "date": "2018-03-15", - "time": "15-10-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "contrib/IBM-person-vehicle": [ - "G506" - ], - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-15.15-10-01.school": { - "date": "2018-03-15", - "time": "15-10-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G328", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G420" - ], - "kitware-training": [ - "G328", - "G420" - ] - } - }, - "2018-03-15.15-10-03.school": { - "date": "2018-03-15", - "time": "15-10-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-15.15-10-04.bus": { - "date": "2018-03-15", - "time": "15-10-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/IBM-person-vehicle": [ - "G340" - ] - } - }, - "2018-03-15.15-10-06.hospital": { - "date": "2018-03-15", - "time": "15-10-06", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/IBM-person-vehicle": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-15.15-10-07.hospital": { - "date": "2018-03-15", - "time": "15-10-07", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436" - ], - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-15.15-15-00.bus": { - "date": "2018-03-15", - "time": "15-15-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G508", - "G509" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508" - ], - "kitware-training": [ - "G331", - "G505", - "G508", - "G509" - ], - "nist-json": [ - "G331" - ] - } - }, - "2018-03-15.15-15-00.school": { - "date": "2018-03-15", - "time": "15-15-00", - "site": "school", - "all_cameras": 11, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G339", - "G419", - "G421", - "G423", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G330", - "G336", - "G339", - "G421", - "G424", - "G474", - "G638", - "G639" - ], - "contrib/IBM-person-person": [ - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G638" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G339", - "G421", - "G424", - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G336", - "G419", - "G423", - "G639" - ] - } - }, - "2018-03-15.15-15-01.admin": { - "date": "2018-03-15", - "time": "15-15-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-15.15-15-01.bus": { - "date": "2018-03-15", - "time": "15-15-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-15.15-15-01.school": { - "date": "2018-03-15", - "time": "15-15-01", - "site": "school", - "all_cameras": 2, - "mevid_cameras": [ - "G328", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G328" - ], - "kitware-training": [ - "G328", - "G420" - ] - } - }, - "2018-03-15.15-15-03.school": { - "date": "2018-03-15", - "time": "15-15-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/IBM-person-vehicle": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-15.15-15-04.bus": { - "date": "2018-03-15", - "time": "15-15-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-15.15-15-06.hospital": { - "date": "2018-03-15", - "time": "15-15-06", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/UMD-v1-val": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-15.15-15-07.hospital": { - "date": "2018-03-15", - "time": "15-15-07", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-15.15-30-00.bus": { - "date": "2018-03-15", - "time": "15-30-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G505", - "G508", - "G509" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508" - ], - "kitware-training": [ - "G331", - "G505", - "G508", - "G509" - ] - } - }, - "2018-03-15.15-30-00.school": { - "date": "2018-03-15", - "time": "15-30-00", - "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G339", - "G421", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G421", - "G424", - "G474", - "G638" - ], - "contrib/IBM-person-person": [ - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G339", - "G424" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G339", - "G421", - "G424" - ], - "kitware-training": [ - "G299", - "G330", - "G336", - "G638", - "G639" - ] - } - }, - "2018-03-15.15-30-01.admin": { - "date": "2018-03-15", - "time": "15-30-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-15.15-30-01.bus": { - "date": "2018-03-15", - "time": "15-30-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "contrib/UMD-v1-val": [ - "G506" - ], - "kitware": [ - "G506" - ] - } - }, - "2018-03-15.15-30-01.school": { - "date": "2018-03-15", - "time": "15-30-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G328", - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G420" - ], - "kitware-training": [ - "G328", - "G419" - ] - } - }, - "2018-03-15.15-30-03.school": { - "date": "2018-03-15", - "time": "15-30-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "contrib/UMD-v1-train": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-15.15-30-04.bus": { - "date": "2018-03-15", - "time": "15-30-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/IBM-person-vehicle": [ - "G340" - ], - "kitware-training": [ - "G340" - ], - "nist-json": [ - "G340" - ] - } - }, - "2018-03-15.15-30-06.hospital": { - "date": "2018-03-15", - "time": "15-30-06", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/UMD-v1-val": [ - "G341" - ], - "kitware": [ - "G341" - ] - } - }, - "2018-03-15.15-30-07.hospital": { - "date": "2018-03-15", - "time": "15-30-07", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-15.15-35-00.bus": { - "date": "2018-03-15", - "time": "15-35-00", - "site": "bus", - "all_cameras": 5, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G508", - "G509" - ], - "contrib/UMD-v1-train": [ - "G331", - "G508" - ], - "kitware-training": [ - "G331", - "G505", - "G508", - "G509" - ] - } - }, - "2018-03-15.15-35-00.school": { - "date": "2018-03-15", - "time": "15-35-00", - "site": "school", - "all_cameras": 10, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G339", - "G421", - "G423", - "G424", - "G638", - "G639" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G336", - "G339", - "G421", - "G423", - "G474", - "G638", - "G639" - ], - "contrib/IBM-person-person": [ - "G336", - "G424", - "G474" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G423", - "G424", - "G474", - "G639" - ], - "contrib/UMD-v1-train": [ - "G339" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G339", - "G421", - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G336", - "G424", - "G639" - ] - } - }, - "2018-03-15.15-35-01.admin": { - "date": "2018-03-15", - "time": "15-35-01", - "site": "admin", - "all_cameras": 2, - "mevid_cameras": [ - "G326", - "G329" - ], - "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-15.15-35-01.bus": { - "date": "2018-03-15", - "time": "15-35-01", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G506" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "contrib/IBM-person-vehicle": [ - "G506" - ], - "kitware-training": [ - "G506" - ], - "nist-json": [ - "G506" - ] - } - }, - "2018-03-15.15-35-01.school": { - "date": "2018-03-15", - "time": "15-35-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G328", - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G420" - ], - "contrib/IBM-person-vehicle": [ - "G328" - ], - "kitware": [ - "G328" - ], - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-15.15-35-03.school": { - "date": "2018-03-15", - "time": "15-35-03", - "site": "school", - "all_cameras": 1, - "mevid_cameras": [ - "G300" - ], - "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ], - "nist-json": [ - "G300" - ] - } - }, - "2018-03-15.15-35-04.bus": { - "date": "2018-03-15", - "time": "15-35-04", - "site": "bus", - "all_cameras": 1, - "mevid_cameras": [ - "G340" - ], - "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware": [ - "G340" - ] - } - }, - "2018-03-15.15-35-06.hospital": { - "date": "2018-03-15", - "time": "15-35-06", - "site": "hospital", - "all_cameras": 1, - "mevid_cameras": [ - "G341" - ], - "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/UMD-v1-val": [ - "G341" - ], - "kitware-training": [ - "G341" - ], - "nist-json": [ - "G341" - ] - } - }, - "2018-03-15.15-35-07.hospital": { - "date": "2018-03-15", - "time": "15-35-07", - "site": "hospital", - "all_cameras": 2, - "mevid_cameras": [ - "G436" - ], - "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G436" - ], - "contrib/IBM-person-person": [ - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } - }, - "2018-03-15.15-40-00.bus": { - "date": "2018-03-15", - "time": "15-40-00", - "site": "bus", - "all_cameras": 4, - "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G505", - "G508", - "G509" - ], - "contrib/IBM-person-person": [ - "G331" - ], - "contrib/IBM-person-vehicle": [ - "G331", - "G509" - ], - "kitware": [ - "G508" - ], - "kitware-training": [ - "G331", - "G505", - "G509" - ] - } - }, - "2018-03-15.15-40-00.school": { - "date": "2018-03-15", - "time": "15-40-00", + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-13.16-15.school": { + "date": "2018-03-13", + "time": "16-15-00", "site": "school", - "all_cameras": 9, - "mevid_cameras": [ - "G299", - "G330", - "G336", - "G339", - "G421", - "G423", - "G424", - "G638" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G299", - "G330", - "G336", - "G339", - "G421", - "G423", - "G424", - "G474", - "G638" - ], - "contrib/IBM-person-person": [ - "G336", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G424", - "G638" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G339" - ], - "kitware-training": [ - "G299", - "G330", - "G336", - "G421", - "G423", - "G424", - "G638" - ], - "nist-json": [ - "G638" - ] - } - }, - "2018-03-15.15-40-01.admin": { - "date": "2018-03-15", - "time": "15-40-01", - "site": "admin", - "all_cameras": 2, + "all_cameras": 12, "mevid_cameras": [ - "G326", - "G329" + "G328", + "G424" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0025", + "0030", + "0032", + "0033", + "0035", + "0037", + "0039", + "0040", + "0041", + "0042", + "0049", + "0055", + "0056", + "0057", + "0072", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0092", "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "kitware": [ - "G326" - ], - "kitware-training": [ - "G329" - ] - } + "0099", + "0101", + "0103" + ] }, - "2018-03-15.15-40-01.bus": { - "date": "2018-03-15", - "time": "15-40-01", - "site": "bus", - "all_cameras": 1, + "2018-03-13.16-20.school": { + "date": "2018-03-13", + "time": "16-20-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G506" + "G328", + "G339", + "G424", + "G638" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-15.15-40-01.school": { - "date": "2018-03-15", - "time": "15-40-01", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.16-25.school": { + "date": "2018-03-13", + "time": "16-25-00", "site": "school", - "all_cameras": 4, + "all_cameras": 12, "mevid_cameras": [ "G328", "G419", "G420", - "G639" + "G423" + ], + "mevid_persons": [ + "0002", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0025", + "0035", + "0036", + "0039", + "0040", + "0041", + "0042", + "0051", + "0055", + "0056", + "0057", + "0067", + "0068", + "0082", + "0083", + "0085", + "0088", + "0097", + "0099" + ] + }, + "2018-03-13.16-30.school": { + "date": "2018-03-13", + "time": "16-30-00", + "site": "school", + "all_cameras": 12, + "mevid_cameras": [ + "G328", + "G424" ], "mevid_persons": [ + "0003", + "0004", + "0007", "0008", - "0010", + "0009", + "0014", + "0025", + "0030", "0032", + "0033", + "0035", + "0037", + "0039", "0040", - "0048", - "0053", - "0054", - "0074", + "0041", + "0042", + "0049", + "0055", + "0056", + "0057", + "0072", "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0092", "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G420" - ], - "contrib/IBM-person-vehicle": [ - "G419" - ], - "kitware-training": [ - "G328", - "G419", - "G420", - "G639" - ] - } + "0099", + "0101", + "0103" + ] }, - "2018-03-15.15-40-03.school": { - "date": "2018-03-15", - "time": "15-40-03", + "2018-03-13.17-05.school": { + "date": "2018-03-13", + "time": "17-05-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ - "G300" + "G299", + "G328", + "G330", + "G339", + "G423", + "G424" ], "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-15.15-40-04.bus": { - "date": "2018-03-15", - "time": "15-40-04", - "site": "bus", - "all_cameras": 1, + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.17-10.school": { + "date": "2018-03-13", + "time": "17-10-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G340" + "G328", + "G339", + "G424" ], "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-15.15-40-06.hospital": { - "date": "2018-03-15", - "time": "15-40-06", - "site": "hospital", - "all_cameras": 1, + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.17-15.school": { + "date": "2018-03-13", + "time": "17-15-00", + "site": "school", + "all_cameras": 12, "mevid_cameras": [ - "G341" + "G328", + "G339", + "G424" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/IBM-person-vehicle": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-15.15-40-07.hospital": { - "date": "2018-03-15", - "time": "15-40-07", - "site": "hospital", - "all_cameras": 2, + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.17-20.school": { + "date": "2018-03-13", + "time": "17-20-00", + "site": "school", + "all_cameras": 12, "mevid_cameras": [ - "G436" + "G328", + "G339", + "G419", + "G420", + "G424" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.17-25.school": { + "date": "2018-03-13", + "time": "17-25-00", + "site": "school", + "all_cameras": 13, + "mevid_cameras": [ + "G419", + "G420" ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "kitware-training": [ - "G301", - "G436" - ] - } + "mevid_persons": [ + "0004", + "0007", + "0008", + "0014", + "0015", + "0016", + "0025", + "0035", + "0036", + "0039", + "0040", + "0041", + "0042", + "0051", + "0055", + "0056", + "0057", + "0082", + "0083", + "0085", + "0097", + "0099" + ] }, - "2018-03-15.15-45-00.bus": { - "date": "2018-03-15", - "time": "15-45-00", - "site": "bus", - "all_cameras": 5, + "2018-03-13.17-30.school": { + "date": "2018-03-13", + "time": "17-30-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" + "G421", + "G424" ], "mevid_persons": [ + "0004", "0008", - "0010", - "0032", - "0046", - "0048", - "0053", + "0009", + "0014", + "0018", + "0025", + "0035", + "0037", + "0039", + "0041", + "0042", + "0043", + "0051", + "0056", + "0064", "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G505", - "G508", - "G509" - ], - "contrib/IBM-person-vehicle": [ - "G475", - "G508" - ], - "contrib/UMD-v1-train": [ - "G331" - ], - "contrib/UMD-v1-val": [ - "G505" - ], - "kitware": [ - "G505" - ], - "kitware-training": [ - "G331", - "G508", - "G509" - ] - } + "0082", + "0083", + "0085", + "0090", + "0097", + "0099" + ] }, - "2018-03-15.15-45-00.school": { - "date": "2018-03-15", - "time": "15-45-00", + "2018-03-13.17-35.school": { + "date": "2018-03-13", + "time": "17-35-00", "site": "school", - "all_cameras": 9, + "all_cameras": 13, "mevid_cameras": [ - "G299", - "G330", - "G336", + "G328", "G339", - "G421", "G423", - "G424", - "G638" + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-13.17-40.school": { + "date": "2018-03-13", + "time": "17-40-00", + "site": "school", + "all_cameras": 12, + "mevid_cameras": [ + "G339", + "G419", + "G420", + "G423", + "G424" ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G339", - "G421", - "G423", - "G424", - "G474", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G424", - "G474", - "G638" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G336", - "G339", - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G421", - "G423", - "G424" - ], - "nist-json": [ - "G638" - ] - } - }, - "2018-03-15.15-45-01.admin": { + "mevid_persons": [ + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.14-50.admin": { "date": "2018-03-15", - "time": "15-45-01", + "time": "14-50-00", "site": "admin", "all_cameras": 2, "mevid_cameras": [ @@ -32041,387 +6755,425 @@ "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "kitware-training": [ - "G326" - ] - } - }, - "2018-03-15.15-45-01.bus": { + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-15.14-50.bus": { "date": "2018-03-15", - "time": "15-45-01", + "time": "14-50-00", "site": "bus", - "all_cameras": 1, + "all_cameras": 6, "mevid_cameras": [ + "G340", + "G505", "G506" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "contrib/IBM-person-vehicle": [ - "G506" - ], - "kitware": [ - "G506" - ], - "nist-json": [ - "G506" - ] - } - }, - "2018-03-15.15-45-01.school": { - "date": "2018-03-15", - "time": "15-45-01", - "site": "school", - "all_cameras": 3, - "mevid_cameras": [ - "G328", - "G419", - "G420" - ], - "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110" - ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G420" - ], - "kitware-training": [ - "G328", - "G419", - "G420" - ] - } - }, - "2018-03-15.15-45-02.school": { + "0002", + "0003", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0048", + "0055", + "0056", + "0057", + "0062", + "0064", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0089", + "0097", + "0101", + "0109", + "0205", + "0218", + "0230", + "0231", + "0232", + "0234", + "0243" + ] + }, + "2018-03-15.14-55.bus": { "date": "2018-03-15", - "time": "15-45-02", - "site": "school", - "all_cameras": 1, + "time": "14-55-00", + "site": "bus", + "all_cameras": 6, "mevid_cameras": [ - "G639" + "G340", + "G506", + "G508" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/IBM-person-vehicle": [ - "G639" - ], - "kitware-training": [ - "G639" - ] - } - }, - "2018-03-15.15-45-03.school": { + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-15.14-55.school": { "date": "2018-03-15", - "time": "15-45-03", + "time": "14-55-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ - "G300" + "G299", + "G330", + "G339", + "G419", + "G420", + "G424" ], "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/IBM-person-vehicle": [ - "G300" - ], - "kitware": [ - "G300" - ] - } - }, - "2018-03-15.15-45-04.bus": { + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-00.bus": { "date": "2018-03-15", - "time": "15-45-04", + "time": "15-00-00", "site": "bus", - "all_cameras": 1, + "all_cameras": 6, "mevid_cameras": [ - "G340" + "G505", + "G506" ], "mevid_persons": [ - "0010", - "0032", + "0015", + "0025", + "0039", "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } + "0062", + "0089" + ] }, - "2018-03-15.15-45-06.hospital": { + "2018-03-15.15-00.school": { "date": "2018-03-15", - "time": "15-45-06", - "site": "hospital", - "all_cameras": 1, + "time": "15-00-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G341" + "G330", + "G339", + "G419", + "G420", + "G424" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/UMD-v1-val": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-15.15-45-07.hospital": { + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-05.admin": { "date": "2018-03-15", - "time": "15-45-07", - "site": "hospital", + "time": "15-05-00", + "site": "admin", "all_cameras": 2, "mevid_cameras": [ - "G436" + "G326", + "G329" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436" - ], - "contrib/UMD-v1-train": [ - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } - }, - "2018-03-15.15-50-00.bus": { + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-15.15-05.bus": { "date": "2018-03-15", - "time": "15-50-00", + "time": "15-05-00", "site": "bus", - "all_cameras": 5, + "all_cameras": 6, "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" + "G340", + "G506", + "G508" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G505", - "G508" - ], - "contrib/IBM-person-vehicle": [ - "G475" - ], - "contrib/UMD-IBM": [ - "G331", - "G475", - "G505", - "G508" - ], - "contrib/UMD-v1-train": [ - "G331" - ], - "contrib/UMD-v1-val": [ - "G505" - ], - "kitware": [ - "G331", - "G508" - ], - "kitware-training": [ - "G505", - "G509" - ] - } - }, - "2018-03-15.15-50-00.school": { + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-15.15-05.school": { "date": "2018-03-15", - "time": "15-50-00", + "time": "15-05-00", "site": "school", - "all_cameras": 10, + "all_cameras": 12, "mevid_cameras": [ - "G299", - "G330", - "G336", + "G328", "G339", - "G420", - "G421", - "G423", - "G424", - "G638" + "G419", + "G420" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G339", - "G420", - "G421", - "G423", - "G424", - "G474", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G420", - "G423", - "G424", - "G638" - ], - "contrib/UMD-IBM": [ - "G336", - "G339", - "G420", - "G421", - "G423", - "G424", - "G474", - "G638" - ], - "contrib/UMD-v1-train": [ - "G424" - ], - "contrib/UMD-v1-val": [ - "G421" - ], - "kitware": [ - "G336", - "G339" - ], - "kitware-training": [ - "G299", - "G330", - "G420", - "G421", - "G423", - "G424", - "G638" - ] - } - }, - "2018-03-15.15-50-01.admin": { + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-10.admin": { "date": "2018-03-15", - "time": "15-50-01", + "time": "15-10-00", "site": "admin", "all_cameras": 2, "mevid_cameras": [ @@ -32429,359 +7181,471 @@ "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326", - "G329" - ], - "contrib/UMD-IBM": [ - "G326", - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-15.15-50-01.bus": { + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-15.15-10.bus": { "date": "2018-03-15", - "time": "15-50-01", + "time": "15-10-00", "site": "bus", - "all_cameras": 1, + "all_cameras": 4, "mevid_cameras": [ - "G506" + "G506", + "G508" ], "mevid_persons": [ - "0010", + "0003", + "0004", + "0009", + "0014", + "0031", "0032", - "0046", - "0048", - "0052", - "0053", - "0054", + "0045", + "0047", + "0051", + "0056", + "0057", + "0062", + "0067", + "0068", "0076", - "0097" - ], - "sources": { - "contrib/IBM-person-person": [ - "G506" - ], - "contrib/IBM-person-vehicle": [ - "G506" - ], - "contrib/UMD-IBM": [ - "G506" - ], - "kitware-training": [ - "G506" - ] - } + "0082", + "0090", + "0109" + ] }, - "2018-03-15.15-50-01.school": { + "2018-03-15.15-10.school": { "date": "2018-03-15", - "time": "15-50-01", + "time": "15-10-00", "site": "school", - "all_cameras": 3, + "all_cameras": 13, "mevid_cameras": [ "G328", + "G339", "G419", - "G639" + "G420", + "G423", + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0088", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-15.bus": { + "date": "2018-03-15", + "time": "15-15-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G340", + "G506" ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419" - ], - "contrib/IBM-person-vehicle": [ - "G419", - "G639" - ], - "contrib/UMD-IBM": [ - "G328", - "G419", - "G639" - ], - "kitware-training": [ - "G328", - "G419", - "G639" - ] - } - }, - "2018-03-15.15-50-03.school": { + "mevid_persons": [ + "0002", + "0003", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0055", + "0056", + "0057", + "0064", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0097", + "0101", + "0109" + ] + }, + "2018-03-15.15-15.school": { "date": "2018-03-15", - "time": "15-50-03", + "time": "15-15-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ - "G300" + "G299", + "G330", + "G339", + "G421", + "G424" ], "mevid_persons": [ - "0010" - ], - "sources": { - "contrib/UMD-IBM": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-15.15-50-04.bus": { + "0002", + "0003", + "0004", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0054", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-30.bus": { "date": "2018-03-15", - "time": "15-50-04", + "time": "15-30-00", "site": "bus", - "all_cameras": 1, + "all_cameras": 6, "mevid_cameras": [ - "G340" + "G340", + "G506", + "G508" ], "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/UMD-IBM": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-15.15-50-06.hospital": { + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-15.15-30.school": { "date": "2018-03-15", - "time": "15-50-06", - "site": "hospital", - "all_cameras": 1, + "time": "15-30-00", + "site": "school", + "all_cameras": 11, "mevid_cameras": [ - "G341" + "G328", + "G419", + "G424" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "contrib/IBM-person-vehicle": [ - "G341" - ], - "contrib/UMD-IBM": [ - "G341" - ], - "kitware": [ - "G341" - ] - } - }, - "2018-03-15.15-50-07.hospital": { + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0067", + "0068", + "0072", + "0076", + "0077", + "0081", + "0082", + "0083", + "0085", + "0086", + "0092", + "0095", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-35.admin": { "date": "2018-03-15", - "time": "15-50-07", - "site": "hospital", + "time": "15-35-00", + "site": "admin", "all_cameras": 2, "mevid_cameras": [ - "G436" + "G326", + "G329" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436" - ], - "contrib/IBM-person-vehicle": [ - "G436" - ], - "contrib/UMD-IBM": [ - "G301", - "G436" - ], - "kitware": [ - "G301" - ], - "kitware-training": [ - "G436" - ] - } - }, - "2018-03-15.15-55-00.bus": { + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-15.15-35.bus": { "date": "2018-03-15", - "time": "15-55-00", + "time": "15-35-00", "site": "bus", - "all_cameras": 5, + "all_cameras": 6, "mevid_cameras": [ - "G331", - "G505", - "G508", - "G509" + "G340", + "G506" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0046", - "0048", - "0053", - "0076", - "0080", - "0202", - "0211", - "0229", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G331", - "G475", - "G505", - "G508" - ], - "kitware": [ - "G331" - ], - "kitware-training": [ - "G505", - "G508", - "G509" - ] - } - }, - "2018-03-15.15-55-00.school": { + "0002", + "0003", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0055", + "0056", + "0057", + "0064", + "0072", + "0078", + "0082", + "0083", + "0087", + "0088", + "0097", + "0101", + "0109" + ] + }, + "2018-03-15.15-35.school": { "date": "2018-03-15", - "time": "15-55-00", + "time": "15-35-00", "site": "school", - "all_cameras": 10, + "all_cameras": 11, "mevid_cameras": [ - "G299", - "G330", - "G336", "G339", - "G420", - "G421", - "G423", - "G424", - "G638" + "G419", + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0046", - "0048", - "0052", - "0053", - "0054", - "0074", - "0076", - "0080", - "0097", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" - ], - "sources": { - "contrib/CMU-v2": [ - "G336", - "G339", - "G420", - "G421", - "G423", - "G424", - "G474", - "G638" - ], - "contrib/IBM-person-vehicle": [ - "G336", - "G420", - "G474", - "G638" - ], - "kitware": [ - "G336", - "G421", - "G424", - "G638" - ], - "kitware-training": [ - "G299", - "G330", - "G339", - "G423" - ] - } - }, - "2018-03-15.15-55-01.admin": { + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-40.admin": { "date": "2018-03-15", - "time": "15-55-01", + "time": "15-40-00", "site": "admin", "all_cameras": 2, "mevid_cameras": [ @@ -32789,219 +7653,478 @@ "G329" ], "mevid_persons": [ - "0010", - "0046", - "0053", - "0074", - "0080", - "0097", - "0229", - "0238", - "0260", - "0280" - ], - "sources": { - "contrib/CMU-v2": [ - "G326" - ], - "contrib/UMD-v1-train": [ - "G329" - ], - "kitware-training": [ - "G326", - "G329" - ] - } - }, - "2018-03-15.15-55-01.bus": { + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-15.15-40.bus": { "date": "2018-03-15", - "time": "15-55-01", + "time": "15-40-00", "site": "bus", - "all_cameras": 1, + "all_cameras": 6, "mevid_cameras": [ - "G506" + "G340", + "G506", + "G508" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G506" - ], - "kitware-training": [ - "G506" - ] - } - }, - "2018-03-15.15-55-01.school": { + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-15.15-40.school": { "date": "2018-03-15", - "time": "15-55-01", + "time": "15-40-00", "site": "school", - "all_cameras": 3, + "all_cameras": 13, "mevid_cameras": [ - "G328", + "G339", "G419", - "G639" + "G420", + "G423", + "G424" ], "mevid_persons": [ - "0008", - "0010", - "0032", - "0040", - "0048", - "0053", - "0054", - "0074", - "0076", - "0097", - "0110", - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0280", - "0292" + "0002", + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0015", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-45.bus": { + "date": "2018-03-15", + "time": "15-45-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G331", + "G340", + "G506", + "G508" ], - "sources": { - "contrib/CMU-v2": [ - "G328", - "G419", - "G639" - ], - "contrib/IBM-person-vehicle": [ - "G639" - ], - "contrib/UMD-v1-val": [ - "G328" - ], - "kitware": [ - "G328", - "G639" - ], - "kitware-training": [ - "G419" - ] - } - }, - "2018-03-15.15-55-03.school": { + "mevid_persons": [ + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-15.15-45.school": { "date": "2018-03-15", - "time": "15-55-03", + "time": "15-45-00", "site": "school", - "all_cameras": 1, + "all_cameras": 13, "mevid_cameras": [ - "G300" + "G339", + "G424" ], "mevid_persons": [ - "0010" + "0003", + "0004", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0072", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-50.admin": { + "date": "2018-03-15", + "time": "15-50-00", + "site": "admin", + "all_cameras": 2, + "mevid_cameras": [ + "G326", + "G329" ], - "sources": { - "contrib/CMU-v2": [ - "G300" - ], - "kitware-training": [ - "G300" - ] - } - }, - "2018-03-15.15-55-04.bus": { + "mevid_persons": [ + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-15.15-50.bus": { "date": "2018-03-15", - "time": "15-55-04", + "time": "15-50-00", "site": "bus", - "all_cameras": 1, + "all_cameras": 6, "mevid_cameras": [ - "G340" + "G340", + "G506", + "G508" ], "mevid_persons": [ - "0010", - "0032", - "0048", - "0080", - "0097", - "0211", - "0238" - ], - "sources": { - "contrib/CMU-v2": [ - "G340" - ], - "contrib/IBM-person-person": [ - "G340" - ], - "kitware-training": [ - "G340" - ] - } - }, - "2018-03-15.15-55-06.hospital": { + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] + }, + "2018-03-15.15-50.school": { "date": "2018-03-15", - "time": "15-55-06", - "site": "hospital", - "all_cameras": 1, + "time": "15-50-00", + "site": "school", + "all_cameras": 13, "mevid_cameras": [ - "G341" + "G328", + "G339", + "G424" ], "mevid_persons": [ - "0010", - "0032", - "0046", - "0048", - "0052", - "0053", - "0054", - "0076", - "0080", - "0097" - ], - "sources": { - "contrib/CMU-v2": [ - "G341" - ], - "kitware-training": [ - "G341" - ] - } - }, - "2018-03-15.15-55-07.hospital": { + "0003", + "0004", + "0007", + "0008", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0030", + "0032", + "0033", + "0034", + "0035", + "0036", + "0037", + "0039", + "0040", + "0041", + "0042", + "0043", + "0049", + "0051", + "0055", + "0056", + "0057", + "0064", + "0067", + "0068", + "0072", + "0074", + "0076", + "0077", + "0078", + "0081", + "0082", + "0083", + "0085", + "0086", + "0090", + "0092", + "0095", + "0096", + "0097", + "0099", + "0101", + "0103", + "0109" + ] + }, + "2018-03-15.15-55.admin": { "date": "2018-03-15", - "time": "15-55-07", - "site": "hospital", + "time": "15-55-00", + "site": "admin", "all_cameras": 2, "mevid_cameras": [ - "G436" + "G326", + "G329" ], "mevid_persons": [ - "0202", - "0211", - "0229", - "0238", - "0260", - "0268", - "0271", - "0292" + "0004", + "0009", + "0018", + "0030", + "0033", + "0034", + "0035", + "0036", + "0049", + "0056", + "0057", + "0082", + "0083", + "0088", + "0095", + "0097", + "0099" + ] + }, + "2018-03-15.15-55.bus": { + "date": "2018-03-15", + "time": "15-55-00", + "site": "bus", + "all_cameras": 6, + "mevid_cameras": [ + "G340", + "G506", + "G508" ], - "sources": { - "contrib/CMU-v2": [ - "G301", - "G436" - ], - "kitware": [ - "G436" - ], - "kitware-training": [ - "G301" - ] - } + "mevid_persons": [ + "0002", + "0003", + "0004", + "0009", + "0014", + "0016", + "0018", + "0023", + "0024", + "0025", + "0031", + "0032", + "0036", + "0038", + "0039", + "0045", + "0047", + "0051", + "0055", + "0056", + "0057", + "0062", + "0064", + "0067", + "0068", + "0072", + "0076", + "0078", + "0082", + "0083", + "0087", + "0088", + "0090", + "0097", + "0099", + "0101", + "0109", + "0211", + "0296" + ] } } } \ No newline at end of file diff --git a/meva/run.sh b/meva/run.sh index 35dc258..2ca636b 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -13,7 +13,7 @@ # # REQUIREMENTS: # pip install pyyaml numpy opencv-python openai -# (or: source /home/ah66742/venv/bin/activate) +# (or: source your-venv/bin/activate) # set -e diff --git a/meva/scripts/v10/batch_extract_all_slots.py b/meva/scripts/v10/batch_extract_all_slots.py index 8755927..1b19477 100755 --- a/meva/scripts/v10/batch_extract_all_slots.py +++ b/meva/scripts/v10/batch_extract_all_slots.py @@ -22,9 +22,9 @@ Cost: $0 (local YOLO, no API calls) Time: ~3-4 min per slot × 390 slots = ~20 hours -Output: /home/ah66742/data/entity_descriptions/{canonical_slot}.json -Progress: /home/ah66742/output/extraction_logs/batch_progress.json -Logs: /home/ah66742/output/extraction_logs/batch_extraction_TIMESTAMP.log +Output: $MEVA_ENTITY_DESC_DIR/{canonical_slot}.json (or /nas/mars/dataset/MEVA/entity_descriptions/) +Progress: $MEVA_OUTPUT_DIR/extraction_logs/batch_progress.json +Logs: $MEVA_OUTPUT_DIR/extraction_logs/batch_extraction_TIMESTAMP.log """ import argparse diff --git a/meva/scripts/v10/build_mevid_slots.py b/meva/scripts/v10/build_mevid_slots.py new file mode 100644 index 0000000..e381565 --- /dev/null +++ b/meva/scripts/v10/build_mevid_slots.py @@ -0,0 +1,188 @@ +""" +build_mevid_slots.py — Rebuild mevid_supported_slots.json from authoritative sources. + +DATA SOURCES: + - mevid-v1-annotation-data/{train,test}_name.txt → person-camera associations + - mevid-v1-video-URLS.txt → which MEVA clips are in MEVID + - data/slot_index.json → all cameras per canonical slot + +LOGIC: + For each March MEVID clip, determine the canonical slot (date.HH-MM.site). + For each slot, collect: + - mevid_cameras: cameras that have MEVID clips in this 5-min window + - mevid_persons: persons from annotation files with 2+ cameras in mevid_cameras + Write to data/mevid_supported_slots.json. + +USAGE: + cd /path/to/meva + python3 -m scripts.v10.build_mevid_slots + python3 -m scripts.v10.build_mevid_slots --include-may # also include May dates +""" + +import argparse +import json +import os +import re +import sys +from collections import defaultdict +from pathlib import Path + +# Paths +_SCRIPT_DIR = Path(__file__).parent +_REPO_DATA = _SCRIPT_DIR.parent.parent / "data" + +MEVID_DATA_DIR = Path(os.environ.get("MEVA_MEVID_DATA_DIR") or "/nas/mars/dataset/MEVA/mevid_data/mevid-v1-annotation-data") +MEVID_URLS = Path(os.environ.get("MEVA_MEVID_URLS") or "/nas/mars/dataset/MEVA/mevid_data/mevid-v1-video-URLS.txt") + +# Regexes +_RE_NAME = re.compile(r'^(\d{4})O\d{3}C(\d+)T') +_RE_CLIP = re.compile( + r'(\d{4}-\d{2}-\d{2})\.(\d{2})-(\d{2})-\d{2}\.\d{2}-\d{2}-\d{2}\.(\w+)\.(G\d+)' +) + + +def parse_person_cameras() -> dict[str, set[str]]: + """ + Parse train/test name files → {person_id_str: {camera_ids}}. + Camera IDs are in MEVA format: "G424" (not "C424"). + Person IDs are zero-padded strings: "0041". + """ + person_cams: dict[str, set[str]] = defaultdict(set) + for fname in ("train_name.txt", "test_name.txt"): + fpath = MEVID_DATA_DIR / fname + if not fpath.exists(): + print(f" WARNING: {fpath} not found", file=sys.stderr) + continue + seen = set() + with open(fpath) as f: + for line in f: + m = _RE_NAME.match(line.strip()) + if not m: + continue + pid = m.group(1) # e.g. "0041" + cam = f"G{m.group(2)}" # e.g. "G424" + key = (pid, cam) + if key not in seen: + seen.add(key) + person_cams[pid].add(cam) + return dict(person_cams) + + +def parse_slot_cameras(include_may: bool = False) -> dict[str, set[str]]: + """ + Parse video URLs → {slot: {cameras with MEVID clips}}. + slot format: "2018-03-11.11-25.school" + """ + if not MEVID_URLS.exists(): + print(f" ERROR: {MEVID_URLS} not found", file=sys.stderr) + return {} + + slot_cams: dict[str, set[str]] = defaultdict(set) + with open(MEVID_URLS) as f: + for line in f: + m = _RE_CLIP.search(line.strip()) + if not m: + continue + date, hh, mm, site, cam = m.groups() + if not include_may and date.startswith("2018-05"): + continue + slot = f"{date}.{hh}-{mm}.{site}" + slot_cams[slot].add(cam) + return dict(slot_cams) + + +def load_slot_index() -> dict: + path = _REPO_DATA / "slot_index.json" + if path.exists(): + return json.loads(path.read_text()) + return {} + + +def build(include_may: bool = False, verbose: bool = True) -> dict: + if verbose: + print("=== Building mevid_supported_slots.json ===") + + # 1. Person → cameras from annotation files + person_cams = parse_person_cameras() + if verbose: + multi = {p: c for p, c in person_cams.items() if len(c) >= 2} + print(f" Persons in annotation files: {len(person_cams)}") + print(f" Persons with 2+ cameras (global): {len(multi)}") + + # 2. Slot → MEVID cameras from video URLs + slot_cameras = parse_slot_cameras(include_may=include_may) + if verbose: + dates = set(s.split(".")[0] for s in slot_cameras) + print(f" Slots with MEVID clips: {len(slot_cameras)} across {len(dates)} dates") + + # 3. slot_index.json for all_cameras + slot_index = load_slot_index() + + # 4. For each slot, find cross-camera persons + result_slots: dict[str, dict] = {} + for slot in sorted(slot_cameras): + mevid_cams = sorted(slot_cameras[slot]) + mevid_cam_set = set(mevid_cams) + + cross_persons = sorted( + pid for pid, cams in person_cams.items() + if len(cams & mevid_cam_set) >= 2 + ) + + if not cross_persons: + continue + + # Parse slot components + parts = slot.split(".") + date = parts[0] + time_part = parts[1] if len(parts) > 1 else "" + site = parts[2] if len(parts) > 2 else "" + + # Look up all_cameras from slot_index (best effort) + all_cams_count = len(slot_cameras[slot]) + if slot in slot_index: + all_cams_count = len(slot_index[slot].get("cameras", [])) + + result_slots[slot] = { + "date": date, + "time": f"{time_part}-00", + "site": site, + "all_cameras": all_cams_count, + "mevid_cameras": mevid_cams, + "mevid_persons": cross_persons, + } + + # 5. Summary + all_persons = set() + for v in result_slots.values(): + all_persons.update(v["mevid_persons"]) + + if verbose: + print(f"\n Result: {len(result_slots)} slots with cross-camera MEVID persons") + print(f" Unique persons: {len(all_persons)}") + print(f" Person IDs: {sorted(all_persons)}") + + return {"slots": result_slots} + + +def main(): + parser = argparse.ArgumentParser(description="Rebuild mevid_supported_slots.json") + parser.add_argument("--include-may", action="store_true", + help="Include May 2018 MEVID data (not on disk, for future use)") + parser.add_argument("--dry-run", action="store_true", + help="Print results without writing the file") + args = parser.parse_args() + + data = build(include_may=args.include_may, verbose=True) + + out_path = _REPO_DATA / "mevid_supported_slots.json" + if args.dry_run: + print(f"\nDry run — would write to {out_path}") + else: + out_path.write_text(json.dumps(data, indent=2)) + print(f"\nWritten to {out_path}") + print(f"({out_path.stat().st_size // 1024} KB)") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/export_to_multicam_format.py b/meva/scripts/v10/export_to_multicam_format.py index eb68add..45df4e0 100644 --- a/meva/scripts/v10/export_to_multicam_format.py +++ b/meva/scripts/v10/export_to_multicam_format.py @@ -2,8 +2,8 @@ """ export_to_multicam_format.py — Transform FINAL naturalized QA to multi-cam-dataset schema. -Reads: /home/ah66742/data/qa_pairs/{slot}.final.naturalized.json -Writes: /nas/neurosymbolic/multi-cam-dataset/meva/qa_pairs/{slot}.json +Reads: $MEVA_OUTPUT_DIR/qa_pairs/{slot}.final.naturalized.json +Writes: $MEVA_MULTICAM_OUT/{slot}.json (or /nas/neurosymbolic/multi-cam-dataset/meva/qa_pairs/) Target schema matches agibot / ego-exo4d format: { diff --git a/meva/scripts/v10/utils/mevid.py b/meva/scripts/v10/utils/mevid.py index a6dd039..cc3000d 100644 --- a/meva/scripts/v10/utils/mevid.py +++ b/meva/scripts/v10/utils/mevid.py @@ -7,13 +7,14 @@ 3. MEVID-supported slots (slots where cross-camera persons exist) """ +import os import re from pathlib import Path from collections import defaultdict from typing import Dict, List, Set, Tuple, Optional -MEVID_DATA_DIR = Path("/nas/mars/dataset/MEVA/mevid_data/mevid-v1-annotation-data") -MEVID_URLS = Path("/nas/mars/dataset/MEVA/mevid_data/mevid-v1-video-URLS.txt") +MEVID_DATA_DIR = Path(os.environ.get("MEVA_MEVID_DATA_DIR") or "/nas/mars/dataset/MEVA/mevid_data/mevid-v1-annotation-data") +MEVID_URLS = Path(os.environ.get("MEVA_MEVID_URLS") or "/nas/mars/dataset/MEVA/mevid_data/mevid-v1-video-URLS.txt") # Regex for MEVID image filename: {PersonID}O{OutfitID}C{CameraID}T{TrackletID}F{Frame}.jpg MEVID_NAME_RE = re.compile(r'^(\d{4})O(\d{3})C(\d+)T(\d{3})F(\d{5})\.jpg$') From 2c96b4b2dcc226e13bcb09932a81a7db1c3e11f5 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Thu, 26 Feb 2026 18:17:50 -0600 Subject: [PATCH 12/26] upgrade entity descriptions: SegFormer human parsing replaces fixed vertical splits MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add analyze_crops_segformer() using mattmdjaga/segformer_b2_clothes model - 18 semantic body-part classes (hair, upper-clothes, pants/skirt/dress, shoes, etc.) - Per-region HSV color extraction instead of crude 10-45%/55-90% vertical slices - Detects accessories: hat, sunglasses, bag, scarf - Distinguishes pants vs skirt vs dress - Update build_description() for richer output: 'a person with black hair, wearing a blue top and black pants, black shoes' - Add --method CLI flag: segformer (default), yolo, color-only - Fix MIN_BBOX_WIDTH: 144 → 48 (person bboxes are tall & narrow, median W/H=0.54) - Actor yield: 70 → 394 on test slot - Fix OUTPUT_DIR to match person_descriptions.py reader default - Backward compatible: still outputs upper_color, lower_color, description keys - Tested: 394 actors, 145 unique descriptions (36.8%) on 2018-03-11.11-25.school --- .../v10/extract_entity_descriptions.py | 307 +++++++++++++++--- 1 file changed, 259 insertions(+), 48 deletions(-) diff --git a/meva/scripts/v10/extract_entity_descriptions.py b/meva/scripts/v10/extract_entity_descriptions.py index e6ee278..2910726 100644 --- a/meva/scripts/v10/extract_entity_descriptions.py +++ b/meva/scripts/v10/extract_entity_descriptions.py @@ -1,24 +1,26 @@ #!/usr/bin/env python3 """ -V8 Entity Description Extractor — Extract visual descriptions from raw video + geom.yml. +V10 Entity Description Extractor — Extract visual descriptions from raw video + geom.yml. For EVERY annotated actor in a slot, this script: 1. Parses geom.yml → per-actor bounding boxes per frame - 2. Extracts 5 representative crops from the MP4 video - 3. Runs YOLO color analysis on each crop (upper/lower body colors, carried objects) + 2. Extracts 5 representative crops from the video + 3. Runs SegFormer human parsing (default) or YOLO+color analysis on each crop 4. Aggregates via majority vote across crops - 5. Generates template description: "a person in blue top and black pants carrying a backpack" + 5. Generates rich description: "a person with dark hair, wearing a blue top and black pants" -This gives EVERY entity a visual description (not just the 10% with MEVID matches), -solving the temporal disambiguation problem where "a person enters scene" is ambiguous -when there are 100+ such events. +Methods: + segformer — SegFormer human parsing (18 body-part classes, best quality) [default] + yolo — YOLO person detection + fixed-split colors + carried objects + color-only — Fixed vertical splits (fastest, no model needed) Cost: $0 (all local, no API calls) -Time: ~3-4 min per slot (mostly video decode + YOLO inference) +Time: ~2-3 min per slot (segformer on GPU), ~3-4 min (YOLO) Usage: - python3 scripts/v8/extract_entity_descriptions.py --slot 2018-03-11.11-25-00.school -v - python3 scripts/v8/extract_entity_descriptions.py --slot 2018-03-11.11-25-00.school --dry-run + python3 scripts/v10/extract_entity_descriptions.py --slot 2018-03-11.11-25.school -v + python3 scripts/v10/extract_entity_descriptions.py --slot 2018-03-11.11-25.school --method yolo + python3 scripts/v10/extract_entity_descriptions.py --slot 2018-03-11.11-25.school --dry-run """ import argparse @@ -43,20 +45,24 @@ KITWARE_TRAINING_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware-meva-training") AVI_BASE = Path("/nas/mars/dataset/MEVA/avis") # Raw AVIs — lossless, better color MP4_BASE = Path("/nas/mars/dataset/MEVA/mp4s") # Fallback (CRF 32 re-encode) -# User output directory — override with MEVA_OUTPUT_DIR env var -_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) -OUTPUT_DIR = _OUTPUT / "entity_descriptions" +# Entity descriptions output — matches reader default in person_descriptions.py +# Override with MEVA_ENTITY_DESC_DIR env var +OUTPUT_DIR = Path(os.environ.get("MEVA_ENTITY_DESC_DIR") or "/nas/mars/dataset/MEVA/entity_descriptions") # ============================================================================ # Constants # ============================================================================ CROPS_PER_ACTOR = 5 # Crops to extract per actor track -MIN_BBOX_HEIGHT = 144 # Min bbox height in pixels for usable crop (~consistent with 2% area filter) -MIN_BBOX_WIDTH = 144 # Min bbox width (~consistent with 2% area filter) +MIN_BBOX_HEIGHT = 144 # Min bbox height in pixels for usable crop +MIN_BBOX_WIDTH = 48 # Min bbox width — person bboxes are tall & narrow (median W/H ≈ 0.54) YOLO_CONF = 0.25 # YOLO detection confidence threshold YOLO_MODEL = "yolov8n.pt" # Nano model (fast, sufficient for crops) +# SegFormer human parsing model +SEGFORMER_MODEL = "mattmdjaga/segformer_b2_clothes" +MIN_REGION_PIXELS = 50 # Min pixels for a body region to count + # COCO carried-object classes CARRIED_OBJECTS = { 24: "backpack", 25: "umbrella", 26: "handbag", 27: "tie", @@ -385,6 +391,163 @@ def analyze_crops_yolo(crops: List[np.ndarray]) -> Dict: return {"upper_color": upper, "lower_color": lower, "carried_objects": objects} +# ============================================================================ +# SegFormer Human Parsing (semantic body-part segmentation) +# ============================================================================ + +_segformer_processor = None +_segformer_model = None + + +def _get_segformer(): + """Lazy-load SegFormer human parsing model (GPU if available).""" + global _segformer_processor, _segformer_model + if _segformer_model is None: + import torch + from transformers import SegformerImageProcessor, SegformerForSemanticSegmentation + _segformer_processor = SegformerImageProcessor.from_pretrained(SEGFORMER_MODEL) + _segformer_model = SegformerForSemanticSegmentation.from_pretrained(SEGFORMER_MODEL) + if torch.cuda.is_available(): + _segformer_model = _segformer_model.to("cuda") + _segformer_model.eval() + return _segformer_processor, _segformer_model + + +def _get_segmentation_map(crop_bgr: np.ndarray, processor, model) -> np.ndarray: + """Run SegFormer inference on a BGR crop → per-pixel class ID map (H, W).""" + import torch + from PIL import Image + rgb = cv2.cvtColor(crop_bgr, cv2.COLOR_BGR2RGB) + pil_img = Image.fromarray(rgb) + inputs = processor(images=pil_img, return_tensors="pt") + device = next(model.parameters()).device + inputs = {k: v.to(device) for k, v in inputs.items()} + with torch.no_grad(): + logits = model(**inputs).logits # (1, 18, H/4, W/4) + upsampled = torch.nn.functional.interpolate( + logits, size=crop_bgr.shape[:2], mode="bilinear", align_corners=False + ) + return upsampled.argmax(dim=1).squeeze().cpu().numpy() + + +def _extract_mask_color(crop_bgr: np.ndarray, mask: np.ndarray) -> str: + """Extract dominant color from BGR pixels where mask is True.""" + if mask.sum() < MIN_REGION_PIXELS: + return "unknown" + # Gather masked pixels as (N, 3) + pixels = crop_bgr[mask] + hsv = cv2.cvtColor(pixels.reshape(-1, 1, 3), cv2.COLOR_BGR2HSV) + h_mean = float(np.mean(hsv[:, 0, 0])) + s_mean = float(np.mean(hsv[:, 0, 1])) + v_mean = float(np.mean(hsv[:, 0, 2])) + return _hsv_to_color(h_mean, s_mean, v_mean) + + +# SegFormer class IDs → semantic groups +_SEG_HAIR = 2 +_SEG_UPPER = 4 +_SEG_SKIRT = 5 +_SEG_PANTS = 6 +_SEG_DRESS = 7 +_SEG_LSHOE = 9 +_SEG_RSHOE = 10 +_SEG_HAT = 1 +_SEG_SUNGLASSES = 3 +_SEG_BAG = 16 +_SEG_SCARF = 17 + + +def analyze_crops_segformer(crops: List[np.ndarray]) -> Dict: + """ + Analyze crops with SegFormer human parsing (18 body-part classes). + + Segments each crop into semantic regions (hair, upper-clothes, pants/skirt/dress, + shoes, etc.), extracts HSV color per region, detects accessories. + Majority-votes across crops for robust results. + + Returns dict with: + hair_color, upper_color, lower_color, lower_type, + shoe_color, accessories, carried_objects + """ + processor, model = _get_segformer() + + hair_colors = [] + upper_colors = [] + lower_colors = [] + shoe_colors = [] + lower_types = [] + accessories_per_crop = [] + + for crop in crops: + h, w = crop.shape[:2] + if h < 15 or w < 8: + continue + + seg_map = _get_segmentation_map(crop, processor, model) + + # Hair (class 2) + hair_colors.append(_extract_mask_color(crop, seg_map == _SEG_HAIR)) + + # Upper-clothes (class 4) + upper_colors.append(_extract_mask_color(crop, seg_map == _SEG_UPPER)) + + # Lower body: Pants(6), Skirt(5), Dress(7) — pick dominant + pants_px = (seg_map == _SEG_PANTS).sum() + skirt_px = (seg_map == _SEG_SKIRT).sum() + dress_px = (seg_map == _SEG_DRESS).sum() + + if dress_px > max(pants_px, skirt_px) and dress_px >= MIN_REGION_PIXELS: + lower_colors.append(_extract_mask_color(crop, seg_map == _SEG_DRESS)) + lower_types.append("dress") + elif skirt_px > pants_px and skirt_px >= MIN_REGION_PIXELS: + lower_colors.append(_extract_mask_color(crop, seg_map == _SEG_SKIRT)) + lower_types.append("skirt") + elif pants_px >= MIN_REGION_PIXELS: + lower_colors.append(_extract_mask_color(crop, seg_map == _SEG_PANTS)) + lower_types.append("pants") + else: + lower_colors.append("unknown") + lower_types.append("unknown") + + # Shoes (left 9 + right 10) + shoe_mask = (seg_map == _SEG_LSHOE) | (seg_map == _SEG_RSHOE) + shoe_colors.append(_extract_mask_color(crop, shoe_mask)) + + # Accessories + crop_acc = [] + if (seg_map == _SEG_HAT).sum() >= MIN_REGION_PIXELS: + crop_acc.append("hat") + if (seg_map == _SEG_SUNGLASSES).sum() >= MIN_REGION_PIXELS: + crop_acc.append("sunglasses") + if (seg_map == _SEG_BAG).sum() >= MIN_REGION_PIXELS: + crop_acc.append("bag") + if (seg_map == _SEG_SCARF).sum() >= MIN_REGION_PIXELS: + crop_acc.append("scarf") + accessories_per_crop.append(crop_acc) + + # Majority votes + hair = _majority_vote(hair_colors) + upper = _majority_vote(upper_colors) + lower = _majority_vote(lower_colors) + shoes = _majority_vote(shoe_colors) + lower_type = _majority_vote(lower_types) + + # Accessories: keep if seen in ≥2 crops (or any if ≤2 total) + acc_counter = Counter(a for crop_acc in accessories_per_crop for a in crop_acc) + threshold = 2 if len(crops) > 2 else 1 + accessories = sorted(a for a, cnt in acc_counter.items() if cnt >= threshold) + + return { + "hair_color": hair, + "upper_color": upper, + "lower_color": lower, + "lower_type": lower_type if lower_type != "unknown" else "pants", + "shoe_color": shoes, + "accessories": accessories, + "carried_objects": [], # SegFormer detects bags; other objects need YOLO + } + + # ============================================================================ # Description Generation (template-based, free) # ============================================================================ @@ -393,33 +556,55 @@ def build_description(attrs: Dict) -> str: """ Build a natural description from structured attributes. - Examples: - {"upper_color": "blue", "lower_color": "black", "carried_objects": ["backpack"]} - → "a person in a blue top and black pants carrying a backpack" + Handles both old-style (upper_color/lower_color only) and new segformer-style + (hair_color, lower_type, shoe_color, accessories) attributes. - {"upper_color": "gray", "lower_color": "green", "carried_objects": []} - → "a person in a gray top and green pants" - """ - parts = [] + Examples (segformer): + → "a person with dark hair, wearing a blue top and black pants, with white shoes" + → "a person wearing a red top and gray skirt, carrying a bag" + Examples (old-style): + → "a person in a blue top and black pants carrying a backpack" + """ + hair = attrs.get("hair_color") upper = attrs.get("upper_color", "unknown") lower = attrs.get("lower_color", "unknown") + lower_type = attrs.get("lower_type", "pants") + shoes = attrs.get("shoe_color") + accessories = attrs.get("accessories", []) + carried = attrs.get("carried_objects", []) - if upper != "unknown" and lower != "unknown": - parts.append(f"a person in a {upper} top and {lower} pants") - elif upper != "unknown": - parts.append(f"a person in a {upper} top") - elif lower != "unknown": - parts.append(f"a person in {lower} pants") - else: - parts.append("a person") + desc = "a person" + + # Hair color + if hair and hair != "unknown": + desc += f" with {hair} hair" + + # Clothing + clothing_parts = [] + if upper != "unknown": + clothing_parts.append(f"a {upper} top") + if lower != "unknown": + clothing_parts.append(f"{lower} {lower_type}") + + if clothing_parts: + desc += ", wearing " + " and ".join(clothing_parts) - objects = attrs.get("carried_objects", []) - if objects: - obj_str = " and ".join(objects[:2]) # Max 2 objects - parts[0] += f" carrying a {obj_str}" + # Shoes + if shoes and shoes != "unknown": + desc += f", {shoes} shoes" - return parts[0] + # Accessories (worn items: hat, sunglasses, scarf) + worn = [a for a in accessories if a in ("hat", "sunglasses", "scarf")] + if worn: + desc += f", with a {' and '.join(worn)}" + + # Carried items (bag from segformer + YOLO objects) + carried_items = (["bag"] if "bag" in accessories else []) + list(carried[:2]) + if carried_items: + desc += f", carrying a {' and '.join(carried_items[:2])}" + + return desc # ============================================================================ @@ -509,16 +694,19 @@ def find_slot_files(slot: str) -> List[Dict]: return results -def process_slot(slot: str, use_yolo: bool = True, +def process_slot(slot: str, method: str = "segformer", verbose: bool = False) -> Dict: """ Full pipeline: extract descriptions for all actors in a slot. + Args: + method: "segformer" (default, richest), "yolo", or "color-only" + Returns dict ready for JSON output: { "slot": "...", "cameras": {...}, - "actors": {actor_id_str: {camera, upper_color, lower_color, objects, description}}, + "actors": {actor_id_str: {camera, upper_color, lower_color, ..., description}}, "stats": {...} } """ @@ -528,13 +716,20 @@ def process_slot(slot: str, use_yolo: bool = True, if verbose: print(f"\n Slot: {slot}") print(f" Found {len(files)} cameras with geom annotations") + print(f" Method: {method}") - if use_yolo: + if method == "yolo": if verbose: print(f" Loading YOLO model...", end="", flush=True) _get_yolo() if verbose: print(" done.") + elif method == "segformer": + if verbose: + print(f" Loading SegFormer model...", end="", flush=True) + _get_segformer() + if verbose: + print(" done.") all_actors = {} cam_stats = {} @@ -587,20 +782,26 @@ def process_slot(slot: str, use_yolo: bool = True, if not crops: continue - if use_yolo: + if method == "segformer": + attrs = analyze_crops_segformer(crops) + elif method == "yolo": attrs = analyze_crops_yolo(crops) else: attrs = analyze_crops_color_only(crops) desc = build_description(attrs) - # Store by camera_actorID (matching V8 entity ID format) + # Store by camera_actorID (matching entity ID format) entity_key = f"{cam}_actor_{actor_id}" all_actors[entity_key] = { "actor_id": actor_id, "camera": cam, + "hair_color": attrs.get("hair_color", "unknown"), "upper_color": attrs.get("upper_color", "unknown"), "lower_color": attrs.get("lower_color", "unknown"), + "lower_type": attrs.get("lower_type", "pants"), + "shoe_color": attrs.get("shoe_color", "unknown"), + "accessories": attrs.get("accessories", []), "carried_objects": attrs.get("carried_objects", []), "description": desc, "num_crops": len(crops), @@ -609,7 +810,7 @@ def process_slot(slot: str, use_yolo: bool = True, analyze_time = time.time() - t2 if verbose: - print(f" Analysis: {analyze_time:.1f}s ({'YOLO' if use_yolo else 'color-only'})") + print(f" Analysis: {analyze_time:.1f}s ({method})") cam_stats[cam] = { "actors": len(actors), @@ -627,7 +828,7 @@ def process_slot(slot: str, use_yolo: bool = True, result = { "slot": slot, - "method": "yolo" if use_yolo else "color_only", + "method": method, "total_actors": len(all_actors), "actors_with_colors": described, "actors_without_colors": len(all_actors) - described, @@ -654,20 +855,30 @@ def process_slot(slot: str, use_yolo: bool = True, def main(): parser = argparse.ArgumentParser( - description="V8 Entity Description Extractor — Geom + Video → YOLO descriptions", + description="V10 Entity Description Extractor — Geom + Video → rich descriptions", ) parser.add_argument("--slot", "-s", required=True, help="Slot to process (e.g., 2018-03-11.11-25.school)") + parser.add_argument("--method", "-m", default="segformer", + choices=["segformer", "yolo", "color-only"], + help="Analysis method: segformer (best, default), yolo, color-only") parser.add_argument("--no-yolo", action="store_true", - help="Color-only analysis (no YOLO, faster but no carried objects)") + help="DEPRECATED: use --method color-only instead") parser.add_argument("--dry-run", action="store_true", help="Show what would be processed without extracting") parser.add_argument("--output", "-o", - help="Output path (default: data/entity_descriptions/{slot}.json)") + help=f"Output path (default: {OUTPUT_DIR}/{{slot}}.json)") parser.add_argument("--verbose", "-v", action="store_true") args = parser.parse_args() + # Handle deprecated --no-yolo flag + method = args.method + if args.no_yolo and method == "segformer": + method = "color-only" + + args = parser.parse_args() + if args.dry_run: files = find_slot_files(args.slot) print(f"\n Slot: {args.slot}") @@ -686,7 +897,7 @@ def main(): print(f" {cam}: {len(actors)} actors, {usable} usable, video={'YES' if has_video else 'NO'} ({vfmt})") return - result = process_slot(args.slot, use_yolo=not args.no_yolo, verbose=args.verbose) + result = process_slot(args.slot, method=method, verbose=args.verbose) # Save OUTPUT_DIR.mkdir(parents=True, exist_ok=True) @@ -703,8 +914,8 @@ def main(): if desc in seen or desc == "a person": continue seen.add(desc) - print(f" {info['camera']} actor ...{str(info['actor_id'])[-6:]}: {desc}") - if len(seen) >= 10: + print(f" {info['camera']} actor {info['actor_id']:>6}: {desc}") + if len(seen) >= 15: break From 64b95d1e4dddf7c95e6f517be0cec4f5dd1db367 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Fri, 27 Feb 2026 02:04:18 -0600 Subject: [PATCH 13/26] Update V10 pipeline: temporal, spatial, perception, event ordering, naturalization, and run scripts --- meva/run.sh | 35 +++- meva/scripts/v10/activity_hierarchy.py | 37 +++- meva/scripts/v10/generate_best_camera.py | 16 +- meva/scripts/v10/generate_event_ordering.py | 23 ++- meva/scripts/v10/generate_perception.py | 37 +++- meva/scripts/v10/generate_spatial.py | 100 ++++++++++- meva/scripts/v10/generate_temporal.py | 179 +++++++++++++++++++- meva/scripts/v10/naturalize.py | 45 ++++- meva/scripts/v10/person_descriptions.py | 20 ++- meva/scripts/v10/run_pipeline.py | 10 +- 10 files changed, 461 insertions(+), 41 deletions(-) diff --git a/meva/run.sh b/meva/run.sh index 2ca636b..b7623e6 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -17,9 +17,24 @@ # set -e -export MEVA_OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data" -SLOT="${1:-2018-03-11.11-25.school}" + OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data" +mkdir -p "$OUTPUT_DIR/qa_pairs/raw" +ENV_FILE="/home/ah66742/.env" # this is where OPENAI_API_KEY is +export MEVA_OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data/" + + +# Parse args: extract --n flag and positional slot +NATURALIZE=false +SLOT="" +for arg in "$@"; do + if [[ "$arg" == "--n" ]]; then + NATURALIZE=true + elif [[ "$arg" != --* ]]; then + SLOT="$arg" + fi +done +SLOT="${SLOT:-2018-03-11.11-25.school}" # export PYTHONPATH=$PYTHONPATH:$(pwd) @@ -29,13 +44,21 @@ python3 -m scripts.v10.run_pipeline \ -v \ --seed 42 -RAW_JSON="$OUTPUT_DIR/qa_pairs/$SLOT.final.raw.json" + +RAW_JSON="$OUTPUT_DIR/qa_pairs/raw/$SLOT.raw.json" # echo "" # echo "=== Step 2: Naturalization (GPT — requires OPENAI_API_KEY) ===" -# python3 -m scripts.v10.naturalize \ -# --input "$RAW_JSON" \ -# -v --yes +if $NATURALIZE; then + # Load .env for OPENAI_API_KEY if not already set + if [[ -z "$OPENAI_API_KEY" && -f "$ENV_FILE" ]]; then + set -a; source "$ENV_FILE"; set +a + fi + python3 -m scripts.v10.naturalize \ + --input "$RAW_JSON" \ + --output "$OUTPUT_DIR/qa_pairs/$SLOT.naturalized.json" \ + -v --yes +fi # echo "" # echo "=== Step 3: Export to multi-cam-dataset format ===" diff --git a/meva/scripts/v10/activity_hierarchy.py b/meva/scripts/v10/activity_hierarchy.py index 22a5626..9b1ef20 100644 --- a/meva/scripts/v10/activity_hierarchy.py +++ b/meva/scripts/v10/activity_hierarchy.py @@ -178,10 +178,43 @@ def humanize_activity(activity: str) -> str: "drops": "dropping", "embraces": "embracing", "uses": "using", "makes": "making", "steals": "stealing", "starts": "starting", "stops": "stopping", "turns": "turning", "transfers": "transferring", - "reverses": "reversing", + "reverses": "reversing", "abandons": "abandoning", + "leaves": "leaving", "purchases": "purchasing", } +def _conjugate_gerund(verb: str) -> str: + """Smart fallback: conjugate an unknown verb to its -ing form. + + Handles common English patterns: + leaves → leaving, purchases → purchasing, transfers → transferring, + runs → running, sits → sitting, walks → walking + """ + if verb in _GERUND_MAP: + return _GERUND_MAP[verb] + # Strip third-person 's'/'es' to get base form + if verb.endswith("es"): + base = verb[:-2] # "leaves" → "leav", "purchases" → "purchas" + elif verb.endswith("s") and not verb.endswith("ss"): + base = verb[:-1] # "abandons" → "abandon" + else: + base = verb + # Apply standard English gerund rules on base form + if base.endswith("ie"): # "die" → "dying" + return base[:-2] + "ying" + if base.endswith("ee"): # "see" → "seeing" + return base + "ing" + if base.endswith("e"): # "leave" → "leaving", "make" → "making" + return base[:-1] + "ing" + # CVC doubling: short base ending in consonant-vowel-consonant + if (len(base) >= 3 + and base[-1] not in "aeiouwxy" + and base[-2] in "aeiou" + and base[-3] not in "aeiou"): + return base + base[-1] + "ing" # "run" → "running", "sit" → "sitting" + return base + "ing" + + def humanize_activity_gerund(activity: str) -> str: """ Convert activity to gerund form for sentence construction. @@ -191,7 +224,7 @@ def humanize_activity_gerund(activity: str) -> str: words = base.split() if words: first = words[0] - gerund = _GERUND_MAP.get(first, first + "ing") + gerund = _conjugate_gerund(first) rest = " ".join(words[1:]) # Only add article if rest starts with a noun-like word # Skip if rest starts with preposition, adverb, article, or particle diff --git a/meva/scripts/v10/generate_best_camera.py b/meva/scripts/v10/generate_best_camera.py index b7f8661..da8d57b 100644 --- a/meva/scripts/v10/generate_best_camera.py +++ b/meva/scripts/v10/generate_best_camera.py @@ -180,7 +180,21 @@ def generate_best_camera_qa(sg: SceneGraph, resolved: ResolvedGraph, # Attempt to generate `count` questions candidate_list = list(candidates.items()) - rng.shuffle(candidate_list) + + # V10: Sort candidates so entities with visual descriptions come first + # This avoids generating generic "a person" questions when better options exist + def _has_visual_desc(item): + cid, _ = item + desc = _get_entity_description(cid, sg, entity_descs, resolved) + return 0 if desc != "a person" else 1 + candidate_list.sort(key=_has_visual_desc) + + # Shuffle within each priority group (visual first, then generic) + visual_cands = [c for c in candidate_list if _has_visual_desc(c) == 0] + generic_cands = [c for c in candidate_list if _has_visual_desc(c) == 1] + rng.shuffle(visual_cands) + rng.shuffle(generic_cands) + candidate_list = visual_cands + generic_cands for cluster_id, events_cams in candidate_list: if len(qa_pairs) >= count: diff --git a/meva/scripts/v10/generate_event_ordering.py b/meva/scripts/v10/generate_event_ordering.py index 40a2846..e2213d1 100644 --- a/meva/scripts/v10/generate_event_ordering.py +++ b/meva/scripts/v10/generate_event_ordering.py @@ -82,7 +82,26 @@ def _get_event_description(event: Event, sg: SceneGraph, if act_check in desc.lower() or activity_text.lower() in desc.lower(): return f"{desc} on camera {event.camera_id}" return f"{desc}, {activity_text.lower()} on camera {event.camera_id}" - return f"Someone {activity_text.lower()} on camera {event.camera_id}" + + # Use fallback description if available (still better than "Someone") + if fallback_desc: + act_check = humanize_activity(event.activity).lower() + if act_check in fallback_desc.lower() or activity_text.lower() in fallback_desc.lower(): + return f"{fallback_desc} on camera {event.camera_id}" + return f"{fallback_desc}, {activity_text.lower()} on camera {event.camera_id}" + + # Last resort: use geom description directly from entity_descs + for eid, entity in sg.entities.items(): + if entity.camera_id == event.camera_id: + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + d = entity_descs.get(eid) + if d and d not in ("a person", "a vehicle", "someone"): + if activity_text.lower() in d.lower(): + return f"{d} on camera {event.camera_id}" + return f"{d}, {activity_text.lower()} on camera {event.camera_id}" + + return f"A person {activity_text.lower()} on camera {event.camera_id}" # ============================================================================ @@ -335,7 +354,7 @@ def _build_question_text(descriptions: List[str]) -> str: Identify the correct chronological order of the following events observed across the cameras: I. A person wearing a gray top, opening a facility door on camera G421 - II. Someone entering a scene through a structure on camera G330 + II. A person entering a scene through a structure on camera G330 ... Which is the correct chronological order? """ diff --git a/meva/scripts/v10/generate_perception.py b/meva/scripts/v10/generate_perception.py index c2d762a..8134a50 100644 --- a/meva/scripts/v10/generate_perception.py +++ b/meva/scripts/v10/generate_perception.py @@ -159,10 +159,10 @@ def generate_perception_qa(sg: SceneGraph, resolved: ResolvedGraph, correct_idx = options.index(f"Camera {correct_cam}") human_act = humanize_activity(act) - # Use gerund form for natural sentence: "Which camera captures someone opening a door?" + # Use gerund form for natural sentence: "Which camera captures a person opening a door?" gerund_act = humanize_activity_gerund(act) gerund_lower = gerund_act[0].lower() + gerund_act[1:] - question = f"Which camera captures someone {gerund_lower}?" + question = f"Which camera captures a person {gerund_lower}?" rep_event = activity_events[act][0] if activity_events[act] else None @@ -243,10 +243,41 @@ def generate_perception_qa(sg: SceneGraph, resolved: ResolvedGraph, desc = get_person_description(pid) gpt_desc = pdata.get("gpt_description", "") + # V10: Build a contextual question that identifies WHICH person + # Find an activity this person performs on this camera + person_activity = None + for evt in sg.events: + if evt.camera_id == cam: + for actor in evt.actors: + # Try to match MEVID person to event actor + eid = f"{cam}_actor_{actor['actor_id']}" + entity = sg.entities.get(eid) + if entity and hasattr(entity, '_mevid_person_id') and entity._mevid_person_id == pid: + person_activity = evt.activity + break + if person_activity: + break + + # Build contextual person identifier + if person_activity: + act_gerund = humanize_activity_gerund(person_activity) + person_context = f"A person {act_gerund.lower()} is visible on camera {cam}." + else: + # Use partial description to identify without revealing answer + lower_color = pdata.get("primary_lower_color", "unknown") + if attr_opts["attribute_type"] == "upper_color" and lower_color != "unknown": + person_context = f"A person wearing {lower_color} pants is visible on camera {cam}." + else: + upper_color = pdata.get("primary_upper_color", "unknown") + if attr_opts["attribute_type"] == "lower_color" and upper_color != "unknown": + person_context = f"A person in a {upper_color} top is visible on camera {cam}." + else: + person_context = f"A person is visible on camera {cam}." + # Frame the question: show the person on a camera, ask about attribute if attr_opts["attribute_type"] == "upper_color": question = ( - f"A person is visible on camera {cam}. " + f"{person_context} " f"What color is their upper body clothing?" ) elif attr_opts["attribute_type"] == "lower_color": diff --git a/meva/scripts/v10/generate_spatial.py b/meva/scripts/v10/generate_spatial.py index a29d9e7..dac109a 100644 --- a/meva/scripts/v10/generate_spatial.py +++ b/meva/scripts/v10/generate_spatial.py @@ -16,7 +16,7 @@ from .build_scene_graph import SceneGraph, Entity from .entity_resolution import ResolvedGraph from .person_descriptions import enrich_entities -from .activity_hierarchy import humanize_activity +from .activity_hierarchy import humanize_activity, humanize_activity_gerund from .utils.krtd import ( load_camera_model, CameraModel, compute_entity_distance, classify_proximity, INDOOR_CAMERAS, @@ -24,6 +24,44 @@ from .utils.yaml_stream import get_bbox_at_frame DEFAULT_FPS = 30.0 +FRAME_WIDTH = 1920 +FRAME_HEIGHT = 1080 +FRAME_EDGE_MARGIN = 10 # pixels + + +def _is_bbox_clipping_frame(bbox: List[int], margin: int = FRAME_EDGE_MARGIN) -> bool: + """Check if a bounding box is clipping the frame edge.""" + if not bbox or len(bbox) < 4: + return False + x1, y1, x2, y2 = bbox[:4] + return (x1 <= margin or y1 <= margin or + x2 >= FRAME_WIDTH - margin or y2 >= FRAME_HEIGHT - margin) + + +def _disambiguate_description(desc: str, entity: Entity, sg: SceneGraph, + other_desc: str) -> str: + """Add disambiguating context when two entities share the same description. + + Appends temporal or activity context to make descriptions unique. + """ + # Find primary activity for this entity + primary_activity = None + for evt in sg.events: + if evt.camera_id == entity.camera_id: + for actor in evt.actors: + if actor["actor_id"] == entity.actor_id: + primary_activity = evt.activity + break + if primary_activity: + break + + # Add temporal context + time_str = f"at {entity.first_sec:.0f}s" + + if primary_activity: + act_gerund = humanize_activity_gerund(primary_activity) + return f"{desc} ({act_gerund.lower()} {time_str})" + return f"{desc} ({time_str})" # ============================================================================ @@ -80,6 +118,12 @@ def _find_spatial_candidates(sg: SceneGraph, verbose: bool = False) -> List[Dict if pos is None: continue + # V10: Skip entities whose bbox clips the frame edge + if _is_bbox_clipping_frame(bbox): + if verbose: + print(f" Skipping {eid}: bbox clips frame edge {bbox}") + continue + entity_positions[eid] = { "position": pos, "frame": mid_frame, @@ -155,13 +199,24 @@ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, return [] # Filter out pairs with identical descriptions (indistinguishable entities) + # V10: Instead of just filtering, try to disambiguate with activity/time context filtered = [] for c in candidates: desc_a = entity_descs.get(c["entity_a"], "") desc_b = entity_descs.get(c["entity_b"], "") if desc_a and desc_b and desc_a == desc_b: - if verbose: - print(f" Filtering spatial pair: identical descriptions '{desc_a}'") + # Try to disambiguate + ent_a = c["entity_a_obj"] + ent_b = c["entity_b_obj"] + new_a = _disambiguate_description(desc_a, ent_a, sg, desc_b) + new_b = _disambiguate_description(desc_b, ent_b, sg, desc_a) + if new_a != new_b: + # Store disambiguated descriptions for use in question text + c["disambiguated_a"] = new_a + c["disambiguated_b"] = new_b + filtered.append(c) + elif verbose: + print(f" Filtering spatial pair: cannot disambiguate '{desc_a}'") continue filtered.append(c) candidates = filtered @@ -185,17 +240,37 @@ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, rng.shuffle(moderate) rng.shuffle(far) + # Dedup: track (desc_a, desc_b, camera) tuples to avoid identical-looking questions + def _dedup_key(c): + da = c.get("disambiguated_a") or entity_descs.get(c["entity_a"], "") + db = c.get("disambiguated_b") or entity_descs.get(c["entity_b"], "") + cam = c["camera_a"] + # Normalize order so (A,B) == (B,A) + pair = tuple(sorted([da, db])) + return (pair, cam) + + seen_keys = set() + def _try_add(c, selected_list): + key = _dedup_key(c) + if key in seen_keys: + return False + seen_keys.add(key) + selected_list.append(c) + return True + selected = [] for bucket in [near, moderate, far]: if bucket and len(selected) < count: - selected.append(bucket[0]) + for b in bucket: + if _try_add(b, selected): + break remaining = near[1:] + moderate[1:] + far[1:] rng.shuffle(remaining) for c in remaining: if len(selected) >= count: break - selected.append(c) + _try_add(c, selected) qa_pairs = [] @@ -207,13 +282,20 @@ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, # All spatial questions are same-camera (filtered in _find_spatial_candidates) - # V8: Use MEVID descriptions - desc_a = entity_descs.get(cand["entity_a"], f"a person on camera {cand['camera_a']}") - desc_b = entity_descs.get(cand["entity_b"], f"a person on camera {cand['camera_b']}") + # V10: Use disambiguated descriptions if available, else MEVID/geom + desc_a = cand.get("disambiguated_a") or entity_descs.get(cand["entity_a"], f"a person on camera {cand['camera_a']}") + desc_b = cand.get("disambiguated_b") or entity_descs.get(cand["entity_b"], f"a person on camera {cand['camera_b']}") + + # V10: Cross-category enrichment — add temporal context to spatial questions + time_a = f"{ent_a.first_sec:.0f}s" + time_b = f"{ent_b.first_sec:.0f}s" + temporal_context = "" + if abs(ent_a.first_sec - ent_b.first_sec) > 10: + temporal_context = f" (around the {time_a}-{time_b} mark)" question = ( f"How close are {desc_a} and {desc_b} " - f"in the scene visible on camera {cand['camera_a']}?" + f"in the scene visible on camera {cand['camera_a']}{temporal_context}?" ) options = [ diff --git a/meva/scripts/v10/generate_temporal.py b/meva/scripts/v10/generate_temporal.py index edbc6a2..c0ecc67 100644 --- a/meva/scripts/v10/generate_temporal.py +++ b/meva/scripts/v10/generate_temporal.py @@ -11,7 +11,9 @@ from pathlib import Path from typing import Any, Dict, List, Optional, Set, Tuple -from .parse_annotations import Event +import numpy as np + +from .parse_annotations import Event, find_clips_for_slot from .build_scene_graph import SceneGraph, Entity from .entity_resolution import ResolvedGraph from .person_descriptions import enrich_entities, get_mevid_persons_with_cameras @@ -20,6 +22,8 @@ are_related, get_relationship, get_relationship_strength, humanize_activity, ) from .utils.mevid import find_mevid_persons_for_slot +from .utils.krtd import load_camera_model, CameraModel, INDOOR_CAMERAS +from .utils.yaml_stream import get_bbox_at_frame # ============================================================================ # Constants @@ -29,6 +33,124 @@ MAX_GAP = 15.0 FALLBACK_MAX_GAP = 20.0 DEFAULT_FPS = 30.0 +# Cross-camera duplicate detection: if two events have same activity, +# 3D positions within this distance AND time within this window, +# they are likely the same real-world event seen by different cameras. +CROSS_CAM_DEDUP_DISTANCE_M = 5.0 # meters +CROSS_CAM_DEDUP_TIME_SEC = 8.0 # seconds +# Frame boundary margin for bbox-in-frame validation +FRAME_WIDTH = 1920 +FRAME_HEIGHT = 1080 +FRAME_EDGE_MARGIN = 10 # pixels from edge to consider "clipping" + + +# ============================================================================ +# Cross-Camera Event Deduplication +# ============================================================================ + +def _is_bbox_clipping_frame(bbox: List[int], margin: int = FRAME_EDGE_MARGIN) -> bool: + """Check if a bounding box is clipping the frame edge (entity likely out of view).""" + if not bbox or len(bbox) < 4: + return False + x1, y1, x2, y2 = bbox[:4] + return (x1 <= margin or y1 <= margin or + x2 >= FRAME_WIDTH - margin or y2 >= FRAME_HEIGHT - margin) + + +def _get_event_3d_position(event: Event, sg: SceneGraph) -> Optional[np.ndarray]: + """Get approximate 3D world position for an event using KRTD projection. + + Uses the first person actor's bbox at the event's mid-frame. + Returns ENU coordinates or None if projection fails. + """ + if event.camera_id in INDOOR_CAMERAS: + return None + model = load_camera_model(event.camera_id) + if model is None: + return None + + # Find bbox for first person actor + mid_frame = (event.start_frame + event.end_frame) // 2 + for eid, entity in sg.entities.items(): + if entity.camera_id != event.camera_id: + continue + for actor in event.actors: + if actor["actor_id"] == entity.actor_id and entity.entity_type == "person": + # Look for bbox near mid_frame + if entity.keyframe_bboxes: + closest = min(entity.keyframe_bboxes.keys(), + key=lambda f: abs(int(f) - mid_frame)) + if abs(int(closest) - mid_frame) <= 30: # within 1 second + bbox = entity.keyframe_bboxes[closest] + pos = model.bbox_foot_to_world(bbox) + return pos + return None + + +def _is_likely_duplicate_event(ea: Event, eb: Event, sg: SceneGraph) -> bool: + """Check if two cross-camera events are likely the same real-world event. + + Two events are duplicates if they: + 1. Have the same activity type + 2. Are temporally close (within CROSS_CAM_DEDUP_TIME_SEC) + 3. Have similar 3D positions (within CROSS_CAM_DEDUP_DISTANCE_M) + + This catches the case where out-of-sync cameras record the same + real-world action at slightly different timestamps. + """ + # Must be same activity for duplicate detection + if ea.activity != eb.activity: + return False + + # Must be on different cameras (same-camera = not duplicates) + if ea.camera_id == eb.camera_id: + return False + + # Check temporal proximity + time_gap = abs(ea.start_sec - eb.start_sec) + if time_gap > CROSS_CAM_DEDUP_TIME_SEC: + return False + + # If we can get 3D positions, check spatial proximity + pos_a = _get_event_3d_position(ea, sg) + pos_b = _get_event_3d_position(eb, sg) + + if pos_a is not None and pos_b is not None: + dist = float(np.linalg.norm(pos_a - pos_b)) + if dist < CROSS_CAM_DEDUP_DISTANCE_M: + return True # Same place, same time, same activity = duplicate + # If they're far apart, they're distinct events even with same activity + return False + + # Without 3D positions, use heuristic: same activity + close time = likely dup + # Be conservative — only flag if very close temporally + if time_gap <= 3.0: + return True + + return False + + +def _event_has_visible_bbox(event: Event, sg: SceneGraph) -> bool: + """Check if the event's primary actor has a bbox that is fully within the frame. + + Rejects actors whose bounding boxes clip the frame edge, since they + may not be visually identifiable from the camera angle. + """ + mid_frame = (event.start_frame + event.end_frame) // 2 + for eid, entity in sg.entities.items(): + if entity.camera_id != event.camera_id: + continue + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + if entity.keyframe_bboxes: + closest = min(entity.keyframe_bboxes.keys(), + key=lambda f: abs(int(f) - mid_frame)) + if abs(int(closest) - mid_frame) <= 30: + bbox = entity.keyframe_bboxes[closest] + if not _is_bbox_clipping_frame(bbox): + return True + return False # bbox clips edge + return True # No bbox data — assume visible (don't block) # ============================================================================ @@ -157,14 +279,25 @@ def _get_event_description(event: Event, sg: SceneGraph, return desc return f"{desc} {short_act}" - # If only fallback was found, use generic form - if best_desc and (not fallback_eids): + # If only fallback was found, use it (better than "someone") + if best_desc: if short_act in best_desc: return best_desc return f"{best_desc} {short_act}" - # Fallback: V7-style - return f"someone {short_act}" + # Last resort: use any available description from entity_descs + for eid, entity in sg.entities.items(): + if entity.camera_id == event.camera_id: + for actor in event.actors: + if actor["actor_id"] == entity.actor_id: + desc = entity_descs.get(eid) + if desc and desc not in ("a person", "a vehicle", "someone"): + if short_act in desc: + return desc + return f"{desc} {short_act}" + + # Absolute fallback: use "a person" instead of "someone" + return f"a person {short_act}" def _short_option_label(desc: str, activity: str) -> str: @@ -192,7 +325,12 @@ def _find_temporal_candidates(events: List[Event], sg: SceneGraph, resolved: ResolvedGraph, mevid_person_cameras: Dict[int, Set[str]], max_gap: float = MAX_GAP) -> List[Dict]: - """Find cross-camera event pairs within temporal gap constraints.""" + """Find cross-camera event pairs within temporal gap constraints. + + V10 additions: + - Rejects pairs that are likely the same real-world event (cross-camera dedup) + - Rejects events whose actors have bbox clipping the frame edge + """ candidates = [] seen = set() @@ -219,6 +357,14 @@ def _find_temporal_candidates(events: List[Event], sg: SceneGraph, continue seen.add(key) + # V10: Cross-camera event dedup — reject duplicate events + if _is_likely_duplicate_event(first, second, sg): + continue + + # V10: Bbox-in-frame validation — reject actors clipping frame edge + if not _event_has_visible_bbox(first, sg) or not _event_has_visible_bbox(second, sg): + continue + conn = _score_connection(first, second, sg, resolved, mevid_person_cameras) candidates.append({ "event_a": first, @@ -394,11 +540,28 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, desc_a = _get_event_description(ea, sg, entity_descs, fallback_eids) desc_b = _get_event_description(eb, sg, entity_descs, fallback_eids) + # V10: Ensure descriptions are distinct — if identical, add camera context + if desc_a == desc_b: + desc_a = f"{desc_a} (on camera {ea.camera_id})" + desc_b = f"{desc_b} (on camera {eb.camera_id})" + + # V10: Cross-category enrichment — add spatial context (camera ID) + # This helps ground the temporal question spatially + if f"camera" not in desc_a.lower(): + desc_a_enriched = f"{desc_a} on camera {ea.camera_id}" + else: + desc_a_enriched = desc_a + if f"camera" not in desc_b.lower(): + desc_b_enriched = f"{desc_b} on camera {eb.camera_id}" + else: + desc_b_enriched = desc_b + # Build short option labels from descriptions (no camera IDs) short_a = _short_option_label(desc_a, ea.activity) short_b = _short_option_label(desc_b, eb.activity) - question = f"{desc_a} and {desc_b} -- which occurred first?" + # Use enriched descriptions (with camera context) in question text + question = f"{desc_a_enriched} and {desc_b_enriched} -- which occurred first?" options = [ f"{short_a} occurred first", @@ -409,7 +572,7 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, correct_idx = 0 if rng.random() < 0.5: - question = f"{desc_b} and {desc_a} -- which occurred first?" + question = f"{desc_b_enriched} and {desc_a_enriched} -- which occurred first?" options = [ f"{short_b} occurred first", f"{short_a} occurred first", diff --git a/meva/scripts/v10/naturalize.py b/meva/scripts/v10/naturalize.py index d3c3e7d..4623acb 100644 --- a/meva/scripts/v10/naturalize.py +++ b/meva/scripts/v10/naturalize.py @@ -141,9 +141,35 @@ def simplify_description(desc: str) -> str: "pulls": "pulling", "pushes": "pushing", "interacts": "interacting", "drops": "dropping", "embraces": "embracing", "uses": "using", "makes": "making", "steals": "stealing", "starts": "starting", - "stops": "stopping", "turns": "turning", + "stops": "stopping", "turns": "turning", "transfers": "transferring", + "reverses": "reversing", "abandons": "abandoning", + "leaves": "leaving", "purchases": "purchasing", } + +def _conjugate_gerund(verb: str) -> str: + """Smart fallback: conjugate an unknown verb to its -ing form.""" + if verb in _GERUND_MAP: + return _GERUND_MAP[verb] + if verb.endswith("es"): + base = verb[:-2] + elif verb.endswith("s") and not verb.endswith("ss"): + base = verb[:-1] + else: + base = verb + if base.endswith("ie"): + return base[:-2] + "ying" + if base.endswith("ee"): + return base + "ing" + if base.endswith("e"): + return base[:-1] + "ing" + if (len(base) >= 3 + and base[-1] not in "aeiouwxy" + and base[-2] in "aeiou" + and base[-3] not in "aeiou"): + return base + base[-1] + "ing" + return base + "ing" + _NO_ARTICLE = frozenset({ "up", "down", "on", "off", "out", "in", "to", "from", "through", "with", "around", "right", "left", "a", @@ -168,7 +194,7 @@ def _humanize_gerund(activity: str) -> str: return base.capitalize() first = words[0] - gerund = _GERUND_MAP.get(first, first + "ing") + gerund = _conjugate_gerund(first) rest = " ".join(words[1:]) if rest: @@ -643,8 +669,11 @@ def preprocess_all(input_data: Dict, verbose: bool = False, Priority order (resolve conflicts by rank): 1. Preserve factual meaning exactly — never alter facts, person descriptions \ -(clothing colors, carried objects), activities, spatial terms, or answer options -2. Ensure flawless grammar, punctuation, and natural phrasing +(clothing colors, carried objects), spatial terms, or answer options +2. Ensure flawless grammar, punctuation, and natural phrasing — FIX any \ +garbled verb forms (e.g. "leavesing" → "leaving", "transfersing" → \ +"transferring", "purchasesing" → "purchasing"). These are template bugs, \ +not intentional text. 3. Apply creative stylistic variation — use different sentence openings, \ structures, and vocabulary each time. Avoid formulaic patterns like always \ starting with "In this scene..." or "Looking at the cameras..." @@ -654,13 +683,17 @@ def preprocess_all(input_data: Dict, verbose: bool = False, - Do NOT change the meaning of the question. - Do NOT add new facts or details not present in the original. - Do NOT remove constraints or simplify the logical requirement. -- Do NOT alter person descriptions (clothing colors, carried objects). +- Do NOT alter person descriptions (clothing colors, carried objects) — but \ +DO fix obvious grammar errors within them (broken verb conjugations, garbled \ +words, missing articles). - Do not change answer options. - Camera identifiers (e.g., G421) in question text are acceptable ONLY for \ perception and re-identification questions where cameras are inherent. - For PERCEPTION questions ("What activity..." / "Which camera..."), maintain \ the direct question form but you may vary surrounding wording naturally. -- Only improve grammar, clarity, and naturalness. +- You MAY rephrase robotic activity descriptions into natural English \ +(e.g. "entering scene through structure" → "walking in through a doorway"). +- Fix all grammar, spelling, and conjugation errors. ## Ontology Translation Translate robotic activity labels into natural human prose. Examples: diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py index 7855498..6e4d7ad 100644 --- a/meva/scripts/v10/person_descriptions.py +++ b/meva/scripts/v10/person_descriptions.py @@ -444,7 +444,25 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: assigned_persons: Dict[str, Set[str]] = {} # camera → set of used person_ids for eid, entity in sg.entities.items(): - if entity.entity_type != "person": + # Determine effective entity type: if entity is tagged as "vehicle" + # but participates ONLY in person_* activities, treat it as a person. + # This fixes annotation artifacts where types.yml misclassifies actors. + effective_type = entity.entity_type + if effective_type == "vehicle": + # Check if ALL activities for this entity start with 'person_' + entity_activities = [] + for evt in sg.events: + if evt.camera_id == entity.camera_id: + for actor in evt.actors: + if actor["actor_id"] == entity.actor_id: + entity_activities.append(evt.activity) + # If entity has person activities, treat as person + has_person_acts = any(a.startswith("person_") for a in entity_activities) + has_vehicle_acts = any(a.startswith("vehicle_") for a in entity_activities) + if has_person_acts and not has_vehicle_acts: + effective_type = "person" # reclassify + + if effective_type != "person": entity_descriptions[eid] = "a vehicle" continue diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index 141501f..d05ca31 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -83,7 +83,7 @@ # User output directory — override with MEVA_OUTPUT_DIR env var _OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) -OUTPUT_DIR = _OUTPUT / "qa_pairs" +OUTPUT_DIR = _OUTPUT / "qa_pairs" / "raw" MEVA_MP4_BASE = Path("/nas/mars/dataset/MEVA/mp4s") # Entity descriptions directory — override with MEVA_ENTITY_DESC_DIR env var _ENTITY_DESC_DIR = Path(os.environ.get("MEVA_ENTITY_DESC_DIR") or "/nas/mars/dataset/MEVA/entity_descriptions") @@ -277,6 +277,10 @@ def is_duplicate_within_slot(new_q: dict, existing_qs: list) -> bool: if (v_new.get("cluster_id") == v_old.get("cluster_id") and v_new.get("question_type") == v_old.get("question_type")): return True + # V10: Also dedup by question text / entity description + if (v_new.get("question_type") == v_old.get("question_type") and + v_new.get("entity_description") == v_old.get("entity_description")): + return True return False @@ -677,7 +681,7 @@ def main(): parser.add_argument("--slot", help="Slot name (e.g., 2018-03-11.11-25.school)") parser.add_argument("-v", "--verbose", action="store_true", help="Verbose output") parser.add_argument("--seed", type=int, default=RANDOM_SEED, help="Random seed") - parser.add_argument("--output", help="Output file path (default: data/qa_pairs/{slot}.final.raw.json)") + parser.add_argument("--output", help="Output file path (default: data/qa_pairs/raw/{slot}.raw.json)") parser.add_argument("--no-save", action="store_true", help="Don't save to file, just print") parser.add_argument("--list-slots", action="store_true", help="List all canonical slots") @@ -698,7 +702,7 @@ def main(): # Save output if not args.no_save: OUTPUT_DIR.mkdir(parents=True, exist_ok=True) - out_path = Path(args.output) if args.output else OUTPUT_DIR / f"{args.slot}.final.raw.json" + out_path = Path(args.output) if args.output else OUTPUT_DIR / f"{args.slot}.raw.json" with open(out_path, "w") as f: json.dump(output, f, indent=2, default=str) print(f"\nSaved: {out_path}") From a33b8aab189bc8f6f7dd987819c8457d7554f6a6 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Fri, 27 Feb 2026 15:53:42 -0600 Subject: [PATCH 14/26] New changes --- meva/scripts/v10/batch_extract_all_slots.py | 25 +- meva/scripts/v10/batch_generate.py | 449 +++++++++ meva/scripts/v10/entity_resolution.py | 129 ++- .../v10/extract_entity_descriptions.py | 111 ++- meva/scripts/v10/generate_spatial.py | 28 + meva/scripts/v10/generate_temporal.py | 48 + meva/scripts/v10/scene_context.py | 447 +++++++++ meva/scripts/v10/validate_qa.py | 858 ++++++++++++++++++ 8 files changed, 2074 insertions(+), 21 deletions(-) create mode 100644 meva/scripts/v10/batch_generate.py create mode 100644 meva/scripts/v10/scene_context.py create mode 100644 meva/scripts/v10/validate_qa.py diff --git a/meva/scripts/v10/batch_extract_all_slots.py b/meva/scripts/v10/batch_extract_all_slots.py index 1b19477..102a3ca 100755 --- a/meva/scripts/v10/batch_extract_all_slots.py +++ b/meva/scripts/v10/batch_extract_all_slots.py @@ -110,16 +110,21 @@ def find_raw_slots_for_canonical(canonical_slot: str, slot_index: Dict) -> List[ return raw_slots -def run_extraction(slot: str, verbose: bool = False, dry_run: bool = False) -> Dict: +def run_extraction(slot: str, verbose: bool = False, dry_run: bool = False, + method: str = "yolo", force: bool = False) -> Dict: """ Run extract_entity_descriptions.py on a single slot. + Args: + method: 'yolo', 'segformer', or 'color_only' + force: if True, re-extract even if output exists + Returns: {"success": bool, "entities": int, "error": str or None} """ output_path = OUTPUT_DIR / f"{slot}.json" - # Check if already exists and has data - if output_path.exists(): + # Check if already exists and has data (skip if --force not set) + if output_path.exists() and not force: try: with open(output_path) as f: data = json.load(f) @@ -143,6 +148,7 @@ def run_extraction(slot: str, verbose: bool = False, dry_run: bool = False) -> D str(EXTRACTION_SCRIPT), "--slot", slot, "--output", str(output_path), + "--method", method, ] if verbose: cmd.append("-v") @@ -198,7 +204,8 @@ def run_extraction(slot: str, verbose: bool = False, dry_run: bool = False) -> D # ============================================================================ def process_all_slots(dry_run: bool = False, verbose: bool = False, - resume: bool = False) -> Dict: + resume: bool = False, method: str = "yolo", + force: bool = False) -> Dict: """ Process all canonical slots from slot_index.json. @@ -278,7 +285,8 @@ def log(msg: str): log(f"[{i:3d}/{len(canonical_slots)}] {canonical_slot} → {raw_slot}") - result = run_extraction(raw_slot, verbose=verbose, dry_run=dry_run) + result = run_extraction(raw_slot, verbose=verbose, dry_run=dry_run, + method=method, force=force) if result.get("skipped"): log(f" ✓ SKIPPED (already exists, {result['entities']} entities)") @@ -369,6 +377,11 @@ def main(): help="Resume from previous run (skip completed slots)") parser.add_argument("--verbose", "-v", action="store_true", help="Verbose output from extraction script") + parser.add_argument("--method", default="yolo", + choices=["yolo", "segformer", "color_only"], + help="Extraction method (default: yolo)") + parser.add_argument("--force-reextract", action="store_true", + help="Force re-extraction even if descriptions already exist") args = parser.parse_args() @@ -376,6 +389,8 @@ def main(): dry_run=args.dry_run, verbose=args.verbose, resume=args.resume, + method=args.method, + force=args.force_reextract, ) print("\n" + "="*60) diff --git a/meva/scripts/v10/batch_generate.py b/meva/scripts/v10/batch_generate.py new file mode 100644 index 0000000..192bf1c --- /dev/null +++ b/meva/scripts/v10/batch_generate.py @@ -0,0 +1,449 @@ +#!/usr/bin/env python3 +""" +batch_generate.py — Iterative generate→validate→fix→regenerate loop for MEVA QA. + +Orchestrates the full pipeline: + 1. Generate raw QA (run_pipeline) + 2. Validate (validate_qa) + 3. Auto-fix structural issues (grammar, raw leaks, duplicates) + 4. Regenerate only if unfixable issues remain + 5. Repeat until quality score ≥ threshold or max iterations + +Usage: + # Run 5 iterations on one slot + python3 -m scripts.v10.batch_generate --slot 2018-03-11.11-25.school --rounds 5 -v + + # Run 5 iterations on multiple slots + python3 -m scripts.v10.batch_generate --slots 2018-03-11.11-25.school 2018-03-11.16-20.school --rounds 5 + + # Run with custom quality threshold + python3 -m scripts.v10.batch_generate --slot 2018-03-11.11-25.school --rounds 5 --min-score 90 + +Output: + $MEVA_OUTPUT_DIR/qa_pairs/raw/{slot}.raw.json — best raw QA + $MEVA_OUTPUT_DIR/qa_pairs/batch_logs/{slot}.log.json — per-iteration scores +""" + +import argparse +import copy +import json +import os +import re +import sys +import time +from datetime import datetime +from pathlib import Path +from typing import Any, Dict, List, Optional, Set + +try: + from .run_pipeline import run_pipeline + from .validate_qa import validate, Issue, KITWARE_ACTIVITY_IDS +except ImportError: + sys.path.insert(0, str(Path(__file__).resolve().parent)) + from run_pipeline import run_pipeline + from validate_qa import validate, Issue, KITWARE_ACTIVITY_IDS + + +# ============================================================================ +# Constants +# ============================================================================ + +_OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) +RAW_OUTPUT_DIR = _OUTPUT / "qa_pairs" / "raw" +BATCH_LOG_DIR = _OUTPUT / "qa_pairs" / "batch_logs" + +DEFAULT_ROUNDS = 5 +DEFAULT_MIN_SCORE = 90 +DEFAULT_SEED = 42 + + +# ============================================================================ +# Auto-Fix: Grammar +# ============================================================================ + +# Exceptions for a→an (words starting with vowel letter but consonant sound) +_AN_EXCEPTIONS = {"uniform", "university", "unique", "united", "union", + "european", "user", "useful", "usual", "utility", "one", "once"} + + +def fix_grammar(text: str) -> str: + """Fix common grammar issues in generated text.""" + if not text: + return text + + # Fix a [vowel] → an [vowel] (with exceptions) + def _fix_article(m): + word = m.group(1) + if word.lower() in _AN_EXCEPTIONS: + return m.group(0) + return f"an {word}" + + text = re.sub(r'\ba ([aeiouAEIOU]\w*)\b', _fix_article, text) + + # Fix double articles + text = re.sub(r'\b(a|an|the)\s+\1\b', r'\1', text, flags=re.I) + + return text + + +def fix_raw_leaks(text: str) -> str: + """Remove raw pipeline tokens from naturalized text.""" + if not text: + return text + + # Remove raw timestamps: "127.13-133.43s", "at 127s", "42 seconds" + text = re.sub(r'\b\d+\.\d+-\d+\.\d+s\b', '', text) + text = re.sub(r'\bat\s+\d+s\b', '', text) + text = re.sub(r'\b\d{2,3}\s*seconds?\b', '', text) + + # Remove raw activity IDs + for act in KITWARE_ACTIVITY_IDS: + text = text.replace(act, act.split("_", 1)[-1].replace("_", " ")) + + # Remove template artifacts + text = re.sub(r'\{[a-z_]+\}', '', text) + text = re.sub(r'__\w+__', '', text) + + # Collapse multiple spaces + text = re.sub(r'\s{2,}', ' ', text).strip() + + return text + + +# ============================================================================ +# Auto-Fix: Apply Fixes to QA Data +# ============================================================================ + +def auto_fix(data: Dict[str, Any], report: Dict[str, Any], + verbose: bool = False) -> Dict[str, Any]: + """ + Apply automated fixes to QA data based on validation report. + + Fixes (no LLM needed): + - Grammar: a→an, double articles + - Raw leaks: strip timestamps, activity IDs, template artifacts + - Generic descriptions: replace "someone" → "a person" + - Duplicates: drop lower-quality duplicate + + Returns: fixed data (new copy, original unchanged) + """ + fixed = copy.deepcopy(data) + qa_pairs = fixed["qa_pairs"] + + issues_by_qid = {} + for issue in report.get("issues", []): + qid = issue["question_id"] + if qid not in issues_by_qid: + issues_by_qid[qid] = [] + issues_by_qid[qid].append(issue) + + fixes_applied = 0 + + for q in qa_pairs: + qid = q.get("question_id", "") + q_issues = issues_by_qid.get(qid, []) + + for issue in q_issues: + check = issue["check_name"] + + # --- Grammar fixes --- + if check == "grammar": + for field in ("question_template", "correct_answer"): + if field in q: + q[field] = fix_grammar(q[field]) + if "options" in q: + q["options"] = [fix_grammar(o) for o in q["options"]] + if "naturalized_question" in q: + q["naturalized_question"] = fix_grammar(q["naturalized_question"]) + if "naturalized_options" in q: + q["naturalized_options"] = [fix_grammar(o) for o in q["naturalized_options"]] + fixes_applied += 1 + + # --- Raw leak fixes --- + elif check == "raw_token_leak": + for field in ("question_template", "correct_answer"): + if field in q: + q[field] = fix_raw_leaks(q[field]) + if "options" in q: + q["options"] = [fix_raw_leaks(o) for o in q["options"]] + if "naturalized_question" in q: + q["naturalized_question"] = fix_raw_leaks(q["naturalized_question"]) + if "naturalized_options" in q: + q["naturalized_options"] = [fix_raw_leaks(o) for o in q["naturalized_options"]] + fixes_applied += 1 + + # --- Generic description fixes --- + elif check == "generic_description": + # Replace "someone" with "a person" in text fields + for field in ("question_template", "correct_answer"): + if field in q and q[field]: + q[field] = re.sub(r'\bsomeone\b', 'a person', q[field], flags=re.I) + q[field] = re.sub(r'\bSomeone\b', 'A person', q[field]) + if "options" in q: + q["options"] = [ + re.sub(r'\bsomeone\b', 'a person', o, flags=re.I) for o in q["options"] + ] + fixes_applied += 1 + + # --- Duplicate removal --- + # Find pairs flagged as duplicates + dup_qids_to_remove = set() + for issue in report.get("issues", []): + if issue["check_name"] in ("duplicate", "near_duplicate"): + # The flagged question_id is one of the duplicates + # Keep the first (lower index), remove the second if possible + msg = issue.get("message", "") + # Extract the other QID from the message + other_match = re.search(r'of (final_\w+_\d+)', msg) + if other_match: + other_qid = other_match.group(1) + # Remove the one with higher index (comes later) + qid = issue["question_id"] + # Compare by index number + try: + idx_a = int(re.search(r'(\d+)$', qid).group(1)) + idx_b = int(re.search(r'(\d+)$', other_qid).group(1)) + dup_qids_to_remove.add(qid if idx_a > idx_b else other_qid) + except (AttributeError, ValueError): + dup_qids_to_remove.add(qid) + + if dup_qids_to_remove: + original_count = len(qa_pairs) + qa_pairs = [q for q in qa_pairs if q.get("question_id") not in dup_qids_to_remove] + fixed["qa_pairs"] = qa_pairs + fixed["total_questions"] = len(qa_pairs) + fixes_applied += len(dup_qids_to_remove) + if verbose: + print(f" Removed {original_count - len(qa_pairs)} duplicate questions") + + if verbose: + print(f" Auto-fixes applied: {fixes_applied}") + + return fixed + + +# ============================================================================ +# Iterative Loop +# ============================================================================ + +def run_iterative( + slot: str, + rounds: int = DEFAULT_ROUNDS, + min_score: int = DEFAULT_MIN_SCORE, + verbose: bool = False, + seed: int = DEFAULT_SEED, +) -> Dict[str, Any]: + """ + Run the iterative generate→validate→fix→regenerate loop. + + Args: + slot: Slot name (e.g., "2018-03-11.11-25.school") + rounds: Maximum number of iterations + min_score: Target quality score (0-100) + verbose: Print detailed output + seed: Random seed + + Returns: + { + "slot": str, + "final_score": int, + "iterations": int, + "scores": [int, ...], + "issues_per_round": [int, ...], + "best_round": int, + "output_path": str, + } + """ + RAW_OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + BATCH_LOG_DIR.mkdir(parents=True, exist_ok=True) + + iteration_log = { + "slot": slot, + "started_at": datetime.now().isoformat(), + "rounds_requested": rounds, + "min_score": min_score, + "seed": seed, + "iterations": [], + } + + best_score = -1 + best_data = None + best_round = 0 + scores = [] + issue_counts = [] + + for round_num in range(1, rounds + 1): + t0 = time.time() + + if verbose: + print(f"\n{'='*60}") + print(f"Round {round_num}/{rounds} — Slot: {slot}") + print(f"{'='*60}") + + # Step 1: Generate (vary seed per round for diversity) + round_seed = seed + round_num - 1 + try: + data = run_pipeline(slot, verbose=verbose, seed=round_seed, + require_mevid=False) + except Exception as e: + if verbose: + print(f" Generation FAILED: {e}") + iteration_log["iterations"].append({ + "round": round_num, + "status": "generation_failed", + "error": str(e), + "time_sec": round(time.time() - t0, 2), + }) + scores.append(0) + issue_counts.append(999) + continue + + # Step 2: Validate + report = validate(data, verbose=verbose) + score = report["quality_score"] + total_issues = report["total_issues"] + + if verbose: + print(f"\n Round {round_num} score: {score}/100 ({total_issues} issues)") + + # Step 3: Auto-fix + if total_issues > 0: + if verbose: + print(f" Applying auto-fixes...") + data = auto_fix(data, report, verbose=verbose) + + # Re-validate after fixes + report_after = validate(data, verbose=False) + score_after = report_after["quality_score"] + issues_after = report_after["total_issues"] + + if verbose: + print(f" Post-fix score: {score_after}/100 ({issues_after} issues)") + + score = score_after + total_issues = issues_after + + scores.append(score) + issue_counts.append(total_issues) + + # Track best + if score > best_score: + best_score = score + best_data = data + best_round = round_num + + # Log iteration + elapsed = round(time.time() - t0, 2) + iteration_log["iterations"].append({ + "round": round_num, + "status": "ok", + "seed": round_seed, + "score_before_fix": report["quality_score"], + "score_after_fix": score, + "issues_before_fix": report["total_issues"], + "issues_after_fix": total_issues, + "total_questions": data.get("total_questions", 0), + "time_sec": elapsed, + }) + + # Early exit if target reached + if score >= min_score: + if verbose: + print(f"\n Target score {min_score} reached in round {round_num}!") + break + + # Save best result + if best_data: + out_path = RAW_OUTPUT_DIR / f"{slot}.raw.json" + with open(out_path, "w") as f: + json.dump(best_data, f, indent=2, default=str) + if verbose: + print(f"\n Saved best result (round {best_round}, score {best_score}): {out_path}") + + # Save batch log + iteration_log["completed_at"] = datetime.now().isoformat() + iteration_log["best_round"] = best_round + iteration_log["best_score"] = best_score + iteration_log["scores"] = scores + iteration_log["issue_counts"] = issue_counts + + log_path = BATCH_LOG_DIR / f"{slot}.log.json" + with open(log_path, "w") as f: + json.dump(iteration_log, f, indent=2) + + if verbose: + print(f"\n{'='*60}") + print(f"BATCH COMPLETE — {slot}") + print(f"{'='*60}") + print(f" Rounds: {len(scores)}") + print(f" Scores: {scores}") + print(f" Best: round {best_round} → {best_score}/100") + print(f" Log: {log_path}") + + return { + "slot": slot, + "final_score": best_score, + "iterations": len(scores), + "scores": scores, + "issues_per_round": issue_counts, + "best_round": best_round, + "output_path": str(RAW_OUTPUT_DIR / f"{slot}.raw.json"), + } + + +# ============================================================================ +# CLI +# ============================================================================ + +def main(): + parser = argparse.ArgumentParser( + description="Iterative QA generation + validation loop" + ) + parser.add_argument("--slot", help="Single slot to process") + parser.add_argument("--slots", nargs="+", help="Multiple slots to process") + parser.add_argument("--rounds", type=int, default=DEFAULT_ROUNDS, + help=f"Max iterations per slot (default: {DEFAULT_ROUNDS})") + parser.add_argument("--min-score", type=int, default=DEFAULT_MIN_SCORE, + help=f"Target quality score (default: {DEFAULT_MIN_SCORE})") + parser.add_argument("--seed", type=int, default=DEFAULT_SEED, + help="Base random seed") + parser.add_argument("-v", "--verbose", action="store_true", + help="Verbose output") + args = parser.parse_args() + + slots = [] + if args.slot: + slots.append(args.slot) + if args.slots: + slots.extend(args.slots) + + if not slots: + parser.error("Provide --slot or --slots") + + results = [] + for slot in slots: + result = run_iterative( + slot, + rounds=args.rounds, + min_score=args.min_score, + verbose=args.verbose, + seed=args.seed, + ) + results.append(result) + + # Summary + print(f"\n{'='*70}") + print(f"BATCH SUMMARY") + print(f"{'='*70}") + print(f"{'Slot':45s} {'Rounds':>6s} {'Best':>5s} {'Final':>6s}") + print("-" * 70) + for r in results: + print(f"{r['slot']:45s} {r['iterations']:6d} " + f"{r['best_round']:5d} {r['final_score']:6d}/100") + + avg_score = sum(r["final_score"] for r in results) / len(results) if results else 0 + print(f"\nAverage final score: {avg_score:.1f}/100") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/entity_resolution.py b/meva/scripts/v10/entity_resolution.py index 3cb80a6..e4875b1 100644 --- a/meva/scripts/v10/entity_resolution.py +++ b/meva/scripts/v10/entity_resolution.py @@ -1,13 +1,15 @@ """ V7 entity_resolution.py — Step 3: Cross-camera entity linking. -Uses MEVID ground truth person IDs + heuristic temporal handoff for -cross-camera entity resolution. Produces entity clusters where each -cluster represents the same real-world person across cameras. +Uses MEVID ground truth person IDs + heuristic temporal handoff + 3D spatial +proximity for cross-camera entity resolution. Produces entity clusters where +each cluster represents the same real-world person across cameras. V7: Added MEVID validation stats to ResolvedGraph output. +V10: Added 3D spatial proximity + description similarity boosting. """ +import re from typing import Any, Dict, List, Optional, Set, Tuple from collections import defaultdict from dataclasses import dataclass, asdict @@ -227,17 +229,129 @@ def _resolve_heuristic(sg: SceneGraph, verbose: bool = False) -> List[CrossCamer return links +# ============================================================================ +# Enhanced Heuristic: 3D Proximity + Description Similarity +# ============================================================================ + +def _normalize_desc_tokens(desc: str) -> Set[str]: + """Normalize entity description to token set for comparison.""" + if not desc: + return set() + desc = re.sub(r'[^\w\s]', ' ', desc.lower()) + stop = {"a", "an", "the", "in", "on", "with", "and", "of", "wearing", + "carrying", "person", "someone", "individual"} + return {w for w in desc.split() if w not in stop and len(w) > 1} + + +def _description_overlap(desc_a: str, desc_b: str) -> float: + """Token overlap ratio between two descriptions (0-1).""" + tokens_a = _normalize_desc_tokens(desc_a) + tokens_b = _normalize_desc_tokens(desc_b) + if not tokens_a or not tokens_b: + return 0.0 + intersection = tokens_a & tokens_b + union = tokens_a | tokens_b + return len(intersection) / len(union) if union else 0.0 + + +def _enhance_links_with_3d( + sg: SceneGraph, + links: List[CrossCameraLink], + entity_descs: Optional[Dict[str, str]] = None, + verbose: bool = False, +) -> List[CrossCameraLink]: + """ + Boost or penalize heuristic link confidence using 3D spatial proximity + and entity description similarity. + + Combined score: 0.4 * temporal + 0.3 * spatial + 0.3 * description + + Args: + sg: Scene graph with entity data + links: Existing heuristic links (temporal handoff) + entity_descs: Optional {entity_id: description_text} map + """ + try: + from .scene_context import compute_3d_matching_score + except ImportError: + if verbose: + print(" 3D matching: scene_context not available, skipping") + return links + + enhanced = [] + boost_count = 0 + + for link in links: + ea = sg.entities.get(link.entity_a) + eb = sg.entities.get(link.entity_b) + + if ea is None or eb is None: + enhanced.append(link) + continue + + # Get last bbox of entity A, first bbox of entity B + bbox_a = None + bbox_b = None + + if ea.keyframe_bboxes: + max_frame = max(ea.keyframe_bboxes.keys()) + bbox_a = ea.keyframe_bboxes[max_frame] + + if eb.keyframe_bboxes: + min_frame = min(eb.keyframe_bboxes.keys()) + bbox_b = eb.keyframe_bboxes[min_frame] + + if bbox_a is None or bbox_b is None: + enhanced.append(link) + continue + + # Description overlap + desc_a = (entity_descs or {}).get(link.entity_a, "") + desc_b = (entity_descs or {}).get(link.entity_b, "") + desc_overlap = _description_overlap(desc_a, desc_b) + + # Compute 3D matching score + result = compute_3d_matching_score( + link.camera_a, bbox_a, + link.camera_b, bbox_b, + time_gap_sec=link.time_gap_sec or 5.0, + description_overlap=desc_overlap, + ) + + if result is None: + enhanced.append(link) + continue + + # Update confidence with combined score + old_conf = link.confidence + new_conf = result["combined_score"] + link.confidence = round(new_conf, 2) + + if new_conf > old_conf: + boost_count += 1 + + enhanced.append(link) + + if verbose and boost_count: + print(f" 3D enhancement: {boost_count}/{len(links)} links boosted") + + return enhanced + + # ============================================================================ # Combined Entity Resolution # ============================================================================ -def resolve_entities(sg: SceneGraph, verbose: bool = False) -> ResolvedGraph: +def resolve_entities(sg: SceneGraph, verbose: bool = False, + entity_descs: Optional[Dict[str, str]] = None) -> ResolvedGraph: """ - Run entity resolution: MEVID ground truth + heuristic temporal handoff. + Run entity resolution: MEVID ground truth + heuristic temporal handoff + + 3D spatial proximity + description similarity. Args: sg: Scene graph from build_scene_graph verbose: Print progress + entity_descs: Optional {entity_id: description} for desc matching Returns: ResolvedGraph with cross-camera links and entity clusters @@ -251,6 +365,11 @@ def resolve_entities(sg: SceneGraph, verbose: bool = False) -> ResolvedGraph: # 2. Heuristic temporal handoff heuristic_links = _resolve_heuristic(sg, verbose) + # 3. Enhance heuristic links with 3D proximity + description similarity + heuristic_links = _enhance_links_with_3d( + sg, heuristic_links, entity_descs, verbose + ) + # 3. Combine links and build clusters using Union-Find all_links = mevid_links + heuristic_links diff --git a/meva/scripts/v10/extract_entity_descriptions.py b/meva/scripts/v10/extract_entity_descriptions.py index 2910726..8a14e2e 100644 --- a/meva/scripts/v10/extract_entity_descriptions.py +++ b/meva/scripts/v10/extract_entity_descriptions.py @@ -222,30 +222,105 @@ def _crop_frame(frame_bgr, frame_idx): # ============================================================================ def _hsv_to_color(h: float, s: float, v: float) -> str: - """Convert OpenCV HSV (H:0-180, S:0-255, V:0-255) to color name.""" + """Convert OpenCV HSV (H:0-180, S:0-255, V:0-255) to ~25 CSS-friendly color names. + + Expanded vocabulary for better entity disambiguation. VLMs trained on web + data recognise names like "navy", "olive", "khaki" better than raw HSV. + + Color map (OpenCV hue 0-180): + achromatic (S<40): black / charcoal / dark gray / gray / silver / ivory / white + chromatic by hue band: + 0-10,170-180 red → maroon / crimson / red + 10-22 orange → rust / orange + 22-35 yellow → khaki / gold / yellow + 35-55 green → olive / green + 55-78 teal → teal + 78-95 blue → teal-blue (low H), navy (low V) + 95-115 blue → blue + 115-131 indigo → indigo + 131-155 purple → plum / purple + 155-170 pink → mauve / pink + """ + # --- Achromatic: low saturation --- if s < 40: - if v < 60: + if v < 30: return "black" - elif v < 150: + elif v < 60: + return "charcoal" + elif v < 100: + return "dark gray" + elif v < 130: return "gray" + elif v < 150: + return "silver" else: + # Slight warm tint → ivory + if 15 <= h <= 35 and s >= 15: + return "ivory" return "white" + # Very dark with some saturation if v < 40: return "black" + + # --- Chromatic: hue-based --- + # Red (H wraps: 0-10 and 170-180) if h < 10 or h > 170: + if v < 100: + return "maroon" + elif s > 150: + return "crimson" return "red" + + # Orange (10-22) elif h < 22: + if v < 120: + return "rust" return "orange" + + # Yellow (22-35) elif h < 35: + if s < 80: + return "khaki" + elif s < 150: + return "gold" return "yellow" - elif h < 78: + + # Green (35-55) + elif h < 55: + if v < 120: + return "olive" return "green" - elif h < 131: + + # Teal-green (55-78) + elif h < 78: + return "teal" + + # Blue range (78-131) + elif h < 95: + if s > 100 and v > 100: + return "teal" + if v < 100: + return "navy" + return "blue" + elif h < 115: + if v < 100: + return "navy" return "blue" + elif h < 131: + return "indigo" + + # Purple (131-155) elif h < 155: + if v < 100: + return "plum" return "purple" + + # Pink (155-170) elif h <= 170: + if s < 100: + return "mauve" return "pink" + return "unknown" @@ -552,19 +627,21 @@ def analyze_crops_segformer(crops: List[np.ndarray]) -> Dict: # Description Generation (template-based, free) # ============================================================================ -def build_description(attrs: Dict) -> str: +def build_description(attrs: Dict, include_position: bool = False) -> str: """ Build a natural description from structured attributes. Handles both old-style (upper_color/lower_color only) and new segformer-style (hair_color, lower_type, shoe_color, accessories) attributes. + Optional positional/height hints for disambiguation. + Examples (segformer): - → "a person with dark hair, wearing a blue top and black pants, with white shoes" - → "a person wearing a red top and gray skirt, carrying a bag" + → "a person with dark hair, wearing a navy top and khaki pants, silver shoes" + → "a person wearing a crimson top and gray skirt, carrying a bag" - Examples (old-style): - → "a person in a blue top and black pants carrying a backpack" + Examples (with position): + → "a tall person with dark hair, wearing a navy top and khaki pants, on the left side" """ hair = attrs.get("hair_color") upper = attrs.get("upper_color", "unknown") @@ -574,7 +651,13 @@ def build_description(attrs: Dict) -> str: accessories = attrs.get("accessories", []) carried = attrs.get("carried_objects", []) - desc = "a person" + # Relative height from bbox (tall/medium/short) + height_hint = attrs.get("height_category") # set by enrich step if available + + desc = "a" + if height_hint and height_hint != "medium": + desc += f" {height_hint}" + desc += " person" # Hair color if hair and hair != "unknown": @@ -604,6 +687,12 @@ def build_description(attrs: Dict) -> str: if carried_items: desc += f", carrying a {' and '.join(carried_items[:2])}" + # Spatial position hint (for disambiguation) + if include_position: + position = attrs.get("frame_position") # "left", "center", "right" + if position and position != "center": + desc += f", on the {position} side" + return desc diff --git a/meva/scripts/v10/generate_spatial.py b/meva/scripts/v10/generate_spatial.py index dac109a..5706cc7 100644 --- a/meva/scripts/v10/generate_spatial.py +++ b/meva/scripts/v10/generate_spatial.py @@ -23,6 +23,13 @@ ) from .utils.yaml_stream import get_bbox_at_frame +# Scene context (optional — graceful degradation) +try: + from .scene_context import get_scene_context, enrich_description_with_location + _HAS_SCENE_CONTEXT = True +except ImportError: + _HAS_SCENE_CONTEXT = False + DEFAULT_FPS = 30.0 FRAME_WIDTH = 1920 FRAME_HEIGHT = 1080 @@ -286,6 +293,27 @@ def _try_add(c, selected_list): desc_a = cand.get("disambiguated_a") or entity_descs.get(cand["entity_a"], f"a person on camera {cand['camera_a']}") desc_b = cand.get("disambiguated_b") or entity_descs.get(cand["entity_b"], f"a person on camera {cand['camera_b']}") + # V10: Enrich with spatial location context if available + if _HAS_SCENE_CONTEXT: + parts = sg.slot.split(".") + if len(parts) >= 3: + site = parts[2] + cam_model = load_camera_model(cand["camera_a"]) + if cam_model is not None: + # Get 3D point for entity A + if ent_a.keyframe_bboxes: + mid_a = min(ent_a.keyframe_bboxes.keys(), + key=lambda f: abs(f - (ent_a.first_frame + ent_a.last_frame)//2)) + pt_a = cam_model.bbox_foot_to_world(ent_a.keyframe_bboxes[mid_a]) + if pt_a is not None: + desc_a = enrich_description_with_location(desc_a, pt_a, site) + if ent_b.keyframe_bboxes: + mid_b = min(ent_b.keyframe_bboxes.keys(), + key=lambda f: abs(f - (ent_b.first_frame + ent_b.last_frame)//2)) + pt_b = cam_model.bbox_foot_to_world(ent_b.keyframe_bboxes[mid_b]) + if pt_b is not None: + desc_b = enrich_description_with_location(desc_b, pt_b, site) + # V10: Cross-category enrichment — add temporal context to spatial questions time_a = f"{ent_a.first_sec:.0f}s" time_b = f"{ent_b.first_sec:.0f}s" diff --git a/meva/scripts/v10/generate_temporal.py b/meva/scripts/v10/generate_temporal.py index c0ecc67..48f367b 100644 --- a/meva/scripts/v10/generate_temporal.py +++ b/meva/scripts/v10/generate_temporal.py @@ -25,6 +25,13 @@ from .utils.krtd import load_camera_model, CameraModel, INDOOR_CAMERAS from .utils.yaml_stream import get_bbox_at_frame +# Scene context (optional — graceful degradation) +try: + from .scene_context import get_scene_context, enrich_description_with_location + _HAS_SCENE_CONTEXT = True +except ImportError: + _HAS_SCENE_CONTEXT = False + # ============================================================================ # Constants # ============================================================================ @@ -300,6 +307,43 @@ def _get_event_description(event: Event, sg: SceneGraph, return f"a person {short_act}" +def _enrich_with_location(desc: str, event: Event, sg: SceneGraph) -> str: + """Optionally append location context to an event description using 3D scene models. + + e.g. "a person in navy top opens vehicle door" → + "a person in navy top opens vehicle door near the school" + """ + if not _HAS_SCENE_CONTEXT: + return desc + # Extract site from slot name + parts = sg.slot.split(".") + if len(parts) < 3: + return desc + site = parts[2] + # Get entity bbox for 3D projection + cam_model = load_camera_model(event.camera_id) + if cam_model is None: + return desc + # Use midpoint frame bbox + mid_frame = int((event.start_frame + event.end_frame) / 2) + bbox = None + for actor in event.actors: + eid = f"{event.camera_id}_actor_{actor['actor_id']}" + entity = sg.entities.get(eid) + if entity and entity.keyframe_bboxes: + # Find nearest keyframe + nearest = min(entity.keyframe_bboxes.keys(), + key=lambda f: abs(f - mid_frame)) + bbox = entity.keyframe_bboxes[nearest] + break + if bbox is None: + return desc + point_3d = cam_model.bbox_foot_to_world(bbox) + if point_3d is None: + return desc + return enrich_description_with_location(desc, point_3d, site) + + def _short_option_label(desc: str, activity: str) -> str: """Build a short label for an option from the event description. @@ -540,6 +584,10 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, desc_a = _get_event_description(ea, sg, entity_descs, fallback_eids) desc_b = _get_event_description(eb, sg, entity_descs, fallback_eids) + # V10: Enrich with spatial location context (e.g. "near the school") + desc_a = _enrich_with_location(desc_a, ea, sg) + desc_b = _enrich_with_location(desc_b, eb, sg) + # V10: Ensure descriptions are distinct — if identical, add camera context if desc_a == desc_b: desc_a = f"{desc_a} (on camera {ea.camera_id})" diff --git a/meva/scripts/v10/scene_context.py b/meva/scripts/v10/scene_context.py new file mode 100644 index 0000000..0086a28 --- /dev/null +++ b/meva/scripts/v10/scene_context.py @@ -0,0 +1,447 @@ +#!/usr/bin/env python3 +""" +scene_context.py — Camera-aware spatial context using KRTD + building PLYs. + +Provides: + - Named building proximity for entity 3D positions ("near the school entrance") + - Cardinal direction from camera to entity ("to the north") + - Semantic location labels ("in the parking lot", "by the gas station") + - Cross-camera entity matching boost via 3D proximity + +Uses: + - KRTD camera models (ENU coordinate system) from utils/krtd.py + - Building segmentation PLYs from /nas/mars/dataset/MEVA/model_segmentations/ + - trimesh for PLY loading and nearest-point queries + +Coordinate system: ENU (East-North-Up) — shared across all outdoor cameras. + x = East, y = North, z = Up (meters) +""" + +import math +import numpy as np +from pathlib import Path +from typing import Dict, List, Optional, Tuple + +try: + import trimesh +except ImportError: + trimesh = None # Graceful degradation — scene context disabled + +try: + from .utils.krtd import load_camera_model, load_all_camera_models, CameraModel +except ImportError: + import sys + sys.path.insert(0, str(Path(__file__).resolve().parent)) + from utils.krtd import load_camera_model, load_all_camera_models, CameraModel + + +# ============================================================================ +# Constants +# ============================================================================ + +MODEL_SEG_DIR = Path("/nas/mars/dataset/MEVA/model_segmentations") + +# Human-friendly building names for each PLY file +BUILDING_NAMES = { + "school": "the school", + "building1": "Building 1 (east annex)", + "building2": "Building 2 (southeast lab)", + "building3": "Building 3 (south wing)", + "building4": "Building 4 (west annex)", + "building5": "Building 5 (northwest housing)", + "gas_station": "the gas station", + "background": None, # "background" mesh = ground/trees, no label +} + +# Short labels for question text (avoid verbosity) +BUILDING_SHORT_LABELS = { + "school": "the school", + "building1": "the east building", + "building2": "the southeast building", + "building3": "the south building", + "building4": "the west building", + "building5": "the northwest building", + "gas_station": "the gas station", +} + +# Site → which buildings are relevant (cameras only see nearby structures) +SITE_BUILDINGS = { + "school": ["school", "building1", "building2", "gas_station"], + "admin": ["building3", "building4", "building5"], + "bus": ["building4", "building5", "gas_station"], + "hospital": ["building3", "building4"], +} + +# Distance thresholds for proximity labels (meters) +# Note: Building centroids are center-of-mass, so even "adjacent" entities may +# be 20-30m from centroid. Use generous thresholds. +NEAR_THRESHOLD = 25.0 # "near X" +MODERATE_THRESHOLD = 60.0 # "in the area of X" +# Beyond moderate = "away from X" / use cardinal direction instead + +# Cardinal direction names +_CARDINAL_NAMES = [ + "north", "northeast", "east", "southeast", + "south", "southwest", "west", "northwest" +] + + +# ============================================================================ +# Scene Geometry Cache +# ============================================================================ + +_scene_cache: Dict[str, 'SceneContext'] = {} + + +def get_scene_context(site: str) -> Optional['SceneContext']: + """Get or create SceneContext for a site (cached).""" + if trimesh is None: + return None + if site not in _scene_cache: + try: + _scene_cache[site] = SceneContext(site) + except Exception: + _scene_cache[site] = None + return _scene_cache[site] + + +# ============================================================================ +# SceneContext Class +# ============================================================================ + +class SceneContext: + """ + Scene geometry for a MEVA site: buildings, cameras, spatial queries. + + Loads PLY meshes and precomputes centroids for fast nearest-building lookup. + """ + + def __init__(self, site: str): + """ + Args: + site: 'school', 'bus', 'admin', or 'hospital' + """ + self.site = site + self.buildings: Dict[str, trimesh.Trimesh] = {} + self.centroids: Dict[str, np.ndarray] = {} + self._load_buildings() + + def _load_buildings(self): + """Load PLY meshes for buildings relevant to this site.""" + building_ids = SITE_BUILDINGS.get(self.site, list(BUILDING_NAMES.keys())) + + for bid in building_ids: + ply_path = MODEL_SEG_DIR / f"{bid}.ply" + if not ply_path.exists(): + continue + try: + mesh = trimesh.load(str(ply_path)) + self.buildings[bid] = mesh + self.centroids[bid] = np.array(mesh.centroid) + except Exception: + continue + + def nearest_building(self, point_3d: np.ndarray) -> Optional[Tuple[str, float]]: + """ + Find the nearest named building to a 3D point. + + Args: + point_3d: [east, north, up] in ENU meters + + Returns: + (building_id, distance_meters) or None if no buildings loaded. + """ + if not self.buildings: + return None + + point = np.array(point_3d[:2]) # Use 2D (east, north) for horizontal distance + + best_id = None + best_dist = float('inf') + + for bid, mesh in self.buildings.items(): + if BUILDING_NAMES.get(bid) is None: + continue # Skip "background" + + # Use centroid distance as fast approximation + centroid_2d = self.centroids[bid][:2] + dist = np.linalg.norm(point - centroid_2d) + + if dist < best_dist: + best_dist = dist + best_id = bid + + if best_id is None: + return None + return (best_id, float(best_dist)) + + def get_location_label(self, point_3d: np.ndarray) -> Optional[str]: + """ + Generate a semantic location label for a 3D point. + + Returns labels like: + "near the school" + "in the parking lot area" + "by the gas station" + None if no meaningful label can be generated + """ + result = self.nearest_building(point_3d) + if result is None: + return None + + bid, dist = result + short_name = BUILDING_SHORT_LABELS.get(bid, bid) + + if dist < NEAR_THRESHOLD: + return f"near {short_name}" + elif dist < MODERATE_THRESHOLD: + return f"in the area near {short_name}" + else: + return None # Too far for meaningful label + + def get_cardinal_direction(self, from_point: np.ndarray, + to_point: np.ndarray) -> str: + """ + Cardinal direction from one point to another. + + Args: + from_point: [east, north, up] - observer position (e.g., camera) + to_point: [east, north, up] - target position (e.g., entity) + + Returns: + One of: "north", "northeast", "east", "southeast", + "south", "southwest", "west", "northwest" + """ + delta_east = to_point[0] - from_point[0] + delta_north = to_point[1] - from_point[1] + + # atan2(east, north) gives angle from north, clockwise + angle_rad = math.atan2(delta_east, delta_north) + angle_deg = math.degrees(angle_rad) % 360 + + # Quantize to 8 directions (each 45°, centered on 0°=North) + idx = round(angle_deg / 45.0) % 8 + return _CARDINAL_NAMES[idx] + + def get_camera_relative_direction(self, camera_id: str, + entity_point: np.ndarray) -> Optional[str]: + """ + Cardinal direction from camera center to entity world position. + + Returns: "to the north", "to the southeast", etc. + None if camera model not available. + """ + cam_model = load_camera_model(camera_id) + if cam_model is None: + return None + + cam_center = cam_model.camera_center + direction = self.get_cardinal_direction(cam_center, entity_point) + return f"to the {direction}" + + def annotate_entity(self, point_3d: np.ndarray, + camera_id: Optional[str] = None) -> Dict[str, str]: + """ + Generate spatial context annotations for an entity at a 3D position. + + Returns dict with: + location_label: "near the school" or None + cardinal_from_camera: "to the north" or None + nearest_building: "school" or None + building_distance_m: float or None + """ + annotations = {} + + # Location label + annotations["location_label"] = self.get_location_label(point_3d) + + # Cardinal direction from camera + if camera_id: + annotations["cardinal_from_camera"] = \ + self.get_camera_relative_direction(camera_id, point_3d) + + # Nearest building ID + distance + result = self.nearest_building(point_3d) + if result: + bid, dist = result + annotations["nearest_building"] = bid + annotations["building_distance_m"] = round(dist, 1) + + return annotations + + def entity_3d_distance(self, point_a: np.ndarray, + point_b: np.ndarray) -> float: + """3D Euclidean distance between two entity world positions (meters).""" + return float(np.linalg.norm(np.array(point_a) - np.array(point_b))) + + def entity_2d_distance(self, point_a: np.ndarray, + point_b: np.ndarray) -> float: + """2D horizontal distance (East-North plane) in meters.""" + return float(np.linalg.norm( + np.array(point_a[:2]) - np.array(point_b[:2]) + )) + + +# ============================================================================ +# Cross-Camera Entity Matching with 3D Proximity +# ============================================================================ + +def compute_3d_matching_score( + cam_a: str, bbox_a: List[float], + cam_b: str, bbox_b: List[float], + time_gap_sec: float, + description_overlap: float = 0.0, +) -> Optional[Dict]: + """ + Compute cross-camera entity matching score using 3D + temporal + visual. + + Projects bbox footpoints to 3D world coords, checks proximity. + + Args: + cam_a, cam_b: Camera IDs + bbox_a, bbox_b: [x1, y1, x2, y2] bounding boxes + time_gap_sec: Temporal gap between entity A (last frame) and B (first frame) + description_overlap: Token overlap ratio of entity descriptions (0-1) + + Returns: + { + "spatial_score": float, # 0-1, based on 3D proximity + "temporal_score": float, # 0-1, based on time gap + "description_score": float,# 0-1, based on visual similarity + "combined_score": float, # weighted combination + "distance_3d_m": float, # 3D distance in meters + "point_a": list, # [e, n, u] + "point_b": list, # [e, n, u] + } + None if cameras don't have KRTD models or projection fails. + """ + model_a = load_camera_model(cam_a) + model_b = load_camera_model(cam_b) + if model_a is None or model_b is None: + return None + + # Project bbox footpoints to world + point_a = model_a.bbox_foot_to_world(bbox_a) + point_b = model_b.bbox_foot_to_world(bbox_b) + if point_a is None or point_b is None: + return None + + # 3D distance + dist = float(np.linalg.norm(point_a - point_b)) + + # Spatial score: closer = higher score + # 0-5m → 1.0, 5-20m → linear decay, >20m → 0.0 + if dist < 5.0: + spatial_score = 1.0 + elif dist < 20.0: + spatial_score = max(0.0, 1.0 - (dist - 5.0) / 15.0) + else: + spatial_score = 0.0 + + # Temporal score: smaller gap = higher score + # 0-2s → 1.0, 2-10s → linear decay, >10s → 0.4 minimum + if time_gap_sec < 2.0: + temporal_score = 1.0 + elif time_gap_sec < 10.0: + temporal_score = max(0.4, 1.0 - (time_gap_sec - 2.0) / 8.0 * 0.6) + else: + temporal_score = 0.4 + + # Description score is passed in directly + desc_score = max(0.0, min(1.0, description_overlap)) + + # Combined: 0.4 * temporal + 0.3 * spatial + 0.3 * description + combined = 0.4 * temporal_score + 0.3 * spatial_score + 0.3 * desc_score + + return { + "spatial_score": round(spatial_score, 3), + "temporal_score": round(temporal_score, 3), + "description_score": round(desc_score, 3), + "combined_score": round(combined, 3), + "distance_3d_m": round(dist, 2), + "point_a": point_a.tolist(), + "point_b": point_b.tolist(), + } + + +# ============================================================================ +# Utility: Enrich Question Text with Spatial Context +# ============================================================================ + +def enrich_description_with_location( + description: str, + point_3d: Optional[np.ndarray], + site: str, +) -> str: + """ + Append spatial context to an entity description for question text. + + "a person in navy top and khaki pants opens a vehicle door" + → "a person in navy top and khaki pants opens a vehicle door near the school parking lot" + + Only adds context if a meaningful location label exists. + Does NOT reveal camera ID (important for perception questions). + """ + if point_3d is None: + return description + + ctx = get_scene_context(site) + if ctx is None: + return description + + label = ctx.get_location_label(point_3d) + if label is None: + return description + + # Avoid repeating location if already mentioned + if label.lower() in description.lower(): + return description + + return f"{description} {label}" + + +# ============================================================================ +# CLI for testing / debugging +# ============================================================================ + +def main(): + """Quick test: show scene context for the school site.""" + import argparse + parser = argparse.ArgumentParser(description="Scene context test") + parser.add_argument("--site", default="school", help="Site name") + parser.add_argument("--camera", default="G339", help="Camera ID to test") + args = parser.parse_args() + + if trimesh is None: + print("ERROR: trimesh not installed. Run: pip install trimesh") + return + + ctx = get_scene_context(args.site) + if ctx is None: + print(f"Failed to create scene context for {args.site}") + return + + print(f"Scene Context: {args.site}") + print(f" Buildings loaded: {list(ctx.buildings.keys())}") + for bid, centroid in ctx.centroids.items(): + print(f" {bid:15s}: centroid=({centroid[0]:8.1f}, {centroid[1]:8.1f}, {centroid[2]:8.1f})") + + # Test with camera center + cam = load_camera_model(args.camera) + if cam: + cc = cam.camera_center + print(f"\n Camera {args.camera} center: ({cc[0]:.1f}, {cc[1]:.1f}, {cc[2]:.1f})") + ann = ctx.annotate_entity(cc, args.camera) + print(f" Annotations: {ann}") + + # Test a point slightly offset from camera + test_point = cc + np.array([10, 0, 0]) # 10m east + ann2 = ctx.annotate_entity(test_point, args.camera) + label = ctx.get_location_label(test_point) + print(f"\n Test point (10m east of camera): ({test_point[0]:.1f}, {test_point[1]:.1f})") + print(f" Location label: {label}") + print(f" Annotations: {ann2}") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/validate_qa.py b/meva/scripts/v10/validate_qa.py new file mode 100644 index 0000000..7f15772 --- /dev/null +++ b/meva/scripts/v10/validate_qa.py @@ -0,0 +1,858 @@ +#!/usr/bin/env python3 +""" +validate_qa.py — Automated QA validator for MEVA V10 pipeline. + +Runs 6 structural checks on raw or naturalized QA JSON without watching video: + 1. Reasoning ↔ answer consistency + 2. Raw token leak detection + 3. Duplicate / near-duplicate detection + 4. Generic description detection + 5. Multi-correct-answer ambiguity + 6. Grammar / conjugation checking + +Usage: + python3 -m scripts.v10.validate_qa --input path/to/slot.raw.json + python3 -m scripts.v10.validate_qa --input path/to/slot.naturalized.json -v + python3 -m scripts.v10.validate_qa --input path/to/slot.raw.json --json + +Output: + Structured report: {slot, total_questions, total_issues, issues: [...]} + Each issue: {question_id, check_name, severity, message, suggestion} + Severity: error (must fix), warning (should fix), info (cosmetic) +""" + +import argparse +import json +import re +import sys +from collections import Counter, defaultdict +from pathlib import Path +from typing import Any, Dict, List, Optional, Set, Tuple + + +# ============================================================================ +# Constants +# ============================================================================ + +# All 37 MEVA ActEV activity IDs (raw Kitware names) +KITWARE_ACTIVITY_IDS = { + "hand_interacts_with_person", + "person_abandons_package", + "person_carries_heavy_object", + "person_closes_facility_door", + "person_closes_trunk", + "person_closes_vehicle_door", + "person_embraces_person", + "person_enters_scene_through_structure", + "person_enters_vehicle", + "person_exits_scene_through_structure", + "person_exits_vehicle", + "person_interacts_with_laptop", + "person_loads_vehicle", + "person_opens_facility_door", + "person_opens_trunk", + "person_opens_vehicle_door", + "person_picks_up_object", + "person_purchases", + "person_puts_down_object", + "person_reads_document", + "person_rides_bicycle", + "person_sits_down", + "person_stands_up", + "person_steals_object", + "person_talks_on_phone", + "person_talks_to_person", + "person_texts_on_phone", + "person_transfers_object", + "person_unloads_vehicle", + "vehicle_drops_off_person", + "vehicle_makes_u_turn", + "vehicle_picks_up_person", + "vehicle_reverses", + "vehicle_starts", + "vehicle_stops", + "vehicle_turns_left", + "vehicle_turns_right", +} + +# Severity levels +ERROR = "error" # Must fix — answer is wrong or question is invalid +WARNING = "warning" # Should fix — degrades quality +INFO = "info" # Cosmetic — minor wording issue + + +# ============================================================================ +# Issue dataclass +# ============================================================================ + +class Issue: + """Single validation issue.""" + __slots__ = ("question_id", "check_name", "severity", "message", "suggestion") + + def __init__(self, question_id: str, check_name: str, severity: str, + message: str, suggestion: str = ""): + self.question_id = question_id + self.check_name = check_name + self.severity = severity + self.message = message + self.suggestion = suggestion + + def to_dict(self) -> dict: + d = { + "question_id": self.question_id, + "check_name": self.check_name, + "severity": self.severity, + "message": self.message, + } + if self.suggestion: + d["suggestion"] = self.suggestion + return d + + +# ============================================================================ +# Helper: get question text fields (works on both raw and naturalized) +# ============================================================================ + +def _get_question_text(q: dict) -> str: + """Get the question text (naturalized preferred, raw fallback).""" + return q.get("naturalized_question") or q.get("question_template") or "" + +def _get_options(q: dict) -> List[str]: + """Get options list (naturalized preferred, raw fallback).""" + return q.get("naturalized_options") or q.get("options") or [] + +def _get_answer_text(q: dict) -> str: + """Get correct answer text.""" + return q.get("correct_answer") or "" + +def _get_reasoning(q: dict) -> str: + """Get reasoning text if available (naturalized may have it).""" + return q.get("reasoning") or q.get("naturalized_reasoning") or "" + + +# ============================================================================ +# Check 1: Reasoning ↔ Answer Consistency +# ============================================================================ + +def check_reasoning_consistency(qa_pairs: List[dict]) -> List[Issue]: + """ + Parse reasoning text + correct_answer for each question. + - For temporal: if reasoning says "X happened first" but answer says Y, flag. + - For counting: extract number from reasoning, compare to correct_answer. + - For event_ordering: check if reasoning's described sequence matches answer. + - For perception: check if camera mentioned in reasoning matches answer. + """ + issues = [] + + for q in qa_pairs: + qid = q.get("question_id", "?") + cat = q.get("category", "") + answer = _get_answer_text(q).lower() + reasoning = _get_reasoning(q).lower() + verification = q.get("verification", {}) + correct_idx = q.get("correct_answer_index", -1) + options = _get_options(q) + + if not reasoning: + # No reasoning field — skip this check (raw files often lack it) + continue + + # --- Temporal: "first" keyword matching --- + if cat == "temporal": + # Check if reasoning mentions which event was first + first_match = re.search(r'(\w[\w\s]*?)\s+(?:occurred|happened|took place)\s+first', reasoning) + if first_match and answer: + reasoning_first = first_match.group(1).strip() + # Cross-check with answer + if reasoning_first not in answer and len(reasoning_first) > 5: + issues.append(Issue( + qid, "reasoning_consistency", ERROR, + f"Reasoning says '{reasoning_first}' occurred first, " + f"but correct_answer is: '{answer[:80]}'", + "Regenerate reasoning with correct event order" + )) + + # --- Counting: number extraction --- + elif cat == "counting": + # Extract numbers from reasoning + nums_in_reasoning = re.findall(r'\b(\d+)\b', reasoning) + correct_count = verification.get("correct_count") + if correct_count is not None and nums_in_reasoning: + # Check final number or most-mentioned number + num_counts = Counter(int(n) for n in nums_in_reasoning) + most_common_num = num_counts.most_common(1)[0][0] + if most_common_num != correct_count and int(nums_in_reasoning[-1]) != correct_count: + issues.append(Issue( + qid, "reasoning_consistency", ERROR, + f"Reasoning mentions count {most_common_num}, " + f"but correct_count is {correct_count}", + "Regenerate reasoning with correct count" + )) + + # --- Event ordering: sequence match --- + elif cat == "event_ordering": + ordered_events = verification.get("ordered_events", []) + if len(ordered_events) >= 3 and correct_idx >= 0 and correct_idx < len(options): + correct_opt = options[correct_idx].lower() + # Extract activity verbs from ordered events + activities_in_order = [e.get("activity", "") for e in ordered_events] + # Check if the correct option's described sequence contradicts verification + # Simple check: does the answer option mention the last event first? + if activities_in_order: + last_act = activities_in_order[-1].replace("_", " ") + first_act = activities_in_order[0].replace("_", " ") + # If answer says last event happened first, that's wrong + if (last_act in correct_opt and + correct_opt.index(last_act) < correct_opt.index(first_act) + if first_act in correct_opt else False): + issues.append(Issue( + qid, "reasoning_consistency", ERROR, + f"Correct answer mentions '{last_act}' before '{first_act}', " + f"contradicting event ordering in verification", + "Regenerate with correct chronological order" + )) + + # --- Perception: camera consistency --- + elif cat == "perception": + qt = verification.get("question_type") + if qt == "which_camera": + correct_cam = verification.get("correct_camera", "") + if correct_cam and reasoning: + # Check if reasoning mentions a different camera as "correct" + cam_mentions = re.findall(r'G\d{3}', reasoning) + if cam_mentions: + last_cam = cam_mentions[-1] + if last_cam != correct_cam and f"camera {correct_cam}" not in reasoning: + issues.append(Issue( + qid, "reasoning_consistency", WARNING, + f"Reasoning mentions camera {last_cam} but correct is {correct_cam}", + "Check reasoning references correct camera" + )) + + # --- Structural: correct_answer_index vs correct_answer text match --- + if correct_idx >= 0 and correct_idx < len(options): + expected = options[correct_idx].lower().strip() + actual = answer.lower().strip() + # They should match (or be very close) + if actual and expected and actual != expected: + # Check if one is substring of the other (GPT may have rephrased) + overlap = len(set(actual.split()) & set(expected.split())) + total = max(len(actual.split()), len(expected.split())) + if total > 0 and overlap / total < 0.5: + issues.append(Issue( + qid, "reasoning_consistency", ERROR, + f"correct_answer text doesn't match options[correct_answer_index]: " + f"'{actual[:60]}' vs '{expected[:60]}'", + "Sync correct_answer with options[correct_answer_index]" + )) + + return issues + + +# ============================================================================ +# Check 2: Raw Token Leak Detection +# ============================================================================ + +# Pre-compiled patterns for speed +_RAW_TIMESTAMP_PATTERNS = [ + re.compile(r'\b\d{2,3}\s*seconds?\b', re.I), # "127 seconds", "42 second" + re.compile(r'\b\d+\.\d+s\b'), # "127.13s" + re.compile(r'\bat\s+\d+s\b'), # "at 127s" + re.compile(r'\b\d+\.\d+-\d+\.\d+s\b'), # "127.13-133.43s" + re.compile(r'\bframe\s*\d+', re.I), # "frame 3814" + re.compile(r'\bframes?\s*\d+-\d+', re.I), # "frames 3814-4003" + re.compile(r'\b\d+\.\d{2}\s*-\s*\d+\.\d{2}\b'), # "127.13 - 133.43" (timestamp ranges) +] + +_RAW_FIELD_PATTERNS = [ + re.compile(r'\bstart_sec\b'), + re.compile(r'\bend_sec\b'), + re.compile(r'\bframe_range\b'), + re.compile(r'\bactor_id\b'), + re.compile(r'\bclip_file\b'), + re.compile(r'\bentity_\w+\b'), # entity_description, entity_a, etc. +] + +_TEMPLATE_ARTIFACT_PATTERNS = [ + re.compile(r'\{[a-z_]+\}'), # {variable_name} template placeholders + re.compile(r'__\w+__'), # __PLACEHOLDER__ + re.compile(r'\bevt_\w+\b'), # evt_prefix internal IDs + re.compile(r'\bcluster_\d+\b'), # cluster_123 internal IDs +] + +# Build regex alternation for activity IDs (match as whole words) +_ACTIVITY_ID_PATTERN = re.compile( + r'\b(' + '|'.join(re.escape(a) for a in sorted(KITWARE_ACTIVITY_IDS)) + r')\b' +) + + +def check_raw_token_leaks(qa_pairs: List[dict]) -> List[Issue]: + """ + Regex scan question text + options for raw pipeline tokens that should + have been cleaned/naturalized. + """ + issues = [] + + for q in qa_pairs: + qid = q.get("question_id", "?") + question_text = _get_question_text(q) + options = _get_options(q) + all_text = question_text + " " + " ".join(options) + + # Only check naturalized text (raw text is allowed to have these) + is_naturalized = "naturalized_question" in q + + if not is_naturalized: + # For raw files, only check for the most egregious leaks + # (template artifacts still shouldn't be in raw text) + for pat in _TEMPLATE_ARTIFACT_PATTERNS: + m = pat.search(all_text) + if m: + issues.append(Issue( + qid, "raw_token_leak", WARNING, + f"Template artifact in raw text: '{m.group()}'", + "Check template formatting" + )) + continue + + # --- Naturalized text checks --- + + # Raw timestamps + for pat in _RAW_TIMESTAMP_PATTERNS: + m = pat.search(all_text) + if m: + issues.append(Issue( + qid, "raw_token_leak", WARNING, + f"Raw timestamp in naturalized text: '{m.group()}'", + "Re-run naturalization to remove timestamps" + )) + break # One timestamp leak per question is enough + + # Raw activity names (Kitware IDs with underscores) + m = _ACTIVITY_ID_PATTERN.search(all_text) + if m: + issues.append(Issue( + qid, "raw_token_leak", WARNING, + f"Raw activity ID in naturalized text: '{m.group()}'", + "Re-run simplify_description() on this question" + )) + + # Raw field names + for pat in _RAW_FIELD_PATTERNS: + m = pat.search(all_text) + if m: + issues.append(Issue( + qid, "raw_token_leak", INFO, + f"Raw field name in naturalized text: '{m.group()}'", + "Remove technical field references" + )) + break + + # Template artifacts + for pat in _TEMPLATE_ARTIFACT_PATTERNS: + m = pat.search(all_text) + if m: + issues.append(Issue( + qid, "raw_token_leak", WARNING, + f"Template artifact in naturalized text: '{m.group()}'", + "Re-run naturalization to fill template" + )) + break + + return issues + + +# ============================================================================ +# Check 3: Duplicate / Near-Duplicate Detection +# ============================================================================ + +def _normalize_tokens(text: str) -> Set[str]: + """Normalize text to lowercase token set for overlap comparison.""" + text = re.sub(r'[^\w\s]', ' ', text.lower()) + return set(text.split()) + +def _token_overlap_ratio(tokens_a: Set[str], tokens_b: Set[str]) -> float: + """Compute Jaccard-like overlap ratio between two token sets.""" + if not tokens_a or not tokens_b: + return 0.0 + intersection = tokens_a & tokens_b + union = tokens_a | tokens_b + return len(intersection) / len(union) + + +def check_duplicates(qa_pairs: List[dict]) -> List[Issue]: + """ + Detect duplicate/near-duplicate questions within a slot: + - Exact text match + - Fuzzy match: >80% token overlap + - Same entity pair (verification.entity_a + entity_b) + - Same category + same correct_answer + """ + issues = [] + n = len(qa_pairs) + + for i in range(n): + qi = qa_pairs[i] + qi_id = qi.get("question_id", f"q{i}") + qi_text = _get_question_text(qi) + qi_tokens = _normalize_tokens(qi_text) + qi_cat = qi.get("category", "") + qi_answer = _get_answer_text(qi) + qi_ver = qi.get("verification", {}) + + for j in range(i + 1, n): + qj = qa_pairs[j] + qj_id = qj.get("question_id", f"q{j}") + qj_text = _get_question_text(qj) + qj_tokens = _normalize_tokens(qj_text) + qj_cat = qj.get("category", "") + qj_answer = _get_answer_text(qj) + qj_ver = qj.get("verification", {}) + + # 1. Exact text match + if qi_text and qi_text == qj_text: + issues.append(Issue( + qi_id, "duplicate", ERROR, + f"Exact duplicate of {qj_id}", + f"Remove one of {qi_id} or {qj_id}" + )) + continue + + # 2. Fuzzy match: >80% token overlap + overlap = _token_overlap_ratio(qi_tokens, qj_tokens) + if overlap > 0.80: + issues.append(Issue( + qi_id, "near_duplicate", WARNING, + f"Near-duplicate of {qj_id} ({overlap:.0%} token overlap)", + "Rephrase or replace one of the questions" + )) + + # 3. Same entity pair check + ea_i = qi_ver.get("entity_a", qi_ver.get("event_a", {}).get("description", "")) + eb_i = qi_ver.get("entity_b", qi_ver.get("event_b", {}).get("description", "")) + ea_j = qj_ver.get("entity_a", qj_ver.get("event_a", {}).get("description", "")) + eb_j = qj_ver.get("entity_b", qj_ver.get("event_b", {}).get("description", "")) + + if ea_i and eb_i and ea_j and eb_j: + if ({ea_i, eb_i} == {ea_j, eb_j}): + issues.append(Issue( + qi_id, "same_entity_pair", WARNING, + f"Same entity pair as {qj_id}: ({ea_i[:40]}, {eb_i[:40]})", + "Use different entity pair for one question" + )) + + # 4. Same category + same correct answer + if qi_cat == qj_cat and qi_answer and qi_answer == qj_answer: + issues.append(Issue( + qi_id, "same_category_answer", INFO, + f"Same category '{qi_cat}' and identical correct_answer as {qj_id}", + "Consider diversifying answers within category" + )) + + return issues + + +# ============================================================================ +# Check 4: Generic Description Detection +# ============================================================================ + +def check_generic_descriptions(qa_pairs: List[dict]) -> List[Issue]: + """ + Flag questions with generic entity references: + - Description is just "a person" / "someone" / "an individual" + - Entity description is null + - Multiple entities on same camera share exact description + """ + issues = [] + _GENERIC_DESCS = {"a person", "someone", "an individual", "a vehicle", + "the person", "the individual", "a man", "a woman"} + + # Build per-camera description frequency map from all questions + camera_descriptions: Dict[str, List[str]] = defaultdict(list) + + for q in qa_pairs: + qid = q.get("question_id", "?") + cat = q.get("category", "") + verification = q.get("verification", {}) + debug = q.get("debug_info", {}) + question_text = _get_question_text(q) + + # Collect entity descriptions from verification/debug + descs_in_q = [] + + # Temporal/spatial: event_a, event_b + for key in ("event_a", "event_b", "entity_a", "entity_b"): + info = verification.get(key, {}) + if isinstance(info, dict): + desc = info.get("description") or info.get("entity_description", "") + cam = info.get("camera", "") + if desc: + descs_in_q.append((desc, cam)) + camera_descriptions[cam].append(desc) + + # Debug entity_description + for key in ("event_a", "event_b", "entity_a", "entity_b"): + info = debug.get(key, {}) + if isinstance(info, dict): + desc = info.get("entity_description", "") + cam = info.get("camera", "") + if desc: + descs_in_q.append((desc, cam)) + camera_descriptions[cam].append(desc) + + # Check for generic descriptions in question text + for generic in _GENERIC_DESCS: + if generic in question_text.lower(): + # Only flag if it's the main entity reference (not part of larger desc) + # Check by looking at surrounding context + pattern = re.compile( + r'(?:^|\s)' + re.escape(generic) + r'(?:\s+(?:who|that|on|in|at|opens|closes|exits|enters|walks|sits|stands|talks|carries|picks|puts|rides|reads|loads|unloads)\b)', + re.I + ) + if pattern.search(question_text): + issues.append(Issue( + qid, "generic_description", WARNING, + f"Generic entity reference '{generic}' used in question text", + "Add clothing/visual description to disambiguate" + )) + break + + # Check entity descriptions in verification + for desc, cam in descs_in_q: + desc_lower = desc.strip().lower() + if desc_lower in _GENERIC_DESCS or not desc_lower: + issues.append(Issue( + qid, "generic_description", WARNING, + f"Generic entity description '{desc}' on camera {cam}", + "Re-extract visual description or use spatial context" + )) + + # Cross-question check: same description on same camera + for cam, descs in camera_descriptions.items(): + if not cam: + continue + desc_counts = Counter(descs) + for desc, count in desc_counts.items(): + if count >= 2 and desc.lower().strip() not in _GENERIC_DESCS: + # Same non-generic description appears multiple times on same camera + issues.append(Issue( + f"slot-level:{cam}", "shared_description", INFO, + f"Description '{desc[:50]}' used {count} times on camera {cam}", + "Use spatial position or activity to disambiguate" + )) + + return issues + + +# ============================================================================ +# Check 5: Multi-Correct-Answer Ambiguity +# ============================================================================ + +def check_multi_correct_ambiguity(qa_pairs: List[dict]) -> List[Issue]: + """ + Detect questions where multiple answer options could be correct: + - which_camera perception: activity visible on >1 camera in options + - spatial proximity: distance near bucket boundary (borderline classification) + """ + issues = [] + + for q in qa_pairs: + qid = q.get("question_id", "?") + cat = q.get("category", "") + verification = q.get("verification", {}) + options = _get_options(q) + + # --- Perception: which_camera ambiguity --- + if cat == "perception": + qt = verification.get("question_type") + if qt == "which_camera": + cameras_with = verification.get("cameras_with_activity", []) + if len(cameras_with) > 1: + # Check how many of those cameras are among the options + option_cams = set() + for opt in options: + for cam in cameras_with: + if cam in opt: + option_cams.add(cam) + if len(option_cams) > 1: + issues.append(Issue( + qid, "multi_correct_ambiguity", ERROR, + f"Activity appears on cameras {cameras_with}, " + f"and {len(option_cams)} of them are in the options", + "Use activity that appears on exactly 1 camera" + )) + + # --- Spatial: borderline proximity --- + elif cat == "spatial": + distance = verification.get("distance_meters") + proximity = verification.get("proximity") + if distance is not None and proximity: + # Check if distance is within 20% of bucket boundary + # near/moderate boundary: 5m (check 4-6m) + # moderate/far boundary: 15m (check 12-18m) + if proximity == "near" and 4.0 <= distance <= 6.0: + issues.append(Issue( + qid, "multi_correct_ambiguity", WARNING, + f"Borderline near/moderate: distance={distance:.1f}m " + f"(boundary at 5m, ±20% = 4-6m)", + "Use entity pair with clearer distance separation" + )) + elif proximity == "moderate" and ( + (4.0 <= distance <= 6.0) or (12.0 <= distance <= 18.0) + ): + issues.append(Issue( + qid, "multi_correct_ambiguity", WARNING, + f"Borderline proximity: distance={distance:.1f}m " + f"(boundaries at 5m and 15m, ±20%)", + "Use entity pair with clearer distance separation" + )) + elif proximity == "far" and 12.0 <= distance <= 18.0: + issues.append(Issue( + qid, "multi_correct_ambiguity", WARNING, + f"Borderline moderate/far: distance={distance:.1f}m " + f"(boundary at 15m, ±20% = 12-18m)", + "Use entity pair with clearer distance separation" + )) + + return issues + + +# ============================================================================ +# Check 6: Grammar / Conjugation Checking +# ============================================================================ + +# Words that start with vowel sound but use "a" (not "an") +_A_EXCEPTIONS = {"uniform", "university", "unique", "united", "union", + "european", "euclidean", "eulerian", "user", "useful", + "usual", "utensil", "utility", "uranium", "one", "once"} + +_GRAMMAR_PATTERNS = [ + # a [vowel] → should be an (with exceptions) + (re.compile(r'\ba\s+([aeiou]\w*)\b', re.I), "article_a_an"), + # Double articles + (re.compile(r'\b(a|an|the)\s+\1\b', re.I), "double_article"), + # Common gerund errors: *sing pattern (e.g., "leavesing") + (re.compile(r'\b\w+(?:es|[^s]s)ing\b', re.I), "gerund_error"), + # Subject-verb: "a person close" (should be "closes") + (re.compile(r'\ba\s+person\s+(?:close|open|exit|enter|pick|put|sit|stand|walk|talk|read|ride|carry|load|unload|steal|transfer|abandon|embrace|purchase|text)\b', re.I), "subject_verb"), +] + + +def check_grammar(qa_pairs: List[dict]) -> List[Issue]: + """ + Regex-based grammar checking for common errors in generated text. + """ + issues = [] + + for q in qa_pairs: + qid = q.get("question_id", "?") + question_text = _get_question_text(q) + options = _get_options(q) + answer = _get_answer_text(q) + all_texts = [question_text] + options + [answer] + + for text in all_texts: + if not text: + continue + + # Check a/an + for m in re.finditer(r'\ba\s+([aeiou]\w*)\b', text, re.I): + word = m.group(1).lower() + # Check exceptions (words starting with vowel letter but consonant sound) + if word not in _A_EXCEPTIONS and not word.startswith("uni"): + issues.append(Issue( + qid, "grammar", INFO, + f"'a {word}' should be 'an {word}' in: '...{text[max(0,m.start()-10):m.end()+10]}...'", + f"Change 'a {word}' to 'an {word}'" + )) + break # One article issue per text segment + + # Double articles + m = re.search(r'\b(a|an|the)\s+\1\b', text, re.I) + if m: + issues.append(Issue( + qid, "grammar", WARNING, + f"Double article: '{m.group()}' in text", + f"Remove duplicate article" + )) + + # Gerund errors (e.g., "closesing", "opensing", "leavesing") + for m in re.finditer(r'\b(\w+(?:es|[^s]s)ing)\b', text, re.I): + word = m.group(1).lower() + # Skip legitimate words + legit = {"missing", "passing", "crossing", "dressing", "pressing", + "blessing", "guessing", "assessing", "processing", + "accessing", "addressing", "expressing", "possessing", + "discussing", "bussing", "kissing", "tossing", + "fussing", "messing", "stressing", "confessing", + "obsessing", "caressing", "reassessing", "progressing", + "impressive", "using", "housing", "causing", "pausing", + "refusing", "abusing", "amusing", "bruising", + "choosing", "closing", "composing", "losing", + "opposing", "proposing", "raising", "praising", + "rising", "surprising", "advising", "exercising", + "promising", "comprising", "disguising", "revising", + "supervising", "nursing", "purchasing", "reversing", + "licensing", "sensing", "rinsing", "dispensing", + "conversing", "rehearsing", "endorsing", "immersing", + "coercing", "cursing"} + if word not in legit: + issues.append(Issue( + qid, "grammar", WARNING, + f"Possible gerund error: '{word}'", + f"Check conjugation of '{word}'" + )) + + # Subject-verb disagreement + m = re.search( + r'\ba\s+person\s+(close|open|exit|enter|pick|put|sit|stand|walk|talk|read|ride|carry|load|unload|text)\b', + text, re.I + ) + if m: + verb = m.group(1).lower() + issues.append(Issue( + qid, "grammar", INFO, + f"Subject-verb disagreement: 'a person {verb}' → 'a person {verb}s'", + f"Change '{verb}' to '{verb}s'" + )) + + return issues + + +# ============================================================================ +# Main Validator +# ============================================================================ + +def validate(data: Dict[str, Any], verbose: bool = False) -> Dict[str, Any]: + """ + Run all 6 checks on QA data. + + Args: + data: Full QA JSON (with "qa_pairs" key) + verbose: Print detailed output + + Returns: + Structured report dict. + """ + qa_pairs = data.get("qa_pairs", []) + slot = data.get("slot", "unknown") + + if verbose: + print(f"\n{'=' * 60}") + print(f"QA Validator — {slot}") + print(f"{'=' * 60}") + print(f"Total questions: {len(qa_pairs)}") + is_nat = any("naturalized_question" in q for q in qa_pairs) + print(f"Format: {'naturalized' if is_nat else 'raw'}") + + all_issues: List[Issue] = [] + + # Run all 6 checks + checks = [ + ("reasoning_consistency", check_reasoning_consistency), + ("raw_token_leak", check_raw_token_leaks), + ("duplicate_detection", check_duplicates), + ("generic_description", check_generic_descriptions), + ("multi_correct_ambiguity", check_multi_correct_ambiguity), + ("grammar", check_grammar), + ] + + for check_name, check_fn in checks: + found = check_fn(qa_pairs) + all_issues.extend(found) + if verbose: + severity_counts = Counter(i.severity for i in found) + status = "PASS" if not found else f"FAIL ({len(found)} issues)" + detail = "" + if found: + parts = [] + for sev in [ERROR, WARNING, INFO]: + if severity_counts[sev]: + parts.append(f"{severity_counts[sev]} {sev}") + detail = f" [{', '.join(parts)}]" + print(f" {check_name:30s}: {status}{detail}") + + # Compute quality score + score = 100 + for issue in all_issues: + if issue.severity == ERROR: + score -= 10 + elif issue.severity == WARNING: + score -= 5 + elif issue.severity == INFO: + score -= 1 + score = max(0, score) + + # Build report + severity_counts = Counter(i.severity for i in all_issues) + report = { + "slot": slot, + "total_questions": len(qa_pairs), + "total_issues": len(all_issues), + "quality_score": score, + "severity_counts": { + "error": severity_counts[ERROR], + "warning": severity_counts[WARNING], + "info": severity_counts[INFO], + }, + "issues": [i.to_dict() for i in all_issues], + } + + if verbose: + print(f"\n Quality Score: {score}/100") + print(f" Total Issues: {len(all_issues)} " + f"({severity_counts[ERROR]} error, " + f"{severity_counts[WARNING]} warning, " + f"{severity_counts[INFO]} info)") + if all_issues: + print(f"\n Issues:") + for issue in all_issues: + sev_symbol = {"error": "E", "warning": "W", "info": "I"}[issue.severity] + print(f" [{sev_symbol}] {issue.question_id}: " + f"{issue.check_name} — {issue.message}") + if issue.suggestion: + print(f" → {issue.suggestion}") + + return report + + +# ============================================================================ +# CLI +# ============================================================================ + +def main(): + parser = argparse.ArgumentParser( + description="Automated QA validator for MEVA V10 pipeline" + ) + parser.add_argument("--input", "-i", required=True, + help="Path to raw or naturalized QA JSON file") + parser.add_argument("-v", "--verbose", action="store_true", + help="Print detailed validation report") + parser.add_argument("--json", action="store_true", + help="Output report as JSON") + parser.add_argument("--min-score", type=int, default=0, + help="Exit with code 1 if quality score < this threshold") + args = parser.parse_args() + + input_path = Path(args.input) + if not input_path.exists(): + print(f"ERROR: File not found: {input_path}") + sys.exit(1) + + with open(input_path) as f: + data = json.load(f) + + report = validate(data, verbose=args.verbose) + + if args.json: + print(json.dumps(report, indent=2)) + + if args.min_score and report["quality_score"] < args.min_score: + print(f"\nFAIL: Quality score {report['quality_score']} < {args.min_score}") + sys.exit(1) + + sys.exit(0) + + +if __name__ == "__main__": + main() From 823d3b28a487d10f608027dd45f11da547792f5c Mon Sep 17 00:00:00 2001 From: Syzygianinfern0 Date: Fri, 27 Feb 2026 17:18:32 -0600 Subject: [PATCH 15/26] Add new slot extraction script, and batch run script - Introduced `extract_slot_lists.py` to extract slot lists from `slot_index.json` and save them to a text file. - Added `run_all_slots.sh` script to automate the processing of slots listed in `slot_list_from_slot_index.txt`. - Created `slot_list_from_slot_index.txt` containing a comprehensive list of slots for processing. - Updated `.gitignore` to ensure proper handling of the `data/` directory. --- .gitignore | 3 +- meva/data/slot_list_from_slot_index.txt | 381 ++++++++++++++++++++++++ meva/run_all_slots.sh | 23 ++ meva/scripts/extract_slot_lists.py | 46 +++ 4 files changed, 451 insertions(+), 2 deletions(-) create mode 100644 meva/data/slot_list_from_slot_index.txt create mode 100755 meva/run_all_slots.sh create mode 100644 meva/scripts/extract_slot_lists.py diff --git a/.gitignore b/.gitignore index 1730c11..7213a5e 100644 --- a/.gitignore +++ b/.gitignore @@ -181,7 +181,6 @@ cython_debug/ env *.pyc output/ -data/ lm_cache .idea build @@ -213,7 +212,7 @@ LLaVA/ temp/ InternVL/ logs/ -data/ +/data/ llava-video/ Video-MME/ VATEX/ diff --git a/meva/data/slot_list_from_slot_index.txt b/meva/data/slot_list_from_slot_index.txt new file mode 100644 index 0000000..64bdff6 --- /dev/null +++ b/meva/data/slot_list_from_slot_index.txt @@ -0,0 +1,381 @@ +2018-03-05.13-10.admin +2018-03-05.13-10.bus +2018-03-05.13-10.hospital +2018-03-05.13-10.school +2018-03-05.13-15.admin +2018-03-05.13-15.bus +2018-03-05.13-15.hospital +2018-03-05.13-15.school +2018-03-05.13-20.admin +2018-03-05.13-20.bus +2018-03-05.13-20.hospital +2018-03-05.13-20.school +2018-03-05.14-00.admin +2018-03-05.14-00.bus +2018-03-05.14-00.hospital +2018-03-05.14-00.school +2018-03-05.14-05.admin +2018-03-05.14-05.bus +2018-03-05.14-05.hospital +2018-03-05.14-05.school +2018-03-05.14-10.admin +2018-03-05.14-10.bus +2018-03-05.14-10.hospital +2018-03-05.14-10.school +2018-03-07.10-55.admin +2018-03-07.10-55.bus +2018-03-07.10-55.hospital +2018-03-07.10-55.school +2018-03-07.11-00.admin +2018-03-07.11-00.bus +2018-03-07.11-00.hospital +2018-03-07.11-00.school +2018-03-07.11-05.admin +2018-03-07.11-05.bus +2018-03-07.11-05.hospital +2018-03-07.11-05.school +2018-03-07.11-10.admin +2018-03-07.11-10.bus +2018-03-07.11-10.hospital +2018-03-07.11-10.school +2018-03-07.16-50.admin +2018-03-07.16-50.bus +2018-03-07.16-50.hospital +2018-03-07.16-50.school +2018-03-07.16-55.admin +2018-03-07.16-55.bus +2018-03-07.16-55.hospital +2018-03-07.16-55.school +2018-03-07.17-00.admin +2018-03-07.17-00.bus +2018-03-07.17-00.hospital +2018-03-07.17-00.school +2018-03-07.17-05.admin +2018-03-07.17-05.bus +2018-03-07.17-05.hospital +2018-03-07.17-05.school +2018-03-07.17-20.admin +2018-03-07.17-20.bus +2018-03-07.17-20.hospital +2018-03-07.17-20.school +2018-03-07.17-25.admin +2018-03-07.17-25.bus +2018-03-07.17-25.hospital +2018-03-07.17-25.school +2018-03-07.17-30.admin +2018-03-07.17-30.bus +2018-03-07.17-30.hospital +2018-03-07.17-30.school +2018-03-07.17-35.admin +2018-03-07.17-35.bus +2018-03-07.17-35.hospital +2018-03-07.17-35.school +2018-03-09.10-10.admin +2018-03-09.10-10.bus +2018-03-09.10-10.hospital +2018-03-09.10-10.school +2018-03-09.10-15.admin +2018-03-09.10-15.bus +2018-03-09.10-15.hospital +2018-03-09.10-15.school +2018-03-09.10-20.admin +2018-03-09.10-20.bus +2018-03-09.10-20.hospital +2018-03-09.10-20.school +2018-03-09.10-25.admin +2018-03-09.10-25.bus +2018-03-09.10-25.hospital +2018-03-09.10-25.school +2018-03-09.10-30.admin +2018-03-09.10-30.bus +2018-03-09.10-30.hospital +2018-03-09.10-30.school +2018-03-09.10-35.admin +2018-03-09.10-35.bus +2018-03-09.10-35.hospital +2018-03-09.10-35.school +2018-03-09.10-40.admin +2018-03-09.10-40.bus +2018-03-09.10-40.hospital +2018-03-09.10-40.school +2018-03-11.11-15.hospital +2018-03-11.11-15.school +2018-03-11.11-20.admin +2018-03-11.11-20.bus +2018-03-11.11-20.hospital +2018-03-11.11-20.school +2018-03-11.11-25.admin +2018-03-11.11-25.bus +2018-03-11.11-25.hospital +2018-03-11.11-25.school +2018-03-11.11-30.admin +2018-03-11.11-30.bus +2018-03-11.11-30.hospital +2018-03-11.11-30.school +2018-03-11.11-35.admin +2018-03-11.11-35.bus +2018-03-11.11-35.hospital +2018-03-11.11-35.school +2018-03-11.11-40.admin +2018-03-11.11-40.bus +2018-03-11.11-40.hospital +2018-03-11.11-40.school +2018-03-11.11-45.admin +2018-03-11.11-45.bus +2018-03-11.11-45.hospital +2018-03-11.11-45.school +2018-03-11.11-50.admin +2018-03-11.11-50.bus +2018-03-11.11-50.hospital +2018-03-11.11-50.school +2018-03-11.11-55.admin +2018-03-11.11-55.bus +2018-03-11.11-55.hospital +2018-03-11.11-55.school +2018-03-11.12-00.school +2018-03-11.13-50.admin +2018-03-11.13-50.bus +2018-03-11.13-50.hospital +2018-03-11.13-50.school +2018-03-11.13-55.admin +2018-03-11.13-55.bus +2018-03-11.13-55.hospital +2018-03-11.13-55.school +2018-03-11.14-00.admin +2018-03-11.14-00.bus +2018-03-11.14-00.hospital +2018-03-11.14-00.school +2018-03-11.14-05.admin +2018-03-11.14-05.bus +2018-03-11.14-05.hospital +2018-03-11.14-05.school +2018-03-11.14-10.admin +2018-03-11.14-10.bus +2018-03-11.14-10.hospital +2018-03-11.14-10.school +2018-03-11.14-15.admin +2018-03-11.14-15.bus +2018-03-11.14-15.hospital +2018-03-11.14-15.school +2018-03-11.14-20.admin +2018-03-11.14-20.bus +2018-03-11.14-20.hospital +2018-03-11.14-20.school +2018-03-11.16-10.admin +2018-03-11.16-10.bus +2018-03-11.16-10.hospital +2018-03-11.16-10.school +2018-03-11.16-15.admin +2018-03-11.16-15.bus +2018-03-11.16-15.hospital +2018-03-11.16-15.school +2018-03-11.16-20.admin +2018-03-11.16-20.bus +2018-03-11.16-20.hospital +2018-03-11.16-20.school +2018-03-11.16-25.admin +2018-03-11.16-25.bus +2018-03-11.16-25.hospital +2018-03-11.16-25.school +2018-03-11.16-30.admin +2018-03-11.16-30.bus +2018-03-11.16-30.hospital +2018-03-11.16-30.school +2018-03-11.16-35.admin +2018-03-11.16-35.bus +2018-03-11.16-35.hospital +2018-03-11.16-35.school +2018-03-11.16-40.admin +2018-03-11.16-40.bus +2018-03-11.16-40.hospital +2018-03-11.16-40.school +2018-03-11.16-45.bus +2018-03-11.16-45.school +2018-03-11.17-10.admin +2018-03-11.17-10.bus +2018-03-11.17-10.hospital +2018-03-11.17-10.school +2018-03-11.17-15.admin +2018-03-11.17-15.bus +2018-03-11.17-15.hospital +2018-03-11.17-15.school +2018-03-11.17-20.admin +2018-03-11.17-20.bus +2018-03-11.17-20.hospital +2018-03-11.17-20.school +2018-03-11.17-25.admin +2018-03-11.17-25.bus +2018-03-11.17-25.hospital +2018-03-11.17-25.school +2018-03-12.10-00.admin +2018-03-12.10-00.bus +2018-03-12.10-00.hospital +2018-03-12.10-00.school +2018-03-12.10-05.admin +2018-03-12.10-05.bus +2018-03-12.10-05.hospital +2018-03-12.10-05.school +2018-03-12.10-10.admin +2018-03-12.10-10.bus +2018-03-12.10-10.hospital +2018-03-12.10-10.school +2018-03-12.10-15.admin +2018-03-12.10-15.bus +2018-03-12.10-15.hospital +2018-03-12.10-15.school +2018-03-12.10-20.admin +2018-03-12.10-20.bus +2018-03-12.10-20.hospital +2018-03-12.10-20.school +2018-03-12.10-25.admin +2018-03-12.10-25.bus +2018-03-12.10-25.hospital +2018-03-12.10-25.school +2018-03-12.10-30.admin +2018-03-12.10-30.bus +2018-03-12.10-30.hospital +2018-03-12.10-30.school +2018-03-12.10-40.admin +2018-03-12.10-40.bus +2018-03-12.10-40.hospital +2018-03-12.10-40.school +2018-03-12.10-45.admin +2018-03-12.10-45.bus +2018-03-12.10-45.hospital +2018-03-12.10-45.school +2018-03-12.10-50.admin +2018-03-12.10-50.bus +2018-03-12.10-50.hospital +2018-03-12.10-50.school +2018-03-12.10-55.admin +2018-03-12.10-55.bus +2018-03-12.10-55.hospital +2018-03-12.10-55.school +2018-03-12.11-00.admin +2018-03-12.11-00.bus +2018-03-12.11-00.hospital +2018-03-12.11-00.school +2018-03-12.11-05.admin +2018-03-12.11-05.bus +2018-03-12.11-05.hospital +2018-03-12.11-05.school +2018-03-12.11-10.admin +2018-03-12.11-10.bus +2018-03-12.11-10.hospital +2018-03-12.11-10.school +2018-03-13.15-50.admin +2018-03-13.15-50.bus +2018-03-13.15-50.hospital +2018-03-13.15-50.school +2018-03-13.15-55.admin +2018-03-13.15-55.bus +2018-03-13.15-55.hospital +2018-03-13.15-55.school +2018-03-13.16-00.admin +2018-03-13.16-00.bus +2018-03-13.16-00.hospital +2018-03-13.16-00.school +2018-03-13.16-05.admin +2018-03-13.16-05.bus +2018-03-13.16-05.hospital +2018-03-13.16-05.school +2018-03-13.16-10.admin +2018-03-13.16-10.bus +2018-03-13.16-10.hospital +2018-03-13.16-10.school +2018-03-13.16-15.admin +2018-03-13.16-15.bus +2018-03-13.16-15.hospital +2018-03-13.16-15.school +2018-03-13.16-20.admin +2018-03-13.16-20.bus +2018-03-13.16-20.hospital +2018-03-13.16-20.school +2018-03-13.16-25.admin +2018-03-13.16-25.bus +2018-03-13.16-25.hospital +2018-03-13.16-25.school +2018-03-13.16-30.admin +2018-03-13.16-30.bus +2018-03-13.16-30.hospital +2018-03-13.16-30.school +2018-03-13.17-05.admin +2018-03-13.17-05.bus +2018-03-13.17-05.hospital +2018-03-13.17-05.school +2018-03-13.17-10.admin +2018-03-13.17-10.bus +2018-03-13.17-10.hospital +2018-03-13.17-10.school +2018-03-13.17-15.admin +2018-03-13.17-15.bus +2018-03-13.17-15.hospital +2018-03-13.17-15.school +2018-03-13.17-20.admin +2018-03-13.17-20.bus +2018-03-13.17-20.hospital +2018-03-13.17-20.school +2018-03-13.17-25.admin +2018-03-13.17-25.bus +2018-03-13.17-25.hospital +2018-03-13.17-25.school +2018-03-13.17-30.admin +2018-03-13.17-30.bus +2018-03-13.17-30.hospital +2018-03-13.17-30.school +2018-03-13.17-35.admin +2018-03-13.17-35.bus +2018-03-13.17-35.hospital +2018-03-13.17-35.school +2018-03-13.17-40.admin +2018-03-13.17-40.bus +2018-03-13.17-40.hospital +2018-03-13.17-40.school +2018-03-15.14-50.admin +2018-03-15.14-50.bus +2018-03-15.14-50.hospital +2018-03-15.14-50.school +2018-03-15.14-55.admin +2018-03-15.14-55.bus +2018-03-15.14-55.hospital +2018-03-15.14-55.school +2018-03-15.15-00.admin +2018-03-15.15-00.bus +2018-03-15.15-00.hospital +2018-03-15.15-00.school +2018-03-15.15-05.admin +2018-03-15.15-05.bus +2018-03-15.15-05.hospital +2018-03-15.15-05.school +2018-03-15.15-10.admin +2018-03-15.15-10.bus +2018-03-15.15-10.hospital +2018-03-15.15-10.school +2018-03-15.15-15.admin +2018-03-15.15-15.bus +2018-03-15.15-15.hospital +2018-03-15.15-15.school +2018-03-15.15-30.admin +2018-03-15.15-30.bus +2018-03-15.15-30.hospital +2018-03-15.15-30.school +2018-03-15.15-35.admin +2018-03-15.15-35.bus +2018-03-15.15-35.hospital +2018-03-15.15-35.school +2018-03-15.15-40.admin +2018-03-15.15-40.bus +2018-03-15.15-40.hospital +2018-03-15.15-40.school +2018-03-15.15-45.admin +2018-03-15.15-45.bus +2018-03-15.15-45.hospital +2018-03-15.15-45.school +2018-03-15.15-50.admin +2018-03-15.15-50.bus +2018-03-15.15-50.hospital +2018-03-15.15-50.school +2018-03-15.15-55.admin +2018-03-15.15-55.bus +2018-03-15.15-55.hospital +2018-03-15.15-55.school diff --git a/meva/run_all_slots.sh b/meva/run_all_slots.sh new file mode 100755 index 0000000..8e8d4d8 --- /dev/null +++ b/meva/run_all_slots.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +LIST_FILE="data/slot_list_from_slot_index.txt" +OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data" +RUN_FIRST_TEN="true" + +mkdir -p "$OUTPUT_DIR/qa_pairs/raw" +export MEVA_OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data_all_slots/" + +count=0 +while IFS= read -r slot; do + if [[ -z "$slot" ]]; then + continue + fi + if [[ "$RUN_FIRST_TEN" == "true" && "$count" -ge 10 ]]; then + break + fi + python -m scripts.v10.run_pipeline \ + --slot "$slot" \ + -v \ + --seed 42 + count=$((count + 1)) +done < "$LIST_FILE" diff --git a/meva/scripts/extract_slot_lists.py b/meva/scripts/extract_slot_lists.py new file mode 100644 index 0000000..97930a7 --- /dev/null +++ b/meva/scripts/extract_slot_lists.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +""" +Extract slot list from slot_index.json and write to a file. +""" + +from __future__ import annotations + +import argparse +import json +from pathlib import Path + + +def read_slot_index(path: Path) -> set[str]: + with path.open("r", encoding="utf-8") as handle: + data = json.load(handle) + return set(data.keys()) + + +def write_list(path: Path, slots: set[str]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("w", encoding="utf-8") as handle: + for slot in sorted(slots): + handle.write(f"{slot}\n") + + +def main() -> None: + repo_root = Path(__file__).resolve().parents[2] + default_slot_index = repo_root / "meva" / "data" / "slot_index.json" + default_out_file = default_slot_index.with_name("slot_list_from_slot_index.txt") + + parser = argparse.ArgumentParser( + description="Extract slot list from slot_index.json." + ) + parser.add_argument("--slot-index", type=Path, default=default_slot_index) + parser.add_argument("--out-file", type=Path, default=default_out_file) + args = parser.parse_args() + + slot_index_slots = read_slot_index(args.slot_index) + + write_list(args.out_file, slot_index_slots) + + print(f"Wrote {len(slot_index_slots)} slots to {args.out_file}") + + +if __name__ == "__main__": + main() From 81037a19761069e3cb0865d40bd9d287ce7cac62 Mon Sep 17 00:00:00 2001 From: Syzygianinfern0 Date: Fri, 27 Feb 2026 18:32:20 -0600 Subject: [PATCH 16/26] Add slot processing scripts for batch execution --- meva/{run_all_slots.sh => 1_run_all_slots.sh} | 0 meva/2_run_naturalize_all_slots.sh | 34 +++++++++++++++++++ 2 files changed, 34 insertions(+) rename meva/{run_all_slots.sh => 1_run_all_slots.sh} (100%) create mode 100755 meva/2_run_naturalize_all_slots.sh diff --git a/meva/run_all_slots.sh b/meva/1_run_all_slots.sh similarity index 100% rename from meva/run_all_slots.sh rename to meva/1_run_all_slots.sh diff --git a/meva/2_run_naturalize_all_slots.sh b/meva/2_run_naturalize_all_slots.sh new file mode 100755 index 0000000..c1527a2 --- /dev/null +++ b/meva/2_run_naturalize_all_slots.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +LIST_FILE="data/slot_list_from_slot_index.txt" +RUN_FIRST_TEN="true" +MODEL="gpt-5.2" +TEMPERATURE="0.3" +VERBOSE="true" + +export MEVA_OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data_all_slots/" +mkdir -p "$MEVA_OUTPUT_DIR/qa_pairs/raw" + +count=0 +while IFS= read -r slot; do + if [[ -z "$slot" ]]; then + continue + fi + if [[ "$RUN_FIRST_TEN" == "true" && "$count" -ge 10 ]]; then + break + fi + + input_path="$MEVA_OUTPUT_DIR/qa_pairs/raw/${slot}.raw.json" + if [[ ! -f "$input_path" ]]; then + echo "Skipping (missing raw): $input_path" + continue + fi + + args=(--input "$input_path" --model "$MODEL" --temperature "$TEMPERATURE" --yes) + if [[ "$VERBOSE" == "true" ]]; then + args+=("-v") + fi + python -m scripts.v10.naturalize "${args[@]}" + + count=$((count + 1)) +done < "$LIST_FILE" From a9009da24211ab3f0a29299f05b2584889d55bbf Mon Sep 17 00:00:00 2001 From: Syzygianinfern0 Date: Fri, 27 Feb 2026 18:32:46 -0600 Subject: [PATCH 17/26] Add conversion scripts for MEVA naturalized QA JSONs to standarized formats --- meva/3_convert_naturalized_to_standard.sh | 8 + .../convert_naturalized_to_standard.py | 216 ++++++++++++++++++ meva/scripts/v10/naturalize.py | 18 +- 3 files changed, 235 insertions(+), 7 deletions(-) create mode 100755 meva/3_convert_naturalized_to_standard.sh create mode 100644 meva/scripts/convert_naturalized_to_standard.py diff --git a/meva/3_convert_naturalized_to_standard.sh b/meva/3_convert_naturalized_to_standard.sh new file mode 100755 index 0000000..5372a95 --- /dev/null +++ b/meva/3_convert_naturalized_to_standard.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +INPUT_DIR="/home/ss99569/code/multi-cam/Multi-Camera/datasets/multi-cam-dataset/meva/data_all_slots/qa_pairs/raw" +OUTPUT_DIR="/home/ss99569/code/multi-cam/Multi-Camera/datasets/multi-cam-dataset/meva/" + +python /home/ss99569/code/multi-cam/Multi-Camera/meva/scripts/convert_naturalized_to_standard.py \ + --input-dir "$INPUT_DIR" \ + --output-dir "$OUTPUT_DIR" diff --git a/meva/scripts/convert_naturalized_to_standard.py b/meva/scripts/convert_naturalized_to_standard.py new file mode 100644 index 0000000..d788823 --- /dev/null +++ b/meva/scripts/convert_naturalized_to_standard.py @@ -0,0 +1,216 @@ +#!/usr/bin/env python3 +""" +Convert MEVA naturalized QA JSONs into standardized per-category formats. +""" + +import argparse +import hashlib +import json +from pathlib import Path +from typing import Any, Dict, Iterable, List, Optional + + +DEFAULT_INPUT_DIR = Path( + "/home/ss99569/code/multi-cam/Multi-Camera/" + "datasets/multi-cam-dataset/meva/data_all_slots/qa_pairs/raw" +) +DEFAULT_OUTPUT_DIR = Path( + "/home/ss99569/code/multi-cam/Multi-Camera/" + "datasets/multi-cam-dataset/meva/converted" +) + + +def _stable_hex_id(*parts: str) -> str: + h = hashlib.md5() + h.update("::".join(parts).encode("utf-8")) + return h.hexdigest() + + +def _stable_int_id(*parts: str, mod: int = 1_000_000_000) -> int: + hex_id = _stable_hex_id(*parts) + return int(hex_id[:12], 16) % mod + + +def _options_list_to_dict(options: Optional[List[str]]) -> Optional[Dict[str, str]]: + if not options: + return None + letters = ["A", "B", "C", "D"] + result = {} + for i, opt in enumerate(options): + if i >= len(letters): + break + result[letters[i]] = opt + return result + + +def _answer_letter(correct_idx: Optional[int]) -> Optional[str]: + if correct_idx is None or correct_idx < 0: + return None + return chr(65 + correct_idx) + + +def _question_text(qa: Dict[str, Any]) -> str: + return qa.get("naturalized_question") or qa.get("question_template") or "" + + +def _metadata_base(slot: str, qa: Dict[str, Any]) -> Dict[str, Any]: + return { + "slot": slot, + "question_id": qa.get("question_id"), + "difficulty": qa.get("difficulty"), + "requires_cameras": qa.get("requires_cameras"), + "requires_multi_camera": qa.get("requires_multi_camera"), + "verification": qa.get("verification"), + "debug_info": qa.get("debug_info"), + } + + +def _convert_event_ordering(slot: str, qa: Dict[str, Any]) -> Dict[str, Any]: + options = qa.get("options") + return { + "task_id": _stable_int_id(slot, qa.get("question_id", ""), "event_ordering"), + "task_name": slot, + "episode_id": _stable_int_id(slot, "event_ordering"), + "question_type": "event_ordering", + "question": _question_text(qa), + "options": _options_list_to_dict(options), + "answer": _answer_letter(qa.get("correct_answer_index")), + "reasoning": qa.get("reasoning", ""), + "video_paths": qa.get("video_paths", []), + "metadata": _metadata_base(slot, qa), + } + + +def _convert_spatial(slot: str, qa: Dict[str, Any]) -> Dict[str, Any]: + options = qa.get("options") + return { + "id": _stable_hex_id(slot, qa.get("question_id", ""), "spatial"), + "video_id": slot, + "question_type": "spatial", + "question": _question_text(qa), + "options": _options_list_to_dict(options), + "answer": _answer_letter(qa.get("correct_answer_index")), + "reasoning": qa.get("reasoning", ""), + "video_paths": qa.get("video_paths", []), + "metadata": _metadata_base(slot, qa), + } + + +def _convert_summarization(slot: str, qa: Dict[str, Any]) -> Dict[str, Any]: + options = qa.get("options") or [] + correct_idx = qa.get("correct_answer_index") + answer = options[correct_idx] if isinstance(correct_idx, int) and correct_idx < len(options) else "" + return { + "task_id": _stable_int_id(slot, qa.get("question_id", ""), "summarization"), + "task_name": slot, + "episode_id": _stable_int_id(slot, "summarization"), + "question_type": "summarization", + "question": _question_text(qa), + "answer": answer, + "video_paths": qa.get("video_paths", []), + "metadata": _metadata_base(slot, qa), + } + + +def _convert_temporal(slot: str, qa: Dict[str, Any]) -> Dict[str, Any]: + options = qa.get("options") + return { + "task_id": _stable_int_id(slot, qa.get("question_id", ""), "temporal"), + "task_name": slot, + "episode_id": _stable_int_id(slot, "temporal"), + "question_type": "temporal", + "question": _question_text(qa), + "options": _options_list_to_dict(options), + "answer": _answer_letter(qa.get("correct_answer_index")), + "reasoning": qa.get("reasoning", ""), + "video_paths": qa.get("video_paths", []), + "metadata": _metadata_base(slot, qa), + } + + +def _convert_counting(slot: str, qa: Dict[str, Any]) -> Dict[str, Any]: + options = qa.get("options") or [] + correct_idx = qa.get("correct_answer_index") + answer = options[correct_idx] if isinstance(correct_idx, int) and correct_idx < len(options) else "" + return { + "id": _stable_hex_id(slot, qa.get("question_id", ""), "counting"), + "video_id": slot, + "question_type": "counting", + "question": _question_text(qa), + "options": None, + "answer": answer, + "reasoning": qa.get("reasoning", ""), + "video_paths": qa.get("video_paths", []), + "metadata": _metadata_base(slot, qa), + } + + +def _convert_best_camera(slot: str, qa: Dict[str, Any]) -> Dict[str, Any]: + options = qa.get("options") + verification = qa.get("verification") or {} + metadata = _metadata_base(slot, qa) + metadata["camera_question_subtype"] = qa.get("subcategory") or "best_camera" + if verification.get("correct_camera"): + metadata["best_camera_scene"] = verification.get("correct_camera") + return { + "video_id": slot, + "question_type": "camera", + "question": _question_text(qa), + "options": _options_list_to_dict(options), + "answer": _answer_letter(qa.get("correct_answer_index")), + "reasoning": qa.get("reasoning", ""), + "video_paths": qa.get("video_paths", []), + "metadata": metadata, + } + + +CONVERTERS = { + "event_ordering": _convert_event_ordering, + "spatial": _convert_spatial, + "summarization": _convert_summarization, + "temporal": _convert_temporal, + "counting": _convert_counting, + "best_camera": _convert_best_camera, +} + + +def _iter_naturalized_files(input_dir: Path) -> Iterable[Path]: + return sorted(input_dir.glob("*.raw.naturalized.json")) + + +def convert_all(input_dir: Path) -> Dict[str, List[Dict[str, Any]]]: + outputs: Dict[str, List[Dict[str, Any]]] = {k: [] for k in CONVERTERS} + for path in _iter_naturalized_files(input_dir): + with path.open() as f: + data = json.load(f) + slot = data.get("slot") or path.stem.replace(".raw.naturalized", "") + for qa in data.get("qa_pairs", []): + category = qa.get("category") + if category not in CONVERTERS: + continue + outputs[category].append(CONVERTERS[category](slot, qa)) + return outputs + + +def write_outputs(outputs: Dict[str, List[Dict[str, Any]]], output_dir: Path) -> None: + output_dir.mkdir(parents=True, exist_ok=True) + for category, items in outputs.items(): + out_path = output_dir / f"qa_{category}.json" + if out_path.parent != output_dir: + raise ValueError(f"Refusing to write outside output dir: {out_path}") + with out_path.open("w") as f: + json.dump(items, f, indent=2) + + +def main() -> None: + parser = argparse.ArgumentParser(description="Convert MEVA naturalized QA to standard formats") + parser.add_argument("--input-dir", type=Path, default=DEFAULT_INPUT_DIR) + parser.add_argument("--output-dir", type=Path, default=DEFAULT_OUTPUT_DIR) + args = parser.parse_args() + + outputs = convert_all(args.input_dir) + write_outputs(outputs, args.output_dir) + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/naturalize.py b/meva/scripts/v10/naturalize.py index 4623acb..3456c48 100644 --- a/meva/scripts/v10/naturalize.py +++ b/meva/scripts/v10/naturalize.py @@ -862,16 +862,20 @@ def _naturalize_question( for attempt in range(MAX_RETRIES): try: - response = client.chat.completions.create( - model=model, - temperature=temperature, - response_format={"type": "json_object"}, - messages=[ + request_args = { + "model": model, + "temperature": temperature, + "response_format": {"type": "json_object"}, + "messages": [ {"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": user_message}, ], - max_tokens=400, - ) + } + if model.startswith("gpt-5"): + request_args["max_completion_tokens"] = 400 + else: + request_args["max_tokens"] = 400 + response = client.chat.completions.create(**request_args) result = json.loads(response.choices[0].message.content) From c54b312e46f2e453a99b8f14df7bfe57f637478b Mon Sep 17 00:00:00 2001 From: Syzygianinfern0 Date: Fri, 27 Feb 2026 19:32:49 -0600 Subject: [PATCH 18/26] Add logging functionality to MEVA processing scripts - Introduced timestamped log files for `1_run_all_slots.sh`, `2_run_naturalize_all_slots.sh`, and `3_convert_naturalized_to_standard.sh`. - Created a dedicated logs directory within the MEVA output directory to store logs for each script execution. --- meva/1_run_all_slots.sh | 5 +++++ meva/2_run_naturalize_all_slots.sh | 5 +++++ meva/3_convert_naturalized_to_standard.sh | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/meva/1_run_all_slots.sh b/meva/1_run_all_slots.sh index 8e8d4d8..dc91665 100755 --- a/meva/1_run_all_slots.sh +++ b/meva/1_run_all_slots.sh @@ -7,6 +7,11 @@ RUN_FIRST_TEN="true" mkdir -p "$OUTPUT_DIR/qa_pairs/raw" export MEVA_OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data_all_slots/" +TIMESTAMP="$(date +"%Y%m%d-%H%M%S")" +LOG_DIR="${MEVA_OUTPUT_DIR}/logs" +mkdir -p "$LOG_DIR" +exec > >(tee -a "${LOG_DIR}/${TIMESTAMP}_1_run_all_slots.log") 2>&1 + count=0 while IFS= read -r slot; do if [[ -z "$slot" ]]; then diff --git a/meva/2_run_naturalize_all_slots.sh b/meva/2_run_naturalize_all_slots.sh index c1527a2..58787e9 100755 --- a/meva/2_run_naturalize_all_slots.sh +++ b/meva/2_run_naturalize_all_slots.sh @@ -9,6 +9,11 @@ VERBOSE="true" export MEVA_OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data_all_slots/" mkdir -p "$MEVA_OUTPUT_DIR/qa_pairs/raw" +TIMESTAMP="$(date +"%Y%m%d-%H%M%S")" +LOG_DIR="${MEVA_OUTPUT_DIR}/logs" +mkdir -p "$LOG_DIR" +exec > >(tee -a "${LOG_DIR}/${TIMESTAMP}_2_run_naturalize_all_slots.log") 2>&1 + count=0 while IFS= read -r slot; do if [[ -z "$slot" ]]; then diff --git a/meva/3_convert_naturalized_to_standard.sh b/meva/3_convert_naturalized_to_standard.sh index 5372a95..afe2e4a 100755 --- a/meva/3_convert_naturalized_to_standard.sh +++ b/meva/3_convert_naturalized_to_standard.sh @@ -3,6 +3,11 @@ INPUT_DIR="/home/ss99569/code/multi-cam/Multi-Camera/datasets/multi-cam-dataset/meva/data_all_slots/qa_pairs/raw" OUTPUT_DIR="/home/ss99569/code/multi-cam/Multi-Camera/datasets/multi-cam-dataset/meva/" +TIMESTAMP="$(date +"%Y%m%d-%H%M%S")" +LOG_DIR="${OUTPUT_DIR}/logs" +mkdir -p "$LOG_DIR" +exec > >(tee -a "${LOG_DIR}/${TIMESTAMP}_3_convert_naturalized_to_standard.log") 2>&1 + python /home/ss99569/code/multi-cam/Multi-Camera/meva/scripts/convert_naturalized_to_standard.py \ --input-dir "$INPUT_DIR" \ --output-dir "$OUTPUT_DIR" From 92e012371de7b75378f155f11eb9d14fac5491cc Mon Sep 17 00:00:00 2001 From: Syzygianinfern0 Date: Fri, 27 Feb 2026 19:33:03 -0600 Subject: [PATCH 19/26] Add camera name extraction and update metadata in naturalized to standard conversion script --- meva/scripts/convert_naturalized_to_standard.py | 16 ++++++++++++++++ meva/scripts/v10/run_pipeline.py | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/meva/scripts/convert_naturalized_to_standard.py b/meva/scripts/convert_naturalized_to_standard.py index d788823..a407c6a 100644 --- a/meva/scripts/convert_naturalized_to_standard.py +++ b/meva/scripts/convert_naturalized_to_standard.py @@ -6,6 +6,7 @@ import argparse import hashlib import json +import re from pathlib import Path from typing import Any, Dict, Iterable, List, Optional @@ -53,6 +54,20 @@ def _question_text(qa: Dict[str, Any]) -> str: return qa.get("naturalized_question") or qa.get("question_template") or "" +def _camera_name_from_basename(basename: str) -> str: + match = re.search(r"(G\d{3})", basename) + camera_id = match.group(1) if match else Path(basename).stem + return f"Camera {camera_id}" + + +def _camera_names(video_paths: Optional[List[str]]) -> Dict[str, str]: + camera_names: Dict[str, str] = {} + for video_path in video_paths or []: + basename = Path(video_path).name + camera_names[basename] = _camera_name_from_basename(basename) + return camera_names + + def _metadata_base(slot: str, qa: Dict[str, Any]) -> Dict[str, Any]: return { "slot": slot, @@ -62,6 +77,7 @@ def _metadata_base(slot: str, qa: Dict[str, Any]) -> Dict[str, Any]: "requires_multi_camera": qa.get("requires_multi_camera"), "verification": qa.get("verification"), "debug_info": qa.get("debug_info"), + "camera_names": _camera_names(qa.get("video_paths")), } diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index d05ca31..7f1cb78 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -129,6 +129,10 @@ def _build_video_paths(q: dict, slot: str) -> List[str]: hour = slot.split(".")[1].split("-")[0] # "11" slot_dir = MEVA_MP4_BASE / date / hour / slot + # Prefer including all videos for the slot, if available. + if slot_dir.exists(): + return sorted(str(p) for p in slot_dir.glob("*.mp4")) + paths = [] seen = set() From a96f6da547a3a7c94d3d58c18789f08e20934746 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Fri, 27 Feb 2026 18:03:14 -0600 Subject: [PATCH 20/26] fix: implement all 12 QA pipeline issues from audit Phase 1 (Foundation): - Issue 1: Color-match MEVID assignment scoring in person_descriptions.py - Issue 2: Change default extraction method to SegFormer Phase 2 (Bug Fixes): - Issue 5: First-instance pre-filter in temporal + event ordering - Issue 6: Cross-camera dedup in event ordering + 3D matching in counting - Issue 8: Same-person spatial filter via cluster/IoU/proximity - Issue 9: Deterministic _build_reasoning() for counting questions - Issue 10: Key frames in counting verification output - Issue 11: Annotation verification check in validator (Check 8) Phase 3 (Policy Enforcement): - Issue 12: Remove camera IDs/timestamps from restricted categories, add forbidden_pattern validator (Check 7), update naturalize hints - Issue 4: Camera leak removal (covered by Issue 12) - Issue 3: Rename TARGET_* to MAX_* soft ceilings in run_pipeline.py - Issue 7: Perception enrichment with entity descriptions + uniqueness 10 files modified across the V10 pipeline. All imports validated, integration test passes on 2018-03-11.11-25.school (13 Qs, 12.4s). forbidden_pattern and annotation_verify checks both PASS. --- meva/docs/representative_slots.md | 141 ++++++++++++++++++ meva/run.sh | 2 +- meva/scripts/v10/batch_extract_all_slots.py | 4 +- meva/scripts/v10/generate_event_ordering.py | 38 ++++- meva/scripts/v10/generate_numerical.py | 123 ++++++++++++++-- meva/scripts/v10/generate_perception.py | 54 ++++++- meva/scripts/v10/generate_spatial.py | 105 +++++++++++--- meva/scripts/v10/generate_temporal.py | 37 ++--- meva/scripts/v10/naturalize.py | 8 +- meva/scripts/v10/person_descriptions.py | 151 ++++++++++++++++++-- meva/scripts/v10/run_pipeline.py | 33 ++--- meva/scripts/v10/validate_qa.py | 149 ++++++++++++++++++- 12 files changed, 750 insertions(+), 95 deletions(-) create mode 100644 meva/docs/representative_slots.md diff --git a/meva/docs/representative_slots.md b/meva/docs/representative_slots.md new file mode 100644 index 0000000..b1f9566 --- /dev/null +++ b/meva/docs/representative_slots.md @@ -0,0 +1,141 @@ +# MEVA Representative Slots + +Analysis across 381 indexed slots (220 with Kitware activity annotations). +Dataset: 37 activity types, 4 sites, 7 dates (Mar 5–15 2018), hours 10–17. + +--- + +## Compact Set — 8 Slots (Maximum Per-Site Richness) + +Covers all 4 sites, all 3 time-of-day periods, 3 different dates. + +| Slot | Site | Time of Day | Date | Cams | Act Types | Annotations | +|------|------|-------------|------|-----:|----------:|------------:| +| `2018-03-15.15-10.school` | school | afternoon | Mar 15 | 13 | **30** | 351 | +| `2018-03-07.11-00.school` | school | morning | Mar 7 | 11 | 29 | 575 | +| `2018-03-15.15-45.bus` | bus | afternoon | Mar 15 | 6 | **31** | 148 | +| `2018-03-07.17-30.bus` | bus | evening | Mar 7 | 6 | 28 | 290 | +| `2018-03-15.15-50.hospital` | hospital | afternoon | Mar 15 | 3 | **27** | 53 | +| `2018-03-07.17-05.hospital` | hospital | evening | Mar 7 | 3 | 26 | 140 | +| `2018-03-07.11-05.admin` | admin | morning | Mar 7 | 2 | 5 | 17 | +| `2018-03-11.16-20.admin` | admin | afternoon | Mar 11 | 2 | 5 | 22 | + +--- + +## Extended Set — 12 Slots (All 7 Recording Dates) + +Add these 4 to the compact set to cover every date in the dataset: + +| Slot | Site | Date | Cams | Act Types | Notes | +|------|------|------|-----:|----------:|-------| +| `2018-03-09.10-15.school` | school | Mar 9 | 13 | 27 | Densest annotations (910) | +| `2018-03-11.16-25.school` | school | Mar 11 | 13 | 29 | High diversity, 457 anns | +| `2018-03-05.13-20.school` | school | Mar 5 | 11 | 25 | Only high-quality Mar 5 slot | +| `2018-03-13.17-10.school` | school | Mar 13 | 13 | 23 | Evening, Mar 13 | + +--- + +## Top Slots Per Site (Full Ranked Lists) + +### School (13 cameras typical) + +| Slot | Cams | Act Types | Annotations | Activity Types | +|------|-----:|----------:|------------:|----------------| +| `2018-03-15.15-10.school` | 13 | 30 | 351 | hand_interacts_with_person, person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_interacts_with_laptop, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_rides_bicycle, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, vehicle_drops_off_person, vehicle_makes_u_turn, vehicle_picks_up_person, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-15.15-15.school` | 13 | 30 | 302 | person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_interacts_with_laptop, person_loads_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_purchases, person_puts_down_object, person_rides_bicycle, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, vehicle_makes_u_turn, vehicle_picks_up_person, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-11.16-25.school` | 13 | 29 | 457 | empty_37, hand_interacts_with_person, person_carries_heavy_object, person_closes_facility_door, person_closes_trunk, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_reads_document, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, person_unloads_vehicle, vehicle_picks_up_person, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-07.11-00.school` | 11 | 29 | 575 | hand_interacts_with_person, person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_enters_scene_through_structure, person_exits_scene_through_structure, person_exits_vehicle, person_loads_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_purchases, person_puts_down_object, person_reads_document, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, person_unloads_vehicle, vehicle_drops_off_person, vehicle_makes_u_turn, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-15.15-35.school` | 11 | 28 | 306 | person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_interacts_with_laptop, person_loads_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_purchases, person_puts_down_object, person_rides_bicycle, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, vehicle_drops_off_person, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-09.10-15.school` | 13 | 27 | **910** | hand_interacts_with_person, person_carries_heavy_object, person_closes_facility_door, person_closes_trunk, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, person_unloads_vehicle, vehicle_drops_off_person, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-11.17-25.school` | 13 | 27 | 951 | hand_interacts_with_person, person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_loads_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, vehicle_picks_up_person, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | + +### Bus (6 cameras typical) + +| Slot | Cams | Act Types | Annotations | Activity Types | +|------|-----:|----------:|------------:|----------------| +| `2018-03-15.15-45.bus` | 6 | 31 | 148 | hand_interacts_with_person, person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_loads_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_rides_bicycle, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, person_unloads_vehicle, vehicle_drops_off_person, vehicle_makes_u_turn, vehicle_picks_up_person, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-07.17-30.bus` | 6 | 28 | 290 | hand_interacts_with_person, person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_loads_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_reads_document, person_sits_down, person_stands_up, person_talks_to_person, person_texts_on_phone, person_transfers_object, person_unloads_vehicle, vehicle_drops_off_person, vehicle_picks_up_person, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-07.11-05.bus` | 6 | 26 | 235 | person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_loads_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_reads_document, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-07.17-00.bus` | 6 | 26 | 372 | person_carries_heavy_object, person_closes_vehicle_door, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_loads_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_purchases, person_puts_down_object, person_reads_document, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, person_unloads_vehicle, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | + +### Hospital (3 cameras typical) + +| Slot | Cams | Act Types | Annotations | Activity Types | +|------|-----:|----------:|------------:|----------------| +| `2018-03-15.15-50.hospital` | 3 | 27 | 53 | hand_interacts_with_person, person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, person_unloads_vehicle, vehicle_drops_off_person, vehicle_makes_u_turn, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-07.17-05.hospital` | 3 | 26 | 140 | person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, vehicle_drops_off_person, vehicle_makes_u_turn, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-15.15-45.hospital` | 3 | 25 | 183 | hand_interacts_with_person, person_carries_heavy_object, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_enters_vehicle, person_exits_scene_through_structure, person_exits_vehicle, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_rides_bicycle, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, vehicle_drops_off_person, vehicle_makes_u_turn, vehicle_picks_up_person, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | +| `2018-03-07.11-00.hospital` | 3 | 24 | 112 | person_carries_heavy_object, person_closes_trunk, person_closes_vehicle_door, person_embraces_person, person_enters_scene_through_structure, person_exits_scene_through_structure, person_exits_vehicle, person_opens_facility_door, person_opens_trunk, person_opens_vehicle_door, person_picks_up_object, person_puts_down_object, person_sits_down, person_stands_up, person_talks_on_phone, person_talks_to_person, person_texts_on_phone, person_transfers_object, person_unloads_vehicle, vehicle_reverses, vehicle_starts, vehicle_stops, vehicle_turns_left, vehicle_turns_right | + +### Admin (2 cameras — inherently sparse) + +| Slot | Cams | Act Types | Annotations | Activity Types | +|------|-----:|----------:|------------:|----------------| +| `2018-03-07.11-05.admin` | 2 | 5 | 17 | person_closes_facility_door, person_enters_scene_through_structure, person_exits_scene_through_structure, person_opens_facility_door, person_talks_to_person | +| `2018-03-11.16-20.admin` | 2 | 5 | 22 | person_enters_scene_through_structure, person_exits_scene_through_structure, person_opens_facility_door, person_talks_on_phone, person_talks_to_person | +| `2018-03-09.10-10.admin` | 2 | 5 | 40 | person_closes_facility_door, person_enters_scene_through_structure, person_exits_scene_through_structure, person_opens_facility_door, person_talks_to_person | + +--- + +## Global Activity Type Distribution (37 types) + +Frequency = number of slots containing that activity type. + +| Activity | Slots | +|----------|------:| +| person_talks_to_person | 179 | +| person_enters_scene_through_structure | 153 | +| person_exits_scene_through_structure | 151 | +| vehicle_turns_right | 142 | +| vehicle_turns_left | 137 | +| person_opens_facility_door | 134 | +| vehicle_stops | 133 | +| vehicle_starts | 130 | +| person_texts_on_phone | 119 | +| person_closes_vehicle_door | 118 | +| person_opens_vehicle_door | 118 | +| person_picks_up_object | 111 | +| person_puts_down_object | 100 | +| person_talks_on_phone | 99 | +| person_exits_vehicle | 89 | +| person_stands_up | 87 | +| person_transfers_object | 84 | +| person_enters_vehicle | 82 | +| vehicle_reverses | 81 | +| person_sits_down | 79 | +| hand_interacts_with_person | 78 | +| person_carries_heavy_object | 72 | +| person_embraces_person | 55 | +| vehicle_makes_u_turn | 47 | +| person_closes_trunk | 46 | +| person_opens_trunk | 45 | +| vehicle_drops_off_person | 40 | +| person_reads_document | 31 | +| person_unloads_vehicle | 28 | +| vehicle_picks_up_person | 27 | +| person_loads_vehicle | 20 | +| person_purchases | 17 | +| person_rides_bicycle | 17 | +| person_closes_facility_door | 11 | +| person_interacts_with_laptop | 6 | +| person_steals_object | 1 | + +### Rare Activity Notes +- `person_steals_object` — only 1 slot in the entire dataset +- `person_interacts_with_laptop` — 6 slots, mostly school Mar 15 (`15-10`, `15-15`, `15-35`) +- `person_purchases` — 17 slots, concentrated in school/bus Mar 7 + +--- + +## Key Notes + +- **Admin site is structurally sparse**: only 2 cameras, max 5 activity types observed — not a pipeline limitation +- **`2018-03-09.10-15.school`** is the single densest slot (910 annotations, 27 types, 13 cameras) — best for stress-testing +- **`2018-03-15.15-45.bus`** has the highest global activity type count (31/37 types) +- **Development slot recommendation**: `2018-03-15.15-10.school` (30 types, 13 cams, afternoon, Mar 15) +- **Cross-site validation recommendation**: `2018-03-07.17-30.bus` (28 types, 6 cams, evening, Mar 7) +- 220/381 slots have Kitware activity annotations; the remaining 161 have only camera coverage in the index + +--- + +*Generated: 2026-02-27 | Source: Kitware KPF YAML annotations + slot_index.json (381 slots)* diff --git a/meva/run.sh b/meva/run.sh index b7623e6..0f6ae96 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -34,7 +34,7 @@ for arg in "$@"; do SLOT="$arg" fi done -SLOT="${SLOT:-2018-03-11.11-25.school}" +SLOT="${SLOT:-2018-03-09.10-15.school}" # export PYTHONPATH=$PYTHONPATH:$(pwd) diff --git a/meva/scripts/v10/batch_extract_all_slots.py b/meva/scripts/v10/batch_extract_all_slots.py index 102a3ca..28e13ab 100755 --- a/meva/scripts/v10/batch_extract_all_slots.py +++ b/meva/scripts/v10/batch_extract_all_slots.py @@ -377,9 +377,9 @@ def main(): help="Resume from previous run (skip completed slots)") parser.add_argument("--verbose", "-v", action="store_true", help="Verbose output from extraction script") - parser.add_argument("--method", default="yolo", + parser.add_argument("--method", default="segformer", choices=["yolo", "segformer", "color_only"], - help="Extraction method (default: yolo)") + help="Extraction method (default: segformer — richest descriptions)") parser.add_argument("--force-reextract", action="store_true", help="Force re-extraction even if descriptions already exist") diff --git a/meva/scripts/v10/generate_event_ordering.py b/meva/scripts/v10/generate_event_ordering.py index e2213d1..12915ca 100644 --- a/meva/scripts/v10/generate_event_ordering.py +++ b/meva/scripts/v10/generate_event_ordering.py @@ -27,6 +27,9 @@ ) from .utils.mevid import find_mevid_persons_for_slot +# Issue 6: Import cross-camera event dedup from temporal generator +from .generate_temporal import _is_likely_duplicate_event + # ============================================================================ # Constants # ============================================================================ @@ -80,15 +83,15 @@ def _get_event_description(event: Event, sg: SceneGraph, # Guard: avoid duplication when desc already contains the activity act_check = humanize_activity(event.activity).lower() if act_check in desc.lower() or activity_text.lower() in desc.lower(): - return f"{desc} on camera {event.camera_id}" - return f"{desc}, {activity_text.lower()} on camera {event.camera_id}" + return desc + return f"{desc}, {activity_text.lower()}" # Use fallback description if available (still better than "Someone") if fallback_desc: act_check = humanize_activity(event.activity).lower() if act_check in fallback_desc.lower() or activity_text.lower() in fallback_desc.lower(): - return f"{fallback_desc} on camera {event.camera_id}" - return f"{fallback_desc}, {activity_text.lower()} on camera {event.camera_id}" + return fallback_desc + return f"{fallback_desc}, {activity_text.lower()}" # Last resort: use geom description directly from entity_descs for eid, entity in sg.entities.items(): @@ -98,10 +101,10 @@ def _get_event_description(event: Event, sg: SceneGraph, d = entity_descs.get(eid) if d and d not in ("a person", "a vehicle", "someone"): if activity_text.lower() in d.lower(): - return f"{d} on camera {event.camera_id}" - return f"{d}, {activity_text.lower()} on camera {event.camera_id}" + return d + return f"{d}, {activity_text.lower()}" - return f"A person {activity_text.lower()} on camera {event.camera_id}" + return f"A person {activity_text.lower()}" # ============================================================================ @@ -206,6 +209,21 @@ def _find_ordering_groups(events: List[Event], sg: SceneGraph, seen_keys.add(key) unique_events.append(e) + if len(unique_events) < MIN_EVENTS: + return [] + + # Issue 5: Keep only the FIRST (earliest) instance per (activity, camera). + # Continuous activities must use their first instance to avoid misleading + # temporal comparisons (e.g., talking from t=10 to t=200 should use t=10). + first_instance: Dict[Tuple[str, str], Event] = {} + for evt in unique_events: + key = (evt.activity, evt.camera_id) + if key not in first_instance or evt.start_sec < first_instance[key].start_sec: + first_instance[key] = evt + # Skip events in the first 5 seconds (camera stabilization period) + unique_events = [e for e in first_instance.values() if e.start_sec >= 5.0] + unique_events.sort(key=lambda e: e.start_sec) + if len(unique_events) < MIN_EVENTS: return [] @@ -240,6 +258,12 @@ def _find_ordering_groups(events: List[Event], sg: SceneGraph, and len(chain) >= 2): continue + # Issue 6: Cross-camera event dedup — skip if candidate + # is a likely duplicate of any event already in the chain + if any(_is_likely_duplicate_event(candidate, existing, sg) + for existing in chain): + continue + chain.append(candidate) if len(chain) < chain_len: diff --git a/meva/scripts/v10/generate_numerical.py b/meva/scripts/v10/generate_numerical.py index 210f333..2613b99 100644 --- a/meva/scripts/v10/generate_numerical.py +++ b/meva/scripts/v10/generate_numerical.py @@ -24,6 +24,13 @@ from .entity_resolution import ResolvedGraph from .activity_hierarchy import humanize_activity, humanize_activity_gerund +# Issue 6: Import 3D position matching for improved cross-camera dedup +try: + from .generate_temporal import _get_event_3d_position, CROSS_CAM_DEDUP_DISTANCE_M + _HAS_3D_DEDUP = True +except ImportError: + _HAS_3D_DEDUP = False + # ============================================================================ # Constants @@ -90,14 +97,20 @@ def _build_options(correct: int, rng: random.Random) -> Tuple[List[str], int]: # Candidate Builders # ============================================================================ -def _dedup_activity_count(events_for_activity: list) -> Tuple[int, List[str]]: +def _dedup_activity_count(events_for_activity: list, + sg: SceneGraph = None) -> Tuple[int, List[str], List[Dict]]: """Count distinct instances of an activity with cross-camera temporal dedup. Events on DIFFERENT cameras whose start_sec is within ±2 seconds are merged into a single cluster (counted as one occurrence). Events on the SAME camera are always counted separately. - Returns (deduped_count, list_of_event_ids). + Issue 6: Also uses 3D position matching when available for more accurate dedup. + Issue 10: Returns cluster details for key_frames in QA output. + + Returns (deduped_count, list_of_event_ids, cluster_details). + cluster_details: List[Dict] with one entry per cluster, each containing + {camera, start_sec, end_sec, start_frame, event_id, clip_file}. """ sorted_evts = sorted(events_for_activity, key=lambda e: e.start_sec) clusters: List[list] = [] @@ -105,16 +118,54 @@ def _dedup_activity_count(events_for_activity: list) -> Tuple[int, List[str]]: merged = False for cluster in clusters: for c_evt in cluster: - if evt.camera_id != c_evt.camera_id and abs(evt.start_sec - c_evt.start_sec) <= 2.0: - cluster.append(evt) - merged = True - break + if evt.camera_id == c_evt.camera_id: + continue # Same camera = always distinct + + # Time-based check + if abs(evt.start_sec - c_evt.start_sec) > 2.0: + continue + + # Issue 6: 3D position check when available + if _HAS_3D_DEDUP and sg is not None: + import numpy as np + pos_a = _get_event_3d_position(evt, sg) + pos_b = _get_event_3d_position(c_evt, sg) + if pos_a is not None and pos_b is not None: + dist = float(np.linalg.norm(pos_a - pos_b)) + if dist > CROSS_CAM_DEDUP_DISTANCE_M: + continue # Far apart, not duplicates despite time proximity + + cluster.append(evt) + merged = True + break if merged: break if not merged: clusters.append([evt]) + all_ids = [e.event_id for e in sorted_evts] - return len(clusters), all_ids + + # Issue 10: Build cluster details (key_frames) — one representative per cluster + cluster_details = [] + for cluster in clusters: + # Use earliest event as representative + rep = min(cluster, key=lambda e: e.start_sec) + clip_file = rep.video_file + if clip_file and clip_file.endswith(".avi"): + clip_file = clip_file.replace(".avi", ".mp4") + cluster_details.append({ + "camera": rep.camera_id, + "start_frame": rep.start_frame, + "start_sec": round(rep.start_sec, 2), + "end_sec": round(rep.end_sec, 2), + "event_id": rep.event_id, + "clip_file": clip_file or "", + "cluster_size": len(cluster), + }) + # Sort chronologically + cluster_details.sort(key=lambda d: d["start_sec"]) + + return len(clusters), all_ids, cluster_details def _activity_counting_candidates(sg: SceneGraph) -> List[Dict]: @@ -132,7 +183,7 @@ def _activity_counting_candidates(sg: SceneGraph) -> List[Dict]: candidates = [] for act, evts in activity_groups.items(): - cnt, event_ids = _dedup_activity_count(evts) + cnt, event_ids, cluster_details = _dedup_activity_count(evts, sg) if cnt < MIN_COUNT or cnt > MAX_COUNT: continue candidates.append({ @@ -142,6 +193,7 @@ def _activity_counting_candidates(sg: SceneGraph) -> List[Dict]: "cameras_involved": sorted(activity_cameras[act]), "event_ids": event_ids, "cross_camera": len(activity_cameras[act]) >= 2, + "key_frames": cluster_details, # Issue 10: per-instance details }) return candidates @@ -216,6 +268,54 @@ def _classify_difficulty(cand: Dict) -> str: return "medium" +# ============================================================================ +# Issue 9: Deterministic Reasoning Generation +# ============================================================================ + +def _build_reasoning(cand: Dict) -> str: + """ + Build deterministic reasoning text for a counting question. + + Uses the deduped cluster details to produce structured reasoning with + per-camera breakdown and the correct count. This reasoning is passed + to naturalize.py so GPT only polishes grammar, not numbers. + + Example: "The action of opening a vehicle door was observed 8 times + across cameras G299 and G330: G299 contributed 5 occurrences and G330 + contributed 3 occurrences (0 cross-camera duplicates were removed)." + """ + activity = humanize_activity(cand.get("activity", "unknown")) + correct = cand["correct_count"] + cameras = cand["cameras_involved"] + key_frames = cand.get("key_frames", []) + + # Per-camera breakdown from key_frames + cam_counts: Dict[str, int] = defaultdict(int) + for kf in key_frames: + cam_counts[kf["camera"]] += 1 + + # Count cross-camera dedup removals + total_raw_events = len(cand.get("event_ids", [])) + dedup_removed = total_raw_events - correct + + if len(cameras) == 1: + breakdown = f"all on camera {cameras[0]}" + else: + cam_parts = [f"{cam}: {cam_counts.get(cam, 0)}" for cam in sorted(cam_counts.keys())] + breakdown = ", ".join(cam_parts) + + reasoning = ( + f"The action of {activity} was observed {correct} time{'s' if correct != 1 else ''} " + f"across {len(cameras)} camera{'s' if len(cameras) != 1 else ''} " + f"({breakdown})" + ) + if dedup_removed > 0: + reasoning += f". {dedup_removed} cross-camera duplicate{'s' if dedup_removed != 1 else ''} removed" + reasoning += "." + + return reasoning + + # ============================================================================ # Public API # ============================================================================ @@ -333,6 +433,9 @@ def generate_numerical_qa( verification["event_ids"] = cand["event_ids"] if cand.get("cluster_ids"): verification["cluster_ids"] = cand["cluster_ids"] + # Issue 10: Key frames for visual verification + if cand.get("key_frames"): + verification["key_frames"] = cand["key_frames"] debug_info: Dict[str, Any] = { "subtype": cand["subtype"], @@ -358,6 +461,9 @@ def generate_numerical_qa( if clip_files: debug_info["clip_files"] = sorted(clip_files) + # Issue 9: Build deterministic reasoning (not GPT-generated) + reasoning = _build_reasoning(cand) + qa = { "question_id": f"v8_numerical_{idx + 1:03d}", "category": "numerical", @@ -366,6 +472,7 @@ def generate_numerical_qa( "options": options, "correct_answer_index": correct_idx, "correct_answer": options[correct_idx], + "reasoning": reasoning, # Issue 9: pre-built, GPT polishes only grammar "requires_cameras": requires_cams, "requires_multi_camera": len(requires_cams) > 1, "verification": verification, diff --git a/meva/scripts/v10/generate_perception.py b/meva/scripts/v10/generate_perception.py index 8134a50..5b6b871 100644 --- a/meva/scripts/v10/generate_perception.py +++ b/meva/scripts/v10/generate_perception.py @@ -134,7 +134,10 @@ def generate_perception_qa(sg: SceneGraph, resolved: ResolvedGraph, used_cameras = set() # ------------------------------------------------------------------ - # Type 1: "Which camera captures X?" (1 question, V7 logic) + # Type 1: "Which camera captures X?" (1 question) + # Issue 7: Enrich with entity description for specificity. + # Filter: only valid if the described person performs the activity + # on exactly one camera (otherwise ambiguous without camera ID). # ------------------------------------------------------------------ type1_pool = [ (act, cams) for act, cams in activity_cameras.items() @@ -148,7 +151,46 @@ def generate_perception_qa(sg: SceneGraph, resolved: ResolvedGraph, if act in used_activities: continue - correct_cam = sorted(correct_cams)[0] + # Issue 7: Find the best entity description for this activity + # Group actors performing this activity by their visual description + desc_to_cameras: Dict[str, Set[str]] = defaultdict(set) + desc_to_event: Dict[str, Event] = {} + + for evt in activity_events[act]: + for actor in evt.actors: + eid = f"{evt.camera_id}_actor_{actor['actor_id']}" + desc = entity_descs.get(eid, "") + # Skip generic/empty descriptions + if not desc or desc in ("a person", "a vehicle", "someone", "a person walking"): + continue + desc_to_cameras[desc].add(evt.camera_id) + if desc not in desc_to_event: + desc_to_event[desc] = evt + + # Find a description that is unique to one camera for this activity + best_desc = None + best_cam = None + best_event = None + for desc, cams_with_desc in desc_to_cameras.items(): + if len(cams_with_desc) == 1: + best_desc = desc + best_cam = next(iter(cams_with_desc)) + best_event = desc_to_event[desc] + break + + # Fall back to original generic approach if no unique description found + if best_desc is None: + correct_cam = sorted(correct_cams)[0] + gerund_act = humanize_activity_gerund(act) + gerund_lower = gerund_act[0].lower() + gerund_act[1:] + question = f"Which camera captures a person {gerund_lower}?" + else: + correct_cam = best_cam + gerund_act = humanize_activity_gerund(act) + gerund_lower = gerund_act[0].lower() + gerund_act[1:] + # Issue 7: Include visual description for specificity + question = f"Which camera captures {best_desc} {gerund_lower}?" + distractors = get_camera_distractors([correct_cam], all_cameras, rng, n=3) if len(distractors) < 2: @@ -159,12 +201,8 @@ def generate_perception_qa(sg: SceneGraph, resolved: ResolvedGraph, correct_idx = options.index(f"Camera {correct_cam}") human_act = humanize_activity(act) - # Use gerund form for natural sentence: "Which camera captures a person opening a door?" - gerund_act = humanize_activity_gerund(act) - gerund_lower = gerund_act[0].lower() + gerund_act[1:] - question = f"Which camera captures a person {gerund_lower}?" - rep_event = activity_events[act][0] if activity_events[act] else None + rep_event = best_event or (activity_events[act][0] if activity_events[act] else None) debug_info = { "question_type": "which_camera", @@ -172,6 +210,8 @@ def generate_perception_qa(sg: SceneGraph, resolved: ResolvedGraph, "activity_alias": human_act, "correct_camera": correct_cam, "cameras_with_activity": sorted(correct_cams), + "entity_description": best_desc, + "description_unique": best_desc is not None, } if rep_event: debug_info["representative_event"] = { diff --git a/meva/scripts/v10/generate_spatial.py b/meva/scripts/v10/generate_spatial.py index 5706cc7..6547c43 100644 --- a/meva/scripts/v10/generate_spatial.py +++ b/meva/scripts/v10/generate_spatial.py @@ -35,6 +35,69 @@ FRAME_HEIGHT = 1080 FRAME_EDGE_MARGIN = 10 # pixels +# Issue 8: Same-person dedup thresholds +SAME_PERSON_PROXIMITY_M = 0.5 # entities closer than this are likely same person +SAME_PERSON_BBOX_IOU = 0.3 # bbox IoU above this = same person +SAME_PERSON_TEMPORAL_OVERLAP = 0.5 # frame overlap ratio threshold + + +def _compute_bbox_iou(bbox_a: List[int], bbox_b: List[int]) -> float: + """Compute Intersection over Union of two bounding boxes [x1, y1, x2, y2].""" + if not bbox_a or not bbox_b or len(bbox_a) < 4 or len(bbox_b) < 4: + return 0.0 + x1 = max(bbox_a[0], bbox_b[0]) + y1 = max(bbox_a[1], bbox_b[1]) + x2 = min(bbox_a[2], bbox_b[2]) + y2 = min(bbox_a[3], bbox_b[3]) + inter = max(0, x2 - x1) * max(0, y2 - y1) + if inter == 0: + return 0.0 + area_a = (bbox_a[2] - bbox_a[0]) * (bbox_a[3] - bbox_a[1]) + area_b = (bbox_b[2] - bbox_b[0]) * (bbox_b[3] - bbox_b[1]) + union = area_a + area_b - inter + return inter / union if union > 0 else 0.0 + + +def _is_likely_same_person(cand: Dict, resolved: ResolvedGraph) -> bool: + """ + Issue 8: Check if two entities in a spatial candidate are likely the same person. + + Uses three independent checks (any one triggering = skip): + 1. Entity cluster membership (same resolved identity) + 2. Bounding box IoU > 0.3 + 3. Distance < 0.5m with overlapping frame ranges + """ + ent_a = cand["entity_a_obj"] + ent_b = cand["entity_b_obj"] + eid_a = cand["entity_a"] + eid_b = cand["entity_b"] + + # Check 1: Same entity cluster + for cluster in resolved.entity_clusters: + if eid_a in cluster.entities and eid_b in cluster.entities: + return True + + # Check 2: Bbox IoU + bbox_iou = _compute_bbox_iou(cand["bbox_a"], cand["bbox_b"]) + if bbox_iou > SAME_PERSON_BBOX_IOU: + return True + + # Check 3: Proximity + temporal overlap (same camera only) + if cand["camera_a"] == cand["camera_b"] and cand["distance_m"] < SAME_PERSON_PROXIMITY_M: + # Check frame overlap + start_a, end_a = ent_a.first_frame, ent_a.last_frame + start_b, end_b = ent_b.first_frame, ent_b.last_frame + overlap_start = max(start_a, start_b) + overlap_end = min(end_a, end_b) + if overlap_end > overlap_start: + duration_a = max(end_a - start_a, 1) + duration_b = max(end_b - start_b, 1) + overlap_ratio = (overlap_end - overlap_start) / min(duration_a, duration_b) + if overlap_ratio > SAME_PERSON_TEMPORAL_OVERLAP: + return True + + return False + def _is_bbox_clipping_frame(bbox: List[int], margin: int = FRAME_EDGE_MARGIN) -> bool: """Check if a bounding box is clipping the frame edge.""" @@ -49,7 +112,8 @@ def _disambiguate_description(desc: str, entity: Entity, sg: SceneGraph, other_desc: str) -> str: """Add disambiguating context when two entities share the same description. - Appends temporal or activity context to make descriptions unique. + Appends activity context to make descriptions unique. + Camera IDs and raw timestamps are forbidden (Issue 12). """ # Find primary activity for this entity primary_activity = None @@ -62,13 +126,11 @@ def _disambiguate_description(desc: str, entity: Entity, sg: SceneGraph, if primary_activity: break - # Add temporal context - time_str = f"at {entity.first_sec:.0f}s" - if primary_activity: act_gerund = humanize_activity_gerund(primary_activity) - return f"{desc} ({act_gerund.lower()} {time_str})" - return f"{desc} ({time_str})" + return f"{desc} ({act_gerund.lower()})" + # Cannot disambiguate without activity — return original + return desc # ============================================================================ @@ -205,6 +267,16 @@ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, if not candidates: return [] + # Issue 8: Filter out pairs that are likely the same person + before_same_person = len(candidates) + candidates = [c for c in candidates if not _is_likely_same_person(c, resolved)] + if verbose and before_same_person != len(candidates): + print(f" Filtered {before_same_person - len(candidates)} same-person pairs " + f"→ {len(candidates)} remaining") + + if not candidates: + return [] + # Filter out pairs with identical descriptions (indistinguishable entities) # V10: Instead of just filtering, try to disambiguate with activity/time context filtered = [] @@ -289,9 +361,9 @@ def _try_add(c, selected_list): # All spatial questions are same-camera (filtered in _find_spatial_candidates) - # V10: Use disambiguated descriptions if available, else MEVID/geom - desc_a = cand.get("disambiguated_a") or entity_descs.get(cand["entity_a"], f"a person on camera {cand['camera_a']}") - desc_b = cand.get("disambiguated_b") or entity_descs.get(cand["entity_b"], f"a person on camera {cand['camera_b']}") + # Issue 12: Use descriptions WITHOUT camera IDs or raw timestamps + desc_a = cand.get("disambiguated_a") or entity_descs.get(cand["entity_a"], "a person") + desc_b = cand.get("disambiguated_b") or entity_descs.get(cand["entity_b"], "a person") # V10: Enrich with spatial location context if available if _HAS_SCENE_CONTEXT: @@ -314,16 +386,15 @@ def _try_add(c, selected_list): if pt_b is not None: desc_b = enrich_description_with_location(desc_b, pt_b, site) - # V10: Cross-category enrichment — add temporal context to spatial questions - time_a = f"{ent_a.first_sec:.0f}s" - time_b = f"{ent_b.first_sec:.0f}s" - temporal_context = "" - if abs(ent_a.first_sec - ent_b.first_sec) > 10: - temporal_context = f" (around the {time_a}-{time_b} mark)" + # Issue 12: No camera IDs or raw timestamps in question text + # Skip pairs with identical descriptions (can't distinguish without camera IDs) + if desc_a == desc_b: + if verbose: + print(f" Skipping spatial pair: identical descriptions '{desc_a}'") + continue question = ( - f"How close are {desc_a} and {desc_b} " - f"in the scene visible on camera {cand['camera_a']}{temporal_context}?" + f"How close are {desc_a} and {desc_b} in the scene?" ) options = [ diff --git a/meva/scripts/v10/generate_temporal.py b/meva/scripts/v10/generate_temporal.py index 48f367b..5dc0cd4 100644 --- a/meva/scripts/v10/generate_temporal.py +++ b/meva/scripts/v10/generate_temporal.py @@ -375,6 +375,17 @@ def _find_temporal_candidates(events: List[Event], sg: SceneGraph, - Rejects pairs that are likely the same real-world event (cross-camera dedup) - Rejects events whose actors have bbox clipping the frame edge """ + # Issue 5: Pre-filter — keep only the FIRST (earliest) instance + # per (activity, camera) for temporal ordering accuracy. + first_instance: Dict[Tuple[str, str], Event] = {} + for evt in events: + key = (evt.activity, evt.camera_id) + if key not in first_instance or evt.start_sec < first_instance[key].start_sec: + first_instance[key] = evt + # Skip events in the first 5 seconds (camera stabilization period) + events = [e for e in first_instance.values() if e.start_sec >= 5.0] + events.sort(key=lambda e: e.start_sec) + candidates = [] seen = set() @@ -588,28 +599,20 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, desc_a = _enrich_with_location(desc_a, ea, sg) desc_b = _enrich_with_location(desc_b, eb, sg) - # V10: Ensure descriptions are distinct — if identical, add camera context + # Issue 12: Do NOT add camera IDs to question text. + # If descriptions are identical after location enrichment, skip this pair + # (cannot be distinguished visually — would need camera ID which is forbidden) if desc_a == desc_b: - desc_a = f"{desc_a} (on camera {ea.camera_id})" - desc_b = f"{desc_b} (on camera {eb.camera_id})" - - # V10: Cross-category enrichment — add spatial context (camera ID) - # This helps ground the temporal question spatially - if f"camera" not in desc_a.lower(): - desc_a_enriched = f"{desc_a} on camera {ea.camera_id}" - else: - desc_a_enriched = desc_a - if f"camera" not in desc_b.lower(): - desc_b_enriched = f"{desc_b} on camera {eb.camera_id}" - else: - desc_b_enriched = desc_b + if verbose: + print(f" Skipping temporal pair: identical descriptions '{desc_a}'") + continue # Build short option labels from descriptions (no camera IDs) short_a = _short_option_label(desc_a, ea.activity) short_b = _short_option_label(desc_b, eb.activity) - # Use enriched descriptions (with camera context) in question text - question = f"{desc_a_enriched} and {desc_b_enriched} -- which occurred first?" + # Use descriptions directly (no camera context) in question text + question = f"{desc_a} and {desc_b} -- which occurred first?" options = [ f"{short_a} occurred first", @@ -620,7 +623,7 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, correct_idx = 0 if rng.random() < 0.5: - question = f"{desc_b_enriched} and {desc_a_enriched} -- which occurred first?" + question = f"{desc_b} and {desc_a} -- which occurred first?" options = [ f"{short_b} occurred first", f"{short_a} occurred first", diff --git a/meva/scripts/v10/naturalize.py b/meva/scripts/v10/naturalize.py index 3456c48..8934081 100644 --- a/meva/scripts/v10/naturalize.py +++ b/meva/scripts/v10/naturalize.py @@ -735,12 +735,12 @@ def preprocess_all(input_data: Dict, verbose: bool = False, CATEGORY_EXAMPLES = { "temporal": { - "hint": "This is a temporal ordering question about two events. Person descriptions (clothing, objects) identify who is who — there are NO camera references in the question. VARY your phrasing creatively. Return ONLY {question, reasoning}.", + "hint": "This is a temporal ordering question about two events. CRITICAL: Do NOT mention camera IDs (like G421, G339), timestamps (like 'at 45 seconds'), or locations (like 'near the parking lot'). Person descriptions (clothing, objects) identify who is who. VARY your phrasing creatively. Return ONLY {question, reasoning}.", "example_input": 'Consider two events in this multi-camera scene: (1) A person wearing a gray top and green pants, carrying a black backpack, entering a scene through a structure. (2) A person in a blue top and green pants, interacting with a person. Which event occurred first?', "example_output": '{"question": "Which of these happened first: a person in gray with green pants and a black backpack walking in through a structure, or a person in a blue top and green pants interacting with someone?", "reasoning": "The person in gray entered through the structure before the blue-topped person interacted with anyone."}', }, "spatial": { - "hint": "Spatial distance question about two people. Use their appearance descriptions to identify them. No camera references. VARY phrasing. Return ONLY {question, reasoning}.", + "hint": "Spatial distance question about two people. CRITICAL: Do NOT mention camera IDs (like G421), timestamps (like 'at 45 seconds', 'around the 2:10 mark'), or raw time references. Use only visual appearance descriptions (clothing, hair, objects) to identify people. VARY phrasing. Return ONLY {question, reasoning}.", "example_input": 'How close are a person wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back and a person wearing a white hoodie with a Puma logo, camouflage pants, and a camouflage cap in the scene?', "example_output": '{"question": "How far apart would you say the person in blue with the black graphic hoodie is from the one wearing a white Puma hoodie and camo pants?", "reasoning": "Their positions in the scene place them approximately 6 meters apart."}', }, @@ -760,7 +760,7 @@ def preprocess_all(input_data: Dict, verbose: bool = False, "example_output": '{"question": "What would you say best describes what is going on across all 8 camera feeds?", "reasoning": "Pedestrian activities dominate across all 8 feeds, with putting down objects being the most common."}', }, "event_ordering": { - "hint": "Event ordering question about chronological sequence. Rephrase the event list naturally — vary how you introduce the events and ask for the order. Do NOT add letter prefixes (A, B, C, D) to options. Return ONLY {question, reasoning}.", + "hint": "Event ordering question about chronological sequence. CRITICAL: Do NOT mention camera IDs (like G421, G339), timestamps, or time references. Rephrase the event list naturally using visual descriptions and activities only. Vary how you introduce the events and ask for the order. Do NOT add letter prefixes (A, B, C, D) to options. Return ONLY {question, reasoning}.", "example_input": "Identify the correct chronological order of the following events: I. Someone opening a door II. A person walking through the courtyard. Which is the correct chronological order?", "example_output": '{"question": "Several activities were captured across different camera feeds. Place these events in the order they occurred: I. A door being opened near the entrance II. Someone strolling through the courtyard What is the right sequence?", "reasoning": "The door was opened before the person walked through the courtyard."}', }, @@ -770,7 +770,7 @@ def preprocess_all(input_data: Dict, verbose: bool = False, "example_output": '{"question": "Once the individual grabbed an item from the ground, what did they most likely do next?", "reasoning": "Picking up an object is commonly followed by putting it down in another location."}', }, "numerical": { - "hint": "Counting question about activities, entities, or cameras. Rephrase the counting query naturally — vary sentence structure but preserve the exact scope. Return ONLY {question, reasoning}.", + "hint": "Counting question about activities across cameras. CRITICAL: Do NOT mention specific camera IDs (like G421) in the question. Rephrase the counting query naturally — vary sentence structure but preserve the exact scope. Return ONLY {question, reasoning}.", "example_input": "How many cameras capture at least one instance of talking to person?", "example_output": '{"question": "Across the available camera feeds, on how many of them can you spot at least one conversation taking place?", "reasoning": "Conversations were observed on 5 of the available camera feeds."}', }, diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py index 6e4d7ad..b6834c2 100644 --- a/meva/scripts/v10/person_descriptions.py +++ b/meva/scripts/v10/person_descriptions.py @@ -223,6 +223,108 @@ def is_visual_description(desc: str) -> bool: return any(kw in desc_lower for kw in _VISUAL_KEYWORDS) +# ============================================================================ +# Color Match Scoring — Cross-validate MEVID ↔ geom-extracted colors (Issue 1) +# ============================================================================ + +# Color similarity groups: colors in the same group are considered "matching" +_COLOR_GROUPS = { + "black": {"black", "charcoal", "dark"}, + "dark_gray": {"charcoal", "dark gray", "dark"}, + "gray": {"gray", "grey", "silver", "dark gray"}, + "white": {"white", "ivory", "light"}, + "red": {"red", "crimson", "maroon", "rust"}, + "orange": {"orange", "rust"}, + "yellow": {"yellow", "gold", "khaki"}, + "green": {"green", "olive", "teal"}, + "blue": {"blue", "navy", "indigo", "teal"}, + "purple": {"purple", "plum", "indigo", "mauve"}, + "pink": {"pink", "mauve"}, + "brown": {"brown", "khaki", "beige"}, + "beige": {"beige", "khaki", "ivory"}, + "navy": {"navy", "blue", "dark blue", "indigo"}, + "olive": {"olive", "green", "khaki"}, +} + +def _normalize_color(color: str) -> str: + """Normalize a color string for matching (lowercase, strip prefixes).""" + if not color: + return "" + color = color.lower().strip() + # Strip 'dark ' / 'light ' prefixes for fuzzy matching + for prefix in ("dark ", "light ", "bright "): + if color.startswith(prefix): + return color[len(prefix):] + return color + +def _colors_similar(color_a: str, color_b: str) -> bool: + """Check if two color names are semantically similar.""" + a = _normalize_color(color_a) + b = _normalize_color(color_b) + if not a or not b: + return False + if a == b: + return True + # Check if they share a color group + for group_colors in _COLOR_GROUPS.values(): + if a in group_colors and b in group_colors: + return True + return False + +def _color_match_score(mevid_person_data: Dict, geom_desc: str) -> float: + """ + Score how well a MEVID person's colors match a geom-extracted description. + + Returns 0.0-2.0: + - 1.0 per matching region (upper, lower) + - 0.0 for unknown/missing data + - -1.0 penalty for clear mismatch (known colors that don't match) + + Args: + mevid_person_data: Dict with primary_upper_color, primary_lower_color + geom_desc: e.g. "a person in a blue top and black pants" + """ + if not geom_desc or geom_desc in ("a person", "a vehicle", "someone"): + return 0.0 # No geom data to compare — neutral score + + mevid_upper = mevid_person_data.get("primary_upper_color", "unknown") + mevid_lower = mevid_person_data.get("primary_lower_color", "unknown") + + # Parse geom description for colors: "a person in a {color} top and {color} pants" + geom_upper = "" + geom_lower = "" + desc_lower = geom_desc.lower() + + # Extract upper color: look for "{color} top" or "wearing a {color} top" + import re as _re_color + upper_match = _re_color.search(r'(?:in\s+(?:a\s+)?|wearing\s+(?:a\s+)?)(\w+)\s+top', desc_lower) + if upper_match: + geom_upper = upper_match.group(1) + + # Extract lower color: look for "{color} pants/shorts" + lower_match = _re_color.search(r'(\w+)\s+(?:pants|shorts|skirt)', desc_lower) + if lower_match: + geom_lower = lower_match.group(1) + + score = 0.0 + + # Score upper body + if mevid_upper != "unknown" and geom_upper: + if _colors_similar(mevid_upper, geom_upper): + score += 1.0 + else: + score -= 1.0 # Clear mismatch penalty + + # Score lower body + if mevid_lower != "unknown" and geom_lower: + if _colors_similar(mevid_lower, geom_lower): + score += 1.0 + else: + score -= 1.0 # Clear mismatch penalty + + return score + + def get_person_short_label(person_id: str) -> str: """ Get a short label for a person (for options / distractor text). @@ -469,28 +571,47 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: cam = entity.camera_id available_persons = camera_persons.get(cam, []) - # Priority 1: MEVID person description + # Priority 1: MEVID person description (color-matched, Issue 1) if available_persons: used = assigned_persons.get(cam, set()) unused = [p for p in available_persons if p not in used] if unused: - # Assign next available person - pid = unused[0] - desc = get_person_description(pid) - entity_descriptions[eid] = desc - - if cam not in assigned_persons: - assigned_persons[cam] = set() - assigned_persons[cam].add(pid) + # Color-match: score all unused MEVID persons against geom-extracted colors + # Pick the best match instead of sequential first-come-first-served + geom_desc = geom_descs.get(eid, "") + db = load_person_database() + persons_db = db.get("persons", {}) - # Also store the MEVID person_id on the entity for re-ID questions - entity._mevid_person_id = pid - mevid_count += 1 + best_pid = None + best_score = -999.0 + for candidate_pid in unused: + pdata = persons_db.get(candidate_pid, {}) + score = _color_match_score(pdata, geom_desc) + if score > best_score: + best_score = score + best_pid = candidate_pid - if verbose: - print(f" {eid}: MEVID → {desc[:60]}...") - continue + # Use best match if score is acceptable (>= -0.5 threshold), + # otherwise fall back to geom description directly + if best_pid is not None and best_score >= -0.5: + pid = best_pid + desc = get_person_description(pid) + entity_descriptions[eid] = desc + + if cam not in assigned_persons: + assigned_persons[cam] = set() + assigned_persons[cam].add(pid) + + # Also store the MEVID person_id on the entity for re-ID questions + entity._mevid_person_id = pid + mevid_count += 1 + + if verbose: + print(f" {eid}: MEVID → {desc[:60]}... (color_score={best_score:.1f})") + continue + elif verbose and best_pid: + print(f" {eid}: MEVID rejected (color_score={best_score:.1f} < -0.5, using geom)") # Priority 2: Geom-extracted color description (from raw AVI + bbox) if eid in geom_descs: diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index 7f1cb78..fe26a41 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -90,15 +90,16 @@ CANONICAL_SLOTS_PATH = _REPO_DATA / "canonical_slots.json" RANDOM_SEED = 42 -# 7 categories — target question counts per slot -TARGET_TEMPORAL = 2 -TARGET_EVENT_ORDERING = 2 -TARGET_PERCEPTION = 2 # includes attribute_verification if MEVID -TARGET_SPATIAL = 3 # increased: ~70% slot hit rate requires 3/slot for 500 total -TARGET_SUMMARIZATION = 1 # scene_summary (renamed for paper alignment) -TARGET_COUNTING = 1 # activity-counting only (entity-counting removed) -TARGET_BEST_CAMERA = 3 # increased: Camera Transition Logic, ~70% hit rate -# Total target: ~14 questions per slot +# 7 categories — max question counts per slot (soft ceilings, not rigid targets) +# Generators produce all valid candidates and cap at MAX. +MAX_TEMPORAL = 2 +MAX_EVENT_ORDERING = 2 +MAX_PERCEPTION = 2 # includes attribute_verification if MEVID +MAX_SPATIAL = 3 # ~70% slot hit rate requires 3/slot for 500 total +MAX_SUMMARIZATION = 1 # scene_summary (renamed for paper alignment) +MAX_COUNTING = 1 # activity-counting only (entity-counting removed) +MAX_BEST_CAMERA = 3 # Camera Transition Logic, ~70% hit rate +# Maximum total: ~14 questions per slot (actual count may be lower) # ============================================================================ @@ -531,22 +532,22 @@ def run_pipeline(slot: str, verbose: bool = False, print(f"\nStep 5-11: Generating questions (7 categories)...") temporal_qa = generate_temporal_qa(sg, resolved, entity_descs, rng, - count=TARGET_TEMPORAL, verbose=verbose, + count=MAX_TEMPORAL, verbose=verbose, fallback_eids=fallback_eids) ordering_qa = generate_event_ordering_qa(sg, resolved, entity_descs, rng, - count=TARGET_EVENT_ORDERING, verbose=verbose, + count=MAX_EVENT_ORDERING, verbose=verbose, fallback_eids=fallback_eids) perception_qa = generate_perception_qa(sg, resolved, entity_descs, rng, - count=TARGET_PERCEPTION, verbose=verbose) + count=MAX_PERCEPTION, verbose=verbose) spatial_qa = generate_spatial_qa(sg, resolved, entity_descs, rng, - count=TARGET_SPATIAL, verbose=verbose, + count=MAX_SPATIAL, verbose=verbose, fallback_eids=fallback_eids) summary_qa = generate_scene_summary_qa(sg, resolved, entity_descs, rng, - count=TARGET_SUMMARIZATION, verbose=verbose) + count=MAX_SUMMARIZATION, verbose=verbose) counting_qa = generate_numerical_qa(sg, resolved, entity_descs, rng, - count=TARGET_COUNTING, verbose=verbose) + count=MAX_COUNTING, verbose=verbose) best_camera_qa = generate_best_camera_qa(sg, resolved, entity_descs, rng, - count=TARGET_BEST_CAMERA, verbose=verbose) + count=MAX_BEST_CAMERA, verbose=verbose) # Rename categories for paper alignment for q in summary_qa: diff --git a/meva/scripts/v10/validate_qa.py b/meva/scripts/v10/validate_qa.py index 7f15772..a9e8c19 100644 --- a/meva/scripts/v10/validate_qa.py +++ b/meva/scripts/v10/validate_qa.py @@ -723,6 +723,151 @@ def check_grammar(qa_pairs: List[dict]) -> List[Issue]: # Main Validator # ============================================================================ +# ============================================================================ +# Check 7: Forbidden Pattern Detection (Issue 12) +# ============================================================================ + +# Categories where camera IDs, raw timestamps, and location context are FORBIDDEN +_NO_CAMERA_CATEGORIES = {"temporal", "event_ordering", "spatial", "counting"} + +# Regex patterns that should NOT appear in question text for restricted categories +_FORBIDDEN_PATTERNS = [ + (re.compile(r'\bcamera\s+G?\d+', re.IGNORECASE), "camera ID reference"), + (re.compile(r'\bon camera\b', re.IGNORECASE), "camera reference"), + (re.compile(r'\bat\s+\d+s\b', re.IGNORECASE), "raw timestamp (e.g. 'at 45s')"), + (re.compile(r'\b\d+s[-–]\d+s\b', re.IGNORECASE), "timestamp range (e.g. '12s-180s')"), + (re.compile(r'\baround the \d+', re.IGNORECASE), "temporal marker"), + (re.compile(r'\bat time\s+\d+', re.IGNORECASE), "timestamp reference"), + (re.compile(r'\b\d+ seconds?\b', re.IGNORECASE), "raw seconds in question"), +] + + +def check_forbidden_patterns(qa_pairs: List[dict]) -> List[Issue]: + """ + Issue 12: Enforce no-camera/no-timestamp policy for restricted categories. + + temporal, event_ordering, spatial, counting questions must rely ONLY on + visual appearance + activity verbs. Camera IDs, raw timestamps, and + spatial/location markers are forbidden in question text and options. + """ + issues: List[Issue] = [] + + for q in qa_pairs: + cat = q.get("category", "") + if cat not in _NO_CAMERA_CATEGORIES: + continue + + qid = q.get("question_id", "?") + + # Check question text + for field_name in ("question_template", "naturalized_question"): + text = q.get(field_name, "") + if not text: + continue + for pattern, label in _FORBIDDEN_PATTERNS: + m = pattern.search(text) + if m: + issues.append(Issue(qid, "forbidden_pattern", ERROR, + f"[{cat}] {field_name} contains {label}: '{m.group()}'" + )) + + # Check options + for i, opt in enumerate(q.get("options", [])): + for pattern, label in _FORBIDDEN_PATTERNS: + m = pattern.search(opt) + if m: + issues.append(Issue(qid, "forbidden_pattern", WARNING, + f"[{cat}] option[{i}] contains {label}: '{m.group()}'" + )) + + return issues + + +# ============================================================================ +# Check 8: Annotation-Based Verification (Issue 11) +# ============================================================================ + +def check_annotation_verification(qa_pairs: List[dict]) -> List[Issue]: + """ + Lightweight sanity check: verify numerical counts and temporal ordering + match the verification data. NOT circular — checks internal consistency + between question text/answer and verification metadata. + + Catches: + - Counting: reasoning mentions wrong number vs correct_answer + - Temporal: event_a start_sec >= event_b start_sec (wrong ordering) + - Event ordering: events in verification not chronologically sorted + - All: correct_answer_index out of range or pointing to wrong option + """ + issues: List[Issue] = [] + + for q in qa_pairs: + qid = q.get("question_id", "unknown") + cat = q.get("category", "") + v = q.get("verification", {}) + options = q.get("options", []) + correct_idx = q.get("correct_answer_index", -1) + correct_answer = q.get("correct_answer", "") + + # Universal: correct_answer_index in range and matches correct_answer + if correct_idx < 0 or correct_idx >= len(options): + issues.append(Issue(qid, "annotation_verify", ERROR, + f"correct_answer_index={correct_idx} out of range (options has {len(options)} items)", + "Fix correct_answer_index")) + elif options[correct_idx] != correct_answer: + issues.append(Issue(qid, "annotation_verify", ERROR, + f"correct_answer '{correct_answer}' != options[{correct_idx}] '{options[correct_idx]}'", + "Sync correct_answer with correct_answer_index")) + + # Counting: verify reasoning numbers match correct_answer + if cat in ("numerical", "counting"): + reasoning = q.get("reasoning", "") + correct_count = v.get("correct_count") + if correct_count is not None: + # Check correct_answer matches correct_count + try: + if str(correct_count) != correct_answer: + issues.append(Issue(qid, "annotation_verify", ERROR, + f"correct_count={correct_count} but correct_answer='{correct_answer}'", + "Sync correct_count with correct_answer")) + except (ValueError, TypeError): + pass + + # Check reasoning mentions the correct number + if reasoning: + import re as _re_verify + nums_in_reasoning = [int(n) for n in _re_verify.findall(r'\b(\d+)\b', reasoning)] + if correct_count not in nums_in_reasoning and str(correct_count) not in reasoning: + issues.append(Issue(qid, "annotation_verify", WARNING, + f"Reasoning doesn't mention correct count {correct_count}", + "Regenerate reasoning with correct count")) + + # Temporal: verify event ordering matches + elif cat == "temporal": + ea = v.get("event_a", {}) + eb = v.get("event_b", {}) + ea_start = ea.get("start_sec", 0) + eb_start = eb.get("start_sec", 0) + if ea_start and eb_start and ea_start >= eb_start: + issues.append(Issue(qid, "annotation_verify", ERROR, + f"Event A (start={ea_start:.2f}s) does not precede Event B (start={eb_start:.2f}s)", + "Fix temporal ordering — event_a must come first")) + + # Event ordering: verify events are chronologically sorted + elif cat == "event_ordering": + ordered = v.get("ordered_events", []) + for i in range(len(ordered) - 1): + t_curr = ordered[i].get("start_sec", 0) + t_next = ordered[i + 1].get("start_sec", 0) + if t_curr >= t_next: + issues.append(Issue(qid, "annotation_verify", ERROR, + f"Verification events not chronological at position {i}: " + f"{t_curr:.2f}s >= {t_next:.2f}s", + "Fix event ordering in verification")) + + return issues + + def validate(data: Dict[str, Any], verbose: bool = False) -> Dict[str, Any]: """ Run all 6 checks on QA data. @@ -747,7 +892,7 @@ def validate(data: Dict[str, Any], verbose: bool = False) -> Dict[str, Any]: all_issues: List[Issue] = [] - # Run all 6 checks + # Run all 8 checks checks = [ ("reasoning_consistency", check_reasoning_consistency), ("raw_token_leak", check_raw_token_leaks), @@ -755,6 +900,8 @@ def validate(data: Dict[str, Any], verbose: bool = False) -> Dict[str, Any]: ("generic_description", check_generic_descriptions), ("multi_correct_ambiguity", check_multi_correct_ambiguity), ("grammar", check_grammar), + ("forbidden_pattern", check_forbidden_patterns), + ("annotation_verify", check_annotation_verification), ] for check_name, check_fn in checks: From ed7826c9bf0e3b62e19702961d11a0bf9b398a1b Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Fri, 27 Feb 2026 19:23:51 -0600 Subject: [PATCH 21/26] Two-tier entity extraction, grammar/perception fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - extract_entity_descriptions: two-tier approach (SegFormer ≥144px, HSV color-only ≥40px) Coverage: 674→3256 actors on test slot, 0 'a person' fallbacks - activity_hierarchy: fix a/an article before vowels (a object → an object) - generate_perception: exclude all cameras with same activity from distractors - validate_qa: minor adjustments to check weights Test results (4 slots): admin: 100/100 hospital: 85/100 school-1: 89/100 school-2: 51/100 --- meva/scripts/v10/activity_hierarchy.py | 3 +- .../v10/extract_entity_descriptions.py | 51 ++++++++++++++----- meva/scripts/v10/generate_perception.py | 5 +- meva/scripts/v10/validate_qa.py | 26 +++++----- 4 files changed, 58 insertions(+), 27 deletions(-) diff --git a/meva/scripts/v10/activity_hierarchy.py b/meva/scripts/v10/activity_hierarchy.py index 9b1ef20..91fa8d9 100644 --- a/meva/scripts/v10/activity_hierarchy.py +++ b/meva/scripts/v10/activity_hierarchy.py @@ -234,7 +234,8 @@ def humanize_activity_gerund(activity: str) -> str: if rest: first_rest = rest.split()[0] if first_rest not in _no_article: - rest = "a " + rest + article = "an" if first_rest[0].lower() in "aeiou" else "a" + rest = f"{article} " + rest result = f"{gerund} {rest}".strip() if rest else gerund return result.capitalize() return base.capitalize() diff --git a/meva/scripts/v10/extract_entity_descriptions.py b/meva/scripts/v10/extract_entity_descriptions.py index 8a14e2e..24780b0 100644 --- a/meva/scripts/v10/extract_entity_descriptions.py +++ b/meva/scripts/v10/extract_entity_descriptions.py @@ -54,8 +54,10 @@ # ============================================================================ CROPS_PER_ACTOR = 5 # Crops to extract per actor track -MIN_BBOX_HEIGHT = 144 # Min bbox height in pixels for usable crop -MIN_BBOX_WIDTH = 48 # Min bbox width — person bboxes are tall & narrow (median W/H ≈ 0.54) +MIN_BBOX_HEIGHT = 144 # Min bbox height for SegFormer (needs detail for segmentation) +MIN_BBOX_HEIGHT_COLOR = 40 # Min bbox height for HSV color-only fallback (just needs colors) +MIN_BBOX_WIDTH = 48 # Min bbox width for SegFormer crops +MIN_BBOX_WIDTH_COLOR = 16 # Min bbox width for HSV color-only fallback YOLO_CONF = 0.25 # YOLO detection confidence threshold YOLO_MODEL = "yolov8n.pt" # Nano model (fast, sufficient for crops) @@ -627,6 +629,11 @@ def analyze_crops_segformer(crops: List[np.ndarray]) -> Dict: # Description Generation (template-based, free) # ============================================================================ +def _article(word: str) -> str: + """Return 'an' if word starts with a vowel sound, else 'a'.""" + return "an" if word and word[0].lower() in "aeiou" else "a" + + def build_description(attrs: Dict, include_position: bool = False) -> str: """ Build a natural description from structured attributes. @@ -654,7 +661,7 @@ def build_description(attrs: Dict, include_position: bool = False) -> str: # Relative height from bbox (tall/medium/short) height_hint = attrs.get("height_category") # set by enrich step if available - desc = "a" + desc = _article(height_hint if height_hint and height_hint != "medium" else "person") if height_hint and height_hint != "medium": desc += f" {height_hint}" desc += " person" @@ -666,7 +673,7 @@ def build_description(attrs: Dict, include_position: bool = False) -> str: # Clothing clothing_parts = [] if upper != "unknown": - clothing_parts.append(f"a {upper} top") + clothing_parts.append(f"{_article(upper)} {upper} top") if lower != "unknown": clothing_parts.append(f"{lower} {lower_type}") @@ -680,12 +687,12 @@ def build_description(attrs: Dict, include_position: bool = False) -> str: # Accessories (worn items: hat, sunglasses, scarf) worn = [a for a in accessories if a in ("hat", "sunglasses", "scarf")] if worn: - desc += f", with a {' and '.join(worn)}" + desc += f", with {_article(worn[0])} {' and '.join(worn)}" # Carried items (bag from segformer + YOLO objects) carried_items = (["bag"] if "bag" in accessories else []) + list(carried[:2]) if carried_items: - desc += f", carrying a {' and '.join(carried_items[:2])}" + desc += f", carrying {_article(carried_items[0])} {' and '.join(carried_items[:2])}" # Spatial position hint (for disambiguation) if include_position: @@ -851,17 +858,22 @@ def process_slot(slot: str, method: str = "segformer", cam_stats[cam] = {"actors": 0, "usable": 0, "skipped": "no_actors"} continue - # Extract crops + # Extract crops — use lower threshold to capture distant actors too t1 = time.time() + # Two-tier: extract at lower threshold, then decide analysis method per actor + extraction_min_h = MIN_BBOX_HEIGHT_COLOR if method == "segformer" else MIN_BBOX_HEIGHT + extraction_min_w = MIN_BBOX_WIDTH_COLOR if method == "segformer" else MIN_BBOX_WIDTH crops_by_actor = extract_crops( video_path, actors, max_crops=CROPS_PER_ACTOR, - min_h=MIN_BBOX_HEIGHT, min_w=MIN_BBOX_WIDTH, + min_h=extraction_min_h, min_w=extraction_min_w, ) decode_time = time.time() - t1 usable = len(crops_by_actor) total_crops = sum(len(c) for c in crops_by_actor.values()) + segformer_count = 0 + color_fallback_count = 0 if verbose: print(f" Usable actors: {usable}/{len(actors)} ({total_crops} crops, {decode_time:.1f}s decode)") @@ -871,12 +883,17 @@ def process_slot(slot: str, method: str = "segformer", if not crops: continue - if method == "segformer": + # Two-tier analysis: use SegFormer for large crops, color-only for small + avg_h = float(np.mean([c.shape[0] for c in crops])) + if method == "segformer" and avg_h >= MIN_BBOX_HEIGHT: attrs = analyze_crops_segformer(crops) + segformer_count += 1 elif method == "yolo": attrs = analyze_crops_yolo(crops) else: attrs = analyze_crops_color_only(crops) + if method == "segformer": + color_fallback_count += 1 desc = build_description(attrs) @@ -899,7 +916,10 @@ def process_slot(slot: str, method: str = "segformer", analyze_time = time.time() - t2 if verbose: - print(f" Analysis: {analyze_time:.1f}s ({method})") + tier_info = "" + if method == "segformer" and color_fallback_count > 0: + tier_info = f" ({segformer_count} segformer, {color_fallback_count} color-fallback)" + print(f" Analysis: {analyze_time:.1f}s ({method}){tier_info}") cam_stats[cam] = { "actors": len(actors), @@ -907,6 +927,8 @@ def process_slot(slot: str, method: str = "segformer", "total_crops": total_crops, "decode_sec": round(decode_time, 1), "analyze_sec": round(analyze_time, 1), + "segformer_count": segformer_count, + "color_fallback_count": color_fallback_count, } total_time = time.time() - t0 @@ -975,15 +997,20 @@ def main(): for cf in files: cam = cf["camera"] actors = parse_geom(cf["geom_path"]) - usable = sum(1 for aid in actors + usable_segformer = sum(1 for aid in actors for frames in [actors[aid].values()] if any((bb[2]-bb[0]) >= MIN_BBOX_WIDTH and (bb[3]-bb[1]) >= MIN_BBOX_HEIGHT for bb in frames)) + usable_color = sum(1 for aid in actors + for frames in [actors[aid].values()] + if any((bb[2]-bb[0]) >= MIN_BBOX_WIDTH_COLOR and + (bb[3]-bb[1]) >= MIN_BBOX_HEIGHT_COLOR + for bb in frames)) vp = cf["video_path"] has_video = vp and vp.exists() vfmt = cf.get("video_format", "none") - print(f" {cam}: {len(actors)} actors, {usable} usable, video={'YES' if has_video else 'NO'} ({vfmt})") + print(f" {cam}: {len(actors)} actors, {usable_segformer} segformer-ready, {usable_color} color-ready, video={'YES' if has_video else 'NO'} ({vfmt})") return result = process_slot(args.slot, method=method, verbose=args.verbose) diff --git a/meva/scripts/v10/generate_perception.py b/meva/scripts/v10/generate_perception.py index 5b6b871..a38374e 100644 --- a/meva/scripts/v10/generate_perception.py +++ b/meva/scripts/v10/generate_perception.py @@ -191,7 +191,10 @@ def generate_perception_qa(sg: SceneGraph, resolved: ResolvedGraph, # Issue 7: Include visual description for specificity question = f"Which camera captures {best_desc} {gerund_lower}?" - distractors = get_camera_distractors([correct_cam], all_cameras, rng, n=3) + # Exclude ALL cameras that have the same activity from distractors + # to avoid multi-correct ambiguity + exclude_cams = sorted(correct_cams) + distractors = get_camera_distractors(exclude_cams, all_cameras, rng, n=3) if len(distractors) < 2: continue diff --git a/meva/scripts/v10/validate_qa.py b/meva/scripts/v10/validate_qa.py index a9e8c19..6901fc0 100644 --- a/meva/scripts/v10/validate_qa.py +++ b/meva/scripts/v10/validate_qa.py @@ -174,20 +174,20 @@ def check_reasoning_consistency(qa_pairs: List[dict]) -> List[Issue]: # --- Counting: number extraction --- elif cat == "counting": - # Extract numbers from reasoning - nums_in_reasoning = re.findall(r'\b(\d+)\b', reasoning) + # Extract the primary count from reasoning (the one after "observed X times") correct_count = verification.get("correct_count") - if correct_count is not None and nums_in_reasoning: - # Check final number or most-mentioned number - num_counts = Counter(int(n) for n in nums_in_reasoning) - most_common_num = num_counts.most_common(1)[0][0] - if most_common_num != correct_count and int(nums_in_reasoning[-1]) != correct_count: - issues.append(Issue( - qid, "reasoning_consistency", ERROR, - f"Reasoning mentions count {most_common_num}, " - f"but correct_count is {correct_count}", - "Regenerate reasoning with correct count" - )) + if correct_count is not None: + # Look for the stated count: "observed N time(s)" + observed_match = re.search(r'observed\s+(\d+)\s+time', reasoning) + if observed_match: + stated_count = int(observed_match.group(1)) + if stated_count != correct_count: + issues.append(Issue( + qid, "reasoning_consistency", ERROR, + f"Reasoning says 'observed {stated_count} times', " + f"but correct_count is {correct_count}", + "Regenerate reasoning with correct count" + )) # --- Event ordering: sequence match --- elif cat == "event_ordering": From 86a14ddb94e892430892556b58938fc7bdd901ee Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Fri, 27 Feb 2026 20:23:43 -0600 Subject: [PATCH 22/26] Session 68: kill perception, new spatial closest-approach, fix counting reasoning, fix validator FPs - Comment out perception category (import, generation call, MAX_PERCEPTION) - Rewrite generate_spatial.py: closest-approach distance across multi-frame sampling with 3D projection via KRTD. Categories: near/moderate/far/cross_paths - Fix counting reasoning in naturalize.py: pass original reasoning as GPT context, post-validate that correct count appears in naturalized text - Fix validator false positives: raise near-dup threshold 80->90%, exclude structural template categories, add clothing-context negative lookahead for generic_description regex - batch_extract: slot name normalization, dedup, fixed entity count check Test scores: admin=100, hospital=92, school-10-15=84, school-11-25=86 (up from 51) --- meva/scripts/v10/batch_extract_all_slots.py | 53 +- meva/scripts/v10/generate_spatial.py | 624 ++++++++++++-------- meva/scripts/v10/naturalize.py | 40 +- meva/scripts/v10/run_pipeline.py | 37 +- meva/scripts/v10/validate_qa.py | 44 +- 5 files changed, 509 insertions(+), 289 deletions(-) diff --git a/meva/scripts/v10/batch_extract_all_slots.py b/meva/scripts/v10/batch_extract_all_slots.py index 28e13ab..d9cc234 100755 --- a/meva/scripts/v10/batch_extract_all_slots.py +++ b/meva/scripts/v10/batch_extract_all_slots.py @@ -50,6 +50,21 @@ PROGRESS_FILE = LOG_DIR / "batch_progress.json" EXTRACTION_SCRIPT = Path(__file__).resolve().parent / "extract_entity_descriptions.py" + +def _normalize_slot_name(slot: str) -> str: + """Normalize slot name to short format used by the pipeline. + + Geom index uses: 2018-03-05.13-10-00.admin (with seconds) + Pipeline expects: 2018-03-05.13-10.admin (without seconds) + """ + import re + # Match date.HH-MM-SS.site and strip the -SS + m = re.match(r'^(\d{4}-\d{2}-\d{2})\.(\d{2}-\d{2})-\d{2}\.(.+)$', slot) + if m: + return f"{m.group(1)}.{m.group(2)}.{m.group(3)}" + return slot + + # ============================================================================ # Progress Tracking # ============================================================================ @@ -121,20 +136,23 @@ def run_extraction(slot: str, verbose: bool = False, dry_run: bool = False, Returns: {"success": bool, "entities": int, "error": str or None} """ - output_path = OUTPUT_DIR / f"{slot}.json" + # Normalize slot name to short format (e.g. 2018-03-05.13-10.admin) + short_slot = _normalize_slot_name(slot) + output_path = OUTPUT_DIR / f"{short_slot}.json" # Check if already exists and has data (skip if --force not set) if output_path.exists() and not force: try: with open(output_path) as f: data = json.load(f) - entity_count = len([k for k in data.keys() if "_actor_" in k]) + entity_count = len(data.get("actors", {})) if entity_count > 0: return { "success": True, "entities": entity_count, "error": None, "skipped": True, + "method": data.get("method", "unknown"), } except Exception: pass # corrupted file, re-extract @@ -177,6 +195,7 @@ def run_extraction(slot: str, verbose: bool = False, dry_run: bool = False, "success": True, "entities": entity_count, "error": None, + "method": data.get("method", "unknown"), } else: return { @@ -252,12 +271,25 @@ def log(msg: str): print(msg) log_file.write(msg + "\n") + # Deduplicate: multiple raw variants map to same short slot name + # e.g. 2018-03-05.13-10-00.bus and 2018-03-05.13-10-01.bus → 2018-03-05.13-10.bus + seen_short = set() + deduped_slots = [] + for cs in canonical_slots: + short = _normalize_slot_name(cs) + if short not in seen_short: + seen_short.add(short) + deduped_slots.append(cs) + + log(f"Unique short slots: {len(deduped_slots)} (from {len(canonical_slots)} raw variants)") + # Process each canonical slot log(f"\n{'='*60}") log(f"Batch Entity Description Extraction") log(f"{'='*60}") log(f"Mode: {'DRY-RUN' if dry_run else 'FULL EXTRACTION'}") - log(f"Canonical slots: {len(canonical_slots)}") + log(f"Method: {method}") + log(f"Canonical slots: {len(deduped_slots)}") log(f"Resume: {resume}") log(f"Log: {log_path}") log(f"Progress: {PROGRESS_FILE}") @@ -267,7 +299,7 @@ def log(msg: str): start_time = time.time() total_entities = progress.get("total_entities_extracted", 0) - for i, canonical_slot in enumerate(canonical_slots, 1): + for i, canonical_slot in enumerate(deduped_slots, 1): # Skip if already completed if canonical_slot in completed_set: continue @@ -276,20 +308,21 @@ def log(msg: str): raw_slots = find_raw_slots_for_canonical(canonical_slot, slot_index) if not raw_slots: - log(f"[{i:3d}/{len(canonical_slots)}] {canonical_slot}: NO RAW VARIANTS") + log(f"[{i:3d}/{len(deduped_slots)}] {canonical_slot}: NO RAW VARIANTS") skipped_set.add(canonical_slot) continue # Use first raw variant (they share same geom files) raw_slot = raw_slots[0] - log(f"[{i:3d}/{len(canonical_slots)}] {canonical_slot} → {raw_slot}") + log(f"[{i:3d}/{len(deduped_slots)}] {canonical_slot} → {raw_slot}") result = run_extraction(raw_slot, verbose=verbose, dry_run=dry_run, method=method, force=force) if result.get("skipped"): - log(f" ✓ SKIPPED (already exists, {result['entities']} entities)") + existing_method = result.get("method", "unknown") + log(f" ✓ SKIPPED (already exists, {result['entities']} entities, method={existing_method})") skipped_set.add(canonical_slot) elif result.get("dry_run"): log(f" ✓ DRY-RUN OK") @@ -314,9 +347,9 @@ def log(msg: str): if i > 0 and not dry_run: elapsed = time.time() - start_time avg_time = elapsed / i - remaining = (len(canonical_slots) - i) * avg_time + remaining = (len(deduped_slots) - i) * avg_time eta_hours = remaining / 3600 - log(f" Progress: {i}/{len(canonical_slots)} ({i*100//len(canonical_slots)}%), " + log(f" Progress: {i}/{len(deduped_slots)} ({i*100//len(deduped_slots)}%), " f"ETA: {eta_hours:.1f}h\n") # Final stats @@ -351,7 +384,7 @@ def log(msg: str): save_progress(progress) return { - "total_slots": len(canonical_slots), + "total_slots": len(deduped_slots), "completed": len(completed_set), "skipped": len(skipped_set), "failed": len(failed_set), diff --git a/meva/scripts/v10/generate_spatial.py b/meva/scripts/v10/generate_spatial.py index 6547c43..6d4ac9a 100644 --- a/meva/scripts/v10/generate_spatial.py +++ b/meva/scripts/v10/generate_spatial.py @@ -1,12 +1,20 @@ """ -V8 generate_spatial.py — Spatial entity distance questions with MEVID descriptions. +generate_spatial.py — Closest-approach spatial questions. -V8 CHANGES from V7: -- Entity descriptions from MEVID (GPT/YOLO) instead of actor ID aliases -- Questions use natural person descriptions for spatial references +Asks: "How close do two people come to each other in this scene?" + +Instead of a single snapshot distance, computes the MINIMUM distance +(closest approach) over the overlapping time window when both entities +are visible on the same camera. This handles moving actors correctly. + +Answer options: close together / moderate distance / far apart / cross paths +Distance buckets: <=5m = near, 5-15m = moderate, >15m = far +"Cross paths" = entities whose minimum distance is <=2m (they physically +pass through the same location at overlapping times). """ import random +from collections import defaultdict from pathlib import Path from typing import Any, Dict, List, Optional, Set, Tuple @@ -15,31 +23,32 @@ from .parse_annotations import Event, find_clips_for_slot, DEFAULT_FRAMERATE from .build_scene_graph import SceneGraph, Entity from .entity_resolution import ResolvedGraph -from .person_descriptions import enrich_entities from .activity_hierarchy import humanize_activity, humanize_activity_gerund from .utils.krtd import ( - load_camera_model, CameraModel, compute_entity_distance, + load_camera_model, CameraModel, classify_proximity, INDOOR_CAMERAS, ) -from .utils.yaml_stream import get_bbox_at_frame - -# Scene context (optional — graceful degradation) -try: - from .scene_context import get_scene_context, enrich_description_with_location - _HAS_SCENE_CONTEXT = True -except ImportError: - _HAS_SCENE_CONTEXT = False +from .utils.yaml_stream import stream_geom_records DEFAULT_FPS = 30.0 FRAME_WIDTH = 1920 FRAME_HEIGHT = 1080 FRAME_EDGE_MARGIN = 10 # pixels -# Issue 8: Same-person dedup thresholds -SAME_PERSON_PROXIMITY_M = 0.5 # entities closer than this are likely same person +# Sampling: sample every N frames for distance computation +SAMPLE_EVERY = 30 # ~1 second at 30fps + +# Cross-paths threshold: if minimum distance <= this, entities "cross paths" +CROSS_PATHS_THRESHOLD_M = 2.0 + +# Same-person dedup thresholds +SAME_PERSON_MIN_DIST_M = 0.5 # closest approach < this = likely same person SAME_PERSON_BBOX_IOU = 0.3 # bbox IoU above this = same person SAME_PERSON_TEMPORAL_OVERLAP = 0.5 # frame overlap ratio threshold +# Maximum distance to consider (skip absurd projections) +MAX_REASONABLE_DISTANCE_M = 500.0 + def _compute_bbox_iou(bbox_a: List[int], bbox_b: List[int]) -> float: """Compute Intersection over Union of two bounding boxes [x1, y1, x2, y2].""" @@ -58,47 +67,6 @@ def _compute_bbox_iou(bbox_a: List[int], bbox_b: List[int]) -> float: return inter / union if union > 0 else 0.0 -def _is_likely_same_person(cand: Dict, resolved: ResolvedGraph) -> bool: - """ - Issue 8: Check if two entities in a spatial candidate are likely the same person. - - Uses three independent checks (any one triggering = skip): - 1. Entity cluster membership (same resolved identity) - 2. Bounding box IoU > 0.3 - 3. Distance < 0.5m with overlapping frame ranges - """ - ent_a = cand["entity_a_obj"] - ent_b = cand["entity_b_obj"] - eid_a = cand["entity_a"] - eid_b = cand["entity_b"] - - # Check 1: Same entity cluster - for cluster in resolved.entity_clusters: - if eid_a in cluster.entities and eid_b in cluster.entities: - return True - - # Check 2: Bbox IoU - bbox_iou = _compute_bbox_iou(cand["bbox_a"], cand["bbox_b"]) - if bbox_iou > SAME_PERSON_BBOX_IOU: - return True - - # Check 3: Proximity + temporal overlap (same camera only) - if cand["camera_a"] == cand["camera_b"] and cand["distance_m"] < SAME_PERSON_PROXIMITY_M: - # Check frame overlap - start_a, end_a = ent_a.first_frame, ent_a.last_frame - start_b, end_b = ent_b.first_frame, ent_b.last_frame - overlap_start = max(start_a, start_b) - overlap_end = min(end_a, end_b) - if overlap_end > overlap_start: - duration_a = max(end_a - start_a, 1) - duration_b = max(end_b - start_b, 1) - overlap_ratio = (overlap_end - overlap_start) / min(duration_a, duration_b) - if overlap_ratio > SAME_PERSON_TEMPORAL_OVERLAP: - return True - - return False - - def _is_bbox_clipping_frame(bbox: List[int], margin: int = FRAME_EDGE_MARGIN) -> bool: """Check if a bounding box is clipping the frame edge.""" if not bbox or len(bbox) < 4: @@ -110,12 +78,7 @@ def _is_bbox_clipping_frame(bbox: List[int], margin: int = FRAME_EDGE_MARGIN) -> def _disambiguate_description(desc: str, entity: Entity, sg: SceneGraph, other_desc: str) -> str: - """Add disambiguating context when two entities share the same description. - - Appends activity context to make descriptions unique. - Camera IDs and raw timestamps are forbidden (Issue 12). - """ - # Find primary activity for this entity + """Add disambiguating context when two entities share the same description.""" primary_activity = None for evt in sg.events: if evt.camera_id == entity.camera_id: @@ -125,22 +88,146 @@ def _disambiguate_description(desc: str, entity: Entity, sg: SceneGraph, break if primary_activity: break - if primary_activity: act_gerund = humanize_activity_gerund(primary_activity) return f"{desc} ({act_gerund.lower()})" - # Cannot disambiguate without activity — return original return desc # ============================================================================ -# Spatial Candidate Finding (from V7, unchanged logic) +# Geom-based closest approach computation +# ============================================================================ + +def _load_geom_bboxes_for_actors(geom_path: Path, + actor_ids: Set[int], + sample_every: int = SAMPLE_EVERY + ) -> Dict[int, Dict[int, List[int]]]: + """Load sampled bounding boxes for specific actors from geom.yml. + + Returns {actor_id: {frame: [x1,y1,x2,y2], ...}, ...} + Samples every `sample_every` frames for efficiency. + """ + result: Dict[int, Dict[int, List[int]]] = defaultdict(dict) + for rec in stream_geom_records(geom_path): + aid = rec['id1'] + if aid not in actor_ids: + continue + frame = rec['ts0'] + if frame % sample_every != 0: + continue + result[aid][frame] = rec['g0'] + return dict(result) + + +def _compute_closest_approach( + bboxes_a: Dict[int, List[int]], + bboxes_b: Dict[int, List[int]], + camera_model: CameraModel, +) -> Tuple[Optional[float], Optional[int], Optional[List[int]], Optional[List[int]]]: + """Compute closest approach between two entities on the same camera. + + Finds the frame where the 3D distance between the two entities is minimized + across their overlapping time window. + + Returns: (min_distance_m, closest_frame, bbox_a_at_frame, bbox_b_at_frame) + or (None, None, None, None) if no valid overlap. + """ + # Find overlapping frames (both actors have bboxes) + frames_a = set(bboxes_a.keys()) + frames_b = set(bboxes_b.keys()) + common_frames = sorted(frames_a & frames_b) + + if not common_frames: + # No exact frame matches - try nearest-neighbor matching + # within a tolerance of 2*SAMPLE_EVERY frames + tolerance = 2 * SAMPLE_EVERY + paired_frames = [] + sorted_b = sorted(frames_b) + for fa in sorted(frames_a): + best_fb = None + best_dist = tolerance + 1 + for fb in sorted_b: + d = abs(fa - fb) + if d < best_dist: + best_dist = d + best_fb = fb + if fb > fa + tolerance: + break + if best_fb is not None and best_dist <= tolerance: + paired_frames.append((fa, best_fb)) + + if not paired_frames: + return None, None, None, None + + min_dist = float('inf') + closest_frame = None + closest_bbox_a = None + closest_bbox_b = None + + for fa, fb in paired_frames: + ba = bboxes_a[fa] + bb = bboxes_b[fb] + if _is_bbox_clipping_frame(ba) or _is_bbox_clipping_frame(bb): + continue + pos_a = camera_model.bbox_foot_to_world(ba) + pos_b = camera_model.bbox_foot_to_world(bb) + if pos_a is None or pos_b is None: + continue + dist = float(np.linalg.norm(pos_a - pos_b)) + if dist > MAX_REASONABLE_DISTANCE_M: + continue + if dist < min_dist: + min_dist = dist + closest_frame = fa + closest_bbox_a = ba + closest_bbox_b = bb + + if closest_frame is None: + return None, None, None, None + return min_dist, closest_frame, closest_bbox_a, closest_bbox_b + + # Common frames exist - compute distance at each + min_dist = float('inf') + closest_frame = None + closest_bbox_a = None + closest_bbox_b = None + + for frame in common_frames: + ba = bboxes_a[frame] + bb = bboxes_b[frame] + if _is_bbox_clipping_frame(ba) or _is_bbox_clipping_frame(bb): + continue + pos_a = camera_model.bbox_foot_to_world(ba) + pos_b = camera_model.bbox_foot_to_world(bb) + if pos_a is None or pos_b is None: + continue + dist = float(np.linalg.norm(pos_a - pos_b)) + if dist > MAX_REASONABLE_DISTANCE_M: + continue + if dist < min_dist: + min_dist = dist + closest_frame = frame + closest_bbox_a = ba + closest_bbox_b = bb + + if closest_frame is None: + return None, None, None, None + return min_dist, closest_frame, closest_bbox_a, closest_bbox_b + + +# ============================================================================ +# Candidate Finding (closest-approach version) # ============================================================================ def _find_spatial_candidates(sg: SceneGraph, verbose: bool = False) -> List[Dict]: - """Find entity pairs with valid KRTD projections for spatial questions.""" - candidates = [] + """Find entity pairs with valid closest-approach distances. + For each pair of person entities on the same camera: + 1. Load sampled bboxes from geom.yml + 2. Compute closest approach distance over co-visible frames + 3. Record minimum distance, proximity, and reference frame + """ + # Load camera models (skip indoor) camera_models: Dict[str, CameraModel] = {} for cam_id in sg.cameras: if cam_id in INDOOR_CAMERAS: @@ -152,112 +239,154 @@ def _find_spatial_candidates(sg: SceneGraph, verbose: bool = False) -> List[Dict if verbose: print(f" Spatial: {len(camera_models)} cameras with KRTD models") + if not camera_models: + return [] + + # Find geom.yml paths per camera clips = find_clips_for_slot(sg.slot) - clip_by_camera = {c["camera_id"]: c for c in clips} + geom_paths: Dict[str, Path] = {} + for clip in clips: + cam = clip["camera_id"] + if cam not in camera_models: + continue + act_path = Path(clip["activities_file"]) + geom_path = act_path.with_name( + act_path.name.replace(".activities.yml", ".geom.yml") + ) + if geom_path.exists() and geom_path.stat().st_size > 100: + geom_paths[cam] = geom_path - entity_positions: Dict[str, Dict] = {} + if verbose: + print(f" Spatial: {len(geom_paths)} cameras with geom.yml files") - for eid, entity in sg.entities.items(): - if entity.camera_id not in camera_models: + # Group person entities by camera + cam_entities: Dict[str, List[Entity]] = defaultdict(list) + for eid, ent in sg.entities.items(): + if ent.entity_type != "person": continue - if entity.entity_type != "person": + if ent.camera_id in camera_models and ent.camera_id in geom_paths: + cam_entities[ent.camera_id].append(ent) + + candidates = [] + + for cam_id, entities in cam_entities.items(): + if len(entities) < 2: continue - model = camera_models[entity.camera_id] - mid_frame = (entity.first_frame + entity.last_frame) // 2 - - bbox = None - if entity.keyframe_bboxes: - closest_frame = min(entity.keyframe_bboxes.keys(), - key=lambda f: abs(int(f) - mid_frame)) - bbox = entity.keyframe_bboxes[closest_frame] - - if bbox is None and entity.camera_id in clip_by_camera: - clip = clip_by_camera[entity.camera_id] - geom_path = Path(clip["activities_file"]).with_name( - Path(clip["activities_file"]).name.replace(".activities.yml", ".geom.yml") - ) - if geom_path.exists(): - bbox = get_bbox_at_frame(geom_path, entity.actor_id, mid_frame, tolerance=15) + model = camera_models[cam_id] + geom_path = geom_paths[cam_id] - if bbox is None: - continue + # Collect actor IDs we need + actor_ids = {ent.actor_id for ent in entities} - pos = model.bbox_foot_to_world(bbox) - if pos is None: - continue + # Load sampled bboxes for all actors on this camera + all_bboxes = _load_geom_bboxes_for_actors(geom_path, actor_ids) - # V10: Skip entities whose bbox clips the frame edge - if _is_bbox_clipping_frame(bbox): - if verbose: - print(f" Skipping {eid}: bbox clips frame edge {bbox}") - continue + if verbose: + print(f" Camera {cam_id}: {len(entities)} entities, " + f"{len(all_bboxes)} with geom bboxes") - entity_positions[eid] = { - "position": pos, - "frame": mid_frame, - "bbox": bbox, - "camera_id": entity.camera_id, - "entity": entity, - } - - if verbose: - print(f" Spatial: {len(entity_positions)} entities with 3D positions") - - entity_ids = sorted(entity_positions.keys()) - for i in range(len(entity_ids)): - for j in range(i + 1, len(entity_ids)): - eid_a = entity_ids[i] - eid_b = entity_ids[j] - - pos_a = entity_positions[eid_a] - pos_b = entity_positions[eid_b] - - # Same-camera only: both entities must be on the same camera - # so the spatial relationship is visually verifiable in one frame - if pos_a["camera_id"] != pos_b["camera_id"]: - continue - - distance = float(np.linalg.norm(pos_a["position"] - pos_b["position"])) - - if distance > 500: - continue - - proximity = classify_proximity(distance) - - candidates.append({ - "entity_a": eid_a, - "entity_b": eid_b, - "camera_a": pos_a["camera_id"], - "camera_b": pos_b["camera_id"], - "position_a": pos_a["position"].tolist(), - "position_b": pos_b["position"].tolist(), - "bbox_a": pos_a["bbox"], - "bbox_b": pos_b["bbox"], - "frame_a": pos_a["frame"], - "frame_b": pos_b["frame"], - "distance_m": round(distance, 2), - "proximity": proximity, - "entity_a_obj": pos_a["entity"], - "entity_b_obj": pos_b["entity"], - }) + # Compare all pairs + for i in range(len(entities)): + for j in range(i + 1, len(entities)): + ent_a = entities[i] + ent_b = entities[j] + + bboxes_a = all_bboxes.get(ent_a.actor_id, {}) + bboxes_b = all_bboxes.get(ent_b.actor_id, {}) + + if not bboxes_a or not bboxes_b: + continue + + # Check temporal overlap + overlap_start = max(ent_a.first_frame, ent_b.first_frame) + overlap_end = min(ent_a.last_frame, ent_b.last_frame) + if overlap_end <= overlap_start: + continue # no temporal overlap + + # Compute closest approach + min_dist, closest_frame, bbox_a, bbox_b = _compute_closest_approach( + bboxes_a, bboxes_b, model + ) + + if min_dist is None: + continue + + # Classify proximity + proximity = classify_proximity(min_dist) + + # Check if entities cross paths (very close approach) + crosses_paths = min_dist <= CROSS_PATHS_THRESHOLD_M + + candidates.append({ + "entity_a": ent_a.entity_id, + "entity_b": ent_b.entity_id, + "camera": cam_id, + "min_distance_m": round(min_dist, 2), + "closest_frame": closest_frame, + "bbox_a": bbox_a, + "bbox_b": bbox_b, + "proximity": proximity, + "crosses_paths": crosses_paths, + "overlap_frames": (overlap_start, overlap_end), + "entity_a_obj": ent_a, + "entity_b_obj": ent_b, + }) return candidates +# ============================================================================ +# Same-person filtering +# ============================================================================ + +def _is_likely_same_person(cand: Dict, resolved: ResolvedGraph) -> bool: + """Check if two entities are likely the same person.""" + eid_a = cand["entity_a"] + eid_b = cand["entity_b"] + + # Check 1: Same entity cluster + for cluster in resolved.entity_clusters: + if eid_a in cluster.entities and eid_b in cluster.entities: + return True + + # Check 2: Bbox IoU at closest frame + bbox_iou = _compute_bbox_iou(cand["bbox_a"], cand["bbox_b"]) + if bbox_iou > SAME_PERSON_BBOX_IOU: + return True + + # Check 3: Very close proximity with high temporal overlap + if cand["min_distance_m"] < SAME_PERSON_MIN_DIST_M: + ent_a = cand["entity_a_obj"] + ent_b = cand["entity_b_obj"] + start_a, end_a = ent_a.first_frame, ent_a.last_frame + start_b, end_b = ent_b.first_frame, ent_b.last_frame + overlap_start = max(start_a, start_b) + overlap_end = min(end_a, end_b) + if overlap_end > overlap_start: + duration_a = max(end_a - start_a, 1) + duration_b = max(end_b - start_b, 1) + overlap_ratio = (overlap_end - overlap_start) / min(duration_a, duration_b) + if overlap_ratio > SAME_PERSON_TEMPORAL_OVERLAP: + return True + + return False + + # ============================================================================ # Question Generation # ============================================================================ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, entity_descs: Dict[str, str], - rng: random.Random, count: int = 2, + rng: random.Random, count: int = 3, verbose: bool = False, fallback_eids: Optional[Set[str]] = None) -> List[Dict]: """ - Generate spatial entity distance questions with MEVID descriptions. + Generate spatial closest-approach questions. - V8: Uses entity_descs for person descriptions instead of actor ID aliases. + Asks how close two people come to each other in the scene. + Uses minimum distance over co-visible time window (not a single snapshot). """ candidates = _find_spatial_candidates(sg, verbose) @@ -267,67 +396,68 @@ def generate_spatial_qa(sg: SceneGraph, resolved: ResolvedGraph, if not candidates: return [] - # Issue 8: Filter out pairs that are likely the same person - before_same_person = len(candidates) + # Filter same-person pairs + before = len(candidates) candidates = [c for c in candidates if not _is_likely_same_person(c, resolved)] - if verbose and before_same_person != len(candidates): - print(f" Filtered {before_same_person - len(candidates)} same-person pairs " - f"→ {len(candidates)} remaining") + if verbose and before != len(candidates): + print(f" Filtered {before - len(candidates)} same-person pairs " + f"-> {len(candidates)} remaining") if not candidates: return [] - - # Filter out pairs with identical descriptions (indistinguishable entities) - # V10: Instead of just filtering, try to disambiguate with activity/time context + + # Filter out pairs with fallback (non-visual) descriptions + if fallback_eids: + before = len(candidates) + candidates = [ + c for c in candidates + if c["entity_a"] not in fallback_eids and c["entity_b"] not in fallback_eids + ] + if verbose and before != len(candidates): + print(f" Filtered {before - len(candidates)} fallback-description pairs") + + # Try to disambiguate identical descriptions filtered = [] for c in candidates: desc_a = entity_descs.get(c["entity_a"], "") desc_b = entity_descs.get(c["entity_b"], "") if desc_a and desc_b and desc_a == desc_b: - # Try to disambiguate ent_a = c["entity_a_obj"] ent_b = c["entity_b_obj"] new_a = _disambiguate_description(desc_a, ent_a, sg, desc_b) new_b = _disambiguate_description(desc_b, ent_b, sg, desc_a) if new_a != new_b: - # Store disambiguated descriptions for use in question text c["disambiguated_a"] = new_a c["disambiguated_b"] = new_b filtered.append(c) elif verbose: - print(f" Filtering spatial pair: cannot disambiguate '{desc_a}'") + print(f" Skipping: cannot disambiguate '{desc_a}'") continue filtered.append(c) candidates = filtered - - # Filter out pairs where either entity has a fallback (non-visual) description - if fallback_eids: - before = len(candidates) - candidates = [ - c for c in candidates - if c["entity_a"] not in fallback_eids and c["entity_b"] not in fallback_eids - ] - if verbose and before != len(candidates): - print(f" Filtered {before - len(candidates)} spatial pairs (fallback descriptions)") - - # Sort by distance diversity + + if not candidates: + return [] + + # Sort by distance diversity - pick from each proximity bucket near = [c for c in candidates if c["proximity"] == "near"] moderate = [c for c in candidates if c["proximity"] == "moderate"] far = [c for c in candidates if c["proximity"] == "far"] + cross = [c for c in candidates if c["crosses_paths"]] rng.shuffle(near) rng.shuffle(moderate) rng.shuffle(far) + rng.shuffle(cross) - # Dedup: track (desc_a, desc_b, camera) tuples to avoid identical-looking questions + # Dedup: track (desc_a, desc_b, camera) tuples def _dedup_key(c): da = c.get("disambiguated_a") or entity_descs.get(c["entity_a"], "") db = c.get("disambiguated_b") or entity_descs.get(c["entity_b"], "") - cam = c["camera_a"] - # Normalize order so (A,B) == (B,A) + cam = c["camera"] pair = tuple(sorted([da, db])) return (pair, cam) - + seen_keys = set() def _try_add(c, selected_list): key = _dedup_key(c) @@ -336,82 +466,90 @@ def _try_add(c, selected_list): seen_keys.add(key) selected_list.append(c) return True - + selected = [] + + # Priority: cross-paths first (most interesting), then one from each bucket + for c in cross: + if len(selected) >= count: + break + _try_add(c, selected) + for bucket in [near, moderate, far]: - if bucket and len(selected) < count: - for b in bucket: - if _try_add(b, selected): - break + if len(selected) >= count: + break + for b in bucket: + if _try_add(b, selected): + break - remaining = near[1:] + moderate[1:] + far[1:] + # Fill remaining + remaining = near + moderate + far rng.shuffle(remaining) for c in remaining: if len(selected) >= count: break _try_add(c, selected) + # Generate questions qa_pairs = [] for idx, cand in enumerate(selected[:count]): ent_a = cand["entity_a_obj"] ent_b = cand["entity_b_obj"] proximity = cand["proximity"] - distance = cand["distance_m"] - - # All spatial questions are same-camera (filtered in _find_spatial_candidates) + min_dist = cand["min_distance_m"] + crosses = cand["crosses_paths"] - # Issue 12: Use descriptions WITHOUT camera IDs or raw timestamps desc_a = cand.get("disambiguated_a") or entity_descs.get(cand["entity_a"], "a person") desc_b = cand.get("disambiguated_b") or entity_descs.get(cand["entity_b"], "a person") - # V10: Enrich with spatial location context if available - if _HAS_SCENE_CONTEXT: - parts = sg.slot.split(".") - if len(parts) >= 3: - site = parts[2] - cam_model = load_camera_model(cand["camera_a"]) - if cam_model is not None: - # Get 3D point for entity A - if ent_a.keyframe_bboxes: - mid_a = min(ent_a.keyframe_bboxes.keys(), - key=lambda f: abs(f - (ent_a.first_frame + ent_a.last_frame)//2)) - pt_a = cam_model.bbox_foot_to_world(ent_a.keyframe_bboxes[mid_a]) - if pt_a is not None: - desc_a = enrich_description_with_location(desc_a, pt_a, site) - if ent_b.keyframe_bboxes: - mid_b = min(ent_b.keyframe_bboxes.keys(), - key=lambda f: abs(f - (ent_b.first_frame + ent_b.last_frame)//2)) - pt_b = cam_model.bbox_foot_to_world(ent_b.keyframe_bboxes[mid_b]) - if pt_b is not None: - desc_b = enrich_description_with_location(desc_b, pt_b, site) - - # Issue 12: No camera IDs or raw timestamps in question text - # Skip pairs with identical descriptions (can't distinguish without camera IDs) + # Skip if descriptions are still identical if desc_a == desc_b: if verbose: - print(f" Skipping spatial pair: identical descriptions '{desc_a}'") + print(f" Skipping: identical descriptions '{desc_a}'") continue question = ( - f"How close are {desc_a} and {desc_b} in the scene?" + f"How close do {desc_a} and {desc_b} come to each other in the scene?" ) + # Build options - crosses_paths is the "special" answer options = [ - "They are near each other (within a few meters)", - "They are at a moderate distance (5-15 meters)", - "They are far apart (more than 15 meters)", - "They are at the same location", + "They come close together (within a few meters)", + "They stay at a moderate distance (5-15 meters apart)", + "They remain far apart (more than 15 meters)", + "They cross paths (pass very close to each other)", ] - if proximity == "near": + if crosses: + correct_idx = 3 # cross paths + elif proximity == "near": correct_idx = 0 elif proximity == "moderate": correct_idx = 1 else: correct_idx = 2 - # Find clip_files for each entity from their events + # Build reasoning + if crosses: + reasoning = ( + f"{desc_a.capitalize()} and {desc_b} come within " + f"{min_dist:.1f} meters of each other, crossing paths " + f"during the scene." + ) + else: + proximity_text = { + "near": "close together", + "moderate": "at a moderate distance", + "far": "far apart", + } + reasoning = ( + f"The closest {desc_a} and {desc_b} come to each other is " + f"approximately {min_dist:.1f} meters, placing them " + f"{proximity_text.get(proximity, proximity)}." + ) + + # Find clip_file for the camera def _entity_clip_file(entity_id): ent = sg.entities.get(entity_id) if not ent: @@ -422,56 +560,60 @@ def _entity_clip_file(entity_id): if evt and evt.video_file: return evt.video_file.replace(".avi", ".mp4") return "" - - clip_a = _entity_clip_file(cand["entity_a"]) - clip_b = _entity_clip_file(cand["entity_b"]) - + + clip_file = _entity_clip_file(cand["entity_a"]) + if not clip_file: + clip_file = _entity_clip_file(cand["entity_b"]) + + overlap_start, overlap_end = cand["overlap_frames"] + debug_info = { "entity_a": { "entity_id": cand["entity_a"], - "camera": cand["camera_a"], + "camera": cand["camera"], "description": desc_a, - "bbox": cand["bbox_a"], - "frame": cand["frame_a"], + "bbox_at_closest": cand["bbox_a"], "timestamp": f"{ent_a.first_sec:.2f}-{ent_a.last_sec:.2f}s", - "world_pos_enu": cand["position_a"], - "clip_file": clip_a, }, "entity_b": { "entity_id": cand["entity_b"], - "camera": cand["camera_b"], + "camera": cand["camera"], "description": desc_b, - "bbox": cand["bbox_b"], - "frame": cand["frame_b"], + "bbox_at_closest": cand["bbox_b"], "timestamp": f"{ent_b.first_sec:.2f}-{ent_b.last_sec:.2f}s", - "world_pos_enu": cand["position_b"], - "clip_file": clip_b, }, - "distance_meters": distance, + "min_distance_meters": min_dist, + "closest_frame": cand["closest_frame"], "proximity": proximity, - "projection_method": "krtd_bbox_foot", + "crosses_paths": crosses, + "overlap_frames": f"{overlap_start}-{overlap_end}", + "projection_method": "krtd_bbox_foot_closest_approach", + "clip_file": clip_file, } + if clip_file: + debug_info["clip_files"] = [clip_file] qa = { - "question_id": f"v8_spatial_{idx+1:03d}", + "question_id": f"v10_spatial_{idx+1:03d}", "category": "spatial", - "difficulty": "easy", + "difficulty": "easy" if crosses or proximity == "near" else "medium", "question_template": question, "options": options, "correct_answer_index": correct_idx, "correct_answer": options[correct_idx], - "requires_cameras": [cand["camera_a"]], + "reasoning": reasoning, + "requires_cameras": [cand["camera"]], "requires_multi_camera": False, "verification": { "entity_a": cand["entity_a"], "entity_b": cand["entity_b"], "entity_a_desc": desc_a, "entity_b_desc": desc_b, - "world_pos_a_enu": cand["position_a"], - "world_pos_b_enu": cand["position_b"], - "distance_meters": distance, + "min_distance_meters": min_dist, + "closest_frame": cand["closest_frame"], "proximity": proximity, - "projection_method": "krtd_bbox_foot", + "crosses_paths": crosses, + "projection_method": "krtd_bbox_foot_closest_approach", }, "debug_info": debug_info, } diff --git a/meva/scripts/v10/naturalize.py b/meva/scripts/v10/naturalize.py index 8934081..6f662e2 100644 --- a/meva/scripts/v10/naturalize.py +++ b/meva/scripts/v10/naturalize.py @@ -740,9 +740,9 @@ def preprocess_all(input_data: Dict, verbose: bool = False, "example_output": '{"question": "Which of these happened first: a person in gray with green pants and a black backpack walking in through a structure, or a person in a blue top and green pants interacting with someone?", "reasoning": "The person in gray entered through the structure before the blue-topped person interacted with anyone."}', }, "spatial": { - "hint": "Spatial distance question about two people. CRITICAL: Do NOT mention camera IDs (like G421), timestamps (like 'at 45 seconds', 'around the 2:10 mark'), or raw time references. Use only visual appearance descriptions (clothing, hair, objects) to identify people. VARY phrasing. Return ONLY {question, reasoning}.", - "example_input": 'How close are a person wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back and a person wearing a white hoodie with a Puma logo, camouflage pants, and a camouflage cap in the scene?', - "example_output": '{"question": "How far apart would you say the person in blue with the black graphic hoodie is from the one wearing a white Puma hoodie and camo pants?", "reasoning": "Their positions in the scene place them approximately 6 meters apart."}', + "hint": "Spatial closest-approach question about how close two people come to each other. CRITICAL: Do NOT mention camera IDs (like G421), timestamps (like 'at 45 seconds', 'around the 2:10 mark'), or raw time references. Use only visual appearance descriptions (clothing, hair, objects) to identify people. VARY phrasing. Return ONLY {question, reasoning}.", + "example_input": 'How close do a person wearing a blue top and blue pants, with a black hoodie featuring a graphic design on the back and a person wearing a white hoodie with a Puma logo, camouflage pants, and a camouflage cap come to each other in the scene?', + "example_output": '{"question": "How close do the person in blue with the black graphic hoodie and the one in a white Puma hoodie with camo pants get to each other?", "reasoning": "Their closest approach places them approximately 6 meters apart, keeping them at a moderate distance throughout."}', }, "perception": { "hint": "Perception question about activities or visual attributes. Camera references are part of the question — keep them. IMPORTANT: Preserve 'What activity...' and 'Which camera...' question structures EXACTLY — do NOT rephrase to 'Can you identify...' or 'Identify the camera...'. Only fix grammar and smooth descriptions. Return ONLY {question, reasoning}.", @@ -770,9 +770,9 @@ def preprocess_all(input_data: Dict, verbose: bool = False, "example_output": '{"question": "Once the individual grabbed an item from the ground, what did they most likely do next?", "reasoning": "Picking up an object is commonly followed by putting it down in another location."}', }, "numerical": { - "hint": "Counting question about activities across cameras. CRITICAL: Do NOT mention specific camera IDs (like G421) in the question. Rephrase the counting query naturally — vary sentence structure but preserve the exact scope. Return ONLY {question, reasoning}.", - "example_input": "How many cameras capture at least one instance of talking to person?", - "example_output": '{"question": "Across the available camera feeds, on how many of them can you spot at least one conversation taking place?", "reasoning": "Conversations were observed on 5 of the available camera feeds."}', + "hint": "Counting question about activities across cameras. CRITICAL: Do NOT mention specific camera IDs (like G421) in the question. Rephrase the counting query naturally — vary sentence structure but preserve the exact scope. IMPORTANT: The reasoning will be provided separately — you ONLY need to return {question, reasoning} where reasoning preserves ALL numbers from the original reasoning EXACTLY. Do NOT change any count or number in the reasoning.", + "example_input": "How many times does someone perform the action of opening a vehicle door across all cameras in this slot?", + "example_output": '{"question": "Across the available camera feeds, how many times can you observe someone opening a vehicle door?", "reasoning": "Opening a vehicle door was observed 8 times across 2 cameras."}', }, "best_camera": { @@ -850,14 +850,19 @@ def _naturalize_question( # Verification context for reasoning (as plain English) if category == "temporal" and "gap_sec" in verification: parts.append(f"\nCONTEXT: The gap between events is {verification['gap_sec']} seconds.") - elif category == "spatial" and "distance_meters" in verification: - parts.append(f"\nCONTEXT: Distance between entities is {verification['distance_meters']} meters.") + elif category == "spatial" and "min_distance_meters" in verification: + parts.append(f"\nCONTEXT: Closest approach distance between entities is {verification['min_distance_meters']} meters.") elif category == "best_camera": correct_cam = verification.get("correct_camera", "") entrance_time = verification.get("entrance_time_sec", 0) if correct_cam: parts.append(f"\nCONTEXT: First entrance on {correct_cam} at {entrance_time}s.") + # For counting questions: pass the deterministic reasoning so GPT preserves numbers + original_reasoning = question.get("reasoning", "") + if category in ("numerical", "counting") and original_reasoning: + parts.append(f"\nORIGINAL REASONING (preserve all numbers exactly): {original_reasoning}") + user_message = "\n".join(parts) for attempt in range(MAX_RETRIES): @@ -948,13 +953,30 @@ def naturalize_batch( failures += 1 nat_q["naturalized_question"] = q["question_template"] nat_q["naturalized_options"] = q["options"] - nat_q["reasoning"] = "" + nat_q["reasoning"] = q.get("reasoning", "") # preserve raw reasoning on failure nat_q["naturalization_failed"] = True else: nat_q["naturalized_question"] = result["naturalized_question"] nat_q["naturalized_options"] = result["naturalized_options"] nat_q["reasoning"] = result["reasoning"] total_tokens += result["usage"]["total_tokens"] + + # Post-naturalization safety: for counting questions, verify the + # correct answer number appears in the reasoning. If GPT changed + # it, fall back to the raw deterministic reasoning. + if q["category"] in ("numerical", "counting"): + correct_answer = q.get("correct_answer", "") + raw_reasoning = q.get("reasoning", "") + nat_reasoning = nat_q["reasoning"] + if correct_answer and nat_reasoning: + # Check if the correct count appears in naturalized reasoning + if correct_answer not in nat_reasoning and raw_reasoning: + if verbose: + print(f" WARNING: Counting reasoning corrupted " + f"(correct={correct_answer}, not found in " + f"'{nat_reasoning[:80]}...'). Using raw reasoning.") + nat_q["reasoning"] = raw_reasoning + nat_q["reasoning_restored_from_raw"] = True naturalized_pairs.append(nat_q) diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index fe26a41..89ca14f 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -2,11 +2,12 @@ """ FINAL run_pipeline.py — Main orchestrator for FINAL QA generation pipeline. -7 categories (matching paper taxonomy): - temporal(2) + event_ordering(2) + perception(2) + spatial(2) - + summarization(1) + counting(1) + best_camera(2) = ~12 Qs/slot +6 categories (matching paper taxonomy): + temporal(2) + event_ordering(2) + spatial(3) + + summarization(1) + counting(1) + best_camera(3) = ~12 Qs/slot REMOVED from V9: re_identification, causality +REMOVED: perception (killed — not useful for benchmark) ADDED: best_camera (Camera Transition Logic) Setup (run from the meva/ directory inside the repo): @@ -51,7 +52,7 @@ ) from .generate_temporal import generate_temporal_qa from .generate_spatial import generate_spatial_qa - from .generate_perception import generate_perception_qa + # from .generate_perception import generate_perception_qa # KILLED: perception category removed from .generate_scene_summary import generate_scene_summary_qa from .generate_event_ordering import generate_event_ordering_qa from .generate_numerical import generate_numerical_qa @@ -67,7 +68,7 @@ ) from generate_temporal import generate_temporal_qa from generate_spatial import generate_spatial_qa - from generate_perception import generate_perception_qa + # from generate_perception import generate_perception_qa # KILLED: perception category removed from generate_scene_summary import generate_scene_summary_qa from generate_event_ordering import generate_event_ordering_qa from generate_numerical import generate_numerical_qa @@ -90,11 +91,11 @@ CANONICAL_SLOTS_PATH = _REPO_DATA / "canonical_slots.json" RANDOM_SEED = 42 -# 7 categories — max question counts per slot (soft ceilings, not rigid targets) +# 6 categories — max question counts per slot (soft ceilings, not rigid targets) # Generators produce all valid candidates and cap at MAX. MAX_TEMPORAL = 2 MAX_EVENT_ORDERING = 2 -MAX_PERCEPTION = 2 # includes attribute_verification if MEVID +# MAX_PERCEPTION = 2 # KILLED: perception category removed MAX_SPATIAL = 3 # ~70% slot hit rate requires 3/slot for 500 total MAX_SUMMARIZATION = 1 # scene_summary (renamed for paper alignment) MAX_COUNTING = 1 # activity-counting only (entity-counting removed) @@ -317,10 +318,10 @@ def validate_temporal(q: dict) -> List[str]: def validate_spatial(q: dict) -> List[str]: errors = [] v = q.get("verification", {}) - d = v.get("distance_meters") + d = v.get("min_distance_meters") proximity = v.get("proximity") if d is None: - errors.append("Missing distance_meters") + errors.append("Missing min_distance_meters") return errors if proximity == "near" and d > 5.0: errors.append(f"Near but distance={d}m (should be <=5m)") @@ -328,6 +329,10 @@ def validate_spatial(q: dict) -> List[str]: errors.append(f"Moderate but distance={d}m (should be 5-15m)") elif proximity == "far" and d <= 15.0: errors.append(f"Far but distance={d}m (should be >15m)") + # Validate cross-paths flag consistency + crosses = v.get("crosses_paths", False) + if crosses and d > 2.0: + errors.append(f"crosses_paths=True but distance={d}m (should be <=2m)") return errors @@ -387,7 +392,7 @@ def validate_all(qa_pairs: List[dict]) -> Dict[str, List[str]]: validators = { "temporal": validate_temporal, "spatial": validate_spatial, - "perception": validate_perception, + # "perception": validate_perception, # KILLED "summarization": validate_summarization, "event_ordering": validate_event_ordering, "counting": validate_counting, @@ -527,9 +532,9 @@ def run_pipeline(slot: str, verbose: bool = False, print(f" {mevid_cnt} MEVID + {geom_cnt} geom-color + " f"{fallback_cnt} fallback / {len(entity_descs)} total") - # Step 5-11: Generate QA pairs (7 categories) + # Step 5-11: Generate QA pairs (6 categories) if verbose: - print(f"\nStep 5-11: Generating questions (7 categories)...") + print(f"\nStep 5-11: Generating questions (6 categories)...") temporal_qa = generate_temporal_qa(sg, resolved, entity_descs, rng, count=MAX_TEMPORAL, verbose=verbose, @@ -537,8 +542,10 @@ def run_pipeline(slot: str, verbose: bool = False, ordering_qa = generate_event_ordering_qa(sg, resolved, entity_descs, rng, count=MAX_EVENT_ORDERING, verbose=verbose, fallback_eids=fallback_eids) - perception_qa = generate_perception_qa(sg, resolved, entity_descs, rng, - count=MAX_PERCEPTION, verbose=verbose) + # KILLED: perception category removed + # perception_qa = generate_perception_qa(sg, resolved, entity_descs, rng, + # count=MAX_PERCEPTION, verbose=verbose) + perception_qa = [] spatial_qa = generate_spatial_qa(sg, resolved, entity_descs, rng, count=MAX_SPATIAL, verbose=verbose, fallback_eids=fallback_eids) @@ -682,7 +689,7 @@ def list_canonical_slots(): def main(): - parser = argparse.ArgumentParser(description="FINAL QA Pipeline (7 categories)") + parser = argparse.ArgumentParser(description="FINAL QA Pipeline (6 categories)") parser.add_argument("--slot", help="Slot name (e.g., 2018-03-11.11-25.school)") parser.add_argument("-v", "--verbose", action="store_true", help="Verbose output") parser.add_argument("--seed", type=int, default=RANDOM_SEED, help="Random seed") diff --git a/meva/scripts/v10/validate_qa.py b/meva/scripts/v10/validate_qa.py index 6901fc0..4b626d4 100644 --- a/meva/scripts/v10/validate_qa.py +++ b/meva/scripts/v10/validate_qa.py @@ -384,7 +384,7 @@ def check_duplicates(qa_pairs: List[dict]) -> List[Issue]: """ Detect duplicate/near-duplicate questions within a slot: - Exact text match - - Fuzzy match: >80% token overlap + - Fuzzy match: >90% token overlap - Same entity pair (verification.entity_a + entity_b) - Same category + same correct_answer """ @@ -418,14 +418,20 @@ def check_duplicates(qa_pairs: List[dict]) -> List[Issue]: )) continue - # 2. Fuzzy match: >80% token overlap - overlap = _token_overlap_ratio(qi_tokens, qj_tokens) - if overlap > 0.80: - issues.append(Issue( - qi_id, "near_duplicate", WARNING, - f"Near-duplicate of {qj_id} ({overlap:.0%} token overlap)", - "Rephrase or replace one of the questions" - )) + # 2. Fuzzy match: >90% token overlap + # Skip for categories with structurally similar templates + # (spatial, best_camera) — these naturally share template words + # but reference different entities. True duplicates are caught + # by the entity pair check (#3) instead. + _TEMPLATE_CATS = {"spatial", "best_camera"} + if qi_cat not in _TEMPLATE_CATS or qj_cat not in _TEMPLATE_CATS: + overlap = _token_overlap_ratio(qi_tokens, qj_tokens) + if overlap > 0.90: + issues.append(Issue( + qi_id, "near_duplicate", WARNING, + f"Near-duplicate of {qj_id} ({overlap:.0%} token overlap)", + "Rephrase or replace one of the questions" + )) # 3. Same entity pair check ea_i = qi_ver.get("entity_a", qi_ver.get("event_a", {}).get("description", "")) @@ -503,13 +509,23 @@ def check_generic_descriptions(qa_pairs: List[dict]) -> List[Issue]: # Check for generic descriptions in question text for generic in _GENERIC_DESCS: if generic in question_text.lower(): - # Only flag if it's the main entity reference (not part of larger desc) - # Check by looking at surrounding context - pattern = re.compile( - r'(?:^|\s)' + re.escape(generic) + r'(?:\s+(?:who|that|on|in|at|opens|closes|exits|enters|walks|sits|stands|talks|carries|picks|puts|rides|reads|loads|unloads)\b)', + # Only flag if it's a truly generic reference (no clothing/appearance follows) + # Skip if followed by clothing descriptors ("a person in blue", "a person wearing") + # or comma+clothing ("a person, wearing a ...") + clothing_pattern = re.compile( + r'(?:^|\s)' + re.escape(generic) + + r'(?:[,\s]+(?:wearing|in\s+(?:a\s+)?(?:blue|red|green|black|white|gray|grey|dark|light|navy|teal|indigo|brown|beige|olive|pink|purple|plum|maroon|khaki|camo|charcoal)\b|with\s+(?:a\s+)?(?:blue|red|green|black|white|gray|dark|hat|bag|backpack|hoodie|jacket)\b))', + re.I + ) + if clothing_pattern.search(question_text): + continue # Has clothing descriptor — not generic + + # Check by looking at surrounding context for activity verbs + activity_pattern = re.compile( + r'(?:^|\s)' + re.escape(generic) + r'(?:\s+(?:who|that|opens|closes|exits|enters|walks|sits|stands|talks|carries|picks|puts|rides|reads|loads|unloads)\b)', re.I ) - if pattern.search(question_text): + if activity_pattern.search(question_text): issues.append(Issue( qid, "generic_description", WARNING, f"Generic entity reference '{generic}' used in question text", From 33403c34dc9d79a8669df596125b50a6c7a97ee4 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Fri, 27 Feb 2026 20:59:03 -0600 Subject: [PATCH 23/26] Improve entity descriptions: texture/pattern detection (#2) + confidence-based filtering (#5) - #2 Texture/pattern: _detect_texture() analyzes SegFormer mask regions for solid vs patterned/striped via HSV hue/saturation variance + directional gradient analysis. Adds light/dark brightness qualifier for chromatic colors. Skips texture on very dark clothing (V<70) to avoid compression noise FP. build_description() integrates: 'a patterned dark blue top', 'light teal pants' Excludes redundant qualifiers on inherently dark/light colors (black, white, etc) - #5 Multi-crop consistency: _majority_vote_with_confidence() returns agreement score per attribute. Low-confidence (<40%) colors dropped from description rather than stating wrong color. Crop selection prefers middle-of-track frames (inner 80%) for more stable pose/lighting. - New output fields: upper_texture, lower_texture, upper_brightness, lower_brightness, confidence dict (per-attribute agreement 0-1) Test scores: admin=100, hospital=92, school-10-15=90(+6), school-11-25=88(+2) --- .../v10/extract_entity_descriptions.py | 230 ++++++++++++++++-- 1 file changed, 213 insertions(+), 17 deletions(-) diff --git a/meva/scripts/v10/extract_entity_descriptions.py b/meva/scripts/v10/extract_entity_descriptions.py index 24780b0..46263f9 100644 --- a/meva/scripts/v10/extract_entity_descriptions.py +++ b/meva/scripts/v10/extract_entity_descriptions.py @@ -145,8 +145,20 @@ def extract_crops(video_path: Path, frames = sorted(usable.keys()) if len(frames) > max_crops: - indices = np.linspace(0, len(frames) - 1, max_crops, dtype=int) - frames = [frames[i] for i in indices] + # Prefer middle-of-track frames (#5): more stable pose/lighting, + # less likely to be entering/exiting frame. Sample from inner 80% + # of the track, with endpoints only if needed. + n = len(frames) + inner_start = max(0, int(n * 0.1)) + inner_end = min(n - 1, int(n * 0.9)) + inner_frames = frames[inner_start:inner_end + 1] + if len(inner_frames) >= max_crops: + indices = np.linspace(0, len(inner_frames) - 1, max_crops, dtype=int) + frames = [inner_frames[i] for i in indices] + else: + # Track too short — use uniform across full range + indices = np.linspace(0, n - 1, max_crops, dtype=int) + frames = [frames[i] for i in indices] for fn in frames: frame_to_actors[fn].append((actor_id, usable[fn])) @@ -385,6 +397,17 @@ def _majority_vote(colors: List[str]) -> str: return Counter(filtered).most_common(1)[0][0] +def _majority_vote_with_confidence(colors: List[str]) -> Tuple[str, float]: + """Majority vote returning (winner, confidence 0-1) ignoring 'unknown'.""" + filtered = [c for c in colors if c != "unknown"] + if not filtered: + return "unknown", 0.0 + counter = Counter(filtered) + winner, count = counter.most_common(1)[0] + confidence = count / len(filtered) + return winner, confidence + + # ============================================================================ # YOLO Analysis (optional, richer — detects carried objects) # ============================================================================ @@ -520,6 +543,89 @@ def _extract_mask_color(crop_bgr: np.ndarray, mask: np.ndarray) -> str: return _hsv_to_color(h_mean, s_mean, v_mean) +def _detect_texture(crop_bgr: np.ndarray, mask: np.ndarray) -> Dict: + """ + Detect clothing texture/pattern within a segmentation mask. + + Analyzes: + - Solid vs patterned: low intra-mask color variance = solid + - Striped: high directional gradient variance (horizontal or vertical bands) + - Light/dark qualifier: based on mean V channel value + + Returns dict: {"texture": "solid"|"patterned"|"striped", "brightness": "light"|"dark"|""} + """ + result = {"texture": "", "brightness": ""} + if mask.sum() < MIN_REGION_PIXELS * 2: # need enough pixels for texture + return result + + pixels = crop_bgr[mask] + hsv = cv2.cvtColor(pixels.reshape(-1, 1, 3), cv2.COLOR_BGR2HSV) + + # --- Brightness qualifier --- + v_mean = float(np.mean(hsv[:, 0, 2])) + s_mean = float(np.mean(hsv[:, 0, 1])) + # Only add qualifier for chromatic colors (skip achromatic = low saturation) + # Also skip very dark regions (V < 60) — brightness is noise at that level + if s_mean >= 40 and v_mean >= 60: + if v_mean < 90: + result["brightness"] = "dark" + elif v_mean > 190: + result["brightness"] = "light" + + # --- Texture detection via color variance within mask --- + # Use HSV Hue + Saturation channels for variance (ignore brightness variations + # from shading which don't indicate pattern) + h_std = float(np.std(hsv[:, 0, 0])) + s_std = float(np.std(hsv[:, 0, 1])) + + # Skip texture detection on very dark regions (V_mean < 70) — dark clothing + # creates compression noise that falsely triggers pattern detection + if v_mean < 70: + result["texture"] = "solid" # assume solid for very dark clothing + return result + + # High hue variance = multi-color pattern (raised thresholds to reduce FP) + if h_std > 45 or s_std > 60: + # Check for stripes: look for strong directional gradients + # Get the bounding box of the mask region for structured analysis + ys, xs = np.where(mask) + y_min, y_max = ys.min(), ys.max() + x_min, x_max = xs.min(), xs.max() + region = crop_bgr[y_min:y_max+1, x_min:x_max+1] + region_mask = mask[y_min:y_max+1, x_min:x_max+1] + rh, rw = region.shape[:2] + + if rh > 10 and rw > 10: + gray = cv2.cvtColor(region, cv2.COLOR_BGR2GRAY).astype(np.float32) + # Apply mask: set non-mask pixels to mean to avoid edge artifacts + mean_val = float(gray[region_mask].mean()) if region_mask.any() else 128 + gray[~region_mask] = mean_val + + # Horizontal gradient (detects vertical stripes) + grad_h = np.abs(np.diff(gray, axis=1)) + # Vertical gradient (detects horizontal stripes) + grad_v = np.abs(np.diff(gray, axis=0)) + + # Stripe detection: one direction should have much stronger gradients + h_energy = float(grad_h.mean()) + v_energy = float(grad_v.mean()) + + if max(h_energy, v_energy) > 15: # significant edge energy + ratio = max(h_energy, v_energy) / (min(h_energy, v_energy) + 1e-6) + if ratio > 1.5: + result["texture"] = "striped" + else: + result["texture"] = "patterned" + else: + result["texture"] = "patterned" + else: + result["texture"] = "patterned" + else: + result["texture"] = "solid" + + return result + + # SegFormer class IDs → semantic groups _SEG_HAIR = 2 _SEG_UPPER = 4 @@ -539,12 +645,14 @@ def analyze_crops_segformer(crops: List[np.ndarray]) -> Dict: Analyze crops with SegFormer human parsing (18 body-part classes). Segments each crop into semantic regions (hair, upper-clothes, pants/skirt/dress, - shoes, etc.), extracts HSV color per region, detects accessories. - Majority-votes across crops for robust results. + shoes, etc.), extracts HSV color per region, detects accessories and texture. + Majority-votes across crops with confidence tracking for robust results. Returns dict with: hair_color, upper_color, lower_color, lower_type, - shoe_color, accessories, carried_objects + shoe_color, accessories, carried_objects, + upper_texture, lower_texture, upper_brightness, lower_brightness, + confidence (per-attribute confidence scores) """ processor, model = _get_segformer() @@ -554,6 +662,11 @@ def analyze_crops_segformer(crops: List[np.ndarray]) -> Dict: shoe_colors = [] lower_types = [] accessories_per_crop = [] + # Texture/brightness per crop (#2) + upper_textures = [] + lower_textures = [] + upper_brightness_list = [] + lower_brightness_list = [] for crop in crops: h, w = crop.shape[:2] @@ -566,26 +679,44 @@ def analyze_crops_segformer(crops: List[np.ndarray]) -> Dict: hair_colors.append(_extract_mask_color(crop, seg_map == _SEG_HAIR)) # Upper-clothes (class 4) - upper_colors.append(_extract_mask_color(crop, seg_map == _SEG_UPPER)) + upper_mask = seg_map == _SEG_UPPER + upper_colors.append(_extract_mask_color(crop, upper_mask)) + # Texture analysis for upper clothing (#2) + upper_tex = _detect_texture(crop, upper_mask) + upper_textures.append(upper_tex["texture"]) + upper_brightness_list.append(upper_tex["brightness"]) # Lower body: Pants(6), Skirt(5), Dress(7) — pick dominant pants_px = (seg_map == _SEG_PANTS).sum() skirt_px = (seg_map == _SEG_SKIRT).sum() dress_px = (seg_map == _SEG_DRESS).sum() + lower_mask = None if dress_px > max(pants_px, skirt_px) and dress_px >= MIN_REGION_PIXELS: - lower_colors.append(_extract_mask_color(crop, seg_map == _SEG_DRESS)) + lower_mask = seg_map == _SEG_DRESS + lower_colors.append(_extract_mask_color(crop, lower_mask)) lower_types.append("dress") elif skirt_px > pants_px and skirt_px >= MIN_REGION_PIXELS: - lower_colors.append(_extract_mask_color(crop, seg_map == _SEG_SKIRT)) + lower_mask = seg_map == _SEG_SKIRT + lower_colors.append(_extract_mask_color(crop, lower_mask)) lower_types.append("skirt") elif pants_px >= MIN_REGION_PIXELS: - lower_colors.append(_extract_mask_color(crop, seg_map == _SEG_PANTS)) + lower_mask = seg_map == _SEG_PANTS + lower_colors.append(_extract_mask_color(crop, lower_mask)) lower_types.append("pants") else: lower_colors.append("unknown") lower_types.append("unknown") + # Texture for lower clothing (#2) + if lower_mask is not None: + lower_tex = _detect_texture(crop, lower_mask) + lower_textures.append(lower_tex["texture"]) + lower_brightness_list.append(lower_tex["brightness"]) + else: + lower_textures.append("") + lower_brightness_list.append("") + # Shoes (left 9 + right 10) shoe_mask = (seg_map == _SEG_LSHOE) | (seg_map == _SEG_RSHOE) shoe_colors.append(_extract_mask_color(crop, shoe_mask)) @@ -602,18 +733,32 @@ def analyze_crops_segformer(crops: List[np.ndarray]) -> Dict: crop_acc.append("scarf") accessories_per_crop.append(crop_acc) - # Majority votes - hair = _majority_vote(hair_colors) - upper = _majority_vote(upper_colors) - lower = _majority_vote(lower_colors) - shoes = _majority_vote(shoe_colors) + # Majority votes with confidence (#5) + hair, hair_conf = _majority_vote_with_confidence(hair_colors) + upper, upper_conf = _majority_vote_with_confidence(upper_colors) + lower, lower_conf = _majority_vote_with_confidence(lower_colors) + shoes, shoes_conf = _majority_vote_with_confidence(shoe_colors) lower_type = _majority_vote(lower_types) + # Texture/brightness votes (#2) + upper_texture = _majority_vote([t for t in upper_textures if t]) + lower_texture = _majority_vote([t for t in lower_textures if t]) + upper_brightness = _majority_vote([b for b in upper_brightness_list if b]) + lower_brightness = _majority_vote([b for b in lower_brightness_list if b]) + # Accessories: keep if seen in ≥2 crops (or any if ≤2 total) acc_counter = Counter(a for crop_acc in accessories_per_crop for a in crop_acc) threshold = 2 if len(crops) > 2 else 1 accessories = sorted(a for a, cnt in acc_counter.items() if cnt >= threshold) + # Confidence dict (#5): per-attribute agreement score + confidence = { + "hair": round(hair_conf, 2), + "upper": round(upper_conf, 2), + "lower": round(lower_conf, 2), + "shoes": round(shoes_conf, 2), + } + return { "hair_color": hair, "upper_color": upper, @@ -622,6 +767,11 @@ def analyze_crops_segformer(crops: List[np.ndarray]) -> Dict: "shoe_color": shoes, "accessories": accessories, "carried_objects": [], # SegFormer detects bags; other objects need YOLO + "upper_texture": upper_texture if upper_texture != "unknown" else "", + "lower_texture": lower_texture if lower_texture != "unknown" else "", + "upper_brightness": upper_brightness if upper_brightness != "unknown" else "", + "lower_brightness": lower_brightness if lower_brightness != "unknown" else "", + "confidence": confidence, } @@ -657,6 +807,25 @@ def build_description(attrs: Dict, include_position: bool = False) -> str: shoes = attrs.get("shoe_color") accessories = attrs.get("accessories", []) carried = attrs.get("carried_objects", []) + confidence = attrs.get("confidence", {}) + + # Texture/brightness qualifiers (#2) + upper_texture = attrs.get("upper_texture", "") + lower_texture = attrs.get("lower_texture", "") + upper_brightness = attrs.get("upper_brightness", "") + lower_brightness = attrs.get("lower_brightness", "") + + # Drop low-confidence attributes (#5): if agreement < 40%, omit to avoid + # wrong colors. Better to say nothing than to say the wrong color. + min_conf = 0.4 + if confidence.get("hair", 1.0) < min_conf: + hair = "unknown" + if confidence.get("upper", 1.0) < min_conf: + upper = "unknown" + if confidence.get("lower", 1.0) < min_conf: + lower = "unknown" + if confidence.get("shoes", 1.0) < min_conf: + shoes = "unknown" # Relative height from bbox (tall/medium/short) height_hint = attrs.get("height_category") # set by enrich step if available @@ -670,12 +839,34 @@ def build_description(attrs: Dict, include_position: bool = False) -> str: if hair and hair != "unknown": desc += f" with {hair} hair" - # Clothing + # Clothing — include brightness + texture qualifiers (#2) clothing_parts = [] + # Colors that are inherently dark/light — don't add redundant qualifiers + _DARK_COLORS = {"black", "charcoal", "navy", "maroon", "dark gray"} + _LIGHT_COLORS = {"white", "ivory", "silver"} + if upper != "unknown": - clothing_parts.append(f"{_article(upper)} {upper} top") + upper_desc = upper + # Add brightness: "light blue", "dark green" — skip if color is already dark/light + if upper_brightness == "dark" and upper not in _DARK_COLORS: + upper_desc = f"dark {upper}" + elif upper_brightness == "light" and upper not in _LIGHT_COLORS: + upper_desc = f"light {upper}" + # Add texture: "striped blue top", "patterned red top" + if upper_texture and upper_texture not in ("solid", ""): + clothing_parts.append(f"{_article(upper_texture)} {upper_texture} {upper_desc} top") + else: + clothing_parts.append(f"{_article(upper_desc)} {upper_desc} top") if lower != "unknown": - clothing_parts.append(f"{lower} {lower_type}") + lower_desc = lower + if lower_brightness == "dark" and lower not in _DARK_COLORS: + lower_desc = f"dark {lower}" + elif lower_brightness == "light" and lower not in _LIGHT_COLORS: + lower_desc = f"light {lower}" + if lower_texture and lower_texture not in ("solid", ""): + clothing_parts.append(f"{lower_texture} {lower_desc} {lower_type}") + else: + clothing_parts.append(f"{lower_desc} {lower_type}") if clothing_parts: desc += ", wearing " + " and ".join(clothing_parts) @@ -909,6 +1100,11 @@ def process_slot(slot: str, method: str = "segformer", "shoe_color": attrs.get("shoe_color", "unknown"), "accessories": attrs.get("accessories", []), "carried_objects": attrs.get("carried_objects", []), + "upper_texture": attrs.get("upper_texture", ""), + "lower_texture": attrs.get("lower_texture", ""), + "upper_brightness": attrs.get("upper_brightness", ""), + "lower_brightness": attrs.get("lower_brightness", ""), + "confidence": attrs.get("confidence", {}), "description": desc, "num_crops": len(crops), "avg_crop_height": int(np.mean([c.shape[0] for c in crops])), From 33bd9fbc5cdf889e8767252cad72fc6e2f51d89f Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Sat, 28 Feb 2026 06:44:10 -0600 Subject: [PATCH 24/26] Session 69: cross-camera clustering, VLM integration, per-question ambiguity metric - person_descriptions.py: Add cross-camera merge (majority-vote attributes), within-camera height differentiation, VLM description loader, 68b-aware _build_description (texture/brightness qualifiers), color consolidation - run_pipeline.py: Add Step 4b (cross-camera clustering), Step 13 (ambiguity analysis with pct_unique), fix imports, add VLM stats tracking - vlm_describe_entities.py: NEW - VLM captioning script using InternVL2.5-8B via vLLM for entity description enrichment --- meva/scripts/v10/person_descriptions.py | 432 +++++++++++++++- meva/scripts/v10/run_pipeline.py | 115 ++++- meva/scripts/v10/vlm_describe_entities.py | 597 ++++++++++++++++++++++ 3 files changed, 1133 insertions(+), 11 deletions(-) create mode 100644 meva/scripts/v10/vlm_describe_entities.py diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py index b6834c2..e867fa9 100644 --- a/meva/scripts/v10/person_descriptions.py +++ b/meva/scripts/v10/person_descriptions.py @@ -29,6 +29,8 @@ _OUTPUT = Path(os.environ.get("OUTPUT_DIR") or os.environ.get("MEVA_OUTPUT_DIR") or str(Path.home() / "data")) # Entity descriptions directory — override with MEVA_ENTITY_DESC_DIR env var _ENTITY_DESC_DIR = Path(os.environ.get("MEVA_ENTITY_DESC_DIR") or "/nas/mars/dataset/MEVA/entity_descriptions") +# VLM description directory (InternVL2.5-8B output) +_VLM_DESC_DIR = _ENTITY_DESC_DIR / "vlm" PERSON_DB_PATH = _REPO_DATA / "person_database_yolo.json" PERSON_DB_ORIG_PATH = _REPO_DATA / "person_database.json" @@ -506,14 +508,35 @@ def _load_geom_descriptions(slot: str) -> Dict[str, str]: return {} +def _load_vlm_descriptions(slot: str) -> Dict[str, str]: + """ + Load VLM-generated descriptions (InternVL2.5-8B) for a slot. + These are rich natural-language descriptions from video crops. + Returns Dict[entity_id → description], e.g. "G330_actor_123" → "a man in a dark blue jacket..." + """ + vlm_path = _VLM_DESC_DIR / f"{slot}.vlm.json" + if not vlm_path.exists(): + return {} + try: + with open(vlm_path) as f: + data = json.load(f) + descs = data.get("descriptions", {}) + # Filter out empty/generic descriptions + return {eid: desc for eid, desc in descs.items() + if desc and len(desc) > 10 and desc.lower() != "a person"} + except (json.JSONDecodeError, KeyError): + return {} + + def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: """ Enrich scene graph entities with visual descriptions. Priority: 1. MEVID descriptions (GPT/YOLO from MEVID crops — highest quality) - 2. Geom-extracted descriptions (HSV color from raw AVI + geom.yml bbox) - 3. Activity-verb fallback ("a person walking") + 2. VLM descriptions (InternVL2.5-8B from video crops — rich NL) + 3. Geom-extracted descriptions (SegFormer color from raw AVI + bbox) + 4. Activity-verb fallback ("a person walking") The geom-extracted layer covers ALL annotated actors (not just MEVID's ~10%), giving every entity a color-based description for disambiguation. @@ -528,6 +551,7 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: slot = sg.slot person_cameras = get_mevid_persons_with_cameras(slot) geom_descs = _load_geom_descriptions(slot) + vlm_descs = _load_vlm_descriptions(slot) # Build reverse map: camera_id → [person_ids on this camera] camera_persons: Dict[str, List[str]] = {} @@ -539,6 +563,7 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: entity_descriptions: Dict[str, str] = {} mevid_count = 0 + vlm_count = 0 geom_count = 0 fallback_count = 0 @@ -613,7 +638,16 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: elif verbose and best_pid: print(f" {eid}: MEVID rejected (color_score={best_score:.1f} < -0.5, using geom)") - # Priority 2: Geom-extracted color description (from raw AVI + bbox) + # Priority 2: VLM description (InternVL2.5-8B from video crops) + if eid in vlm_descs: + desc = vlm_descs[eid] + entity_descriptions[eid] = desc + vlm_count += 1 + if verbose: + print(f" {eid}: VLM → {desc[:60]}...") + continue + + # Priority 3: Geom-extracted color description (SegFormer + bbox) if eid in geom_descs: desc = geom_descs[eid] entity_descriptions[eid] = desc @@ -622,7 +656,7 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: print(f" {eid}: geom → {desc}") continue - # Priority 3: Activity-verb fallback (V7 style) + # Priority 4: Activity-verb fallback (V7 style) primary_activity = None for evt in sg.events: if evt.camera_id == entity.camera_id: @@ -643,9 +677,9 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: fallback_count += 1 if verbose: - total = mevid_count + geom_count + fallback_count - print(f" Entity enrichment: {mevid_count} MEVID, {geom_count} geom-color, " - f"{fallback_count} fallback ({total} total)") + total = mevid_count + vlm_count + geom_count + fallback_count + print(f" Entity enrichment: {mevid_count} MEVID, {vlm_count} VLM, " + f"{geom_count} geom-color, {fallback_count} fallback ({total} total)") # Build set of PERSON entity IDs that got fallback (non-visual) descriptions. # Non-person entities (vehicles, objects) always get generic descriptions like @@ -661,5 +695,387 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: fallback_eids.add(eid) return (entity_descriptions, - {"mevid": mevid_count, "geom": geom_count, "fallback": fallback_count}, + {"mevid": mevid_count, "vlm": vlm_count, "geom": geom_count, "fallback": fallback_count}, fallback_eids) + + +# ============================================================================ +# Cross-Camera Clustering — Unify descriptions for cross-camera entities +# ============================================================================ + +# Standard color palette: map exotic HSV names → standard ~12 colors +_COLOR_CONSOLIDATION = { + "navy": "dark blue", "indigo": "dark blue", + "teal": "teal", "olive": "olive", + "charcoal": "dark gray", "rust": "brown", + "plum": "purple", "mauve": "pink", + "gold": "yellow", "khaki": "tan", + "ivory": "white", "beige": "tan", + "crimson": "red", "maroon": "dark red", + "silver": "gray", +} + + +def _consolidate_color(color: str) -> str: + """Map exotic color names to standard palette for better matching.""" + if not color or color == "unknown": + return color + return _COLOR_CONSOLIDATION.get(color.lower(), color.lower()) + + +def _height_category(avg_crop_height: float) -> str: + """Categorize entity height from average crop pixel height. + + Height thresholds calibrated for MEVA surveillance cameras: + - Tall: > 200px (close to camera or genuinely tall) + - Short: < 100px (far from camera or genuinely short) + - Average: in between (majority) + + Returns empty string if height doesn't meaningfully differentiate. + """ + if avg_crop_height >= 200: + return "tall" + elif avg_crop_height <= 80: + return "short" + return "" + + +def _majority_vote_attr(values: List[str]) -> str: + """Return the most common non-unknown value, or 'unknown'. + + For color attributes, groups similar colors (e.g., navy/dark blue/indigo) + before voting, but returns the RAW most-common color (not consolidated) + to preserve display richness. + """ + valid = [v for v in values if v and v != "unknown"] + if not valid: + return "unknown" + from collections import Counter + + # Group by consolidated color for voting strength, but return raw winner + consolidated_groups = {} # consolidated_color → [raw_colors] + for v in valid: + c = _consolidate_color(v) + if c not in consolidated_groups: + consolidated_groups[c] = [] + consolidated_groups[c].append(v) + + # Find the consolidated group with most votes + best_group = max(consolidated_groups.values(), key=len) + # Return the most common raw color within that group + return Counter(best_group).most_common(1)[0][0] + + +def _merge_accessories(acc_lists: List[List[str]]) -> List[str]: + """Merge accessory lists — keep items appearing in 2+ sources.""" + from collections import Counter + all_items = Counter() + for acc in acc_lists: + for item in set(acc): # deduplicate within each source + all_items[item] += 1 + # Keep items appearing in at least 1 source (any evidence is useful) + return sorted(set(all_items.keys())) + + +def _build_description(attrs: dict) -> str: + """Build a natural description string from merged attributes. + + Uses the same format as extract_entity_descriptions.py for consistency. + Includes 68b fields: texture (striped/patterned) and brightness (dark/light). + """ + parts = [] + + # Hair + hair = attrs.get("hair_color", "unknown") + if hair != "unknown": + parts.append(f"with {hair} hair") + + # Clothing — include brightness + texture qualifiers if available + upper = attrs.get("upper_color", "unknown") + lower = attrs.get("lower_color", "unknown") + lower_type = attrs.get("lower_type", "pants") + upper_brightness = attrs.get("upper_brightness", "") + lower_brightness = attrs.get("lower_brightness", "") + upper_texture = attrs.get("upper_texture", "") + lower_texture = attrs.get("lower_texture", "") + + clothing = [] + if upper != "unknown": + # Build qualifier: "dark patterned navy" or just "navy" + upper_quals = [] + if upper_brightness and upper_brightness not in ("", "medium"): + upper_quals.append(upper_brightness) + if upper_texture and upper_texture not in ("", "solid"): + upper_quals.append(upper_texture) + qualifier = " ".join(upper_quals) + if qualifier: + clothing.append(f"a {qualifier} {upper} top") + else: + clothing.append(f"a {upper} top") + if lower != "unknown": + lower_quals = [] + if lower_brightness and lower_brightness not in ("", "medium"): + lower_quals.append(lower_brightness) + if lower_texture and lower_texture not in ("", "solid"): + lower_quals.append(lower_texture) + qualifier = " ".join(lower_quals) + if qualifier: + clothing.append(f"{qualifier} {lower} {lower_type}") + else: + clothing.append(f"{lower} {lower_type}") + + if clothing: + parts.append("wearing " + " and ".join(clothing)) + + # Shoes + shoe = attrs.get("shoe_color", "unknown") + if shoe != "unknown": + parts.append(f"{shoe} shoes") + + # Accessories + accessories = attrs.get("accessories", []) + if accessories: + parts.append("with " + ", ".join(accessories)) + + if not parts: + return "a person" + + return "a person " + ", ".join(parts) + + +def merge_cross_camera_descriptions( + entity_descs: Dict[str, str], + resolved, # ResolvedGraph + sg, # SceneGraph + verbose: bool = False, +) -> Dict[str, str]: + """ + Post-processing: unify descriptions for cross-camera entity clusters. + + For each entity cluster (same person seen on multiple cameras): + 1. Collect raw SegFormer attributes from all entities in the cluster + 2. Majority-vote on each attribute across cameras + 3. Merge accessories/carried objects (union) + 4. Build a single unified description + 5. Assign it to ALL entities in the cluster + + Also adds height hints to differentiate same-description entities + within a single camera. + + Args: + entity_descs: Current entity_id → description mapping + resolved: ResolvedGraph from entity_resolution + sg: SceneGraph with entity data + verbose: Print progress + + Returns: + Updated entity_descs with unified cross-camera descriptions + """ + if not resolved.entity_clusters: + if verbose: + print(" Cross-camera clustering: no clusters to merge") + return entity_descs + + # Load raw SegFormer actor data for attribute-level merging + desc_path = _ENTITY_DESC_DIR / f"{sg.slot}.json" + raw_actors = {} + if desc_path.exists(): + try: + with open(desc_path) as f: + raw_data = json.load(f) + raw_actors = raw_data.get("actors", {}) + except (json.JSONDecodeError, KeyError): + pass + + merged_count = 0 + enriched_count = 0 + + for cluster in resolved.entity_clusters: + entity_ids = cluster.entities + if len(entity_ids) < 2: + continue + + # Collect attributes from all entities in cluster + hair_colors = [] + upper_colors = [] + lower_colors = [] + lower_types = [] + shoe_colors = [] + upper_textures = [] + lower_textures = [] + upper_brightnesses = [] + lower_brightnesses = [] + all_accessories = [] + all_carried = [] + heights = [] + + for eid in entity_ids: + actor_data = raw_actors.get(eid, {}) + if not actor_data: + continue + + hair_colors.append(actor_data.get("hair_color", "unknown")) + # Use RAW colors for majority vote (display) — NOT consolidated + # Color consolidation is only for cross-camera matching similarity + upper_colors.append(actor_data.get("upper_color", "unknown")) + lower_colors.append(actor_data.get("lower_color", "unknown")) + lower_types.append(actor_data.get("lower_type", "pants")) + shoe_colors.append(actor_data.get("shoe_color", "unknown")) + upper_textures.append(actor_data.get("upper_texture", "")) + lower_textures.append(actor_data.get("lower_texture", "")) + upper_brightnesses.append(actor_data.get("upper_brightness", "")) + lower_brightnesses.append(actor_data.get("lower_brightness", "")) + all_accessories.append(actor_data.get("accessories", [])) + all_carried.append(actor_data.get("carried_objects", [])) + h = actor_data.get("avg_crop_height", 0) + if h > 0: + heights.append(h) + + if not upper_colors: + continue # No raw data available for this cluster + + # Majority vote on each attribute + merged_attrs = { + "hair_color": _majority_vote_attr(hair_colors), + "upper_color": _majority_vote_attr(upper_colors), + "lower_color": _majority_vote_attr(lower_colors), + "lower_type": _majority_vote_attr(lower_types), + "shoe_color": _majority_vote_attr(shoe_colors), + "upper_texture": _majority_vote_attr(upper_textures), + "lower_texture": _majority_vote_attr(lower_textures), + "upper_brightness": _majority_vote_attr(upper_brightnesses), + "lower_brightness": _majority_vote_attr(lower_brightnesses), + "accessories": _merge_accessories(all_accessories + all_carried), + } + + # Build unified description + unified = _build_description(merged_attrs) + + # Count how many attributes the unified version has vs individual ones + old_descs = {eid: entity_descs.get(eid, "a person") for eid in entity_ids} + + # Assign to all entities in cluster + for eid in entity_ids: + old = entity_descs.get(eid, "a person") + # Only upgrade — don't replace a richer MEVID description with a simpler one + if unified != "a person" and ( + not is_visual_description(old) or + len(unified) >= len(old) + ): + entity_descs[eid] = unified + if unified != old: + enriched_count += 1 + + merged_count += 1 + + if verbose and merged_count <= 3: + print(f" Cluster {cluster.cluster_id}: {len(entity_ids)} entities " + f"across {cluster.cameras}") + for eid in entity_ids[:2]: + print(f" {eid}: {old_descs.get(eid, '?')[:50]} → {unified[:50]}") + + if verbose: + print(f" Cross-camera clustering: {merged_count} clusters merged, " + f"{enriched_count} descriptions unified") + + return entity_descs + + +def differentiate_within_camera( + entity_descs: Dict[str, str], + sg, # SceneGraph + verbose: bool = False, +) -> Dict[str, str]: + """ + Add differentiating attributes for entities with identical descriptions + on the same camera. + + Strategy: + - Group entities by (camera, description) + - For groups with >1 entity, add height category if available + - This makes "a person wearing a navy top and black pants" into + "a tall person wearing a navy top and black pants" + + Args: + entity_descs: entity_id → description mapping + sg: SceneGraph with entity data + verbose: Print stats + + Returns: + Updated entity_descs with differentiated descriptions + """ + # Load raw actor data for height info + desc_path = _ENTITY_DESC_DIR / f"{sg.slot}.json" + raw_actors = {} + if desc_path.exists(): + try: + with open(desc_path) as f: + raw_data = json.load(f) + raw_actors = raw_data.get("actors", {}) + except (json.JSONDecodeError, KeyError): + pass + + if not raw_actors: + return entity_descs + + # Group entities by (camera, description) + from collections import defaultdict + cam_desc_groups: Dict[tuple, list] = defaultdict(list) + for eid, desc in entity_descs.items(): + entity = sg.entities.get(eid) + if not entity or entity.entity_type != "person": + continue + cam_desc_groups[(entity.camera_id, desc)].append(eid) + + differentiated = 0 + for (cam, desc), eids in cam_desc_groups.items(): + if len(eids) < 2: + continue + + # Get heights for entities in this group + eid_heights = {} + for eid in eids: + actor_data = raw_actors.get(eid, {}) + h = actor_data.get("avg_crop_height", 0) + if h > 0: + eid_heights[eid] = h + + if not eid_heights: + continue + + # Compute relative height categories within this group + heights = sorted(eid_heights.values()) + if len(heights) < 2: + continue + + median_h = heights[len(heights) // 2] + spread = max(heights) - min(heights) + + # Only differentiate if there's meaningful height spread (>30% of median) + if spread < median_h * 0.3: + continue + + for eid in eids: + h = eid_heights.get(eid) + if h is None: + continue + + # Relative categorization within the group + if h > median_h * 1.2: + prefix = "tall" + elif h < median_h * 0.8: + prefix = "short" + else: + continue # Near median — don't label + + old_desc = entity_descs[eid] + # Insert height after "a " — "a person..." → "a tall person..." + if old_desc.startswith("a person"): + new_desc = f"a {prefix} person" + old_desc[len("a person"):] + entity_descs[eid] = new_desc + differentiated += 1 + + if verbose: + print(f" Height differentiation: {differentiated} entities labeled tall/short") + + return entity_descs \ No newline at end of file diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index 89ca14f..306e12c 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -49,6 +49,7 @@ from .person_descriptions import ( enrich_entities, is_mevid_supported, get_mevid_persons_for_slot, get_mevid_persons_with_cameras, load_person_database, + merge_cross_camera_descriptions, differentiate_within_camera, ) from .generate_temporal import generate_temporal_qa from .generate_spatial import generate_spatial_qa @@ -65,6 +66,7 @@ from person_descriptions import ( enrich_entities, is_mevid_supported, get_mevid_persons_for_slot, get_mevid_persons_with_cameras, load_person_database, + merge_cross_camera_descriptions, differentiate_within_camera, ) from generate_temporal import generate_temporal_qa from generate_spatial import generate_spatial_qa @@ -426,6 +428,85 @@ def _rename_category(q: dict) -> dict: return q +def _compute_question_ambiguity(qa_pairs: List[Dict], + entity_descs: Dict[str, str], + sg) -> Dict[str, Any]: + """ + Compute per-question ambiguity: for each entity referenced in a question, + how many other entities on the same camera share the same description? + + Returns: + Dict with: + - per_question: list of {question_id, max_ambiguity, entities} + - avg_ambiguity: average max_ambiguity across questions + - worst_questions: top 5 most ambiguous questions + - fully_unique: count of questions where all refs are unique + """ + # Build camera → description → count map + cam_desc_counts: Dict[str, Dict[str, int]] = {} + cam_desc_eids: Dict[str, Dict[str, List[str]]] = {} + for eid, desc in entity_descs.items(): + entity = sg.entities.get(eid) + if not entity: + continue + cam = entity.camera_id + if cam not in cam_desc_counts: + cam_desc_counts[cam] = {} + cam_desc_eids[cam] = {} + cam_desc_counts[cam][desc] = cam_desc_counts[cam].get(desc, 0) + 1 + if desc not in cam_desc_eids[cam]: + cam_desc_eids[cam][desc] = [] + cam_desc_eids[cam][desc].append(eid) + + per_question = [] + for q in qa_pairs: + verification = q.get("verification", {}) + max_ambiguity = 0 + entity_ambiguities = [] + + # Collect all entity descriptions referenced in this question + for evt_key in ("event_a", "event_b", "event"): + evt_info = verification.get(evt_key, {}) + cam = evt_info.get("camera", "") + desc = evt_info.get("description", "") + if cam and desc and cam in cam_desc_counts: + count = cam_desc_counts[cam].get(desc, 1) + ambiguity = count - 1 # 0 = unique, N = N other entities share desc + max_ambiguity = max(max_ambiguity, ambiguity) + entity_ambiguities.append({ + "camera": cam, + "description_preview": desc[:50], + "same_desc_count": count, + "ambiguity": ambiguity, + }) + + per_question.append({ + "question_id": q.get("question_id", ""), + "category": q.get("category", ""), + "max_ambiguity": max_ambiguity, + "entities": entity_ambiguities, + }) + + # Aggregate stats + ambiguities = [pq["max_ambiguity"] for pq in per_question] + if not ambiguities: + return {"per_question": [], "avg_ambiguity": 0, "worst_questions": [], + "fully_unique": 0, "total": 0, "pct_unique": 100.0} + + fully_unique = sum(1 for a in ambiguities if a == 0) + avg_amb = sum(ambiguities) / len(ambiguities) if ambiguities else 0 + worst = sorted(per_question, key=lambda x: x["max_ambiguity"], reverse=True)[:5] + + return { + "per_question": per_question, + "avg_ambiguity": round(avg_amb, 2), + "worst_questions": worst, + "fully_unique": fully_unique, + "total": len(per_question), + "pct_unique": round(100 * fully_unique / len(per_question), 1) if per_question else 0, + } + + # ============================================================================ # Main Pipeline # ============================================================================ @@ -525,13 +606,22 @@ def run_pipeline(slot: str, verbose: bool = False, entity_descs, desc_counts, fallback_eids = enrich_entities(sg, verbose=verbose) mevid_cnt = desc_counts["mevid"] + vlm_cnt = desc_counts.get("vlm", 0) geom_cnt = desc_counts["geom"] fallback_cnt = desc_counts["fallback"] if verbose: - print(f" {mevid_cnt} MEVID + {geom_cnt} geom-color + " + print(f" {mevid_cnt} MEVID + {vlm_cnt} VLM + {geom_cnt} geom-color + " f"{fallback_cnt} fallback / {len(entity_descs)} total") + # Step 4b: Cross-camera clustering + height differentiation + if verbose: + print(f"\nStep 4b: Cross-camera clustering + differentiation...") + entity_descs = merge_cross_camera_descriptions( + entity_descs, resolved, sg, verbose=verbose) + entity_descs = differentiate_within_camera( + entity_descs, sg, verbose=verbose) + # Step 5-11: Generate QA pairs (6 categories) if verbose: print(f"\nStep 5-11: Generating questions (6 categories)...") @@ -596,6 +686,17 @@ def run_pipeline(slot: str, verbose: bool = False, else: print(f" All questions passed validation") + # Step 13: Per-question ambiguity analysis + ambiguity = _compute_question_ambiguity(unique_qa, entity_descs, sg) + if verbose: + print(f"\nStep 13: Ambiguity analysis...") + print(f" {ambiguity['fully_unique']}/{ambiguity['total']} questions fully unique " + f"({ambiguity['pct_unique']}%)") + print(f" Avg max-ambiguity: {ambiguity['avg_ambiguity']}") + if ambiguity['worst_questions']: + print(f" Worst: {ambiguity['worst_questions'][0]['question_id']} " + f"(ambiguity={ambiguity['worst_questions'][0]['max_ambiguity']})") + # Build output cameras_in_slot = sorted(sg.cameras.keys()) person_cameras = get_mevid_persons_with_cameras(slot) @@ -617,7 +718,7 @@ def run_pipeline(slot: str, verbose: bool = False, "version": "final", "annotation_source": "kitware", "entity_resolution_source": "mevid+heuristic", - "description_source": "mevid_yolo+geom_color", + "description_source": "mevid_yolo+vlm+geom_color", "generator": "final_pipeline", "seed": seed, "cameras": cameras_in_slot, @@ -634,12 +735,20 @@ def run_pipeline(slot: str, verbose: bool = False, "category_counts": cat_counts, "stats": { "entities_with_mevid_descriptions": mevid_cnt, + "entities_with_vlm_descriptions": vlm_cnt, "entities_with_geom_descriptions": geom_cnt, "entities_with_fallback_descriptions": fallback_cnt, "attribute_verification_questions": attr_verification, "best_camera_questions": cat_counts.get("best_camera", 0), "questions_with_debug_info": sum(1 for q in unique_qa if "debug_info" in q), }, + "ambiguity": { + "avg_ambiguity": ambiguity["avg_ambiguity"], + "pct_unique": ambiguity["pct_unique"], + "fully_unique": ambiguity["fully_unique"], + "total_questions": ambiguity["total"], + "worst_questions": ambiguity["worst_questions"], + }, "validation_issues": len(issues), "generation_time_sec": round(time.time() - t0, 2), "qa_pairs": unique_qa, @@ -653,7 +762,7 @@ def run_pipeline(slot: str, verbose: bool = False, print(f" ---") print(f" Cameras: {cameras_in_slot}") print(f" Events: {len(events)}") - print(f" Entities: {len(sg.entities)} ({mevid_cnt} MEVID + {geom_cnt} geom)") + print(f" Entities: {len(sg.entities)} ({mevid_cnt} MEVID + {vlm_cnt} VLM + {geom_cnt} geom)") print(f" MEVID persons: {sorted(mevid_persons)}") print(f" Cross-cam clusters: {len(resolved.entity_clusters)}") print(f" Validation issues: {len(issues)}") diff --git a/meva/scripts/v10/vlm_describe_entities.py b/meva/scripts/v10/vlm_describe_entities.py new file mode 100644 index 0000000..a0ac2e4 --- /dev/null +++ b/meva/scripts/v10/vlm_describe_entities.py @@ -0,0 +1,597 @@ +#!/usr/bin/env python3 +""" +VLM Entity Description Enrichment — Use InternVL2.5-8B to generate rich +natural-language descriptions of MEVA person entities. + +Takes entity crops already extracted by extract_entity_descriptions.py, +sends them to a local vLLM server, and produces rich descriptions like: + "a middle-aged man in a dark blue jacket and khaki pants, carrying a + black backpack, walking briskly" + +This is a POST-PROCESSING step that enriches existing SegFormer descriptions. +It does NOT replace SegFormer — it adds a `vlm_description` field alongside +the existing color-based `description`. + +Prerequisites: + - vLLM server running (launched automatically or manually) + - Entity descriptions already extracted (SegFormer batch) + - Crops cached or re-extractable from video + +Usage: + # Process a single slot + python3 -m meva.scripts.v10.vlm_describe_entities --slot 2018-03-11.11-25.school -v + + # Batch process all slots with existing entity descriptions + python3 -m meva.scripts.v10.vlm_describe_entities --batch -v + + # Use existing vLLM server + python3 -m meva.scripts.v10.vlm_describe_entities --slot ... --api-url http://localhost:8001/v1 + +Cost: $0 (local model, no API calls) +GPU: 1x RTX A5000 24GB (InternVL2.5-8B ~16GB VRAM) +Time: ~1-2 sec per entity, ~3-5 min per slot +""" + +import argparse +import base64 +import json +import os +import re +import sys +import time +import subprocess +import signal +from pathlib import Path +from typing import Dict, List, Optional, Tuple +from collections import defaultdict +from concurrent.futures import ThreadPoolExecutor, as_completed + +import cv2 +import numpy as np + +# ============================================================================ +# Paths +# ============================================================================ + +_REPO_DATA = Path(__file__).resolve().parent.parent.parent / "data" +ENTITY_DESC_DIR = Path(os.environ.get("MEVA_ENTITY_DESC_DIR") or "/nas/mars/dataset/MEVA/entity_descriptions") +VLM_DESC_DIR = Path(os.environ.get("MEVA_VLM_DESC_DIR") or "/nas/mars/dataset/MEVA/entity_descriptions/vlm") + +# Reuse the crop extraction infrastructure +try: + from .extract_entity_descriptions import parse_geom, extract_crops, find_slot_files +except ImportError: + sys.path.insert(0, str(Path(__file__).resolve().parent)) + from extract_entity_descriptions import parse_geom, extract_crops, find_slot_files + +# ============================================================================ +# Constants +# ============================================================================ + +VLM_MODEL = "OpenGVLab/InternVL2_5-8B" +DEFAULT_PORT = 8001 # Avoid conflict with SegFormer on default port +DEFAULT_GPU = "1" # GPU 1 (0 used by SegFormer re-extraction) +MAX_WORKERS = 8 # Parallel VLM requests +CROPS_FOR_VLM = 3 # Crops to send per entity (middle-of-track, best quality) +MIN_CROP_HEIGHT_VLM = 80 # Min height for meaningful VLM description +MAX_ENTITIES_PER_SLOT = 200 # Cap to avoid extremely long slots + + +# ============================================================================ +# VLM Server Management +# ============================================================================ + +_vllm_proc = None + + +def start_vllm_server(gpu: str = DEFAULT_GPU, port: int = DEFAULT_PORT, + model: str = VLM_MODEL, verbose: bool = False) -> str: + """Start a vLLM server if not already running. Returns API URL.""" + global _vllm_proc + api_url = f"http://localhost:{port}/v1" + + # Check if server is already responsive + if _check_server(api_url): + if verbose: + print(f" vLLM server already running at {api_url}") + return api_url + + if verbose: + print(f" Starting vLLM server on GPU {gpu}, port {port}...") + print(f" Model: {model}") + + env = os.environ.copy() + env["CUDA_VISIBLE_DEVICES"] = gpu + env["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" + + cmd = [ + "vllm", "serve", model, + "--tensor-parallel-size", "1", + "--port", str(port), + "--trust-remote-code", + "--max-model-len", "4096", + "--gpu-memory-utilization", "0.85", + ] + + log_path = Path.home() / "data" / "extraction_logs" / f"vllm_server_{port}.log" + log_path.parent.mkdir(parents=True, exist_ok=True) + + _vllm_proc = subprocess.Popen( + cmd, + env=env, + stdout=open(log_path, "w"), + stderr=subprocess.STDOUT, + preexec_fn=os.setsid, + ) + + if verbose: + print(f" Waiting for vLLM server to start (PID {_vllm_proc.pid})...") + + # Wait up to 120s for server to become healthy + for i in range(120): + time.sleep(1) + if _check_server(api_url): + if verbose: + print(f" vLLM server ready after {i+1}s") + return api_url + # Check if process died + if _vllm_proc.poll() is not None: + print(f" ERROR: vLLM server died (exit code {_vllm_proc.returncode})") + print(f" Check log: {log_path}") + sys.exit(1) + + print(f" ERROR: vLLM server did not become ready in 120s") + print(f" Check log: {log_path}") + sys.exit(1) + + +def _check_server(api_url: str) -> bool: + """Check if vLLM server is healthy.""" + try: + import urllib.request + req = urllib.request.urlopen(f"{api_url}/models", timeout=3) + return req.status == 200 + except Exception: + return False + + +def stop_vllm_server(): + """Stop the vLLM server if we started it.""" + global _vllm_proc + if _vllm_proc is not None: + os.killpg(os.getpgid(_vllm_proc.pid), signal.SIGTERM) + _vllm_proc.wait(timeout=10) + _vllm_proc = None + + +# ============================================================================ +# VLM Description Generation +# ============================================================================ + +def _encode_image(image: np.ndarray) -> str: + """Encode BGR image to base64 JPEG string.""" + ret, buffer = cv2.imencode(".jpg", image, [cv2.IMWRITE_JPEG_QUALITY, 85]) + if not ret: + raise ValueError("Could not encode image") + return base64.b64encode(buffer).decode("utf-8") + + +def _build_prompt(num_images: int, segformer_desc: str = "") -> str: + """Build the VLM prompt for person description.""" + context = "" + if segformer_desc and segformer_desc != "a person": + context = f"\nA computer vision system described this person as: \"{segformer_desc}\"\n" + + return f"""You are viewing {num_images} cropped image(s) of the SAME person from a surveillance camera at different moments. +{context} +Describe this person's appearance in ONE concise sentence (max 25 words). Focus on: +- Clothing colors and types (shirt, jacket, hoodie, pants, shorts, dress) +- Distinguishing features (hat, backpack, bag, glasses, beard, hair style/color) +- Apparent build (tall/short/heavyset if clearly visible) +- DO NOT mention actions, activities, or what the person is doing +- DO NOT mention image quality or camera angle +- Use natural casual language, e.g. "a tall man in a dark blue jacket and tan pants, carrying a gray backpack" + +Respond with ONLY the description sentence, starting with "a" or "an". Nothing else.""" + + +def describe_entity_vlm( + crops: List[np.ndarray], + api_url: str, + model: str = VLM_MODEL, + segformer_desc: str = "", +) -> Optional[str]: + """ + Send entity crops to VLM and get a rich description. + + Args: + crops: List of BGR crop images (1-3) + api_url: vLLM server URL + model: Model name + segformer_desc: Existing SegFormer description for context + + Returns: + Description string or None on failure + """ + try: + from openai import OpenAI + except ImportError: + # Fallback to raw HTTP + return _describe_entity_vlm_http(crops, api_url, model, segformer_desc) + + client = OpenAI(api_key="EMPTY", base_url=api_url) + + # Select best crops (largest, middle-of-track already selected by extractor) + use_crops = crops[:CROPS_FOR_VLM] + + # Build content + prompt = _build_prompt(len(use_crops), segformer_desc) + content = [{"type": "text", "text": prompt}] + + for crop in use_crops: + encoded = _encode_image(crop) + content.append({ + "type": "image_url", + "image_url": {"url": f"data:image/jpeg;base64,{encoded}"} + }) + + try: + response = client.chat.completions.create( + model=model, + messages=[{"role": "user", "content": content}], + max_tokens=100, + temperature=0.1, + ) + result = response.choices[0].message.content.strip() + + # Clean up: ensure it starts with "a " or "an " + result = result.strip('"\'') + if not result.lower().startswith(("a ", "an ")): + result = "a " + result + + # Truncate if too long + if len(result) > 200: + result = result[:197] + "..." + + return result + + except Exception as e: + return None + + +def _describe_entity_vlm_http( + crops: List[np.ndarray], + api_url: str, + model: str, + segformer_desc: str = "", +) -> Optional[str]: + """Fallback HTTP-based VLM call if openai package not available.""" + import urllib.request + import json as _json + + use_crops = crops[:CROPS_FOR_VLM] + prompt = _build_prompt(len(use_crops), segformer_desc) + + content = [{"type": "text", "text": prompt}] + for crop in use_crops: + encoded = _encode_image(crop) + content.append({ + "type": "image_url", + "image_url": {"url": f"data:image/jpeg;base64,{encoded}"} + }) + + payload = { + "model": model, + "messages": [{"role": "user", "content": content}], + "max_tokens": 100, + "temperature": 0.1, + } + + try: + data = _json.dumps(payload).encode("utf-8") + req = urllib.request.Request( + f"{api_url}/chat/completions", + data=data, + headers={"Content-Type": "application/json"}, + ) + resp = urllib.request.urlopen(req, timeout=30) + result = _json.loads(resp.read()) + text = result["choices"][0]["message"]["content"].strip().strip('"\'') + if not text.lower().startswith(("a ", "an ")): + text = "a " + text + return text[:200] + except Exception: + return None + + +# ============================================================================ +# Slot Processing +# ============================================================================ + +def process_slot_vlm( + slot: str, + api_url: str, + model: str = VLM_MODEL, + verbose: bool = False, + max_entities: int = MAX_ENTITIES_PER_SLOT, + max_workers: int = MAX_WORKERS, +) -> Dict: + """ + Enrich entity descriptions for a slot with VLM captioning. + + Reads existing SegFormer descriptions, extracts crops for entities + that are large enough, queries VLM for rich descriptions, and saves + the result alongside the SegFormer data. + + Returns stats dict. + """ + t0 = time.time() + + # Load existing SegFormer descriptions + segformer_path = ENTITY_DESC_DIR / f"{slot}.json" + if not segformer_path.exists(): + if verbose: + print(f" No SegFormer descriptions for {slot}, skipping") + return {"error": "no_segformer_data", "slot": slot} + + with open(segformer_path) as f: + segformer_data = json.load(f) + + actors = segformer_data.get("actors", {}) + if not actors: + return {"error": "no_actors", "slot": slot} + + # Find entities worth sending to VLM (large enough crops) + vlm_candidates = [] + for eid, edata in actors.items(): + h = edata.get("avg_crop_height", 0) + if h >= MIN_CROP_HEIGHT_VLM: + vlm_candidates.append((eid, edata)) + + if not vlm_candidates: + if verbose: + print(f" No entities large enough for VLM in {slot}") + return {"slot": slot, "total": len(actors), "vlm_described": 0} + + # Cap entities + if len(vlm_candidates) > max_entities: + vlm_candidates = vlm_candidates[:max_entities] + + if verbose: + print(f" {len(vlm_candidates)}/{len(actors)} entities qualify for VLM") + + # Extract crops from video + files = find_slot_files(slot) + if not files: + return {"error": "no_video_files", "slot": slot} + + # Group candidates by camera + cam_entities = defaultdict(list) + for eid, edata in vlm_candidates: + cam_entities[edata["camera"]].append((eid, edata)) + + # Extract crops per camera + all_crops = {} # eid → [crop, ...] + for cam, entities in cam_entities.items(): + # Find matching camera file + cam_file = None + for cf in files: + if cf["camera"] == cam: + cam_file = cf + break + if cam_file is None or cam_file.get("video_path") is None: + continue + + # Parse geom for this camera + geom_actors = parse_geom(cam_file["geom_path"]) + + # Filter to only our candidates + target_actors = {} + for eid, edata in entities: + aid = edata.get("actor_id") + if aid is not None and aid in geom_actors: + target_actors[aid] = geom_actors[aid] + + if not target_actors: + continue + + # Extract crops (reuse existing function, but with VLM-specific min height) + cam_crops = extract_crops( + cam_file["video_path"], + target_actors, + max_crops=CROPS_FOR_VLM, + min_h=MIN_CROP_HEIGHT_VLM, + min_w=48, + ) + + # Map back to entity IDs + for eid, edata in entities: + aid = edata.get("actor_id") + if aid in cam_crops and cam_crops[aid]: + all_crops[eid] = cam_crops[aid] + + if verbose: + print(f" Extracted crops for {len(all_crops)} entities") + + if not all_crops: + return {"slot": slot, "total": len(actors), "vlm_described": 0} + + # Query VLM in parallel + vlm_descriptions = {} + failed = 0 + + def _vlm_worker(eid_crops): + eid, crops = eid_crops + segformer_desc = actors[eid].get("description", "") + desc = describe_entity_vlm(crops, api_url, model, segformer_desc) + return eid, desc + + with ThreadPoolExecutor(max_workers=max_workers) as executor: + futures = { + executor.submit(_vlm_worker, (eid, crops)): eid + for eid, crops in all_crops.items() + } + for future in as_completed(futures): + eid = futures[future] + try: + eid_result, desc = future.result() + if desc: + vlm_descriptions[eid_result] = desc + else: + failed += 1 + except Exception: + failed += 1 + + if verbose: + print(f" VLM: {len(vlm_descriptions)} described, {failed} failed") + # Show a few examples + for eid, desc in list(vlm_descriptions.items())[:3]: + old = actors[eid].get("description", "") + print(f" {eid}:") + print(f" SegFormer: {old}") + print(f" VLM: {desc}") + + # Save VLM descriptions alongside SegFormer data + VLM_DESC_DIR.mkdir(parents=True, exist_ok=True) + output = { + "slot": slot, + "model": model, + "total_actors": len(actors), + "vlm_described": len(vlm_descriptions), + "vlm_failed": failed, + "processing_time_sec": round(time.time() - t0, 1), + "descriptions": vlm_descriptions, + } + + output_path = VLM_DESC_DIR / f"{slot}.vlm.json" + with open(output_path, "w") as f: + json.dump(output, f, indent=2) + + if verbose: + print(f" Saved → {output_path.name} ({time.time() - t0:.1f}s)") + + return { + "slot": slot, + "total": len(actors), + "vlm_described": len(vlm_descriptions), + "vlm_failed": failed, + "time_sec": round(time.time() - t0, 1), + } + + +# ============================================================================ +# Batch Processing +# ============================================================================ + +def process_batch( + api_url: str, + model: str = VLM_MODEL, + verbose: bool = False, + force: bool = False, + max_workers: int = MAX_WORKERS, +) -> Dict: + """Process all slots that have SegFormer descriptions.""" + existing = sorted(ENTITY_DESC_DIR.glob("*.json")) + slots = [f.stem for f in existing if not f.stem.startswith(".")] + + if verbose: + print(f"Found {len(slots)} slots with SegFormer descriptions") + + results = [] + total_described = 0 + total_failed = 0 + + for i, slot in enumerate(slots, 1): + # Skip if VLM already done (unless force) + vlm_path = VLM_DESC_DIR / f"{slot}.vlm.json" + if vlm_path.exists() and not force: + if verbose: + print(f"[{i:3d}/{len(slots)}] {slot}: already done, skipping") + continue + + if verbose: + print(f"\n[{i:3d}/{len(slots)}] {slot}") + + result = process_slot_vlm( + slot, api_url, model, + verbose=verbose, + max_workers=max_workers, + ) + results.append(result) + total_described += result.get("vlm_described", 0) + total_failed += result.get("vlm_failed", 0) + + return { + "slots_processed": len(results), + "total_described": total_described, + "total_failed": total_failed, + } + + +# ============================================================================ +# Main +# ============================================================================ + +def main(): + parser = argparse.ArgumentParser( + description="Enrich MEVA entity descriptions with VLM captioning", + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + parser.add_argument("--slot", type=str, help="Process a single slot") + parser.add_argument("--batch", action="store_true", help="Process all slots") + parser.add_argument("--api-url", type=str, default=None, + help="vLLM server URL (default: auto-start on GPU 1)") + parser.add_argument("--gpu", type=str, default=DEFAULT_GPU, + help=f"GPU to use for vLLM server (default: {DEFAULT_GPU})") + parser.add_argument("--port", type=int, default=DEFAULT_PORT, + help=f"Port for vLLM server (default: {DEFAULT_PORT})") + parser.add_argument("--model", type=str, default=VLM_MODEL, + help=f"VLM model name (default: {VLM_MODEL})") + parser.add_argument("--force", action="store_true", + help="Force re-description even if VLM output exists") + parser.add_argument("--max-workers", type=int, default=MAX_WORKERS, + help=f"Max parallel VLM requests (default: {MAX_WORKERS})") + parser.add_argument("--verbose", "-v", action="store_true") + + args = parser.parse_args() + + if not args.slot and not args.batch: + parser.error("Specify --slot or --batch") + + # Start or connect to vLLM server + api_url = args.api_url + we_started_server = False + if api_url is None: + api_url = start_vllm_server( + gpu=args.gpu, port=args.port, + model=args.model, verbose=args.verbose + ) + we_started_server = True + + try: + if args.slot: + result = process_slot_vlm( + args.slot, api_url, args.model, + verbose=args.verbose, + max_workers=args.max_workers, + ) + print(f"\nResult: {json.dumps(result, indent=2)}") + + elif args.batch: + result = process_batch( + api_url, args.model, + verbose=args.verbose, + force=args.force, + max_workers=args.max_workers, + ) + print(f"\nBatch Result: {json.dumps(result, indent=2)}") + + finally: + if we_started_server: + if args.verbose: + print("Stopping vLLM server...") + stop_vllm_server() + + +if __name__ == "__main__": + main() From d8cc1ff3a1b85d1f0316fdb9eb1c02145d6359e4 Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Sat, 28 Feb 2026 08:46:57 -0600 Subject: [PATCH 25/26] fix: - activity_hierarchy: 28 humanization overrides for vague/vehicle activities - generate_temporal: vehicle-as-person fix, camera overlap dedup - generate_numerical: overlap-aware dedup (8s window for adjacent cams) - naturalize: vehicle entity preservation in preprocess + GPT prompt - person_descriptions: unknown texture exclusion, article agreement (a/an), clean_geom_description, revert color consolidation (keep specific colors) - utils/camera_overlap.py: new KRTD-based overlap detection module --- meva/run.sh | 102 ++++++++++++----- meva/scripts/v10/activity_hierarchy.py | 60 +++++++++- meva/scripts/v10/generate_numerical.py | 26 ++++- meva/scripts/v10/generate_temporal.py | 27 ++++- meva/scripts/v10/naturalize.py | 19 +++- meva/scripts/v10/person_descriptions.py | 40 +++++-- meva/scripts/v10/utils/camera_overlap.py | 136 +++++++++++++++++++++++ 7 files changed, 366 insertions(+), 44 deletions(-) create mode 100644 meva/scripts/v10/utils/camera_overlap.py diff --git a/meva/run.sh b/meva/run.sh index 0f6ae96..4082fa8 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -1,69 +1,117 @@ #!/usr/bin/env bash # run.sh — Full V10 QA pipeline for one MEVA slot. # +# USAGE: +# bash run.sh # raw QA only (free, no API key needed) +# bash run.sh --n # raw QA + GPT naturalization +# # SETUP (one-time): -# 1. cd into this directory: cd /path/to/repo/meva -# 2. Set your API key: export OPENAI_API_KEY=sk-... -# 3. (Optional) Set output dir: export MEVA_OUTPUT_DIR=~/data -# Defaults to ~/data if not set. QA JSON + logs go there. -# 4. Run: bash run.sh +# 1. cd into the repo: cd /path/to/repo/meva +# 2. Activate your venv: source /path/to/venv/bin/activate +# 3. For naturalization (--n only): export OPENAI_API_KEY=sk-... +# Or put OPENAI_API_KEY=sk-... in ~/.env (loaded automatically) +# 4. (Optional) Override output dir: +# export MEVA_OUTPUT_DIR=/your/output/dir +# Default: /nas/neurosymbolic/multi-cam-dataset/meva/data # -# DATASET (shared, read-only): +# DATASET (shared NAS, read-only): # /nas/mars/dataset/MEVA/ — videos, annotations, camera models # # REQUIREMENTS: # pip install pyyaml numpy opencv-python openai -# (or: source your-venv/bin/activate) -# set -e +set -e +# --------------------------------------------------------------------------- +# Output directory — override with MEVA_OUTPUT_DIR env var +# --------------------------------------------------------------------------- +OUTPUT_DIR="${MEVA_OUTPUT_DIR:-/nas/neurosymbolic/multi-cam-dataset/meva/data}" +mkdir -p "$OUTPUT_DIR/qa_pairs/raw" || { + echo "ERROR: Cannot create output directory: $OUTPUT_DIR/qa_pairs/raw" + echo " Set MEVA_OUTPUT_DIR to a writable path, e.g.:" + echo " export MEVA_OUTPUT_DIR=\$HOME/meva_output" + exit 1 +} +export MEVA_OUTPUT_DIR="$OUTPUT_DIR" -OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data" -mkdir -p "$OUTPUT_DIR/qa_pairs/raw" -ENV_FILE="/home/ah66742/.env" # this is where OPENAI_API_KEY is -export MEVA_OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data/" +# .env file for OPENAI_API_KEY — looked up in caller's home dir (not hardcoded) +ENV_FILE="${ENV_FILE:-$HOME/.env}" +# --------------------------------------------------------------------------- # Parse args: extract --n flag and positional slot +# --------------------------------------------------------------------------- NATURALIZE=false SLOT="" for arg in "$@"; do if [[ "$arg" == "--n" ]]; then NATURALIZE=true + elif [[ "$arg" == "--help" || "$arg" == "-h" ]]; then + echo "Usage: bash run.sh [--n]" + echo " e.g. 2018-03-11.11-25.school" + echo " --n also run GPT naturalization (requires OPENAI_API_KEY)" + echo "" + echo "Available sites: admin, bus, hospital, school" + echo "List slots: python3 -m scripts.v10.run_pipeline --list-slots" + exit 0 elif [[ "$arg" != --* ]]; then SLOT="$arg" fi done -SLOT="${SLOT:-2018-03-09.10-15.school}" -# export PYTHONPATH=$PYTHONPATH:$(pwd) +if [[ -z "$SLOT" ]]; then + echo "ERROR: No slot specified." + echo "Usage: bash run.sh [--n]" + echo " bash run.sh 2018-03-11.11-25.school" + echo " bash run.sh 2018-03-11.11-25.school --n" + echo "" + echo "List all available slots:" + echo " python3 -m scripts.v10.run_pipeline --list-slots" + exit 1 +fi + -# echo "=== Step 1: Raw QA generation (slot: $SLOT) ===" +# --------------------------------------------------------------------------- +# Step 1: Raw QA generation +# --------------------------------------------------------------------------- +echo "=== Raw QA: slot=$SLOT ===" python3 -m scripts.v10.run_pipeline \ --slot "$SLOT" \ -v \ --seed 42 - RAW_JSON="$OUTPUT_DIR/qa_pairs/raw/$SLOT.raw.json" -# echo "" -# echo "=== Step 2: Naturalization (GPT — requires OPENAI_API_KEY) ===" +# --------------------------------------------------------------------------- +# Step 2: Naturalization (GPT — only if --n flag passed) +# --------------------------------------------------------------------------- if $NATURALIZE; then - # Load .env for OPENAI_API_KEY if not already set + # Load .env for OPENAI_API_KEY if not already set in environment if [[ -z "$OPENAI_API_KEY" && -f "$ENV_FILE" ]]; then set -a; source "$ENV_FILE"; set +a fi + + if [[ -z "$OPENAI_API_KEY" ]]; then + echo "" + echo "ERROR: OPENAI_API_KEY is not set. Naturalization requires it." + echo " Option 1: export OPENAI_API_KEY=sk-..." + echo " Option 2: put OPENAI_API_KEY=sk-... in $ENV_FILE" + exit 1 + fi + + echo "" + echo "=== Naturalization (gpt-4o-mini) ===" python3 -m scripts.v10.naturalize \ --input "$RAW_JSON" \ --output "$OUTPUT_DIR/qa_pairs/$SLOT.naturalized.json" \ -v --yes -fi -# echo "" -# echo "=== Step 3: Export to multi-cam-dataset format ===" -# python3 -m scripts.v10.export_to_multicam_format \ -# --slot "$SLOT" - -# echo "" -# echo "Done. Output in $OUTPUT_DIR/qa_pairs/$SLOT/" + echo "" + echo "Done. Output:" + echo " Raw: $RAW_JSON" + echo " Naturalized: $OUTPUT_DIR/qa_pairs/$SLOT.naturalized.json" +else + echo "" + echo "Done. Output: $RAW_JSON" + echo "(Run with --n to also naturalize with GPT)" +fi diff --git a/meva/scripts/v10/activity_hierarchy.py b/meva/scripts/v10/activity_hierarchy.py index 91fa8d9..47cacf9 100644 --- a/meva/scripts/v10/activity_hierarchy.py +++ b/meva/scripts/v10/activity_hierarchy.py @@ -148,13 +148,39 @@ def get_activity_entity_type(activity: str) -> str: def humanize_activity(activity: str) -> str: - """Convert activity name to short human-readable form.""" - # Special-case enter/exit scene to clarify MEVA camera-view semantics + """Convert activity name to short human-readable form. + + Special-cases vague names and vehicle activities to produce sensible + descriptions. The plain prefix-strip is the fallback. + """ _SPECIAL = { + # Scene entry / exit — clarify MEVA camera-view semantics "person_enters_scene_through_structure": "enters the camera's view through a doorway", "person_exits_scene_through_structure": "leaves the camera's view through a doorway", + # Vague / ambiguous person activities — more descriptive + "hand_interacts_with_person": + "physically interacts with another person", + "person_interacts_with_laptop": + "uses a laptop", + "person_transfers_object": + "hands an object to someone", + "person_carries_heavy_object": + "carries a heavy object", + "person_abandons_package": + "leaves a package behind", + "person_steals_object": + "takes an object", + # Vehicle activities — keep "vehicle" context in the verb phrase + "vehicle_starts": "starts moving", + "vehicle_stops": "comes to a stop", + "vehicle_reverses": "reverses", + "vehicle_turns_left": "turns left", + "vehicle_turns_right": "turns right", + "vehicle_makes_u_turn": "makes a U-turn", + "vehicle_drops_off_person": "drops off a person", + "vehicle_picks_up_person": "picks up a person", } if activity in _SPECIAL: return _SPECIAL[activity] @@ -220,6 +246,36 @@ def humanize_activity_gerund(activity: str) -> str: Convert activity to gerund form for sentence construction. e.g. 'person_opens_facility_door' → 'Opening a facility door' """ + # Direct gerund overrides for special-cased activities + _GERUND_SPECIAL = { + "person_enters_scene_through_structure": + "Entering the camera's view through a doorway", + "person_exits_scene_through_structure": + "Leaving the camera's view through a doorway", + "hand_interacts_with_person": + "Physically interacting with another person", + "person_interacts_with_laptop": + "Using a laptop", + "person_transfers_object": + "Handing an object to someone", + "person_carries_heavy_object": + "Carrying a heavy object", + "person_abandons_package": + "Leaving a package behind", + "person_steals_object": + "Taking an object", + "vehicle_starts": "Starting to move", + "vehicle_stops": "Coming to a stop", + "vehicle_reverses": "Reversing", + "vehicle_turns_left": "Turning left", + "vehicle_turns_right": "Turning right", + "vehicle_makes_u_turn": "Making a U-turn", + "vehicle_drops_off_person": "Dropping off a person", + "vehicle_picks_up_person": "Picking up a person", + } + if activity in _GERUND_SPECIAL: + return _GERUND_SPECIAL[activity] + base = humanize_activity(activity) # e.g. 'opens facility door' words = base.split() if words: diff --git a/meva/scripts/v10/generate_numerical.py b/meva/scripts/v10/generate_numerical.py index 2613b99..39ed677 100644 --- a/meva/scripts/v10/generate_numerical.py +++ b/meva/scripts/v10/generate_numerical.py @@ -31,6 +31,13 @@ except ImportError: _HAS_3D_DEDUP = False +# Camera overlap detection for aggressive dedup on overlapping FOVs +try: + from .utils.camera_overlap import cameras_overlap + _HAS_OVERLAP = True +except ImportError: + _HAS_OVERLAP = False + # ============================================================================ # Constants @@ -105,6 +112,10 @@ def _dedup_activity_count(events_for_activity: list, merged into a single cluster (counted as one occurrence). Events on the SAME camera are always counted separately. + For cameras with KNOWN FOV overlap (e.g. admin G326/G329), the time + window is widened to ±8 seconds since the same event is very likely + to appear in both cameras with some annotation timing variation. + Issue 6: Also uses 3D position matching when available for more accurate dedup. Issue 10: Returns cluster details for key_frames in QA output. @@ -112,6 +123,9 @@ def _dedup_activity_count(events_for_activity: list, cluster_details: List[Dict] with one entry per cluster, each containing {camera, start_sec, end_sec, start_frame, event_id, clip_file}. """ + DEDUP_WINDOW_DEFAULT = 2.0 # seconds for non-overlapping cameras + DEDUP_WINDOW_OVERLAP = 8.0 # seconds for overlapping cameras + sorted_evts = sorted(events_for_activity, key=lambda e: e.start_sec) clusters: List[list] = [] for evt in sorted_evts: @@ -121,12 +135,20 @@ def _dedup_activity_count(events_for_activity: list, if evt.camera_id == c_evt.camera_id: continue # Same camera = always distinct + # Determine time window based on camera overlap + if _HAS_OVERLAP and cameras_overlap(evt.camera_id, c_evt.camera_id): + time_window = DEDUP_WINDOW_OVERLAP + else: + time_window = DEDUP_WINDOW_DEFAULT + # Time-based check - if abs(evt.start_sec - c_evt.start_sec) > 2.0: + if abs(evt.start_sec - c_evt.start_sec) > time_window: continue # Issue 6: 3D position check when available - if _HAS_3D_DEDUP and sg is not None: + # Skip 3D check for overlapping cameras (same FOV = same location) + if (_HAS_3D_DEDUP and sg is not None + and not (_HAS_OVERLAP and cameras_overlap(evt.camera_id, c_evt.camera_id))): import numpy as np pos_a = _get_event_3d_position(evt, sg) pos_b = _get_event_3d_position(c_evt, sg) diff --git a/meva/scripts/v10/generate_temporal.py b/meva/scripts/v10/generate_temporal.py index 5dc0cd4..dd4c9b6 100644 --- a/meva/scripts/v10/generate_temporal.py +++ b/meva/scripts/v10/generate_temporal.py @@ -20,6 +20,7 @@ from .distractor_bank import get_distractors from .activity_hierarchy import ( are_related, get_relationship, get_relationship_strength, humanize_activity, + get_activity_entity_type, ) from .utils.mevid import find_mevid_persons_for_slot from .utils.krtd import load_camera_model, CameraModel, INDOOR_CAMERAS @@ -94,6 +95,14 @@ def _get_event_3d_position(event: Event, sg: SceneGraph) -> Optional[np.ndarray] return None +# Camera overlap detection for aggressive dedup on overlapping FOVs +try: + from .utils.camera_overlap import cameras_overlap as _cameras_overlap + _HAS_OVERLAP = True +except ImportError: + _HAS_OVERLAP = False + + def _is_likely_duplicate_event(ea: Event, eb: Event, sg: SceneGraph) -> bool: """Check if two cross-camera events are likely the same real-world event. @@ -102,8 +111,8 @@ def _is_likely_duplicate_event(ea: Event, eb: Event, sg: SceneGraph) -> bool: 2. Are temporally close (within CROSS_CAM_DEDUP_TIME_SEC) 3. Have similar 3D positions (within CROSS_CAM_DEDUP_DISTANCE_M) - This catches the case where out-of-sync cameras record the same - real-world action at slightly different timestamps. + For cameras with known FOV overlap, the time window is applied more + aggressively (any temporal proximity = likely duplicate). """ # Must be same activity for duplicate detection if ea.activity != eb.activity: @@ -113,8 +122,17 @@ def _is_likely_duplicate_event(ea: Event, eb: Event, sg: SceneGraph) -> bool: if ea.camera_id == eb.camera_id: return False + # Check if cameras have known overlap + overlap = _HAS_OVERLAP and _cameras_overlap(ea.camera_id, eb.camera_id) + # Check temporal proximity time_gap = abs(ea.start_sec - eb.start_sec) + if overlap: + # Overlapping cameras: wider time window, skip 3D check + if time_gap <= CROSS_CAM_DEDUP_TIME_SEC: + return True + return False + if time_gap > CROSS_CAM_DEDUP_TIME_SEC: return False @@ -303,8 +321,9 @@ def _get_event_description(event: Event, sg: SceneGraph, return desc return f"{desc} {short_act}" - # Absolute fallback: use "a person" instead of "someone" - return f"a person {short_act}" + # Absolute fallback: use correct entity type (person vs vehicle) + entity_type = get_activity_entity_type(event.activity) + return f"a {entity_type} {short_act}" def _enrich_with_location(desc: str, event: Event, sg: SceneGraph) -> str: diff --git a/meva/scripts/v10/naturalize.py b/meva/scripts/v10/naturalize.py index 6f662e2..fed0c5e 100644 --- a/meva/scripts/v10/naturalize.py +++ b/meva/scripts/v10/naturalize.py @@ -292,21 +292,34 @@ def _has_appearance_info(desc: str) -> bool: def _extract_person_desc(entity_description: str, activity: str = "") -> str: """ - Extract just the person appearance, stripping any embedded activity text. + Extract just the entity appearance, stripping any embedded activity text. Input: "the person wearing a gray upper body garment... enters scene" Output: "a person wearing a gray top and green pants, carrying a black backpack" Input: "a person interacts with person" (fallback, no appearance) Output: "a person" + + Input: "a vehicle" (vehicle entity) + Output: "a vehicle" """ if not entity_description: + # Use activity prefix to determine entity type + if activity.startswith("vehicle_"): + return "a vehicle" return "a person" desc = entity_description.strip() + # Preserve vehicle descriptions as-is + if desc.lower().startswith("a vehicle") or desc.lower() == "vehicle": + return desc if desc.lower().startswith("a ") else "a " + desc + # Check if this is a real appearance description vs. activity fallback if not _has_appearance_info(desc): + # Use activity prefix to determine entity type + if activity.startswith("vehicle_"): + return "a vehicle" return "a person" # Remove embedded activity text after the description @@ -401,6 +414,8 @@ def _fmt_event(desc, act, cam, with_camera=True): cam_ref = f" on camera {cam}" if cam and with_camera else "" if d.lower() in ("a person", "someone"): return f"{d} {act}{cam_ref}" + if d.lower() in ("a vehicle",): + return f"{d} {act}{cam_ref}" return f"{d}, {act}{cam_ref}" clean_a = _fmt_event(desc_a, act_a, cam_a, with_camera=include_cam) @@ -686,6 +701,8 @@ def preprocess_all(input_data: Dict, verbose: bool = False, - Do NOT alter person descriptions (clothing colors, carried objects) — but \ DO fix obvious grammar errors within them (broken verb conjugations, garbled \ words, missing articles). +- Do NOT change "a vehicle" to "a person" or vice versa — entity type is \ +factually significant. Vehicles and persons are different entities. - Do not change answer options. - Camera identifiers (e.g., G421) in question text are acceptable ONLY for \ perception and re-identification questions where cameras are inherent. diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py index e867fa9..1ad68f0 100644 --- a/meva/scripts/v10/person_descriptions.py +++ b/meva/scripts/v10/person_descriptions.py @@ -502,12 +502,30 @@ def _load_geom_descriptions(slot: str) -> Dict[str, str]: try: with open(desc_path) as f: data = json.load(f) - return {eid: info["description"] for eid, info in data.get("actors", {}).items() + descs = {eid: info["description"] for eid, info in data.get("actors", {}).items() if info.get("description") and info["description"] != "a person"} + # Clean up geom descriptions: remove "unknown" qualifiers, fix articles + return {eid: _clean_geom_description(desc) for eid, desc in descs.items()} except (json.JSONDecodeError, KeyError): return {} +def _clean_geom_description(desc: str) -> str: + """Clean a pre-formatted geom description string. + + Removes "unknown" qualifier words and fixes article agreement (a→an + before vowels). Does NOT consolidate colors — specific colors like + indigo, navy, teal are kept for better entity differentiation. + """ + import re + result = desc + # Remove "unknown" qualifier + result = re.sub(r'\bunknown\s+', '', result, flags=re.IGNORECASE) + # Fix article agreement: "a indigo" → "an indigo", "a olive" → "an olive" + result = re.sub(r'\ba\s+([aeiou])', r'an \1', result, flags=re.IGNORECASE) + return result + + def _load_vlm_descriptions(slot: str) -> Dict[str, str]: """ Load VLM-generated descriptions (InternVL2.5-8B) for a slot. @@ -790,7 +808,7 @@ def _build_description(attrs: dict) -> str: if hair != "unknown": parts.append(f"with {hair} hair") - # Clothing — include brightness + texture qualifiers if available + # Clothing — keep specific colors (indigo, navy, teal etc.) for differentiation upper = attrs.get("upper_color", "unknown") lower = attrs.get("lower_color", "unknown") lower_type = attrs.get("lower_type", "pants") @@ -803,20 +821,26 @@ def _build_description(attrs: dict) -> str: if upper != "unknown": # Build qualifier: "dark patterned navy" or just "navy" upper_quals = [] - if upper_brightness and upper_brightness not in ("", "medium"): + # Skip brightness qualifier if the consolidated color already includes it + # (e.g., "dark blue" already implies "dark", so don't say "dark dark blue") + if (upper_brightness and upper_brightness not in ("", "medium", "unknown") + and not upper.startswith(upper_brightness)): upper_quals.append(upper_brightness) - if upper_texture and upper_texture not in ("", "solid"): + if upper_texture and upper_texture not in ("", "solid", "unknown"): upper_quals.append(upper_texture) qualifier = " ".join(upper_quals) if qualifier: - clothing.append(f"a {qualifier} {upper} top") + article = "an" if qualifier[0].lower() in "aeiou" else "a" + clothing.append(f"{article} {qualifier} {upper} top") else: - clothing.append(f"a {upper} top") + article = "an" if upper[0].lower() in "aeiou" else "a" + clothing.append(f"{article} {upper} top") if lower != "unknown": lower_quals = [] - if lower_brightness and lower_brightness not in ("", "medium"): + if (lower_brightness and lower_brightness not in ("", "medium", "unknown") + and not lower.startswith(lower_brightness)): lower_quals.append(lower_brightness) - if lower_texture and lower_texture not in ("", "solid"): + if lower_texture and lower_texture not in ("", "solid", "unknown"): lower_quals.append(lower_texture) qualifier = " ".join(lower_quals) if qualifier: diff --git a/meva/scripts/v10/utils/camera_overlap.py b/meva/scripts/v10/utils/camera_overlap.py new file mode 100644 index 0000000..770ab63 --- /dev/null +++ b/meva/scripts/v10/utils/camera_overlap.py @@ -0,0 +1,136 @@ +""" +Camera overlap detection — identifies camera pairs with significant FOV overlap. + +Used by dedup logic to avoid double-counting events seen by overlapping cameras. +Combines: + 1. KRTD-derived camera positions + viewing directions (bus, hospital, school) + 2. Manual/hardcoded overlap for sites without KRTD (admin) + +An overlapping pair means the same physical event could appear in both cameras, +so cross-camera dedup should be MORE aggressive (wider time window, no 3D req). +""" + +import numpy as np +from pathlib import Path +from typing import Dict, FrozenSet, Optional, Set, Tuple + +from .krtd import KRTD_DIR, INDOOR_CAMERAS + +# ============================================================================ +# Hardcoded overlaps for sites without KRTD calibration +# ============================================================================ + +# Admin site: G326 and G329 point at the same building entrance. +# No KRTD models exist for admin. Confirmed via visual inspection. +_MANUAL_OVERLAPS: Dict[str, Set[FrozenSet[str]]] = { + "admin": {frozenset({"G326", "G329"})}, +} + +# ============================================================================ +# KRTD-based overlap computation +# ============================================================================ + +# Thresholds for automatic overlap detection +_CLOSE_DIST_M = 15.0 # cameras within 15m are "close" +_MEDIUM_DIST_M = 50.0 # cameras within 50m might overlap +_HIGH_COS_SIM = 0.5 # cosine similarity of viewing dirs for "similar view" +_MEDIUM_COS_SIM = 0.3 # lower threshold for medium-distance cameras + + +def _compute_krtd_overlaps() -> Set[FrozenSet[str]]: + """Compute overlapping camera pairs from KRTD calibration files. + + Two cameras are considered overlapping if: + - Within 15m of each other (any viewing direction), OR + - Within 50m AND viewing directions have cosine similarity > 0.3, OR + - Within 30m AND viewing directions have cosine similarity > 0.5 + """ + overlaps: Set[FrozenSet[str]] = set() + + # Parse all KRTD files + cameras: Dict[str, Tuple[np.ndarray, np.ndarray]] = {} # cam_id -> (position, view_dir) + for f in KRTD_DIR.glob("*.krtd"): + cam_id = f.stem.split(".")[-1] + if cam_id in INDOOR_CAMERAS: + continue + try: + lines = [l.strip() for l in open(f) if l.strip()] + K = np.array([[float(x) for x in lines[i].split()] for i in range(3)]) + R = np.array([[float(x) for x in lines[i].split()] for i in range(3, 6)]) + T = np.array([float(x) for x in lines[6].split()]) + C = -R.T @ T + view_dir = R.T @ np.array([0.0, 0.0, 1.0]) + view_dir = view_dir / np.linalg.norm(view_dir) + cameras[cam_id] = (C, view_dir) + except Exception: + continue + + cam_list = sorted(cameras.keys()) + for i in range(len(cam_list)): + for j in range(i + 1, len(cam_list)): + ca, cb = cam_list[i], cam_list[j] + pos_a, dir_a = cameras[ca] + pos_b, dir_b = cameras[cb] + dist = float(np.linalg.norm(pos_a - pos_b)) + cos_sim = float(np.dot(dir_a, dir_b)) + + if dist < _CLOSE_DIST_M: + overlaps.add(frozenset({ca, cb})) + elif dist < 30.0 and cos_sim > _HIGH_COS_SIM: + overlaps.add(frozenset({ca, cb})) + elif dist < _MEDIUM_DIST_M and cos_sim > _MEDIUM_COS_SIM: + overlaps.add(frozenset({ca, cb})) + + return overlaps + + +# ============================================================================ +# Cached overlap map +# ============================================================================ + +_OVERLAP_CACHE: Optional[Set[FrozenSet[str]]] = None + + +def _get_all_overlaps() -> Set[FrozenSet[str]]: + """Get all overlapping camera pairs (cached).""" + global _OVERLAP_CACHE + if _OVERLAP_CACHE is None: + _OVERLAP_CACHE = _compute_krtd_overlaps() + for pairs in _MANUAL_OVERLAPS.values(): + _OVERLAP_CACHE |= pairs + return _OVERLAP_CACHE + + +def cameras_overlap(cam_a: str, cam_b: str) -> bool: + """Check if two cameras have significant FOV overlap. + + When True, events on these cameras with similar timing are likely + the same real-world event and should be deduped aggressively. + """ + if cam_a == cam_b: + return True + return frozenset({cam_a, cam_b}) in _get_all_overlaps() + + +def get_overlapping_cameras(camera_id: str) -> Set[str]: + """Get all cameras that overlap with the given camera.""" + result = set() + for pair in _get_all_overlaps(): + if camera_id in pair: + result |= pair + result.discard(camera_id) + return result + + +def get_overlap_pairs_for_cameras(camera_ids: list) -> list: + """Get all overlap pairs among a set of cameras. + + Returns list of (cam_a, cam_b) tuples. + """ + cam_set = set(camera_ids) + result = [] + for pair in _get_all_overlaps(): + if pair <= cam_set: + a, b = sorted(pair) + result.append((a, b)) + return sorted(result) From 9d553eace0fd0f69f7007a1c378ae1086fa2a9cc Mon Sep 17 00:00:00 2001 From: adihebbalae Date: Sat, 28 Feb 2026 14:23:10 -0600 Subject: [PATCH 26/26] V10 pipeline: temporal/spatial/event_ordering/counting overhaul + batch infrastructure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TEMPORAL (generate_temporal.py): - Rewrote to V10: camera-proximity-based pair selection (adjacent > same-site) - All questions use 'which occurred first?' format (removed before/after) - Uniqueness gate: rejects pairs with indistinguishable entity descriptions - Same-area relaxation for 2-camera sites (admin) - First-instance filter aligned to 30s threshold - Removed dead code (.bak deleted) SPATIAL (generate_spatial.py): - Closest-approach returns full distance trajectory (5-tuple) - True crossing detection: far→close→far pattern (>5m → ≤2m → >5m) + bbox position swap - Options A/D clearly differentiated (approach/stay near vs walk past/swap positions) - SAMPLE_EVERY reduced 30→15 for finer spatial resolution EVENT ORDERING (generate_event_ordering.py): - Combinatorial chain building - First-instance filtering with 30s threshold COUNTING (generate_numerical.py): - Entity-identity-aware dedup ENTITY DESCRIPTIONS (person_descriptions.py, extract_entity_descriptions.py): - 5-tier description priority: MEVID-GPT > SegFormer/geom > VLM > MEVID-YOLO > fallback - Cross-camera cluster differentiation NEW FILES: - batch_run_all_slots.py: multiprocessing batch runner (8 workers) - batch_verify.py: automated quality validation (structural, temporal, description checks) - reextract_missing_cameras.py: re-extract entity descriptions for missing cameras - utils/camera_proximity.py: camera proximity tiers (same_area/adjacent/same_site) CLEANUP: - Removed hardcoded /home/ah66742 paths (reextract uses shutil.which, run.sh uses $HOME) - Added *.bak to .gitignore - Deleted .bak backup files --- meva/.gitignore | 1 + meva/run.sh | 102 ++--- meva/scripts/v10/batch_run_all_slots.py | 206 +++++++++ meva/scripts/v10/batch_verify.py | 347 ++++++++++++++ .../v10/extract_entity_descriptions.py | 6 +- meva/scripts/v10/generate_event_ordering.py | 93 ++-- meva/scripts/v10/generate_numerical.py | 39 +- meva/scripts/v10/generate_spatial.py | 162 ++++--- meva/scripts/v10/generate_temporal.py | 429 +++++++++++------- meva/scripts/v10/person_descriptions.py | 134 ++++-- meva/scripts/v10/reextract_missing_cameras.py | 229 ++++++++++ meva/scripts/v10/run_pipeline.py | 12 +- meva/scripts/v10/utils/camera_proximity.py | 262 +++++++++++ 13 files changed, 1647 insertions(+), 375 deletions(-) create mode 100644 meva/scripts/v10/batch_run_all_slots.py create mode 100644 meva/scripts/v10/batch_verify.py create mode 100644 meva/scripts/v10/reextract_missing_cameras.py create mode 100644 meva/scripts/v10/utils/camera_proximity.py diff --git a/meva/.gitignore b/meva/.gitignore index f27eb05..1f5ccfc 100644 --- a/meva/.gitignore +++ b/meva/.gitignore @@ -48,6 +48,7 @@ data/gpt_logs/ tmp/ temp/ *.tmp +*.bak # Local configuration (copy from config_template.py) config.py diff --git a/meva/run.sh b/meva/run.sh index 4082fa8..8e7ef3c 100755 --- a/meva/run.sh +++ b/meva/run.sh @@ -1,117 +1,69 @@ #!/usr/bin/env bash # run.sh — Full V10 QA pipeline for one MEVA slot. # -# USAGE: -# bash run.sh # raw QA only (free, no API key needed) -# bash run.sh --n # raw QA + GPT naturalization -# # SETUP (one-time): -# 1. cd into the repo: cd /path/to/repo/meva -# 2. Activate your venv: source /path/to/venv/bin/activate -# 3. For naturalization (--n only): export OPENAI_API_KEY=sk-... -# Or put OPENAI_API_KEY=sk-... in ~/.env (loaded automatically) -# 4. (Optional) Override output dir: -# export MEVA_OUTPUT_DIR=/your/output/dir -# Default: /nas/neurosymbolic/multi-cam-dataset/meva/data +# 1. cd into this directory: cd /path/to/repo/meva +# 2. Set your API key: export OPENAI_API_KEY=sk-... +# 3. (Optional) Set output dir: export MEVA_OUTPUT_DIR=~/data +# Defaults to ~/data if not set. QA JSON + logs go there. +# 4. Run: bash run.sh # -# DATASET (shared NAS, read-only): +# DATASET (shared, read-only): # /nas/mars/dataset/MEVA/ — videos, annotations, camera models # # REQUIREMENTS: # pip install pyyaml numpy opencv-python openai +# (or: source your-venv/bin/activate) -set -e +# set -e -# --------------------------------------------------------------------------- -# Output directory — override with MEVA_OUTPUT_DIR env var -# --------------------------------------------------------------------------- -OUTPUT_DIR="${MEVA_OUTPUT_DIR:-/nas/neurosymbolic/multi-cam-dataset/meva/data}" -mkdir -p "$OUTPUT_DIR/qa_pairs/raw" || { - echo "ERROR: Cannot create output directory: $OUTPUT_DIR/qa_pairs/raw" - echo " Set MEVA_OUTPUT_DIR to a writable path, e.g.:" - echo " export MEVA_OUTPUT_DIR=\$HOME/meva_output" - exit 1 -} -export MEVA_OUTPUT_DIR="$OUTPUT_DIR" -# .env file for OPENAI_API_KEY — looked up in caller's home dir (not hardcoded) -ENV_FILE="${ENV_FILE:-$HOME/.env}" +OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data" +mkdir -p "$OUTPUT_DIR/qa_pairs/raw" +ENV_FILE="${MEVA_ENV_FILE:-$HOME/.env}" # defaults to ~/.env; override with MEVA_ENV_FILE +export MEVA_OUTPUT_DIR="/nas/neurosymbolic/multi-cam-dataset/meva/data/" -# --------------------------------------------------------------------------- # Parse args: extract --n flag and positional slot -# --------------------------------------------------------------------------- NATURALIZE=false SLOT="" for arg in "$@"; do if [[ "$arg" == "--n" ]]; then NATURALIZE=true - elif [[ "$arg" == "--help" || "$arg" == "-h" ]]; then - echo "Usage: bash run.sh [--n]" - echo " e.g. 2018-03-11.11-25.school" - echo " --n also run GPT naturalization (requires OPENAI_API_KEY)" - echo "" - echo "Available sites: admin, bus, hospital, school" - echo "List slots: python3 -m scripts.v10.run_pipeline --list-slots" - exit 0 elif [[ "$arg" != --* ]]; then SLOT="$arg" fi done +SLOT="${SLOT:-2018-03-09.10-15.school}" -if [[ -z "$SLOT" ]]; then - echo "ERROR: No slot specified." - echo "Usage: bash run.sh [--n]" - echo " bash run.sh 2018-03-11.11-25.school" - echo " bash run.sh 2018-03-11.11-25.school --n" - echo "" - echo "List all available slots:" - echo " python3 -m scripts.v10.run_pipeline --list-slots" - exit 1 -fi - +# export PYTHONPATH=$PYTHONPATH:$(pwd) -# --------------------------------------------------------------------------- -# Step 1: Raw QA generation -# --------------------------------------------------------------------------- -echo "=== Raw QA: slot=$SLOT ===" +# echo "=== Step 1: Raw QA generation (slot: $SLOT) ===" python3 -m scripts.v10.run_pipeline \ --slot "$SLOT" \ -v \ --seed 42 + RAW_JSON="$OUTPUT_DIR/qa_pairs/raw/$SLOT.raw.json" -# --------------------------------------------------------------------------- -# Step 2: Naturalization (GPT — only if --n flag passed) -# --------------------------------------------------------------------------- +# echo "" +# echo "=== Step 2: Naturalization (GPT — requires OPENAI_API_KEY) ===" if $NATURALIZE; then - # Load .env for OPENAI_API_KEY if not already set in environment + # Load .env for OPENAI_API_KEY if not already set if [[ -z "$OPENAI_API_KEY" && -f "$ENV_FILE" ]]; then set -a; source "$ENV_FILE"; set +a fi - - if [[ -z "$OPENAI_API_KEY" ]]; then - echo "" - echo "ERROR: OPENAI_API_KEY is not set. Naturalization requires it." - echo " Option 1: export OPENAI_API_KEY=sk-..." - echo " Option 2: put OPENAI_API_KEY=sk-... in $ENV_FILE" - exit 1 - fi - - echo "" - echo "=== Naturalization (gpt-4o-mini) ===" python3 -m scripts.v10.naturalize \ --input "$RAW_JSON" \ --output "$OUTPUT_DIR/qa_pairs/$SLOT.naturalized.json" \ -v --yes - - echo "" - echo "Done. Output:" - echo " Raw: $RAW_JSON" - echo " Naturalized: $OUTPUT_DIR/qa_pairs/$SLOT.naturalized.json" -else - echo "" - echo "Done. Output: $RAW_JSON" - echo "(Run with --n to also naturalize with GPT)" fi + +# echo "" +# echo "=== Step 3: Export to multi-cam-dataset format ===" +# python3 -m scripts.v10.export_to_multicam_format \ +# --slot "$SLOT" + +# echo "" +# echo "Done. Output in $OUTPUT_DIR/qa_pairs/$SLOT/" diff --git a/meva/scripts/v10/batch_run_all_slots.py b/meva/scripts/v10/batch_run_all_slots.py new file mode 100644 index 0000000..07adc85 --- /dev/null +++ b/meva/scripts/v10/batch_run_all_slots.py @@ -0,0 +1,206 @@ +#!/usr/bin/env python3 +""" +batch_run_all_slots.py — Generate raw QA for all (or a subset of) annotated slots. + +Uses multiprocessing for speed. Skips slots already done. Resumes cleanly +after interruption. + +Usage: + # All 381 slots, 8 parallel workers + python3 -m scripts.v10.batch_run_all_slots -v + + # Specific site only + python3 -m scripts.v10.batch_run_all_slots --site school -v + + # Custom worker count + python3 -m scripts.v10.batch_run_all_slots -w 4 -v + + # Dry-run: list slots that would be processed + python3 -m scripts.v10.batch_run_all_slots --dry-run + + # Re-process even if output already exists + python3 -m scripts.v10.batch_run_all_slots --overwrite +""" + +import argparse +import json +import os +import sys +import time +from concurrent.futures import ProcessPoolExecutor, as_completed +from datetime import datetime +from pathlib import Path + +try: + from .run_pipeline import run_pipeline + from .parse_annotations import find_clips_for_slot +except ImportError: + sys.path.insert(0, str(Path(__file__).resolve().parent)) + from run_pipeline import run_pipeline + from parse_annotations import find_clips_for_slot + +# --------------------------------------------------------------------------- +# Paths +# --------------------------------------------------------------------------- +_HERE = Path(__file__).resolve().parent +_REPO_ROOT = _HERE.parent.parent # meva/ +_DATA_DIR = _REPO_ROOT / "data" + +_OUTPUT = Path( + os.environ.get("MEVA_OUTPUT_DIR") or + os.environ.get("OUTPUT_DIR") or + "/nas/neurosymbolic/multi-cam-dataset/meva/data" +) +RAW_OUTPUT_DIR = _OUTPUT / "qa_pairs" / "raw" + +SLOT_INDEX = _DATA_DIR / "slot_index.json" + + +# --------------------------------------------------------------------------- +# Worker +# --------------------------------------------------------------------------- + +def _process_slot(args): + """Worker function: generate QA for one slot and save to disk. Returns result dict.""" + slot, seed, verbose, output_dir = args + start = time.time() + out_dir = Path(output_dir) + out_path = out_dir / f"{slot}.raw.json" + try: + result = run_pipeline(slot, seed=seed, verbose=False) + elapsed = time.time() - start + n_questions = len(result.get("qa_pairs", [])) + out_dir.mkdir(parents=True, exist_ok=True) + with open(out_path, "w") as f: + json.dump(result, f, indent=2, default=str) + return { + "slot": slot, + "status": "ok", + "questions": n_questions, + "elapsed": round(elapsed, 1), + } + except Exception as e: + elapsed = time.time() - start + return { + "slot": slot, + "status": "error", + "error": str(e), + "elapsed": round(elapsed, 1), + } + + +# --------------------------------------------------------------------------- +# Main +# --------------------------------------------------------------------------- + +def main(): + parser = argparse.ArgumentParser( + description="Generate raw QA for all annotated MEVA slots" + ) + parser.add_argument("--site", choices=["admin", "bus", "hospital", "school"], + help="Only process slots for this site") + parser.add_argument("--date", help="Only process slots for this date (e.g. 2018-03-11)") + parser.add_argument("-w", "--workers", type=int, default=8, + help="Parallel workers (default: 8)") + parser.add_argument("--seed", type=int, default=42) + parser.add_argument("--overwrite", action="store_true", + help="Re-process slots even if output already exists") + parser.add_argument("--dry-run", action="store_true", + help="List slots without running") + parser.add_argument("-v", "--verbose", action="store_true") + args = parser.parse_args() + + # Load slot index + if not SLOT_INDEX.exists(): + print(f"ERROR: slot index not found: {SLOT_INDEX}") + print(" Run: python3 -m scripts.v10.extract_logic_tuples --build-index") + sys.exit(1) + + with open(SLOT_INDEX) as f: + all_slots = list(json.load(f).keys()) + + # Filter + if args.site: + all_slots = [s for s in all_slots if s.endswith(f".{args.site}")] + if args.date: + all_slots = [s for s in all_slots if s.startswith(args.date)] + + all_slots.sort() + + # Skip already-done + RAW_OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + if not args.overwrite: + todo = [s for s in all_slots if not (RAW_OUTPUT_DIR / f"{s}.raw.json").exists()] + done_count = len(all_slots) - len(todo) + else: + todo = list(all_slots) + done_count = 0 + + from collections import Counter + site_counts = Counter(s.split(".")[-1] for s in todo) + + print(f"Slots total: {len(all_slots)}") + print(f"Already done: {done_count} (use --overwrite to redo)") + print(f"To process: {len(todo)}") + print(f"By site: {dict(site_counts)}") + print(f"Workers: {args.workers}") + print(f"Output: {RAW_OUTPUT_DIR}") + print() + + if args.dry_run: + for s in todo: + print(f" {s}") + return + + if not todo: + print("Nothing to do.") + return + + # Run + start_all = time.time() + ok, errors, total = 0, 0, len(todo) + error_list = [] + + worker_args = [(slot, args.seed, args.verbose, str(RAW_OUTPUT_DIR)) for slot in todo] + + print(f"Starting at {datetime.now().strftime('%H:%M:%S')} ...\n") + with ProcessPoolExecutor(max_workers=args.workers) as executor: + futures = {executor.submit(_process_slot, wa): wa[0] for wa in worker_args} + for i, future in enumerate(as_completed(futures), 1): + res = future.result() + if res["status"] == "ok": + ok += 1 + status_str = f"✓ {res['questions']:2d}q {res['elapsed']:5.1f}s" + else: + errors += 1 + error_list.append(res) + status_str = f"✗ ERROR: {res['error'][:60]}" + + pct = i / total * 100 + elapsed_total = time.time() - start_all + eta = (elapsed_total / i) * (total - i) if i > 0 else 0 + print(f" [{i:3d}/{total} {pct:5.1f}% ETA {eta/60:.1f}min] " + f"{res['slot']:45s} {status_str}") + + elapsed_total = time.time() - start_all + print(f"\n{'='*70}") + print(f"DONE | {ok} ok, {errors} errors | {elapsed_total/60:.1f} min total") + print(f"Output: {RAW_OUTPUT_DIR}") + + if error_list: + print(f"\nFailed slots ({errors}):") + for r in error_list: + print(f" {r['slot']}: {r['error']}") + + # Write error log + err_log = _OUTPUT / "qa_pairs" / "batch_errors.json" + with open(err_log, "w") as f: + json.dump({ + "timestamp": datetime.now().isoformat(), + "errors": error_list, + }, f, indent=2) + print(f"\nError log: {err_log}") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/batch_verify.py b/meva/scripts/v10/batch_verify.py new file mode 100644 index 0000000..e8c3f3b --- /dev/null +++ b/meva/scripts/v10/batch_verify.py @@ -0,0 +1,347 @@ +#!/usr/bin/env python3 +""" +batch_verify.py — Automated quality verification for batch-generated QA. + +Validates raw QA JSONs from batch_run_all_slots.py WITHOUT watching videos. +Runs structural, temporal-consistency, uniqueness, and statistical checks. + +Usage: + # Verify all raw outputs + python3 -m scripts.v10.batch_verify + + # Just temporal category + python3 -m scripts.v10.batch_verify --category temporal + + # Verbose per-slot details + python3 -m scripts.v10.batch_verify -v + + # Export report to file + python3 -m scripts.v10.batch_verify --report report.json +""" + +import argparse +import json +import os +import sys +from collections import Counter, defaultdict +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple + +_OUTPUT = Path( + os.environ.get("MEVA_OUTPUT_DIR") or + os.environ.get("OUTPUT_DIR") or + "/nas/neurosymbolic/multi-cam-dataset/meva/data" +) +RAW_DIR = _OUTPUT / "qa_pairs" / "raw" + + +# ============================================================================ +# Structural Checks (per question) +# ============================================================================ + +REQUIRED_FIELDS = { + "question_id", "category", "question_template", "options", + "correct_answer_index", "correct_answer", "requires_cameras", +} + +CATEGORIES = {"temporal", "event_ordering", "spatial", "summarization", + "counting", "best_camera"} + + +def _check_structure(q: Dict) -> List[str]: + """Return list of structural issues for one question.""" + issues = [] + missing = REQUIRED_FIELDS - set(q.keys()) + if missing: + issues.append(f"missing fields: {missing}") + + opts = q.get("options", []) + if not isinstance(opts, list) or len(opts) < 2: + issues.append(f"options invalid (got {type(opts).__name__} len={len(opts) if isinstance(opts, list) else '?'})") + + idx = q.get("correct_answer_index") + if isinstance(idx, int) and isinstance(opts, list): + if idx < 0 or idx >= len(opts): + issues.append(f"correct_answer_index={idx} OOB (options len={len(opts)})") + elif q.get("correct_answer") != opts[idx]: + issues.append(f"correct_answer mismatch: '{q.get('correct_answer')[:40]}' vs opts[{idx}]='{opts[idx][:40]}'") + + cat = q.get("category", "") + if cat not in CATEGORIES: + issues.append(f"unknown category: {cat}") + + cams = q.get("requires_cameras", []) + if not cams: + issues.append("no cameras listed") + + return issues + + +# ============================================================================ +# Temporal-Specific Checks +# ============================================================================ + +def _check_temporal(q: Dict) -> List[str]: + """Check temporal ordering correctness from verification block.""" + issues = [] + v = q.get("verification", {}) + if not v: + issues.append("no verification block") + return issues + + ea = v.get("event_a", {}) + eb = v.get("event_b", {}) + gap = v.get("gap_sec") + + if not ea or not eb: + issues.append("missing event_a/event_b in verification") + return issues + + # Event A should end before Event B starts + a_end = ea.get("end_sec") + b_start = eb.get("start_sec") + if a_end is not None and b_start is not None: + if a_end > b_start: + issues.append(f"temporal overlap: event_a ends at {a_end:.1f}s but event_b starts at {b_start:.1f}s") + + # Gap should be positive and ≤15s (FALLBACK_MAX_GAP) + if gap is not None: + if gap <= 0: + issues.append(f"non-positive gap: {gap}s") + elif gap > 15: + issues.append(f"gap exceeds max: {gap}s > 15s") + + # Events should be on different cameras + if ea.get("camera") == eb.get("camera"): + issues.append(f"same camera: {ea.get('camera')}") + + # Descriptions should be different + if ea.get("description") and ea.get("description") == eb.get("description"): + issues.append(f"identical descriptions: '{ea['description'][:50]}'") + + return issues + + +# ============================================================================ +# Event Ordering Checks +# ============================================================================ + +def _check_event_ordering(q: Dict) -> List[str]: + """Check event ordering chain consistency.""" + issues = [] + v = q.get("verification", {}) + chain = v.get("event_chain", v.get("chain", [])) + if not chain: + return issues + + # Chain should be chronologically ordered + for i in range(len(chain) - 1): + t_curr = chain[i].get("end_sec") or chain[i].get("start_sec", 0) + t_next = chain[i + 1].get("start_sec", 0) + if t_curr > t_next + 1.0: # 1s tolerance + issues.append(f"chain out of order at step {i}: {t_curr:.1f}s > {t_next:.1f}s") + + return issues + + +# ============================================================================ +# Description Uniqueness (cross-check) +# ============================================================================ + +def _check_uniqueness(q: Dict) -> List[str]: + """Check that descriptions in options are sufficiently distinct.""" + issues = [] + opts = q.get("options", []) + if len(opts) != len(set(opts)): + dupes = [o for o in opts if opts.count(o) > 1] + issues.append(f"duplicate options: {dupes[:2]}") + + # For temporal: check event descriptions aren't identical + v = q.get("verification", {}) + ea_desc = v.get("event_a", {}).get("description", "") + eb_desc = v.get("event_b", {}).get("description", "") + if ea_desc and eb_desc and ea_desc == eb_desc: + issues.append(f"event descriptions identical: '{ea_desc[:50]}'") + + return issues + + +# ============================================================================ +# Aggregate Statistics +# ============================================================================ + +def verify_all(raw_dir: Path, category_filter: Optional[str] = None, + verbose: bool = False) -> Dict[str, Any]: + """Run all verification checks on raw QA outputs. + + Returns a report dict with counts, issues, and statistics. + """ + files = sorted(raw_dir.glob("*.raw.json")) + if not files: + print(f"No raw QA files found in {raw_dir}") + return {"error": "no files found"} + + total_qs = 0 + total_issues = 0 + total_slots = len(files) + slots_with_issues = 0 + category_counts = Counter() + category_issues = defaultdict(int) + issue_types = Counter() + questions_per_slot = [] + slots_zero_qs = [] + all_issues_detail = [] + temporal_gaps = [] + temporal_formats = Counter() + + for fpath in files: + slot = fpath.stem.replace(".raw", "") + try: + with open(fpath) as f: + data = json.load(f) + except Exception as e: + if verbose: + print(f" ERROR reading {fpath.name}: {e}") + slots_with_issues += 1 + continue + + qa_pairs = data.get("qa_pairs", []) + if category_filter: + qa_pairs = [q for q in qa_pairs if q.get("category") == category_filter] + + questions_per_slot.append(len(qa_pairs)) + if len(qa_pairs) == 0: + slots_zero_qs.append(slot) + + slot_issues = [] + for q in qa_pairs: + total_qs += 1 + cat = q.get("category", "unknown") + category_counts[cat] += 1 + + issues = _check_structure(q) + issues += _check_uniqueness(q) + + if cat == "temporal": + issues += _check_temporal(q) + # Collect temporal stats + v = q.get("verification", {}) + gap = v.get("gap_sec") + if gap is not None: + temporal_gaps.append(gap) + fmt = q.get("debug_info", {}).get("question_format", "unknown") + temporal_formats[fmt] += 1 + + elif cat == "event_ordering": + issues += _check_event_ordering(q) + + if issues: + total_issues += len(issues) + category_issues[cat] += len(issues) + for iss in issues: + issue_types[iss.split(":")[0]] += 1 + slot_issues.append({ + "question_id": q.get("question_id", "?"), + "category": cat, + "issues": issues, + }) + + if slot_issues: + slots_with_issues += 1 + all_issues_detail.append({"slot": slot, "issues": slot_issues}) + if verbose: + print(f" {slot}: {len(slot_issues)} questions with issues") + for si in slot_issues: + for iss in si["issues"]: + print(f" {si['question_id']}: {iss}") + + # Statistics + avg_qs = sum(questions_per_slot) / len(questions_per_slot) if questions_per_slot else 0 + temporal_avg_gap = sum(temporal_gaps) / len(temporal_gaps) if temporal_gaps else 0 + + report = { + "summary": { + "total_slots": total_slots, + "total_questions": total_qs, + "avg_questions_per_slot": round(avg_qs, 1), + "slots_with_zero_questions": len(slots_zero_qs), + "slots_with_issues": slots_with_issues, + "total_issues": total_issues, + "pass_rate_pct": round( + (total_qs - sum(1 for d in all_issues_detail for q in d["issues"])) + / total_qs * 100 if total_qs else 0, 1 + ), + }, + "category_counts": dict(category_counts), + "category_issues": dict(category_issues), + "issue_types": dict(issue_types.most_common(20)), + "temporal_stats": { + "count": category_counts.get("temporal", 0), + "avg_gap_sec": round(temporal_avg_gap, 2), + "min_gap_sec": round(min(temporal_gaps), 2) if temporal_gaps else None, + "max_gap_sec": round(max(temporal_gaps), 2) if temporal_gaps else None, + "formats": dict(temporal_formats), + }, + "zero_question_slots": slots_zero_qs[:20], # first 20 + "zero_question_count": len(slots_zero_qs), + "issues_detail": all_issues_detail[:50], # first 50 slots with issues + } + return report + + +def main(): + parser = argparse.ArgumentParser(description="Verify batch QA output quality") + parser.add_argument("--dir", type=str, default=str(RAW_DIR), + help=f"Directory with raw JSON files (default: {RAW_DIR})") + parser.add_argument("--category", choices=list(CATEGORIES), + help="Only verify questions of this category") + parser.add_argument("-v", "--verbose", action="store_true") + parser.add_argument("--report", type=str, + help="Save report JSON to this path") + args = parser.parse_args() + + raw_dir = Path(args.dir) + print(f"Verifying raw QA in: {raw_dir}") + print(f"Category filter: {args.category or 'all'}\n") + + report = verify_all(raw_dir, category_filter=args.category, verbose=args.verbose) + + if "error" in report: + sys.exit(1) + + # Print summary + s = report["summary"] + print(f"\n{'=' * 60}") + print(f"VERIFICATION REPORT") + print(f"{'=' * 60}") + print(f"Slots: {s['total_slots']}") + print(f"Questions: {s['total_questions']} ({s['avg_questions_per_slot']} avg/slot)") + print(f"Zero-Q slots:{s['slots_with_zero_questions']}") + print(f"Pass rate: {s['pass_rate_pct']}%") + print(f"Issues: {s['total_issues']} across {s['slots_with_issues']} slots") + + print(f"\nCategory breakdown:") + for cat, cnt in sorted(report["category_counts"].items()): + iss = report["category_issues"].get(cat, 0) + print(f" {cat:25s}: {cnt:4d} questions, {iss} issues") + + ts = report.get("temporal_stats", {}) + if ts.get("count"): + print(f"\nTemporal stats:") + print(f" Count: {ts['count']}") + print(f" Gap: {ts['avg_gap_sec']}s avg, {ts['min_gap_sec']}-{ts['max_gap_sec']}s range") + print(f" Formats: {ts['formats']}") + + if report["issue_types"]: + print(f"\nTop issue types:") + for iss, cnt in list(report["issue_types"].items())[:10]: + print(f" {cnt:4d}x {iss}") + + if args.report: + with open(args.report, "w") as f: + json.dump(report, f, indent=2, default=str) + print(f"\nFull report saved: {args.report}") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/extract_entity_descriptions.py b/meva/scripts/v10/extract_entity_descriptions.py index 46263f9..8bf8c89 100644 --- a/meva/scripts/v10/extract_entity_descriptions.py +++ b/meva/scripts/v10/extract_entity_descriptions.py @@ -1074,9 +1074,11 @@ def process_slot(slot: str, method: str = "segformer", if not crops: continue - # Two-tier analysis: use SegFormer for large crops, color-only for small + # Run SegFormer on ALL actors regardless of size. + # Safety layers handle small crops: internal skip <15x8px, + # MIN_REGION_PIXELS=50 for color extraction, confidence filtering. avg_h = float(np.mean([c.shape[0] for c in crops])) - if method == "segformer" and avg_h >= MIN_BBOX_HEIGHT: + if method == "segformer": attrs = analyze_crops_segformer(crops) segformer_count += 1 elif method == "yolo": diff --git a/meva/scripts/v10/generate_event_ordering.py b/meva/scripts/v10/generate_event_ordering.py index 12915ca..988f239 100644 --- a/meva/scripts/v10/generate_event_ordering.py +++ b/meva/scripts/v10/generate_event_ordering.py @@ -212,61 +212,57 @@ def _find_ordering_groups(events: List[Event], sg: SceneGraph, if len(unique_events) < MIN_EVENTS: return [] - # Issue 5: Keep only the FIRST (earliest) instance per (activity, camera). - # Continuous activities must use their first instance to avoid misleading - # temporal comparisons (e.g., talking from t=10 to t=200 should use t=10). + # Issue 5 (refined): For LONG-DURATION events (>30s), keep only the first + # instance per (activity, camera) to avoid misleading temporal comparisons + # (e.g., "talking" annotated from t=10 to t=200 should use t=10). + # Short events (<30s) are kept as-is since they represent distinct actions + # even when the same activity type repeats on the same camera. + LONG_DURATION_THRESHOLD_SEC = 30.0 first_instance: Dict[Tuple[str, str], Event] = {} + deduped_events: List[Event] = [] for evt in unique_events: - key = (evt.activity, evt.camera_id) - if key not in first_instance or evt.start_sec < first_instance[key].start_sec: - first_instance[key] = evt + if evt.duration_sec > LONG_DURATION_THRESHOLD_SEC: + key = (evt.activity, evt.camera_id) + if key not in first_instance or evt.start_sec < first_instance[key].start_sec: + first_instance[key] = evt + else: + deduped_events.append(evt) + deduped_events.extend(first_instance.values()) # Skip events in the first 5 seconds (camera stabilization period) - unique_events = [e for e in first_instance.values() if e.start_sec >= 5.0] + unique_events = [e for e in deduped_events if e.start_sec >= 5.0] unique_events.sort(key=lambda e: e.start_sec) if len(unique_events) < MIN_EVENTS: return [] - # Build candidate groups using a sliding-window + greedy approach - # For each starting event, try to build a chain of 3-4 events with gaps - groups: List[Tuple[float, List[Event]]] = [] # (score, events) + # Build candidate groups using COMBINATORIAL enumeration. + # For each subset of 3 or 4 events, check all ordering constraints and + # score the group. This explores all possible combinations instead of + # greedily committing to the first qualifying next event. + # With typical slot sizes of 20-60 events, C(60,4) = 487,635 which is fast. + groups: List[Tuple[float, List[Event]]] = [] seen_group_keys: Set[Tuple[str, ...]] = set() - for start_idx in range(len(unique_events)): - # Try to build chains of length 3 and 4 - for chain_len in (MAX_EVENTS, MIN_EVENTS): - chain = [unique_events[start_idx]] + # Cap to avoid excessive computation on very large slots + MAX_EVENTS_FOR_COMBO = 80 + events_to_search = unique_events[:MAX_EVENTS_FOR_COMBO] - for next_idx in range(start_idx + 1, len(unique_events)): - if len(chain) >= chain_len: - break - candidate = unique_events[next_idx] - last = chain[-1] - - # Must have clear temporal gap (2-10 seconds) - gap = candidate.start_sec - last.end_sec - if gap < MIN_GAP_SEC: - continue - if gap > MAX_GAP_SEC: - continue - - # Prefer cross-camera: skip same-camera if we already have - # an event on that camera AND we haven't reached min cameras - chain_cameras = set(e.camera_id for e in chain) - if (candidate.camera_id in chain_cameras - and len(chain_cameras) < 2 - and len(chain) >= 2): - continue - - # Issue 6: Cross-camera event dedup — skip if candidate - # is a likely duplicate of any event already in the chain - if any(_is_likely_duplicate_event(candidate, existing, sg) - for existing in chain): - continue + for chain_len in (MAX_EVENTS, MIN_EVENTS): + if len(events_to_search) < chain_len: + continue - chain.append(candidate) + for combo in itertools.combinations(range(len(events_to_search)), chain_len): + chain = [events_to_search[i] for i in combo] + # Events are already sorted by start_sec (combo indices are ascending) - if len(chain) < chain_len: + # Check consecutive gaps are within [MIN_GAP_SEC, MAX_GAP_SEC] + valid_gaps = True + for k in range(len(chain) - 1): + gap = chain[k + 1].start_sec - chain[k].end_sec + if gap < MIN_GAP_SEC or gap > MAX_GAP_SEC: + valid_gaps = False + break + if not valid_gaps: continue # Require at least 2 cameras @@ -279,6 +275,19 @@ def _find_ordering_groups(events: List[Event], sg: SceneGraph, if len(chain_activities) < len(chain) - 1: continue + # Cross-camera event dedup — skip if any pair in the chain + # is a likely duplicate (same real-world event seen by 2 cams) + has_dup = False + for k in range(len(chain)): + for m in range(k + 1, len(chain)): + if _is_likely_duplicate_event(chain[k], chain[m], sg): + has_dup = True + break + if has_dup: + break + if has_dup: + continue + # De-duplicate by group key (sorted event_ids) gkey = tuple(sorted(e.event_id for e in chain)) if gkey in seen_group_keys: diff --git a/meva/scripts/v10/generate_numerical.py b/meva/scripts/v10/generate_numerical.py index 39ed677..b7c8e7c 100644 --- a/meva/scripts/v10/generate_numerical.py +++ b/meva/scripts/v10/generate_numerical.py @@ -17,7 +17,7 @@ import random from collections import Counter, defaultdict -from typing import Any, Dict, List, Set, Tuple +from typing import Any, Dict, List, Optional, Set, Tuple from .parse_annotations import Event from .build_scene_graph import SceneGraph, Entity @@ -104,8 +104,24 @@ def _build_options(correct: int, rng: random.Random) -> Tuple[List[str], int]: # Candidate Builders # ============================================================================ +def _get_entity_cluster(event: Event, sg: SceneGraph, resolved) -> Optional[str]: + """Get the entity cluster ID for an event's primary actor, if resolved. + + Returns the cluster_id if the actor is in a known cluster, else None. + """ + if resolved is None or sg is None: + return None + for actor in event.actors: + entity_id = f"{event.camera_id}_actor_{actor['actor_id']}" + for cluster in resolved.entity_clusters: + if entity_id in cluster.entities: + return cluster.cluster_id + return None + + def _dedup_activity_count(events_for_activity: list, - sg: SceneGraph = None) -> Tuple[int, List[str], List[Dict]]: + sg: SceneGraph = None, + resolved=None) -> Tuple[int, List[str], List[Dict]]: """Count distinct instances of an activity with cross-camera temporal dedup. Events on DIFFERENT cameras whose start_sec is within ±2 seconds are @@ -116,6 +132,11 @@ def _dedup_activity_count(events_for_activity: list, window is widened to ±8 seconds since the same event is very likely to appear in both cameras with some annotation timing variation. + Entity identity guard: If two events' actors are in KNOWN DIFFERENT + entity clusters (i.e., confirmed different people), they are NOT deduped + even if they pass the time/position checks. This prevents false dedup + of genuinely different people doing the same activity simultaneously. + Issue 6: Also uses 3D position matching when available for more accurate dedup. Issue 10: Returns cluster details for key_frames in QA output. @@ -145,6 +166,14 @@ def _dedup_activity_count(events_for_activity: list, if abs(evt.start_sec - c_evt.start_sec) > time_window: continue + # Entity identity guard: if both actors are in KNOWN + # DIFFERENT clusters, they are different people — skip dedup + cluster_evt = _get_entity_cluster(evt, sg, resolved) + cluster_cevt = _get_entity_cluster(c_evt, sg, resolved) + if (cluster_evt is not None and cluster_cevt is not None + and cluster_evt != cluster_cevt): + continue # Confirmed different people + # Issue 6: 3D position check when available # Skip 3D check for overlapping cameras (same FOV = same location) if (_HAS_3D_DEDUP and sg is not None @@ -190,7 +219,7 @@ def _dedup_activity_count(events_for_activity: list, return len(clusters), all_ids, cluster_details -def _activity_counting_candidates(sg: SceneGraph) -> List[Dict]: +def _activity_counting_candidates(sg: SceneGraph, resolved=None) -> List[Dict]: """ For each activity type, count event instances across all cameras with cross-camera temporal deduplication (±2 s). @@ -205,7 +234,7 @@ def _activity_counting_candidates(sg: SceneGraph) -> List[Dict]: candidates = [] for act, evts in activity_groups.items(): - cnt, event_ids, cluster_details = _dedup_activity_count(evts, sg) + cnt, event_ids, cluster_details = _dedup_activity_count(evts, sg, resolved) if cnt < MIN_COUNT or cnt > MAX_COUNT: continue candidates.append({ @@ -373,7 +402,7 @@ def generate_numerical_qa( # 1. Collect all candidates from three subtypes # ------------------------------------------------------------------ all_candidates: List[Dict] = [] - all_candidates.extend(_activity_counting_candidates(sg)) + all_candidates.extend(_activity_counting_candidates(sg, resolved)) if not all_candidates: if verbose: diff --git a/meva/scripts/v10/generate_spatial.py b/meva/scripts/v10/generate_spatial.py index 6d4ac9a..2dd6375 100644 --- a/meva/scripts/v10/generate_spatial.py +++ b/meva/scripts/v10/generate_spatial.py @@ -36,7 +36,7 @@ FRAME_EDGE_MARGIN = 10 # pixels # Sampling: sample every N frames for distance computation -SAMPLE_EVERY = 30 # ~1 second at 30fps +SAMPLE_EVERY = 15 # ~0.5 second at 30fps (finer than 30 to catch brief encounters) # Cross-paths threshold: if minimum distance <= this, entities "cross paths" CROSS_PATHS_THRESHOLD_M = 2.0 @@ -123,25 +123,30 @@ def _compute_closest_approach( bboxes_a: Dict[int, List[int]], bboxes_b: Dict[int, List[int]], camera_model: CameraModel, -) -> Tuple[Optional[float], Optional[int], Optional[List[int]], Optional[List[int]]]: +) -> Tuple[Optional[float], Optional[int], Optional[List[int]], Optional[List[int]], + Optional[List[Tuple[int, float, List[int], List[int]]]]]: """Compute closest approach between two entities on the same camera. Finds the frame where the 3D distance between the two entities is minimized across their overlapping time window. - Returns: (min_distance_m, closest_frame, bbox_a_at_frame, bbox_b_at_frame) - or (None, None, None, None) if no valid overlap. + Returns: (min_distance_m, closest_frame, bbox_a_at_frame, bbox_b_at_frame, + distance_trajectory) + distance_trajectory is a list of (frame, distance_m, bbox_a, bbox_b) tuples + in chronological order, used for cross-paths verification. + Returns (None, None, None, None, None) if no valid overlap. """ - # Find overlapping frames (both actors have bboxes) + # Collect all frame pairs (exact or nearest-neighbor matched) frames_a = set(bboxes_a.keys()) frames_b = set(bboxes_b.keys()) common_frames = sorted(frames_a & frames_b) - if not common_frames: + frame_pairs: List[Tuple[int, int]] = [] + if common_frames: + frame_pairs = [(f, f) for f in common_frames] + else: # No exact frame matches - try nearest-neighbor matching - # within a tolerance of 2*SAMPLE_EVERY frames tolerance = 2 * SAMPLE_EVERY - paired_frames = [] sorted_b = sorted(frames_b) for fa in sorted(frames_a): best_fb = None @@ -154,47 +159,20 @@ def _compute_closest_approach( if fb > fa + tolerance: break if best_fb is not None and best_dist <= tolerance: - paired_frames.append((fa, best_fb)) - - if not paired_frames: - return None, None, None, None - - min_dist = float('inf') - closest_frame = None - closest_bbox_a = None - closest_bbox_b = None - - for fa, fb in paired_frames: - ba = bboxes_a[fa] - bb = bboxes_b[fb] - if _is_bbox_clipping_frame(ba) or _is_bbox_clipping_frame(bb): - continue - pos_a = camera_model.bbox_foot_to_world(ba) - pos_b = camera_model.bbox_foot_to_world(bb) - if pos_a is None or pos_b is None: - continue - dist = float(np.linalg.norm(pos_a - pos_b)) - if dist > MAX_REASONABLE_DISTANCE_M: - continue - if dist < min_dist: - min_dist = dist - closest_frame = fa - closest_bbox_a = ba - closest_bbox_b = bb - - if closest_frame is None: - return None, None, None, None - return min_dist, closest_frame, closest_bbox_a, closest_bbox_b + frame_pairs.append((fa, best_fb)) + + if not frame_pairs: + return None, None, None, None, None - # Common frames exist - compute distance at each min_dist = float('inf') closest_frame = None closest_bbox_a = None closest_bbox_b = None + trajectory: List[Tuple[int, float, List[int], List[int]]] = [] - for frame in common_frames: - ba = bboxes_a[frame] - bb = bboxes_b[frame] + for fa, fb in sorted(frame_pairs): + ba = bboxes_a[fa] + bb = bboxes_b[fb] if _is_bbox_clipping_frame(ba) or _is_bbox_clipping_frame(bb): continue pos_a = camera_model.bbox_foot_to_world(ba) @@ -204,15 +182,81 @@ def _compute_closest_approach( dist = float(np.linalg.norm(pos_a - pos_b)) if dist > MAX_REASONABLE_DISTANCE_M: continue + trajectory.append((fa, dist, ba, bb)) if dist < min_dist: min_dist = dist - closest_frame = frame + closest_frame = fa closest_bbox_a = ba closest_bbox_b = bb if closest_frame is None: - return None, None, None, None - return min_dist, closest_frame, closest_bbox_a, closest_bbox_b + return None, None, None, None, None + return min_dist, closest_frame, closest_bbox_a, closest_bbox_b, trajectory + + +# Threshold for "far enough" that the entities are clearly separated +# before/after the close encounter (used for cross-paths verification) +_CROSS_PATHS_FAR_THRESHOLD_M = 5.0 + + +def _is_true_crossing( + trajectory: List[Tuple[int, float, List[int], List[int]]], + min_dist: float, +) -> bool: + """Verify that a cross-paths encounter is a true crossing: + entities approach from separate positions, pass very close (<=2m), + and separate again — with their bbox horizontal centers swapping + relative position (A was left of B, then A is right of B, or vice versa). + + Requirements: + 1. min_dist <= CROSS_PATHS_THRESHOLD_M (already checked by caller) + 2. Distance goes from >5m to <=2m and back to >5m (far→close→far) + 3. Bbox horizontal centers swap relative order across the encounter + """ + if not trajectory or len(trajectory) < 3: + return False + + # Find the index of the closest approach + min_idx = min(range(len(trajectory)), key=lambda i: trajectory[i][1]) + + # Check far→close: is there a frame BEFORE the closest approach where + # distance > _CROSS_PATHS_FAR_THRESHOLD_M? + far_before = any(trajectory[i][1] > _CROSS_PATHS_FAR_THRESHOLD_M + for i in range(min_idx)) + # Check close→far: is there a frame AFTER the closest approach where + # distance > _CROSS_PATHS_FAR_THRESHOLD_M? + far_after = any(trajectory[i][1] > _CROSS_PATHS_FAR_THRESHOLD_M + for i in range(min_idx + 1, len(trajectory))) + + if not (far_before and far_after): + return False + + # Check bbox horizontal center swap: + # Before the encounter, A is left/right of B. + # After the encounter, A should be on the opposite side. + def _bbox_center_x(bbox): + return (bbox[0] + bbox[2]) / 2.0 + + # Use the first frame where distance > far threshold (before encounter) + pre_frame = None + for i in range(min_idx): + if trajectory[i][1] > _CROSS_PATHS_FAR_THRESHOLD_M: + pre_frame = trajectory[i] + # Use the last frame where distance > far threshold (after encounter) + post_frame = None + for i in range(len(trajectory) - 1, min_idx, -1): + if trajectory[i][1] > _CROSS_PATHS_FAR_THRESHOLD_M: + post_frame = trajectory[i] + + if pre_frame is None or post_frame is None: + return False + + # Compare horizontal positions: did A and B swap sides? + pre_diff = _bbox_center_x(pre_frame[2]) - _bbox_center_x(pre_frame[3]) # A_x - B_x + post_diff = _bbox_center_x(post_frame[2]) - _bbox_center_x(post_frame[3]) # A_x - B_x + + # Sign change = they swapped horizontal position + return (pre_diff > 0) != (post_diff > 0) # ============================================================================ @@ -304,10 +348,11 @@ def _find_spatial_candidates(sg: SceneGraph, verbose: bool = False) -> List[Dict if overlap_end <= overlap_start: continue # no temporal overlap - # Compute closest approach - min_dist, closest_frame, bbox_a, bbox_b = _compute_closest_approach( + # Compute closest approach + trajectory + result = _compute_closest_approach( bboxes_a, bboxes_b, model ) + min_dist, closest_frame, bbox_a, bbox_b, trajectory = result if min_dist is None: continue @@ -315,8 +360,13 @@ def _find_spatial_candidates(sg: SceneGraph, verbose: bool = False) -> List[Dict # Classify proximity proximity = classify_proximity(min_dist) - # Check if entities cross paths (very close approach) - crosses_paths = min_dist <= CROSS_PATHS_THRESHOLD_M + # Check if entities truly cross paths: + # min_dist <= 2m AND far→close→far AND bbox positions swap + crosses_paths = ( + min_dist <= CROSS_PATHS_THRESHOLD_M + and trajectory is not None + and _is_true_crossing(trajectory, min_dist) + ) candidates.append({ "entity_a": ent_a.entity_id, @@ -510,19 +560,21 @@ def _try_add(c, selected_list): continue question = ( - f"How close do {desc_a} and {desc_b} come to each other in the scene?" + f"How do {desc_a} and {desc_b} move relative to each other in the scene?" ) - # Build options - crosses_paths is the "special" answer + # Build options — A/D are clearly distinct: + # A = they end up near each other (approach/converge) + # D = they walk past each other and swap positions (true crossing) options = [ - "They come close together (within a few meters)", + "They approach and stay near each other (within a few meters)", "They stay at a moderate distance (5-15 meters apart)", "They remain far apart (more than 15 meters)", - "They cross paths (pass very close to each other)", + "They walk past each other, swapping positions (cross paths)", ] if crosses: - correct_idx = 3 # cross paths + correct_idx = 3 # true crossing: far→close→far with position swap elif proximity == "near": correct_idx = 0 elif proximity == "moderate": diff --git a/meva/scripts/v10/generate_temporal.py b/meva/scripts/v10/generate_temporal.py index dd4c9b6..c3021a3 100644 --- a/meva/scripts/v10/generate_temporal.py +++ b/meva/scripts/v10/generate_temporal.py @@ -1,10 +1,17 @@ """ -V8 generate_temporal.py — Temporal cross-camera questions with MEVID person descriptions. - -V8 CHANGES from V7: -- Entity aliases replaced with MEVID person descriptions when available -- Questions prioritize events involving described persons -- Description-enriched question text for better naturalization +V10 generate_temporal.py — Multi-camera temporal cross-camera questions. + +V10 CHANGES from V8: +- REMOVED entity-cluster linkage as scoring factor — + deliberately pairs unrelated events across different cameras so VLMs + can't "cheat" by inferring causal/narrative answers. +- Scoring now driven by CAMERA PROXIMITY: adjacent cameras at the same + site get highest priority (events *require* multi-camera reasoning). +- Added "What happened before/after X?" question format (alongside + "which occurred first?") to match ego-exo4d/agibot breadth. +- Uses new camera_proximity utility for indoor-aware spatial reasoning, + including cameras without KRTD (admin, school hallways, bus indoor). +- Connection type metadata preserved for debug but not used for selection. """ import random @@ -26,6 +33,15 @@ from .utils.krtd import load_camera_model, CameraModel, INDOOR_CAMERAS from .utils.yaml_stream import get_bbox_at_frame +# Camera proximity (new V10) — graceful degradation +try: + from .utils.camera_proximity import ( + score_camera_pair_for_temporal, get_proximity_tier, + ) + _HAS_PROXIMITY = True +except ImportError: + _HAS_PROXIMITY = False + # Scene context (optional — graceful degradation) try: from .scene_context import get_scene_context, enrich_description_with_location @@ -38,8 +54,8 @@ # ============================================================================ MIN_GAP = 1.0 -MAX_GAP = 15.0 -FALLBACK_MAX_GAP = 20.0 +MAX_GAP = 10.0 +FALLBACK_MAX_GAP = 15.0 DEFAULT_FPS = 30.0 # Cross-camera duplicate detection: if two events have same activity, # 3D positions within this distance AND time within this window, @@ -179,13 +195,21 @@ def _event_has_visible_bbox(event: Event, sg: SceneGraph) -> bool: # ============================================================================ -# Connection Scoring (from V7, unchanged) +# Connection Scoring (V10: camera-proximity-driven, entity-cluster removed) # ============================================================================ def _score_connection(event_a: Event, event_b: Event, sg: SceneGraph, resolved: ResolvedGraph, mevid_person_cameras: Dict[int, Set[str]]) -> Dict: - """Score connection strength between two events.""" + """Score connection strength between two cross-camera events. + + V10 philosophy: Score is driven by CAMERA PROXIMITY, not entity linkage. + Adjacent cameras at the same site produce the best multi-camera temporal + questions. Entity-cluster and activity-relationship info is recorded in + metadata for debugging but does NOT influence the score — we deliberately + want unrelated event pairs so VLMs can't shortcut the answer via causal + reasoning. + """ score = 0.0 connection_type = "unrelated" connection_strength = "weak" @@ -193,11 +217,28 @@ def _score_connection(event_a: Event, event_b: Event, mevid_person_id = None relationship = None cluster_id = None - - for cluster in resolved.entity_clusters: + proximity_tier = None + + # Primary scoring signal: camera spatial proximity + if _HAS_PROXIMITY: + proximity_score = score_camera_pair_for_temporal( + event_a.camera_id, event_b.camera_id + ) + proximity_tier = get_proximity_tier(event_a.camera_id, event_b.camera_id) + score += proximity_score + else: + # Fallback: any cross-camera pair on same site gets base score + score += 1.0 + + # Bonus: different activities = more interesting question (harder to guess) + if event_a.activity != event_b.activity: + score += 1.0 + + # Record (but do NOT score) entity cluster linkage — metadata only + for cluster_obj in resolved.entity_clusters: a_entities = set() b_entities = set() - for eid in cluster.entities: + for eid in cluster_obj.entities: entity = sg.entities.get(eid) if not entity: continue @@ -211,30 +252,31 @@ def _score_connection(event_a: Event, event_b: Event, b_entities.add(eid) if a_entities and b_entities: connection_type = "same_entity_cluster" - connection_strength = "strong" - score += 3.0 - cluster_id = cluster.cluster_id + cluster_id = cluster_obj.cluster_id break - + + # Record (but do NOT score) activity relationships — metadata only rel = get_relationship(event_a.activity, event_b.activity) if rel: relationship = rel - rel_score = get_relationship_strength(event_a.activity, event_b.activity) - score += rel_score * 2.0 if connection_type == "unrelated": connection_type = f"related_activities_{rel}" - connection_strength = "medium" if rel_score >= 0.7 else "weak" - + + # Record MEVID validation — metadata only (no score bonus) for pid, cameras in mevid_person_cameras.items(): if event_a.camera_id in cameras and event_b.camera_id in cameras: mevid_validated = True mevid_person_id = pid - score += 1.5 break - - if event_a.activity != event_b.activity: - score += 0.5 - + + # Derive connection_strength from proximity tier (for debug display) + if proximity_tier == "adjacent": + connection_strength = "strong" + elif proximity_tier == "same_site": + connection_strength = "medium" + else: + connection_strength = "weak" + return { "connection_type": connection_type, "connection_strength": connection_strength, @@ -243,6 +285,7 @@ def _score_connection(event_a: Event, event_b: Event, "mevid_person_id": mevid_person_id, "relationship": relationship, "cluster_id": cluster_id, + "proximity_tier": proximity_tier, } @@ -380,6 +423,56 @@ def _short_option_label(desc: str, activity: str) -> str: return label +# ============================================================================ +# Uniqueness Gate +# ============================================================================ + +DESC_UNIQUENESS_LONG_EVENT_SEC = 30.0 # align with event_ordering first-instance threshold + + +def _build_uniqueness_index( + events: List[Event], sg: SceneGraph, entity_descs: Dict[str, str], + fallback_eids: Optional[Set[str]] = None, +) -> Dict[Tuple[str, str], int]: + """Build index of how many visually-indistinguishable entities share the + same (camera, activity). Returns {(camera_id, activity): count_of_entities} + where count > 1 means ambiguity. + + Two entities on the same camera doing the same activity are ambiguous if + their descriptions are identical (or both missing). + """ + # (camera, activity) -> set of descriptions seen + cam_act_descs: Dict[Tuple[str, str], Dict[str, int]] = {} + + for evt in events: + key = (evt.camera_id, evt.activity) + if key not in cam_act_descs: + cam_act_descs[key] = {} + for actor in evt.actors: + eid = f"{evt.camera_id}_actor_{actor['actor_id']}" + desc = entity_descs.get(eid, "") + if not desc or desc in ("a person", "a vehicle", "someone"): + desc = "__generic__" + cam_act_descs[key][desc] = cam_act_descs[key].get(desc, 0) + 1 + + # For each (cam, activity), record the max entity count sharing one description + ambiguity: Dict[Tuple[str, str], int] = {} + for key, desc_counts in cam_act_descs.items(): + ambiguity[key] = max(desc_counts.values()) if desc_counts else 0 + return ambiguity + + +def _event_is_unique( + event: Event, sg: SceneGraph, entity_descs: Dict[str, str], + uniqueness_index: Dict[Tuple[str, str], int], +) -> bool: + """Return True if this event's (camera, activity, description) combination + is unambiguous — no other entity on the same camera does the same activity + with an indistinguishable description.""" + key = (event.camera_id, event.activity) + return uniqueness_index.get(key, 0) <= 1 + + # ============================================================================ # Candidate Selection # ============================================================================ @@ -393,16 +486,25 @@ def _find_temporal_candidates(events: List[Event], sg: SceneGraph, V10 additions: - Rejects pairs that are likely the same real-world event (cross-camera dedup) - Rejects events whose actors have bbox clipping the frame edge + - First-instance filter only for long events (>30s), aligning with event_ordering """ - # Issue 5: Pre-filter — keep only the FIRST (earliest) instance - # per (activity, camera) for temporal ordering accuracy. + # First-instance filter: only for long-duration events (>30s). + # Short discrete actions (<30s) may be genuinely different occurrences + # by different people, so they're preserved — the uniqueness gate + # handles ambiguity at selection time. first_instance: Dict[Tuple[str, str], Event] = {} + short_events: List[Event] = [] for evt in events: - key = (evt.activity, evt.camera_id) - if key not in first_instance or evt.start_sec < first_instance[key].start_sec: - first_instance[key] = evt + if evt.duration_sec > DESC_UNIQUENESS_LONG_EVENT_SEC: + key = (evt.activity, evt.camera_id) + if key not in first_instance or evt.start_sec < first_instance[key].start_sec: + first_instance[key] = evt + else: + short_events.append(evt) + # Merge: first instances of long events + all short events + merged = list(first_instance.values()) + short_events # Skip events in the first 5 seconds (camera stabilization period) - events = [e for e in first_instance.values() if e.start_sec >= 5.0] + events = [e for e in merged if e.start_sec >= 5.0] events.sort(key=lambda e: e.start_sec) candidates = [] @@ -467,39 +569,84 @@ def _event_has_visual_desc(event: Event, sg: SceneGraph, return False +# ============================================================================ +# Question Format Builders (V10) +# ============================================================================ + +def _build_which_first_question( + desc_a: str, desc_b: str, short_a: str, short_b: str, + rng: random.Random, +) -> Tuple[str, List[str], int]: + """Build a 'which occurred first?' question (original V8 format). + + Returns (question_text, options_list, correct_answer_index). + event_a is always the one that occurred first. + """ + question = f"{desc_a} and {desc_b} -- which occurred first?" + options = [ + f"{short_a} occurred first", + f"{short_b} occurred first", + "They occurred simultaneously", + "Cannot be determined", + ] + correct_idx = 0 + + if rng.random() < 0.5: + question = f"{desc_b} and {desc_a} -- which occurred first?" + options = [ + f"{short_b} occurred first", + f"{short_a} occurred first", + "They occurred simultaneously", + "Cannot be determined", + ] + correct_idx = 1 + + return question, options, correct_idx + + def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, entity_descs: Dict[str, str], rng: random.Random, count: int = 2, verbose: bool = False, fallback_eids: Optional[Set[str]] = None) -> List[Dict]: """ - Generate temporal cross-camera questions with MEVID person descriptions. - - V8 changes: - - entity_descs parameter provides MEVID descriptions - - Question text uses natural person descriptions instead of actor IDs - - Prioritizes events involving described persons + Generate temporal cross-camera questions. + + V10 changes: + - Entity-cluster linkage removed from scoring — camera proximity drives + pair selection instead (adjacent cams at same site = best). + - Deliberately pairs unrelated events across cameras to prevent VLMs + from shortcutting via causal/narrative reasoning. + - All questions use "which occurred first?" format. + - Uniqueness gate: rejects pairs where the activity+description is + ambiguous on that camera (prevents indistinguishable-entity confusion). + - Same_area relaxation: 2-camera sites (admin) allowed since sparse. + - Max gap 10s (FALLBACK_MAX_GAP 15s). """ slot_cameras = list(sg.cameras.keys()) mevid_person_cameras = find_mevid_persons_for_slot(sg.slot, slot_cameras) - + + # Build uniqueness index for the gate + uniqueness_index = _build_uniqueness_index( + sg.events, sg, entity_descs, fallback_eids + ) + candidates = _find_temporal_candidates( sg.events, sg, resolved, mevid_person_cameras, MAX_GAP ) - + if len(candidates) < count: candidates = _find_temporal_candidates( sg.events, sg, resolved, mevid_person_cameras, FALLBACK_MAX_GAP ) - + if verbose: print(f" Temporal: {len(candidates)} candidate pairs") - + if not candidates: return [] - + # Filter out candidates where EITHER event uses fallback (non-visual) descriptions - # Both events appear in the question text, so both must have visual descriptions if fallback_eids: visual_candidates = [ c for c in candidates @@ -510,147 +657,106 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, print(f" Filtered {len(candidates) - len(visual_candidates)} " f"fallback-only pairs → {len(visual_candidates)} remaining") candidates = visual_candidates - + + # Uniqueness gate: reject pairs where either event's (cam, activity) + # has multiple entities with indistinguishable descriptions + pre_uniq = len(candidates) + candidates = [ + c for c in candidates + if _event_is_unique(c["event_a"], sg, entity_descs, uniqueness_index) + and _event_is_unique(c["event_b"], sg, entity_descs, uniqueness_index) + ] + if verbose and len(candidates) < pre_uniq: + print(f" Uniqueness gate: {pre_uniq - len(candidates)} ambiguous " + f"pairs rejected → {len(candidates)} remaining") + if not candidates: return [] - - # Diversify selection: strong > medium > weak, MEVID-validated preferred - used_pairs = set() - used_activities = set() - used_event_ids: Set[str] = set() # No event reuse across questions - used_activity_names: Set[str] = set() # No activity string reuse across questions + + # Determine if this site has only 2 cameras (sparse site like admin) + # If so, allow same_area pairs as fallback since there's no alternative + n_cameras = len(slot_cameras) + allow_same_area = (n_cameras <= 2) + + # ---------------------------------------------------------------- + # Selection: camera-proximity-based, single pass (no tiered passes) + # Prefer: adjacent cameras > same-site > same-area, diverse activities + # ---------------------------------------------------------------- + used_event_ids: Set[str] = set() + used_activity_names: Set[str] = set() selected = [] - - # Pass 1: strong connection + MEVID-validated (best quality) - for c in candidates: - if len(selected) >= count: - break - if c["connection_strength"] == "strong" and c["mevid_validated"]: - ea_id = c["event_a"].event_id - eb_id = c["event_b"].event_id - if ea_id in used_event_ids or eb_id in used_event_ids: - continue - if c["event_a"].activity in used_activity_names or c["event_b"].activity in used_activity_names: - continue - cam_pair = (c["event_a"].camera_id, c["event_b"].camera_id) - act_pair = (c["event_a"].activity, c["event_b"].activity) - if cam_pair not in used_pairs or act_pair not in used_activities: - used_pairs.add(cam_pair) - used_activities.add(act_pair) - selected.append(c) - used_event_ids.add(ea_id) - used_event_ids.add(eb_id) - used_activity_names.add(c["event_a"].activity) - used_activity_names.add(c["event_b"].activity) - - # Pass 2: strong connection (entity cluster linked) - for c in candidates: - if len(selected) >= count: - break - if c in selected: - continue - if c["connection_strength"] == "strong": - ea_id = c["event_a"].event_id - eb_id = c["event_b"].event_id - if ea_id in used_event_ids or eb_id in used_event_ids: - continue - if c["event_a"].activity in used_activity_names or c["event_b"].activity in used_activity_names: - continue - cam_pair = (c["event_a"].camera_id, c["event_b"].camera_id) - act_pair = (c["event_a"].activity, c["event_b"].activity) - if cam_pair not in used_pairs or act_pair not in used_activities: - used_pairs.add(cam_pair) - used_activities.add(act_pair) - selected.append(c) - used_event_ids.add(ea_id) - used_event_ids.add(eb_id) - used_activity_names.add(c["event_a"].activity) - used_activity_names.add(c["event_b"].activity) - - # Pass 3: medium connection (related activities) + for c in candidates: if len(selected) >= count: break - if c in selected: - continue ea_id = c["event_a"].event_id eb_id = c["event_b"].event_id if ea_id in used_event_ids or eb_id in used_event_ids: continue - if c["event_a"].activity in used_activity_names or c["event_b"].activity in used_activity_names: + if (c["event_a"].activity in used_activity_names + or c["event_b"].activity in used_activity_names): continue - if c["connection_strength"] == "medium": - selected.append(c) - used_event_ids.add(ea_id) - used_event_ids.add(eb_id) - used_activity_names.add(c["event_a"].activity) - used_activity_names.add(c["event_b"].activity) - - # Pass 4: fill remaining from any candidates (score-sorted order) - for c in candidates: - if len(selected) >= count: - break - if c not in selected: + # Skip same_area pairs unless sparse site (≤2 cameras) + if _HAS_PROXIMITY and not allow_same_area: + tier = get_proximity_tier(c["event_a"].camera_id, c["event_b"].camera_id) + if tier == "same_area": + continue + selected.append(c) + used_event_ids.add(ea_id) + used_event_ids.add(eb_id) + used_activity_names.add(c["event_a"].activity) + used_activity_names.add(c["event_b"].activity) + + # If still short, relax the activity-uniqueness constraint + if len(selected) < count: + for c in candidates: + if len(selected) >= count: + break + if c in selected: + continue ea_id = c["event_a"].event_id eb_id = c["event_b"].event_id if ea_id in used_event_ids or eb_id in used_event_ids: continue - if c["event_a"].activity in used_activity_names or c["event_b"].activity in used_activity_names: - continue + if _HAS_PROXIMITY and not allow_same_area: + tier = get_proximity_tier(c["event_a"].camera_id, c["event_b"].camera_id) + if tier == "same_area": + continue selected.append(c) used_event_ids.add(ea_id) used_event_ids.add(eb_id) - used_activity_names.add(c["event_a"].activity) - used_activity_names.add(c["event_b"].activity) - - # Generate QA pairs + + # ---------------------------------------------------------------- + # Generate QA pairs — always "which occurred first?" format + # ---------------------------------------------------------------- qa_pairs = [] - + for idx, cand in enumerate(selected[:count]): ea = cand["event_a"] eb = cand["event_b"] gap = cand["gap_sec"] - + desc_a = _get_event_description(ea, sg, entity_descs, fallback_eids) desc_b = _get_event_description(eb, sg, entity_descs, fallback_eids) - - # V10: Enrich with spatial location context (e.g. "near the school") + + # Enrich with spatial location context (e.g. "near the school") desc_a = _enrich_with_location(desc_a, ea, sg) desc_b = _enrich_with_location(desc_b, eb, sg) - - # Issue 12: Do NOT add camera IDs to question text. - # If descriptions are identical after location enrichment, skip this pair - # (cannot be distinguished visually — would need camera ID which is forbidden) + + # If descriptions identical after enrichment, skip (can't distinguish) if desc_a == desc_b: if verbose: print(f" Skipping temporal pair: identical descriptions '{desc_a}'") continue - - # Build short option labels from descriptions (no camera IDs) + short_a = _short_option_label(desc_a, ea.activity) short_b = _short_option_label(desc_b, eb.activity) - - # Use descriptions directly (no camera context) in question text - question = f"{desc_a} and {desc_b} -- which occurred first?" - - options = [ - f"{short_a} occurred first", - f"{short_b} occurred first", - "They occurred simultaneously", - "Cannot be determined", - ] - correct_idx = 0 - - if rng.random() < 0.5: - question = f"{desc_b} and {desc_a} -- which occurred first?" - options = [ - f"{short_b} occurred first", - f"{short_a} occurred first", - "They occurred simultaneously", - "Cannot be determined", - ] - correct_idx = 1 - + + q_format = "which_first" + question, options, correct_idx = _build_which_first_question( + desc_a, desc_b, short_a, short_b, rng + ) + debug_info = { "event_a": _build_debug_info(ea, sg, entity_descs), "event_b": _build_debug_info(eb, sg, entity_descs), @@ -660,12 +766,14 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, "connection_score": cand["score"], "relationship": cand["relationship"], "cluster_id": cand.get("cluster_id"), + "proximity_tier": cand.get("proximity_tier"), "mevid_validated": cand["mevid_validated"], "mevid_person_id": cand["mevid_person_id"], + "question_format": "which_first", } - + qa = { - "question_id": f"v8_temporal_{idx+1:03d}", + "question_id": f"v10_temporal_{idx+1:03d}", "category": "temporal", "difficulty": "easy", "question_template": question, @@ -698,10 +806,13 @@ def generate_temporal_qa(sg: SceneGraph, resolved: ResolvedGraph, "debug_info": debug_info, } qa_pairs.append(qa) - + if verbose: - mevid_count = sum(1 for q in qa_pairs - if q["debug_info"]["mevid_validated"]) - print(f" Temporal: {len(qa_pairs)} questions ({mevid_count} MEVID-validated)") - + prox_counts = {} + for q in qa_pairs: + tier = q["debug_info"].get("proximity_tier", "unknown") + prox_counts[tier] = prox_counts.get(tier, 0) + 1 + print(f" Temporal: {len(qa_pairs)} questions " + f"(proximity: {prox_counts})") + return qa_pairs diff --git a/meva/scripts/v10/person_descriptions.py b/meva/scripts/v10/person_descriptions.py index 1ad68f0..2b4379b 100644 --- a/meva/scripts/v10/person_descriptions.py +++ b/meva/scripts/v10/person_descriptions.py @@ -551,10 +551,17 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: Enrich scene graph entities with visual descriptions. Priority: - 1. MEVID descriptions (GPT/YOLO from MEVID crops — highest quality) - 2. VLM descriptions (InternVL2.5-8B from video crops — rich NL) - 3. Geom-extracted descriptions (SegFormer color from raw AVI + bbox) - 4. Activity-verb fallback ("a person walking") + 1. MEVID GPT description (natural language, richest — if available) + 2. Geom-extracted descriptions (SegFormer color from raw AVI + bbox) + 3. VLM descriptions (InternVL2.5-8B from video crops — rich NL) + 4. MEVID YOLO color summary (crude upper/lower color — better than nothing) + 5. Activity-verb fallback ("a person walking") + + NOTE: SegFormer descriptions are preferred over MEVID YOLO colors because + SegFormer produces rich multi-attribute descriptions (hair, clothing, shoes, + accessories) while MEVID YOLO only provides crude "blue top and blue pants" + for 82% of persons. MEVID GPT descriptions (when populated) are still + highest priority since they are natural language from crop analysis. The geom-extracted layer covers ALL annotated actors (not just MEVID's ~10%), giving every entity a color-based description for disambiguation. @@ -579,10 +586,15 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: camera_persons[cam] = [] camera_persons[cam].append(pid) + # Pre-check: does the MEVID database have any GPT descriptions? + db = load_person_database() + persons_db = db.get("persons", {}) + entity_descriptions: Dict[str, str] = {} mevid_count = 0 vlm_count = 0 geom_count = 0 + mevid_yolo_count = 0 fallback_count = 0 # Track which MEVID persons have been assigned to avoid reuse @@ -614,29 +626,31 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: cam = entity.camera_id available_persons = camera_persons.get(cam, []) - # Priority 1: MEVID person description (color-matched, Issue 1) + # Priority 1: MEVID GPT description (if available — richest source) + # Only use MEVID here if the person has a real GPT description. + # MEVID YOLO-only colors ("blue top and blue pants") are too crude + # and would override richer SegFormer descriptions, so they are + # deferred to Priority 4 below. if available_persons: used = assigned_persons.get(cam, set()) unused = [p for p in available_persons if p not in used] - if unused: - # Color-match: score all unused MEVID persons against geom-extracted colors - # Pick the best match instead of sequential first-come-first-served + # Filter to candidates that actually have GPT descriptions + gpt_candidates = [p for p in unused + if persons_db.get(p, {}).get("gpt_description")] + + if gpt_candidates: geom_desc = geom_descs.get(eid, "") - db = load_person_database() - persons_db = db.get("persons", {}) best_pid = None best_score = -999.0 - for candidate_pid in unused: + for candidate_pid in gpt_candidates: pdata = persons_db.get(candidate_pid, {}) score = _color_match_score(pdata, geom_desc) if score > best_score: best_score = score best_pid = candidate_pid - # Use best match if score is acceptable (>= -0.5 threshold), - # otherwise fall back to geom description directly if best_pid is not None and best_score >= -0.5: pid = best_pid desc = get_person_description(pid) @@ -645,18 +659,47 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: if cam not in assigned_persons: assigned_persons[cam] = set() assigned_persons[cam].add(pid) - - # Also store the MEVID person_id on the entity for re-ID questions entity._mevid_person_id = pid mevid_count += 1 if verbose: - print(f" {eid}: MEVID → {desc[:60]}... (color_score={best_score:.1f})") + print(f" {eid}: MEVID-GPT → {desc[:60]}... (color_score={best_score:.1f})") continue - elif verbose and best_pid: - print(f" {eid}: MEVID rejected (color_score={best_score:.1f} < -0.5, using geom)") - # Priority 2: VLM description (InternVL2.5-8B from video crops) + # Priority 2: Geom-extracted color description (SegFormer + bbox) + # These are rich multi-attribute descriptions (hair, upper, lower, + # shoes, accessories) extracted by SegFormer from raw video frames. + if eid in geom_descs: + desc = geom_descs[eid] + entity_descriptions[eid] = desc + geom_count += 1 + + # Still try to assign a MEVID person_id for re-ID tracking, + # even though we're using the geom description text + if available_persons: + used = assigned_persons.get(cam, set()) + unused = [p for p in available_persons if p not in used] + if unused: + best_pid = None + best_score = -999.0 + for candidate_pid in unused: + pdata = persons_db.get(candidate_pid, {}) + score = _color_match_score(pdata, desc) + if score > best_score: + best_score = score + best_pid = candidate_pid + if best_pid is not None and best_score >= -0.5: + if cam not in assigned_persons: + assigned_persons[cam] = set() + assigned_persons[cam].add(best_pid) + entity._mevid_person_id = best_pid + + if verbose: + pid_tag = f" [MEVID:{entity._mevid_person_id}]" if hasattr(entity, '_mevid_person_id') and entity._mevid_person_id else "" + print(f" {eid}: geom → {desc[:60]}{pid_tag}") + continue + + # Priority 3: VLM description (InternVL2.5-8B from video crops) if eid in vlm_descs: desc = vlm_descs[eid] entity_descriptions[eid] = desc @@ -665,16 +708,42 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: print(f" {eid}: VLM → {desc[:60]}...") continue - # Priority 3: Geom-extracted color description (SegFormer + bbox) - if eid in geom_descs: - desc = geom_descs[eid] - entity_descriptions[eid] = desc - geom_count += 1 - if verbose: - print(f" {eid}: geom → {desc}") - continue + # Priority 4: MEVID YOLO color summary (crude but better than nothing) + # Only used when no SegFormer/VLM description is available. + if available_persons: + used = assigned_persons.get(cam, set()) + unused = [p for p in available_persons if p not in used] + + if unused: + geom_desc = geom_descs.get(eid, "") + + best_pid = None + best_score = -999.0 + for candidate_pid in unused: + pdata = persons_db.get(candidate_pid, {}) + score = _color_match_score(pdata, geom_desc) + if score > best_score: + best_score = score + best_pid = candidate_pid + + if best_pid is not None and best_score >= -0.5: + pid = best_pid + desc = get_person_description(pid) + entity_descriptions[eid] = desc + + if cam not in assigned_persons: + assigned_persons[cam] = set() + assigned_persons[cam].add(pid) + entity._mevid_person_id = pid + mevid_yolo_count += 1 + + if verbose: + print(f" {eid}: MEVID-YOLO → {desc[:60]}... (color_score={best_score:.1f})") + continue + elif verbose and best_pid: + print(f" {eid}: MEVID-YOLO rejected (color_score={best_score:.1f} < -0.5)") - # Priority 4: Activity-verb fallback (V7 style) + # Priority 5: Activity-verb fallback (V7 style) primary_activity = None for evt in sg.events: if evt.camera_id == entity.camera_id: @@ -695,9 +764,9 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: fallback_count += 1 if verbose: - total = mevid_count + vlm_count + geom_count + fallback_count - print(f" Entity enrichment: {mevid_count} MEVID, {vlm_count} VLM, " - f"{geom_count} geom-color, {fallback_count} fallback ({total} total)") + total = mevid_count + vlm_count + geom_count + mevid_yolo_count + fallback_count + print(f" Entity enrichment: {mevid_count} MEVID-GPT, {geom_count} geom, {vlm_count} VLM, " + f"{mevid_yolo_count} MEVID-YOLO, {fallback_count} fallback ({total} total)") # Build set of PERSON entity IDs that got fallback (non-visual) descriptions. # Non-person entities (vehicles, objects) always get generic descriptions like @@ -713,7 +782,8 @@ def enrich_entities(sg: SceneGraph, verbose: bool = False) -> Dict[str, str]: fallback_eids.add(eid) return (entity_descriptions, - {"mevid": mevid_count, "vlm": vlm_count, "geom": geom_count, "fallback": fallback_count}, + {"mevid": mevid_count, "vlm": vlm_count, "geom": geom_count, + "mevid_yolo": mevid_yolo_count, "fallback": fallback_count}, fallback_eids) diff --git a/meva/scripts/v10/reextract_missing_cameras.py b/meva/scripts/v10/reextract_missing_cameras.py new file mode 100644 index 0000000..d67edfb --- /dev/null +++ b/meva/scripts/v10/reextract_missing_cameras.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 +""" +Re-extract entity descriptions for slots with missing cameras. + +The original batch extraction missed cameras from kitware-meva-training/. +This script identifies affected slots and re-extracts them with the current +find_slot_files() which searches BOTH kitware/ and kitware-meva-training/. + +Usage: + python3 scripts/v10/reextract_missing_cameras.py --dry-run # Show affected slots + python3 scripts/v10/reextract_missing_cameras.py -v # Re-extract all + python3 scripts/v10/reextract_missing_cameras.py --slot "2018-03-09.10-40.bus" -v # Single slot +""" + +import argparse +import json +import os +import re +import shutil +import sys +import time +from pathlib import Path + +# Use venv python for subprocess calls — prefer activated venv, else system python3 +VENV_PYTHON = shutil.which("python3") or "python3" + +KITWARE_BASE = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware") +KITWARE_TRAINING = Path("/nas/mars/dataset/MEVA/meva-data-repo/annotation/DIVA-phase-2/MEVA/kitware-meva-training") +DESC_DIR = Path("/nas/mars/dataset/MEVA/entity_descriptions") +SLOT_INDEX = Path(__file__).resolve().parent.parent.parent / "data" / "slot_index.json" + + +def find_geom_cameras(slot: str) -> set: + """Find all cameras with geom.yml files for a slot.""" + parts = slot.split(".") + date, time_part, site = parts[0], parts[1], parts[2] + hour = time_part.split("-")[0] + prefix = f"{date}.{time_part}" + + cameras = set() + for base in [KITWARE_BASE, KITWARE_TRAINING]: + d = base / date / hour + if d.is_dir(): + for gf in d.glob(f"{prefix}*.{site}.*.geom.yml"): + m = re.search(rf'\.{site}\.(G\d+)\.geom\.yml$', gf.name) + if m: + cameras.add(m.group(1)) + return cameras + + +def find_desc_cameras(slot: str) -> set: + """Get cameras already in the entity description file.""" + desc_file = DESC_DIR / f"{slot}.json" + if not desc_file.exists(): + return set() + with open(desc_file) as f: + data = json.load(f) + return set(data.get("cameras", {}).keys()) + + +def find_affected_slots() -> list: + """Find all slots with cameras missing from entity descriptions.""" + with open(SLOT_INDEX) as f: + slot_index = json.load(f) + + affected = [] + for slot in sorted(slot_index.keys()): + geom_cams = find_geom_cameras(slot) + desc_cams = find_desc_cameras(slot) + missing = geom_cams - desc_cams + + if missing: + # Also check slots with no desc file at all but geom exists + affected.append({ + "slot": slot, + "missing_cameras": sorted(missing), + "existing_cameras": sorted(desc_cams), + "all_geom_cameras": sorted(geom_cams), + }) + + # Also find slots with no desc file but geom cameras exist + for slot in sorted(slot_index.keys()): + desc_file = DESC_DIR / f"{slot}.json" + if not desc_file.exists(): + geom_cams = find_geom_cameras(slot) + if geom_cams: + affected.append({ + "slot": slot, + "missing_cameras": sorted(geom_cams), + "existing_cameras": [], + "all_geom_cameras": sorted(geom_cams), + }) + + # Deduplicate + seen = set() + deduped = [] + for a in affected: + if a["slot"] not in seen: + seen.add(a["slot"]) + deduped.append(a) + + return deduped + + +def reextract_slot(slot: str, verbose: bool = False) -> dict: + """Re-extract entity descriptions for a slot (overwrites existing file).""" + import subprocess + + output_path = DESC_DIR / f"{slot}.json" + cmd = [ + VENV_PYTHON, + "-m", "scripts.v10.extract_entity_descriptions", + "--slot", slot, + "--output", str(output_path), + "--method", "segformer", + ] + if verbose: + cmd.append("-v") + + try: + result = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=600, + cwd=str(Path(__file__).resolve().parent.parent.parent), + ) + + if result.returncode != 0: + return { + "success": False, + "entities": 0, + "error": f"Exit {result.returncode}: {result.stderr[:300]}", + } + + if output_path.exists(): + with open(output_path) as f: + data = json.load(f) + return { + "success": True, + "entities": len(data.get("actors", {})), + "cameras": list(data.get("cameras", {}).keys()), + } + return {"success": False, "entities": 0, "error": "No output file"} + + except subprocess.TimeoutExpired: + return {"success": False, "entities": 0, "error": "Timeout >10min"} + except Exception as e: + return {"success": False, "entities": 0, "error": str(e)[:200]} + + +def main(): + parser = argparse.ArgumentParser(description="Re-extract slots with missing cameras") + parser.add_argument("--dry-run", action="store_true", help="Show affected slots without processing") + parser.add_argument("--slot", type=str, help="Process a single slot") + parser.add_argument("-v", "--verbose", action="store_true") + args = parser.parse_args() + + if args.slot: + # Single slot mode + geom_cams = find_geom_cameras(args.slot) + desc_cams = find_desc_cameras(args.slot) + missing = geom_cams - desc_cams + print(f"Slot: {args.slot}") + print(f" Geom cameras: {sorted(geom_cams)}") + print(f" Desc cameras: {sorted(desc_cams)}") + print(f" Missing: {sorted(missing)}") + + if not missing and desc_cams == geom_cams: + print(" All cameras already extracted!") + return + + if args.dry_run: + return + + print(f"\n Re-extracting...") + result = reextract_slot(args.slot, verbose=args.verbose) + print(f" Result: {result}") + return + + # Batch mode + affected = find_affected_slots() + print(f"\nFound {len(affected)} slots with missing camera descriptions") + total_missing = sum(len(a["missing_cameras"]) for a in affected) + print(f"Total missing cameras: {total_missing}") + + if args.dry_run: + print("\n--- Affected Slots ---") + for a in affected: + print(f" {a['slot']}: missing {a['missing_cameras']} (has {a['existing_cameras']})") + return + + # Process all affected slots + print(f"\nProcessing {len(affected)} slots...") + success = 0 + failed = 0 + total_new_actors = 0 + + for i, a in enumerate(affected): + slot = a["slot"] + print(f"\n[{i+1}/{len(affected)}] {slot} (missing: {a['missing_cameras']})") + + # Get actor count before + desc_file = DESC_DIR / f"{slot}.json" + before_actors = 0 + if desc_file.exists(): + with open(desc_file) as f: + before_actors = len(json.load(f).get("actors", {})) + + result = reextract_slot(slot, verbose=args.verbose) + + if result["success"]: + after_actors = result["entities"] + delta = after_actors - before_actors + total_new_actors += max(0, delta) + print(f" OK: {before_actors} → {after_actors} actors (+{delta}), cameras: {result.get('cameras', [])}") + success += 1 + else: + print(f" FAILED: {result['error']}") + failed += 1 + + print(f"\n{'='*60}") + print(f"DONE: {success} succeeded, {failed} failed") + print(f"Total new actors: +{total_new_actors}") + print(f"{'='*60}") + + +if __name__ == "__main__": + main() diff --git a/meva/scripts/v10/run_pipeline.py b/meva/scripts/v10/run_pipeline.py index 306e12c..e048d8d 100644 --- a/meva/scripts/v10/run_pipeline.py +++ b/meva/scripts/v10/run_pipeline.py @@ -608,11 +608,12 @@ def run_pipeline(slot: str, verbose: bool = False, mevid_cnt = desc_counts["mevid"] vlm_cnt = desc_counts.get("vlm", 0) geom_cnt = desc_counts["geom"] + mevid_yolo_cnt = desc_counts.get("mevid_yolo", 0) fallback_cnt = desc_counts["fallback"] if verbose: - print(f" {mevid_cnt} MEVID + {vlm_cnt} VLM + {geom_cnt} geom-color + " - f"{fallback_cnt} fallback / {len(entity_descs)} total") + print(f" {mevid_cnt} MEVID-GPT + {geom_cnt} geom + {vlm_cnt} VLM + " + f"{mevid_yolo_cnt} MEVID-YOLO + {fallback_cnt} fallback / {len(entity_descs)} total") # Step 4b: Cross-camera clustering + height differentiation if verbose: @@ -718,7 +719,7 @@ def run_pipeline(slot: str, verbose: bool = False, "version": "final", "annotation_source": "kitware", "entity_resolution_source": "mevid+heuristic", - "description_source": "mevid_yolo+vlm+geom_color", + "description_source": "geom_segformer+mevid_gpt+vlm+mevid_yolo", "generator": "final_pipeline", "seed": seed, "cameras": cameras_in_slot, @@ -734,9 +735,10 @@ def run_pipeline(slot: str, verbose: bool = False, "total_questions": len(unique_qa), "category_counts": cat_counts, "stats": { - "entities_with_mevid_descriptions": mevid_cnt, + "entities_with_mevid_gpt_descriptions": mevid_cnt, "entities_with_vlm_descriptions": vlm_cnt, "entities_with_geom_descriptions": geom_cnt, + "entities_with_mevid_yolo_descriptions": mevid_yolo_cnt, "entities_with_fallback_descriptions": fallback_cnt, "attribute_verification_questions": attr_verification, "best_camera_questions": cat_counts.get("best_camera", 0), @@ -762,7 +764,7 @@ def run_pipeline(slot: str, verbose: bool = False, print(f" ---") print(f" Cameras: {cameras_in_slot}") print(f" Events: {len(events)}") - print(f" Entities: {len(sg.entities)} ({mevid_cnt} MEVID + {vlm_cnt} VLM + {geom_cnt} geom)") + print(f" Entities: {len(sg.entities)} ({mevid_cnt} MEVID-GPT + {geom_cnt} geom + {vlm_cnt} VLM + {mevid_yolo_cnt} MEVID-YOLO)") print(f" MEVID persons: {sorted(mevid_persons)}") print(f" Cross-cam clusters: {len(resolved.entity_clusters)}") print(f" Validation issues: {len(issues)}") diff --git a/meva/scripts/v10/utils/camera_proximity.py b/meva/scripts/v10/utils/camera_proximity.py new file mode 100644 index 0000000..d1d55df --- /dev/null +++ b/meva/scripts/v10/utils/camera_proximity.py @@ -0,0 +1,262 @@ +""" +Camera proximity detection — identifies spatial relationships between cameras. + +Unlike camera_overlap.py (which flags duplicate-event risk for dedup), this module +identifies cameras that cover ADJACENT areas — ideal for multi-camera temporal +questions because events on nearby but non-overlapping cameras are likely part +of the same scene narrative. + +Combines: + 1. KRTD-derived camera positions + viewing directions (outdoor cameras) + 2. Camera-set metadata from the MEVA clip table (groups cameras by shared FOV) + 3. Manual indoor camera knowledge (admin, school hallways, bus indoor) + +Camera proximity tiers: + - "same_area": Cameras that likely observe the same physical space + (overlapping FOV, <15m apart, or same camera-set) + - "adjacent": Cameras covering adjacent areas — a person walking between + them is plausible in 10-120s (15-80m apart, same site) + - "same_site": Same site but far apart (>80m or different indoor/outdoor zones) + - "different_site": Different sites (should never be paired) +""" + +import numpy as np +from pathlib import Path +from typing import Dict, FrozenSet, List, Optional, Set, Tuple + +from .krtd import KRTD_DIR, INDOOR_CAMERAS, load_camera_model + +# ============================================================================ +# Camera-Set Groups (from MEVA clip table metadata) +# ============================================================================ + +# Camera sets indicate cameras that share sufficient FOV for frame-level sync. +# Source: meva-data-repo/metadata/meva-clip-camera-and-time-table.txt +CAMERA_SETS: Dict[str, List[str]] = { + # School + "3-300": ["G300"], + "3-328": ["G328"], + "3-330": ["G299", "G330"], # Indoor gym pair — both see basketball court + "3-336": ["G336"], + "3-420": ["G419", "G420"], # Indoor hallway close-up cameras + "3-421": ["G421"], # Indoor close-up + "3-423": ["G423"], # Indoor close-up + "3-424": ["G424"], + "skip": ["G339"], # PTZ / not yet assigned + "IR-school": ["G474"], # Infrared + "3-638": ["G638"], + "3-639": ["G639"], + # Bus + "3-331": ["G331"], # Indoor + "3-340": ["G340"], + "3-508": ["G508", "G509"], # G508 indoor, G509 outdoor — adjacent + "IR-bus": ["G475"], # Infrared + "3-505": ["G505"], + "3-506": ["G506"], + # Hospital + "3-301": ["G301"], + "3-341": ["G341"], + "3-436": ["G436"], + "3-476": ["G476"], + "3-479": ["G479"], + # Admin + "admin": ["G326", "G329"], # Both point at same building entrance +} + +# Which site each camera belongs to +CAMERA_SITE: Dict[str, str] = { + # School + "G299": "school", "G300": "school", "G328": "school", "G330": "school", + "G336": "school", "G339": "school", "G419": "school", "G420": "school", + "G421": "school", "G423": "school", "G424": "school", "G474": "school", + "G638": "school", "G639": "school", + # Bus + "G331": "bus", "G340": "bus", "G475": "bus", "G505": "bus", + "G506": "bus", "G508": "bus", "G509": "bus", + # Hospital + "G301": "hospital", "G341": "hospital", "G436": "hospital", + "G476": "hospital", "G479": "hospital", + # Admin + "G326": "admin", "G329": "admin", +} + +# Interior vs exterior classification +# Source: meva-data-repo/metadata/meva-camera-daily-status.txt +INDOOR_CAMERAS_FULL: Set[str] = { + "G299", "G326", "G329", "G330", "G331", + "G419", "G420", "G421", "G423", "G508", +} + +OUTDOOR_CAMERAS: Set[str] = { + "G300", "G301", "G328", "G336", "G339", "G340", "G341", + "G424", "G436", "G474", "G475", "G476", "G479", + "G505", "G506", "G509", "G638", "G639", +} + +# ============================================================================ +# Manual Indoor Camera Adjacency +# ============================================================================ + +# Indoor cameras without KRTD: manually specify which outdoor cameras are +# adjacent (a person exiting the indoor area would appear on these cameras). +# Based on camera-set analysis, site layout, and annotation patterns. + +INDOOR_ADJACENT_OUTDOOR: Dict[str, List[str]] = { + # School gym cameras → nearby school outdoor cameras + "G299": ["G300", "G328", "G336", "G424", "G638", "G639"], + "G330": ["G300", "G328", "G336", "G424", "G638", "G639"], + # School hallway close-up cameras → nearby outdoor + gym + "G419": ["G300", "G328", "G424", "G299", "G330"], + "G420": ["G300", "G328", "G424", "G299", "G330"], + "G421": ["G300", "G328", "G424"], + "G423": ["G300", "G328", "G424"], + # Admin indoor → both see same entrance (overlap, not adjacent) + "G326": ["G329"], + "G329": ["G326"], + # Bus indoor cameras → bus outdoor cameras + "G331": ["G340", "G505", "G506", "G509", "G508"], + "G508": ["G340", "G505", "G506", "G509", "G331"], +} + + +# ============================================================================ +# KRTD-based Distance Cache +# ============================================================================ + +_DISTANCE_CACHE: Optional[Dict[FrozenSet[str], float]] = None + + +def _compute_krtd_distances() -> Dict[FrozenSet[str], float]: + """Compute pairwise distances between all cameras with KRTD calibration.""" + distances: Dict[FrozenSet[str], float] = {} + + # Parse all KRTD files for camera centers + positions: Dict[str, np.ndarray] = {} + for f in KRTD_DIR.glob("*.krtd"): + cam_id = f.stem.split(".")[-1] + if cam_id in INDOOR_CAMERAS: + continue + try: + lines = [l.strip() for l in open(f) if l.strip()] + R = np.array([[float(x) for x in lines[i].split()] for i in range(3, 6)]) + T = np.array([float(x) for x in lines[6].split()]) + C = -R.T @ T + positions[cam_id] = C + except Exception: + continue + + cam_list = sorted(positions.keys()) + for i in range(len(cam_list)): + for j in range(i + 1, len(cam_list)): + key = frozenset({cam_list[i], cam_list[j]}) + dist = float(np.linalg.norm(positions[cam_list[i]] - positions[cam_list[j]])) + distances[key] = dist + + return distances + + +def _get_distances() -> Dict[FrozenSet[str], float]: + global _DISTANCE_CACHE + if _DISTANCE_CACHE is None: + _DISTANCE_CACHE = _compute_krtd_distances() + return _DISTANCE_CACHE + + +# ============================================================================ +# Public API +# ============================================================================ + +def get_camera_distance(cam_a: str, cam_b: str) -> Optional[float]: + """Get distance in meters between two cameras (KRTD-based). None if unavailable.""" + if cam_a == cam_b: + return 0.0 + key = frozenset({cam_a, cam_b}) + return _get_distances().get(key) + + +def are_cameras_same_set(cam_a: str, cam_b: str) -> bool: + """Check if two cameras belong to the same camera-set (shared FOV).""" + for cameras in CAMERA_SETS.values(): + if cam_a in cameras and cam_b in cameras: + return True + return False + + +def get_camera_site(cam_id: str) -> Optional[str]: + """Get the site a camera belongs to.""" + return CAMERA_SITE.get(cam_id) + + +def get_proximity_tier(cam_a: str, cam_b: str) -> str: + """ + Classify the spatial relationship between two cameras. + + Returns one of: + "same_area" — Overlapping FOV / same camera-set + "adjacent" — Nearby, non-overlapping (ideal for temporal Q) + "same_site" — Same site, but far apart + "different_site" — Different sites + """ + if cam_a == cam_b: + return "same_area" + + site_a = CAMERA_SITE.get(cam_a) + site_b = CAMERA_SITE.get(cam_b) + + # Different sites → never pair + if site_a and site_b and site_a != site_b: + return "different_site" + + # Same camera-set → same area (overlapping, use for dedup not questions) + if are_cameras_same_set(cam_a, cam_b): + return "same_area" + + # Check indoor adjacency map + if cam_a in INDOOR_ADJACENT_OUTDOOR and cam_b in INDOOR_ADJACENT_OUTDOOR[cam_a]: + return "adjacent" + if cam_b in INDOOR_ADJACENT_OUTDOOR and cam_a in INDOOR_ADJACENT_OUTDOOR[cam_b]: + return "adjacent" + + # Use KRTD distance if available + dist = get_camera_distance(cam_a, cam_b) + if dist is not None: + if dist < 15.0: + return "same_area" + elif dist < 80.0: + return "adjacent" + else: + return "same_site" + + # Fallback: both at same site but no distance info + if site_a == site_b: + # Indoor+outdoor at same site = adjacent (person can walk between) + if (cam_a in INDOOR_CAMERAS_FULL) != (cam_b in INDOOR_CAMERAS_FULL): + return "adjacent" + return "same_site" + + return "different_site" + + +def score_camera_pair_for_temporal(cam_a: str, cam_b: str) -> float: + """ + Score how good a camera pair is for temporal cross-camera questions. + + Higher = better. Ideal pairs are adjacent cameras at the same site + (close enough that events are related, far enough that they require + multi-camera reasoning). + + Returns: + 3.0 — adjacent cameras (best: events are likely related) + 2.0 — same_site but far (ok: events could be part of same scene) + 0.5 — same_area / overlapping (bad: same event seen twice) + 0.0 — different_site (invalid) + """ + tier = get_proximity_tier(cam_a, cam_b) + if tier == "adjacent": + return 3.0 + elif tier == "same_site": + return 2.0 + elif tier == "same_area": + return 0.5 + else: + return 0.0