28.4 VII. ellenőrző pont: CNN alkalmazási szerződés

28.4.1 1. Cél, előismeret és induló kérdés

A VII. ellenőrző pont a 28.3. Retrieval-értékelés és adatfelosztás alfejezetben bevezetett retrieval-szerződést a korábbi három CNN-feladatcsalád mellé állítja: az osztályozás, a detektálás és a szegmentálás mellé. A cél annak bizonyítása, hogy a hallgató nem csupán az egyes metrikákat, hanem a cél–target–loss–output–metrika–split–inference szerződés teljes láncát külön tudja választani, és új feladatra önálló protokollt tud készíteni. Előismeret: a 27.4. Instance mask és összetett feladat instance/szemantikus megkülönböztetése, a 24.4. VI. ellenőrző pont: megbízható CNN-training tanítási és checkpoint-szerződése, valamint a 16.4. IV. ellenőrző pont: a CNN-operátor teljes megértése CNN-operátor specifikációja. A retrieval oldalról a 28.3. Retrieval-értékelés és adatfelosztás query/gallery, ranking és Recall@k fogalmaira építünk.

Értékelés. A közös 0–4 rubrikát, a PASS-szabályt és a hibatípusonkénti visszautakat az 1.4. Tanulási diagnózis és kísérleti napló „Tanulási főút és ellenőrző pontok” szakasza adja meg; itt csak az eltérés: a riport a cél–target–loss–output–metrika–split–inference szerződés; a súlypont a D3.

Induló kérdés: egy CNN, amely 92% osztályozási pontosságot ér el, automatikusan alkalmas-e detektálásra vagy hasonlósági keresésre? Becslés: nem. Ugyanaz a gerinc (backbone) különböző fejekkel egészen eltérő kimenetet ad, és a 92% accuracy-t nem lehet egy sorba állítani egy IoU-val vagy Recall@k-val, mert a három szám más célfüggvényből, más targetből és más veszteségből születik.

28.4.2 2. A négy feladatcsalád cél- és alakszerződése

Jelölje X∈ℝN×Cin×H×WX\in\mathbb R^{N\times C_{in}\times H\times W} a bemeneti képbatch-et. A gerinc kimenete F(X)∈ℝN×D×H′×W′F(X)\in\mathbb R^{N\times D\times H'\times W'} feature-tensor. Minden feladatcsalád ebből eltérő fejjel készít előrejelzést.

Feladat Target Nyers output Elsődleges metrika
Osztályozás y∈{0,…,K−1}Ny\in\{0,\ldots,K-1\}^N Z∈ℝN×KZ\in\mathbb R^{N\times K} logits accuracy, macro-F1
Detektálás változó számú xyxy doboz + osztály listaelemek (b,c,s)(b,c,s) AP @ IoU-küszöb
Szegmentálás Y∈{0,…,K−1}N×H×WY\in\{0,\ldots,K-1\}^{N\times H\times W} pixel-logits ℝN×K×H×W\mathbb R^{N\times K\times H\times W} mIoU, Dice
Retrieval relevancia-reláció R(q,g)R(q,g) embedding ℝN×D\mathbb R^{N\times D} Recall@k, mAP

A fenti táblázat csak a három legfontosabb oszlopot mutatja; a loss, a split és az inference szerződés minden feladatnál különbözik, ezért külön definiáljuk.

Osztályozás. A target egyetlen osztályindex képenként, az output aktiváció előtti logits-vektor. A loss a többosztályos cross-entropy mean reductionnal:

L=−1N∑n=1Nlogexp(Zn,yn)∑k=1Kexp(Zn,k).L=-\frac1N\sum_{n=1}^N \log\frac{\exp(Z_{n,y_n})}{\sum_{k=1}^K\exp(Z_{n,k})}.

A split osztály-stratified és scene-csoportos; a GlyphLab szerződésben a független egység a scene_id. Az inference szerződés: a modell a képtensoron kívül semmilyen annotációt nem kap, és a testkészlet a kiválasztás után egyetlen egyszer kerül kiértékelésre.

