Jak implementovat vlastní detekci objektů s odpovídající šablony. Nejsou potřeba žádná anotovaná data!
Dnes, state-of-the-art object detection algoritmy (algoritmy, jejichž cílem je rozpoznat objekty v obrázcích) jsou pomocí neuronových sítí jako Yolov4.
Template matching je technika digitálního zpracování obrazu pro nalezení malé části obrazu, které odpovídá obrázek šablony. Je to mnohem jednodušší řešení než neuronová síť pro provádění detekce objektů. Kromě toho přichází s následujícími výhodami:
- není třeba komentovat dat (časově náročné a povinným úkolem k vlaku neuronové sítě)
- ohraničující boxy jsou přesnější
- není potřeba GPU
podle mých zkušeností, kombinující neuronové sítě jako Yolov4 a detekce objektů s odpovídající šablony zde je dobrý způsob, jak výrazně zlepšit své neuronové sítě výkon!
co je to shoda šablon?
při použití OpenCV odpovídající šablony, vaše šablona snímky pixel po pixelu na obrázku. Pro každou pozici, podobnost metriky je počítán mezi šablonu obrázku a část obrazu se obnoví:
Pokud similarity metric je dostatečně vysoká pro jeden pixel, pak je tento pixel je asi levý horní roh objektu odpovídající šablonu!
v důsledku toho můžete dosáhnout detekce objektů pomocí párování šablon pouze tehdy, pokud jsou objekty, které se pokusíte detekovat, dostatečně podobné— téměř identické-ve třídě. Stále můžete zahrnout více šablon pro řešení variací objektů(velikost, barva, orientace). Ale to zvýší dobu predikce.
na první pohled to vypadá velmi restriktivně. Ale hodně objektu, detekce případů použití mohou být řešeny s odpovídající šablony:
- ID v naskenované dokumenty
- prázdné parkovací místo ze stacionární kamery
- komponentů na montážní lince…
praktický příklad
dobrým případem pro detekci objektů pomocí párování šablon je detekce Součástí na plošných spojích, jako je tento:
Můžeme si představit, montážní linka výroba těchto obvodů. Představme si, že některé vyrobené obvody chybí komponenty, a proto jsou vadné. Mohli bychom navrhnout instalaci kamery na konci stezky a natočit každý okruh, abychom odfiltrovali vadné výrobky. Toho můžeme dosáhnout detekcí objektů pomocí shody šablon!
z důvodu jednoduchosti se zaměříme na detekci několika komponent.
první složka se objeví dvakrát:
Tenhle objevují čtyřikrát:
A ten třetí se objeví šestkrát:
Nakonec jsme se rozhodli tyto tři obrázky jako šablony. V důsledku toho je složitost tohoto případu použití snížena: snadno detekujeme alespoň objekty vybrané jako šablony.
Základní detekci objektů s odpovídající šablony
Definování šablony
za Prvé, jsme se definovat šablony z:
- obrázek cesta,
- label
- barva (pro výsledek vizualizace —bounding boxy a štítky, barvy),
- a odpovídající prahové hodnoty.
Zadruhé se domníváme, že všechny pixely, které mají metriku podobnosti nad touto prahovou hodnotou, označují detekci této šablony.
zde je Kód definující šablony:
Detekce objektu s odpovídající šablony
Pak jsme smyčka přes šablony provést detekci objektů s odpovídající šablony pro každý šablony. Protože používáme prahovou hodnotu, vybereme normalizovanou metriku podobnosti (TM_CCOEFF_NORMED) při použití shody šablon. Proto můžeme vybrat práh mezi 0 a 1:
domníváme se, že každý pixel má skóre podobnosti výše šablony práh je horní levý roh objektu (šablony je výška, šířka a označení).
Vizualizace detekovaných objektů
Pak jsme plot předpověděl bounding boxy této detekce objektů s odpovídající šablony na obrázku:
Konečně, dostaneme následující výsledky:
Jak je uvedeno tloušťka krabice (v zelené, žluté a červené), každý objekt byl zjištěn několikrát.
Odstranit duplikáty
proč jsme získali duplicitní detekce? Jak je vysvětleno výše, OpenCV template matching vrací 2 – D matici mající rozměr vstupního obrazu (jedna buňka— a tedy jedno skóre podobnosti – pro každý vstupní obrazový pixel).
Proto, když objekt je detekován na jednom místě, všechny okolní pixely s největší pravděpodobností bude mít stejné skóre podobnosti, a tedy považován za jiný předmět levý horní roh.
abychom tento problém vyřešili, budeme třídit všechny detekce snížením hodnot shody. Poté si vybereme, zda chcete ověřit každou detekci. Detekci ověřujeme, pokud se příliš nepřekrývá s některou z již ověřených detekcí. Nakonec zjistíme, že dvě detekce se překrývají, pokud je průnik přes spojení jejich ohraničujících polí nad daným prahem. Tento proces se nazývá non-maximální potlačení.
Tady je vizuální vysvětlení toho, co Křižovatce nad Unie (dlužní Úpis) :
Zde je, jak jsem implementoval (compute dlužní Úpis metoda spolu s dalšími vysvětleními najdete zde):
A pak, Jen jsem přidal tyto dva řádky po detekci smyčky:
Jako výsledek, dostaneme:
Mnohem čistší! Nyní jasně vidíme, že všechny první a třetí komponenty jsou detekovány bez falešně pozitivních (přesnost a vyvolání 1).
nyní chceme snížit počet falešných pozitiv pro komponentu 2. Nejjednodušší je zvýšit práh shody pro šablonu použitou pro tento štítek.
Výběr hyperparameters
To je samozřejmě lepší počítat detekce objektů metriky na různých obrázků vybrat hyperparameters (odpovídající šablony práh a Non-Maximum Suppression threshold). Pro teď, můžeme jednoduše zvýšit práh pro komponenty 2:
A získáme:
nyní Máme pouze dva falešně pozitivní výsledky pro složku 2, namísto desítek (přesné 2/3, připomeňme 1)! Kromě toho jsou komponenty 1 a 2 stále dokonale detekovány (přesnost a vyvolání 1).
zlepšit naše výsledky můžeme:
- zahrnout šablony pro komponenty zaměňovat s komponenty 2.
- zkuste několik metrik podobnosti
- anotujte několik obrázků pro výpočet metrik detekce a proveďte vyhledávání v mřížce na těchto parametrech.
souhrn
dosáhli jsme detekce objektů pomocí odpovídající šablony:
- definovat alespoň jednu šablonu pro každý objekt (více šablon, které mají pro jeden objekt více své odvolání bude vysoká—a vaše přesnost nízká)
- pomocí OpenCV šablonu odpovídající metoda na obrázek pro každou šablonu
- vzhledem k tomu, že každý pixel má skóre podobnosti výše šablonu práh je horní levý roh objektu (s této šabloně je výška, šířka a označení)
- použití Non-Maximální Potlačení detekce získaná
- výběr šablony prahové hodnoty pro zlepšení přesnosti detekce!
to je ono!
hledáte odborníky na rozpoznávání obrázků? Neváhejte nás kontaktovat!