update
This commit is contained in:
@@ -23,6 +23,16 @@
|
||||
"| bus | modrá |"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "md-83b798",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Načtení modelů\n",
|
||||
"\n",
|
||||
"Načteme oba modely: `best_finetuned.pt` (po fine-tuningu na Vrchlabí) a `best_before_finetune.pt` (pouze VisDrone). Porovnání obou modelů ukáže, jak moc fine-tuning zlepšil detekci na českých datech."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
@@ -59,9 +69,19 @@
|
||||
"print(f\"Base: {MODEL_BASE}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "md-dc5c89",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Konfigurace inference\n",
|
||||
"\n",
|
||||
"Nastavíme vstupní a výstupní adresáře, barevné kódování tříd (zelená=car, žlutá=van, červená=truck, modrá=bus), confidence threshold a velikost dávky. Dlaždice jsou 256×256 px odpovídající zoom level 18 mapových dlaždic."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
@@ -82,9 +102,6 @@
|
||||
"ANNOTATED_DIR_FINETUNED.mkdir(exist_ok=True)\n",
|
||||
"ANNOTATED_DIR_BASE.mkdir(exist_ok=True)\n",
|
||||
"\n",
|
||||
"# Zpětná kompatibilita — hlavní vrstva je finetuned\n",
|
||||
"ANNOTATED_DIR = ANNOTATED_DIR_FINETUNED\n",
|
||||
"\n",
|
||||
"# Barvy pro každou třídu (RGB)\n",
|
||||
"CLASS_COLORS = {\n",
|
||||
" 0: (0, 220, 0), # car — zelená\n",
|
||||
@@ -110,9 +127,19 @@
|
||||
"print(f\"Zařízení: {DEVICE}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "md-452ad1",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Inferenční smyčka\n",
|
||||
"\n",
|
||||
"Pro každou dlaždici spustíme detekci objektů oběma modely. Detekovaná vozidla vyznačíme barevnými rámečky přímo do obrázku dlaždice a výsledky uložíme ve formátu JSON pro pozdější sestavení mapy."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
@@ -189,7 +216,6 @@
|
||||
"\n",
|
||||
"\n",
|
||||
"def run_inference(model, annotated_dir: Path, label: str) -> dict:\n",
|
||||
" \"\"\"Spustí inferenci na všech dlaždicích, uloží anotované obrázky a vrátí dict detekcí.\"\"\"\n",
|
||||
" detections = {}\n",
|
||||
" vehicle_counts = defaultdict(int)\n",
|
||||
"\n",
|
||||
@@ -234,6 +260,16 @@
|
||||
"all_detections_base = run_inference(model_base, ANNOTATED_DIR_BASE, \"base\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "md-3e6ffd",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Uložení výsledků detekcí\n",
|
||||
"\n",
|
||||
"Detekce z obou modelů uložíme do JSON souborů. Každý záznam obsahuje název dlaždice a seznam detekcí s třídou, souřadnicemi rámečku a confidence score."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
@@ -265,9 +301,19 @@
|
||||
"print(f\" detections_base.json ({len(all_detections_base)} dlaždic)\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "md-95a7d7",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Vizualizace ukázkových dlaždic\n",
|
||||
"\n",
|
||||
"Náhodně vybereme 6 dlaždic s detekcemi a zobrazíme je — tak si ověříme kvalitu výsledků finetuned modelu."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
@@ -298,7 +344,6 @@
|
||||
"print(f\"[Finetuned] Dlaždice s detekcemi: {len(tiles_with_detections_ft)} / {len(all_detections_finetuned)}\")\n",
|
||||
"print(f\"[Base] Dlaždice s detekcemi: {len(tiles_with_detections_base)} / {len(all_detections_base)}\")\n",
|
||||
"\n",
|
||||
"# Ukázkové dlaždice — finetuned model\n",
|
||||
"samples = random.sample(tiles_with_detections_ft, min(6, len(tiles_with_detections_ft)))\n",
|
||||
"fig, axes = plt.subplots(2, 3, figsize=(15, 10))\n",
|
||||
"\n",
|
||||
@@ -314,6 +359,16 @@
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "md-960e2d",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Heatmapa hustoty vozidel\n",
|
||||
"\n",
|
||||
"Z detekcí sestavíme heatmapu — každý pixel odpovídá jedné dlaždici a jeho barva udává počet detekovaných vozidel. Porovnáme oba modely vedle sebe."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
|
||||
Reference in New Issue
Block a user