Detektálás. A target változó hosszúságú rendezett lista képenként; egy elem (ℓ,t,r,b,c)(\ell,t,r,b,c) nullától indexelt, fél-nyílt xyxy doboz és osztályindex. A loss általában dobozregresszió (például smooth L1) plusz objectness binary cross-entropy; a pontos súlyozás architektúránként eltér. A split scene-szintű, és egyetlen dobozt sem vág szét. A metrika átlagos precision (AP) egy rögzített IoU-küszöbnél, greedy egy-az-egyhez párosítással, ahogy a 26.3. NMS, confidence és AP alfejezetben definiáltuk. Az inference szerződés magában foglalja a non-maximum suppressiont (NMS), a score-küszöböt és a maximális kimeneti dobozszámot; ezek nélkül a nyers output nem értékelhető.

Szegmentálás. A target minden pixelre osztályindex, tehát az alak N×H×WN\times H\times W egész tensor. A modell pixel-logitsot ad N×K×H×WN\times K\times H\times W alakban; a loss per-pixel cross-entropy, a H×WH\times W térbeli pozíciók átlagával. A metrika mIoU vagy Dice; az üres-unió esetekhez külön szabály kell a 27.3. Dice, IoU és aggregálás szerint. A split scene-csoportos, és a maszkot a képpel geometriailag együtt kell transzformálni; az inference argmax vagy rögzített küszöb.

Retrieval. A target nem egyetlen címke, hanem egy relevancia-reláció: minden query-hez a gallery azon elemei relevánsak, amelyek a megfigyelési egység (például scene_id) szerint ugyanahhoz a csoporthoz tartoznak, de nem azonos a query-vel és nem duplikátum. A modell outputja DD-dimenziós embedding vektor: f:ℝCin×H×W→ℝDf:\mathbb R^{C_{in}\times H\times W}\to\mathbb R^D. A loss lehet triplet loss, amelyet a [P16] absztraktja így foglal össze: az embedding tér L2-távolságát közvetlenül optimalizáljuk úgy, hogy a pozitív pár távolsága marginnal kisebb legyen a negatív párénál. A gyakorlatban ezt a következő alakban szokás felírni:

L=1N∑n=1Nmax(0,∥f(qn)−f(gn+)∥2−∥f(qn)−f(gn−)∥2+α),L=\frac1N\sum_{n=1}^N \max\!\Big(0,\ \|f(q_n)-f(g_n^+)\|^2 - \|f(q_n)-f(g_n^-)\|^2 + \alpha\Big),

ahol α>0\alpha>0 a margin. A split nem egyszerűen train/val/test, hanem a query-k és a gallery elemei különböző scene-ekből vagy legalábbis eltérő view-okból származnak; ugyanazon scene két view-ja közül az egyik nem lehet egyszerre query és gallery elem. A metrika a 28.3. Retrieval-értékelés és adatfelosztás definíciójával:

Recall@k=|{releváns gallery elemek}∩{top-k lista}||{releváns gallery elemek}|.\text{Recall@}k = \frac{|\{\text{releváns gallery elemek}\}\cap\{\text{top-}k\text{ lista}\}|}{|\{\text{releváns gallery elemek}\}|}.

A nevező a query összes releváns gallery elemének száma, nem pedig kk; ez a leggyakoribb hibaforrás.

A loss és a metrika különbsége minden feladatnál éles: a loss differenciálható simuló cél, a metrika lehet nem sima és nem differenciálható (például az IoU küszöbölése), ezért a tanítás során a loss-t, a kiértékelés során a metrikát használjuk.

28.4.3 3. Kézi matematikai kontrollok minden feladathoz

Minden választott feladathoz egy alakellenőrzést és egy kézi numerikus kontrollt adunk. A cél nem a teljes modell kiértékelése, hanem a képletek index- és dimenzióhelyességének bizonyítása.

28.4.3.1 Osztályozás: softmax-összeg és cross-entropy

Legyen N=1N=1, K=3K=3, logits z=[2,−1,0.5]z = [2,\ -1,\ 0.5], target y=0y=0. Alakellenőrzés: Z∈ℝ1×3Z\in\mathbb R^{1\times 3}, a softmax kimenete is 1×31\times 3, a loss skalár.

A softmax nevezője: e2=7,3891e^2 = 7{,}3891, e−1=0,3679e^{-1}=0{,}3679, e0.5=1,6487e^{0.5}=1{,}6487, összeg 9,40579{,}4057. A valószínűségek: p0=0,7858p_0=0{,}7858, p1=0,0391p_1=0{,}0391, p2=0,1753p_2=0{,}1753; az összeg 0,99990{,}9999 kerekítési hibával. A cross-entropy: −log(0,7858)=0,2412-\log(0{,}7858)=0{,}2412. Ez a kézi kontroll mutatja, hogy a softmax kimenete nem metrika, csak a logitsból képzett valószínűségi vektor.

28.4.3.2 Detektálás: fél-nyílt dobozok IoU-ja

Legyen a ground truth doboz [1,2,5,6][1,2,5,6], a predikció pedig [3,4,7,8][3,4,7,8]. A fél-nyílt intervallum szerint a terület: (5−1)⋅(6−2)=16(5-1)\cdot(6-2)=16, illetve (7−3)⋅(8−4)=16(7-3)\cdot(8-4)=16. A metszet:

xmin=max(1,3)=3,xmax=min(5,7)=5,ymin=max(2,4)=4,ymax=min(6,8)=6.x_{\min}=\max(1,3)=3,\quad x_{\max}=\min(5,7)=5,\quad y_{\min}=\max(2,4)=4,\quad y_{\max}=\min(6,8)=6.

A metszet szélessége 5−3=25-3=2, magassága 6−4=26-4=2, területe 44. Az unió 16+16−4=2816+16-4=28, tehát

IoU=428=17≈0,1429.\text{IoU}=\frac{4}{28}=\frac17 \approx 0{,}1429.

Alakellenőrzés: minden doboz négy koordináta, a metszet és az unió pozitív skalár. A fél-nyílt konvenció biztosítja, hogy a szomszédos dobozok területe pontosan a koordinátakülönbségek szorzata.

28.4.3.3 Szegmentálás: bináris maszk Dice és IoU

Legyen 2×22\times2-es ground truth maszk [1100]\begin{bmatrix}1&1\\0&0\end{bmatrix} és predikció [1010]\begin{bmatrix}1&0\\1&0\end{bmatrix}. Flattenelve: |A|=2|A|=2, |B|=2|B|=2, metszet |A∩B|=1|A\cap B|=1, unió =3=3. Ekkor

IoU=13,Dice=2⋅12+2=0,5.\text{IoU}=\frac{1}{3},\qquad \text{Dice}=\frac{2\cdot1}{2+2}=0{,}5.

Alakellenőrzés: mindkét maszk N×H×WN\times H\times W; a redukció a térbeli pozíciókra összegzi az egyezést. Az üres mindkét maszk esetén a Dice nevezője nulla, ezért külön szabály szükséges (a 27.3. Dice, IoU és aggregálás szerint például 1-et rendelünk hozzá az üres-üres párhoz).

28.4.3.4 Retrieval: relevancia-nevező és ranking

Legyen egy query qq, gallery G={g1,g2,g3,g4}G=\{g_1,g_2,g_3,g_4\}, releváns elemek {g1,g3}\{g_1,g_3\}, tehát a nevező 22. A távolságok növekvő sorrendben: d(q,g2)=0,15d(q,g_2)=0{,}15, d(q,g1)=0,20d(q,g_1)=0{,}20, d(q,g4)=0,35d(q,g_4)=0{,}35, d(q,g3)=0,40d(q,g_3)=0{,}40. A ranking: [g2,g1,g4,g3][g_2,g_1,g_4,g_3]. Ekkor a top-kk listák releváns elemszáma: top-1-ben 00, top-2-ben 11, top-3-ban 11, top-4-ben 22. A Recall@k:

Recall@1=0,Recall@2=12,Recall@3=12,Recall@4=1.\text{Recall@1}=0,\quad \text{Recall@2}=\frac12,\quad \text{Recall@3}=\frac12,\quad \text{Recall@4}=1.

Ez a kontroll közvetlenül mutatja, miért hibás a |top-k-ban releváns|k\frac{|\text{top-}k\text{-ban releváns}|}{k} képlet: top-3-ban az 1/31/3 hamisan alacsonyabb értéket adna, mint a helyes 1/21/2, mert a nevező a releváns elemek száma, nem a lista hossza.

28.4.4 4. Labor: új szintetikus DotPair retrieval protokoll

A VII. ellenőrző pont laborja egyetlen új, procedurális szintetikus vizuális problémát definiál: DotPair. A feladatválasztás a retrieval, mert ez a 28.3. Retrieval-értékelés és adatfelosztás fogalmait közvetlenül a korábbi CNN-gerincre alkalmazza.

28.4.4.1 Adatgenerátor és relevancia-reláció

Minden képen 24×2424\times24-es fekete háttéren két fehér, 2×22\times2-es blokk látható. Egy scene a két blokk rögzített (x1,y1,x2,y2)(x_1,y_1,x_2,y_2) koordináta-négyese; a scene két view-ja ugyanezt a geometriát kapja, de a két view-hoz független, σ=0,08\sigma=0{,}08 szórású Gauss-zajt adunk hozzá, majd a képet [0,1][0,1]-re vágjuk. A relevancia-reláció: qq és gg akkor releváns pár, ha scene_id megegyezik és view_id eltér. Nincs osztálycímke; a cél nem a tájolás felismerése, hanem a zajos párok megtalálása.

A generátor a lab/n112_dotpair/generate_dotpair.py fájlban készül el, a következő szerződéssel:

Munkakönyvtár: lab/n112_dotpair/
Parancs: python generate_dotpair.py --output data --seed 20261112
Kimenet:
  data/images.npy       (240, 1, 24, 24) float32, [0, 1]
  data/metadata.csv     240 sor: index, scene_id, view_id, split
  data/manifest.json    verzió, seed, alak, SHA-256

A split: 60 train scene (120 kép), 15 val scene (30 kép), 15 test scene (30 kép). A query-k a test scene-k view_id=1 képei; a gallery a test scene-k view_id=2 képei plusz a val scene-k mindkét view-ja. A releváns gallery elemek csak a test scene azonos scene_id-hez tartozó view-2 képek, tehát query-nként pontosan egy releváns elem van; a valos elemek disztraktorok. Ez a felépítés garantálja, hogy a query és a releváns gallery elem ugyanazt a geometriát, de eltérő zajrealizációt tartalmaz.

28.4.4.2 Baseline, modell és protokoll

A baseline a nyers pixelvektor L2-normalizált euklideszi távolsága: minden képet 576 dimenziós vektorként kezelünk, g∈ℝ576g\in\mathbb R^{576}; a ranking a növekvő ∥q−g∥2\|q-g\|_2 sorrendje. A modell egy kis CNN-embedding:

Conv2d(1, 8, 3) -> ReLU -> MaxPool2d(2) ->
Conv2d(8, 16, 3) -> ReLU -> MaxPool2d(2) -> Flatten ->
Linear(16*4*4, 32) -> L2-normalize

A paraméterszám körülbelül 9472. A tanítás triplet loss marginnal α=0,5\alpha=0{,}5, minibatch 32, Adam, seed 20261112, float32, CPU. A pozitív pár az azonos scene másik view-ja, a negatív egy másik scene véletlen view-ja. A modell tanítása a 24.4. VI. ellenőrző pont: megbízható CNN-training receptjét követi: a legjobb checkpoint kiválasztása kizárólag a valos triplet loss alapján történik; a test query/gallery készlet a modellválasztás után egyetlen alkalommal kerül kiértékelésre.

28.4.4.3 Kiértékelő kód és várható kimenet

A retrieval_eval.py a következő minimális, ellenőrizhető magot tartalmazza; a teljes tanítási ciklust a hallgató a korábbi laborokból adaptálja, de ezt a kiértékelőt változatlanul futtatja.

# lab/n112_dotpair/retrieval_eval.py
import json
import numpy as np

def recall_at_k(distances, gallery_scene_ids, query_scene_id, view_ids, k):
    # distances: (M,) csökkenő sorrendben rendezett távolságok a gallery elemeihez
    # gallery_scene_ids, view_ids: a gallery rendezett metadata oszlopai
    relevant_mask = (gallery_scene_ids == query_scene_id)
    n_rel = int(relevant_mask.sum())
    order = np.argsort(distances)
    top_indices = order[:k]
    hits = relevant_mask[top_indices].sum()
    return float(hits) / n_rel, n_rel, hits

# Betöltés: images.npy, metadata.csv; query = test/view 1, gallery = test/view 2 + val
# A teljes munkamenet a labor reportban szerepel.
# Ellenőrzés: minden query-hez n_rel == 1, a query view-ja nincs a galleryban.

A futtatási parancs:

cd lab/n112_dotpair
python generate_dotpair.py --output data --seed 20261112
python retrieval_eval.py --data_dir data --split test --method baseline --seed 20261112
python retrieval_eval.py --data_dir data --split test --method model --seed 20261112

A kimeneti JSON sémája a következő; a számértékek jelölt szemléltetés, nem a szerző által futtatott mérés, mert a kézirat írásakor a generátor és a tanítás nem futott le:

{
  "seed": 20261112,
  "baseline_recall_at_1": 0.20,
  "baseline_recall_at_2": 0.40,
  "model_recall_at_1": 0.50,
  "model_recall_at_2": 0.65,
  "note": "Jelölt szemléltetés, nem mért futás."
}

Az ellenőrzési protokoll négy lépése: (1) a SHA-256 manifest az adat regenerálhatóságát igazolja; (2) a query-k és gallery-k diszjunkt view_id-t tartalmaznak; (3) query-nként pontosan egy releváns gallery elem van; (4) a Recall@k nevezője minden query-re 11, tehát a binarizált átlag megegyezik a releváns elem top-k-ba kerülésének gyakoriságával. Ha a modell Recall@1 nem haladja meg a baseline-t, akkor a CNN-embedding nem tanult jobb hasonlóságot, mint a nyers pixel; ez lehet túl kicsi modell, rossz margin vagy nem megfelelő inicializálás következménye. A DotPair eredménye semmiképpen nem általánosítható természetes képi retrieval benchmarkra; csak azt bizonyítja, hogy a protokoll a megadott feltételek mellett korrekt módon értékel.

28.4.5 5. Feladatok

F1 – fogalmi, nehézség 1. Definiáld a target, output és metrika hármast mind a négy feladatcsaládra a 28.4. VII. ellenőrző pont: CNN alkalmazási szerződés szerződése szerint. Adj egy olyan példát, amelyben az output nem metrika: egy softmax-vektor miért nem pontosság, és egy logits-sor miért nem osztálycímke? Átadandó eredmény: egy táblázat és két mondat indoklás.

F2 – levezetési, nehézség 1. Adott query qq, gallery G={g1,g2,g3}G=\{g_1,g_2,g_3\}, releváns elemek {g2}\{g_2\}, távolságok d(q,g1)=0,40d(q,g_1)=0{,}40, d(q,g2)=0,25d(q,g_2)=0{,}25, d(q,g3)=0,10d(q,g_3)=0{,}10. Számítsd ki a Recall@1, Recall@2 és Recall@3 értékét, és indokold a nevező választását. Átadandó eredmény: három szám, a rendezett lista és a nevező igazolása.

F3 – implementációs, nehézség 2. Írj Python-függvényt iou(box_a, box_b) néven, amely nullától indexelt, fél-nyílt xyxy dobozokra IoU-t számol. Az input két (xmin, ymin, xmax, ymax) quadrupla, deklarált típusú float vagy int; a kimenet float. Ellenőrizd a 3.2-es kontrollal: [1,2,5,6][1,2,5,6] és [3,4,7,8][3,4,7,8] mellett a kimenet 1/71/7, tolerancia 10−710^{-7}. Átadandó eredmény: futtatható kód importtal, valamint a kontroll kimenete.

F4 – hibakeresési, nehézség 2. Egy kolléga a retrieval-kiértékelésben a Recall@k-t így számolja: a top-kk listában szereplő releváns elemek számát osztja kk-val. Magyarázd el, miért hibás ez a formula, és mutass konkrét ellenpéldát a 3.4-es kontrollból, ahol a hibás érték eltér a helyestől. Adj javítást és egy visszaellenőrzési lépést. Átadandó eredmény: az ok, az ellenpélda számértékei, a javítás és az ellenőrzés.

F5 – kísérleti/transzfer, nehézség 3. A DotPair labor jelenleg retrievalt értékel. Tervezz protokollt ugyanerre az adathalmazra detektálási feladatra: a modellnek a két blokk középpontját kell becsülnie (x1,y1,x2,y2)(x_1,y_1,x_2,y_2) formában. Add meg a target-konverziót, a baseline-t (például a kép súlypontja mindkét pontra vagy a két legfényesebb régió centroidja), a splitet, a metrikát (átlagos euklideszi koordinátahiba, vagy pont-IoU), valamint egy érvényességi korlátot. Átadandó eredmény: legalább egy lehetséges terv és egy alternatíva indoklással.

28.4.6 6. Megoldások és indoklás

F1. A megoldás táblázatosan összefoglalható: osztályozás targetje osztályindex, outputja logits, metrikája accuracy; detektálás targetje dobozlista, outputja detektált dobozok score-ral, metrikája AP; szegmentálás targetje pixelcímke-tensor, outputja pixel-logits, metrikája mIoU/Dice; retrieval targetje relevancia-reláció, outputja embedding, metrikája Recall@k/mAP. Az output nem metrika, mert a softmax-vektor egy valószínűségi előrejelzés, nem egyetlen értékelő szám: [0,9,0,05,0,05][0{,}9,0{,}05,0{,}05] akkor is lehet hibás, ha a 0,90{,}9 nem a target osztályra esik. Az accuracy a teljes kiértékelő halmazra aggregál, a logits pedig aktiváció előtti pontszám, amelyből a döntés csak argmax-szal nyerhető.

F2. A releváns elemek halmaza {g2}\{g_2\}, tehát a nevező 11. A rendezett lista: [g3,g2,g1][g_3,g_2,g_1]. Top-1-ben g3g_3 nem releváns, tehát Recall@1=0\text{Recall@1}=0; top-2-ben {g3,g2}\{g_3,g_2\}, az egyetlen releváns elem benne van, tehát Recall@2=1\text{Recall@2}=1; top-3-ban Recall@3=1\text{Recall@3}=1. A nevező a releváns elemek száma, nem a top-kk hossza; ha kk-val osztanánk, top-3-ban 1/31/3-ot kapnánk, ami hibás.

F3. A teljes függvény:

import numpy as np

def iou(box_a, box_b):
    xmin_a, ymin_a, xmax_a, ymax_a = box_a
    xmin_b, ymin_b, xmax_b, ymax_b = box_b
    inter_xmin = max(xmin_a, xmin_b)
    inter_ymin = max(ymin_a, ymin_b)
    inter_xmax = min(xmax_a, xmax_b)
    inter_ymax = min(ymax_a, ymax_b)
    inter_w = max(0.0, inter_xmax - inter_xmin)
    inter_h = max(0.0, inter_ymax - inter_ymin)
    inter = inter_w * inter_h
    area_a = (xmax_a - xmin_a) * (ymax_a - ymin_a)
    area_b = (xmax_b - xmin_b) * (ymax_b - ymin_b)
    union = area_a + area_b - inter
    if union <= 0.0:
        return 0.0
    return inter / union

# Kontroll
box_gt = [1, 2, 5, 6]
box_pred = [3, 4, 7, 8]
val = iou(box_gt, box_pred)
assert abs(val - 1/7) < 1e-7, val
print(val)  # 0.14285714285714285

A fél-nyílt intervallum miatt a szélesség egyszerűen xmax−xminx_{\max}-x_{\min}; a max(0.0, ...) a diszjunkt dobozokra ad 00 metszetet.

F4. A hiba oka: a kolléga a precision-at-k-t számítja, nem a recall-t. A recall nevezője a query összes releváns gallery elemének száma, mert azt méri, mekkora hányadát találta meg a modell a releváns elemeknek. A 3.4-es példában a releváns elemek {g1,g3}\{g_1,g_3\}, tehát a nevező 22; a top-3 lista [g2,g1,g4][g_2,g_1,g_4], amelyben 11 releváns elem van. A hibás formula 1/31/3, a helyes 1/21/2. A javítás: a nevezőt n_rel néven tároljuk, nem k-ként. A visszaellenőrzés: a 3.4-es kontrollban top-4-re mindkét releváns elem benne van, tehát a helyes érték 2/2=12/2=1, míg a hibás 2/4=0,52/4=0{,}5, ami nyilvánvaló ellentmondás, mert az összes releváns elem megtalálva elérte a maximális recallt.

F5. Egy lehetséges terv: a DotPair generátor a koordinátákat a metadata.csv-ben vagy külön targets.npy fájlban elmenti; a detektálási target tehát képenként egy 44-dimenziós vektor (x1,y1,x2,y2)(x_1,y_1,x_2,y_2) float pixelkoordináta. A baseline a kép tömegközéppontja, amely mindkét pontra ugyanazt a koordinátát adja; ez rögzíti a triviális hiba nagyságát, amelynek a modellnél alacsonyabbnak kell lennie. A metrika az átlagos euklideszi koordinátahiba: 1N∑n∥p̂n−pn∥2\frac1{N}\sum_n \|\hat p_n-p_n\|_2, ahol p̂n\hat p_n a modell négy koordinátája. A split scene-csoportos, ahogy a retrievalnél; a modell ugyanazt a CNN-gerincet használhatja, de a fej egyetlen lineáris réteg 4 kimenettel, és a loss Huber vagy MSE. Az alternatíva pontonkénti IoU: minden predikált ponthoz 3×33\times3-es dobozt rendelünk, és a ground truth ponthoz ugyancsak, majd a két pont párosítását greedy módon végezzük; ez érzékenyebb a pontpárok felcserélésére, ezért a koordinátahiba stabilabb kiindulás. Érvényességi korlát: a két pont sorrendjének felcserélése a négykoordinátás MSE-t mesterségesen megnöveli, ezért a kiértékelés előtt a predikált pontokat a legközelebbi ground truth ponthoz kell párosítani; az eredmény nem valós detektálási benchmark.

28.4.7 7. Gyakori tévedés, önellenőrzés és visszahívás

A leggyakoribb tévedés: ugyanaz a CNN-gerinc látszólag „mindent tud”, ezért a hallgató a különböző célok metrikáit azonos skálán hasonlítja össze. Ellenpélda: legyen f(x)=cf(x)=c konstans embedding minden bemenetre. Ha osztályozási fejjel a logits mindig ugyanazt az osztályt adja, az accuracy kiegyensúlyozott három osztályra 1/31/3; retrievalben pedig minden távolság nulla, a ranking tetszőleges, tehát a Recall@k várhatóan a relevanciaarány, ami egyetlen releváns elem és MM gallery elem mellett k/Mk/M körüli. A 1/31/3 accuracy és a k/Mk/M recall nem összehasonlítható; az első a címke-találati arány, a második a releváns elemek megtalálásának feltételes aránya.

Önellenőrzéshez három kérdést érdemes feltenni: (1) A veszteség minden célalakkal összhangban van-e, például a pixel-loss az H×WH\times W pozíciók átlagát veszi-e? (2) A fél-nyílt xyxy doboz területét nem összekevertük-e a zárt intervallummal, ahol egy extra pixel hozzáadódna? (3) A retrieval nevezője minden query-re a releváns elemek száma, nem pedig kk? Ha bármelyikre nemleges a válasz, a kontrollt újra kell végezni.

Visszahívás a korábbi egységekre: a 27.4. Instance mask és összetett feladat alfejezetben láttuk, hogy ugyanaz a szemantikus maszk több instance-felosztást enged, ezért a szegmentálás és detektálás targetje nem ekvivalens. A 24.4. VI. ellenőrző pont: megbízható CNN-training alfejezetben rögzítettük, hogy a checkpoint kiválasztása kizárólag a val_loss alapján történik; itt ugyanez az elv érvényes a triplet lossra. A 16.4. IV. ellenőrző pont: a CNN-operátor teljes megértése operátor-specifikációja pedig biztosította, hogy a gerinc keresztkorrelációt számol, amit a különböző fejek változtatás nélkül használhatnak.

28.4.8 8. Rövid összefoglaló

A VII. ellenőrző pont a CNN-alkalmazások szerződését rögzíti. Négy feladatcsaládot különböztetünk meg: az osztályozás célja osztályindex, a detektálásé változó dobozlista, a szegmentálásé pixelcímke-tensor, a retrievalé relevancia-reláció. Mindegyikhez eltérő loss, output, metrika, split és inference szerződés tartozik; ugyanaz a CNN-gerinc önmagában nem teszi a metrikákat összehasonlíthatóvá. Kézi kontrollokkal igazoltuk a softmax-összeget, a fél-nyílt dobozok IoU-ját, a bináris maszk Dice-értékét és a Recall@k nevezőjét. A DotPair labor új szintetikus retrievalt definiál, ahol query-nként egy releváns elem van; a protokoll baseline-t, triplet-loss tanítást és szigorú ellenőrzési lépéseket ad.

28.4.9 9. Következő alkalmazás

A 29.1. Lineáris és nemlineáris autoencoder az autoencoder felé lép: a retrieval-embedding célzott hasonlósági tanulás, míg az autoencoder a rekonstrukciós célból tanul latent reprezentációt. A most bevezetett split-, metrika- és inference-szerződés fogalmai közvetlenül alkalmazhatók lesznek a rekonstrukciós feladatra is.

28.4.10 10. Források