Oktatóanyag: Leállítási jelek észlelése képeken a Model Builderrel
Megtudhatja, hogyan hozhat létre objektumészlelési modellt a ML.NET Model Builder és az Azure Machine Learning használatával a képeken lévő stoptáblák észleléséhez és megkereséséhez.
Eben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Az adatok előkészítése és értelmezése
- Modellkészítő konfigurációs fájljának létrehozása
- Válassza ki a forgatókönyvet
- A betanítási környezet kiválasztása
- Az adatok betöltése
- A modell betanítása
- A modell értékelése
- A modell használata előrejelzésekhez
Előfeltételek
Az előfeltételek és a telepítési utasítások listáját a Model Builder telepítési útmutatójában találja.
A Model Builder objektumészlelésének áttekintése
Az objektumészlelés számítógépes látási probléma. Bár szorosan kapcsolódik a képbesoroláshoz, az objektumészlelés részletesebben végzi el a képbesorolást. Az objektumészlelés a képeken belüli entitásokat is megkeresi és kategorizálja. Az objektumészlelési modelleket általában mélytanulási és neurális hálózatok használatával tanítják be. További információ: Mély tanulás és gépi tanulás .
Használjon objektumészlelést, ha a képek több különböző típusú objektumot tartalmaznak.
Az objektumészlelés néhány használati esete a következő:
- Self-Driving Autók
- Robotika
- Arcészlelés
- Munkahelyi biztonság
- Objektumszámlálás
- Tevékenységfelismerés
Ez a minta egy C# .NET Core-konzolalkalmazást hoz létre, amely a Modellszerkesztővel létrehozott gépi tanulási modellel észleli a képeken a leállítási bejelentkezéseket. Az oktatóanyag forráskódját a dotnet/machinelearning-samples GitHub-adattárban találja.
Az adatok előkészítése és értelmezése
A Stop Sign adatkészlet 50, a Nem perjelből letöltött képből áll, amelyek mindegyike legalább egy stopjelet tartalmaz.
Új VoTT-projekt létrehozása
Töltse le az 50 leállítási jelkép adathalmazát, és bontsa ki.
Töltse le a VoTT-t (Visual Object Tagging Tool).
Nyissa meg a VoTT-t, és válassza az Új projekt lehetőséget.
A Project Settings (Projektbeállítások) területen módosítsa a Megjelenítendő név értékét "StopSignObjDetection" értékre.
Módosítsa a biztonsági jogkivonatotúj biztonsági jogkivonat létrehozására.
A Forráskapcsolat elem mellett válassza a Kapcsolat hozzáadása lehetőséget.
A Kapcsolat beállításai területen módosítsa a forráskapcsolat megjelenítendő nevét "StopSignImages" értékre, és válassza a Helyi fájlrendszerlehetőséget szolgáltatóként. A Mappa elérési útja területen válassza a Stop-Signs mappát, amely az 50 betanítási képet tartalmazza, majd válassza a Kapcsolat mentése lehetőséget.
A Project Settings (Projektbeállítások) területen módosítsa a ForráskapcsolatotStopSignImages (az imént létrehozott kapcsolat) beállításra.
Módosítsa a CélkapcsolatotStopSignImages-ra is. A projektbeállításoknak most az alábbi képernyőképhez hasonlóan kell kinéznie:
Válassza a Projekt mentése lehetőséget.
Címke- és címkeképek hozzáadása
Ekkor megjelenik egy ablak, amelyen az összes betanítási kép előnézete látható a bal oldalon, középen a kijelölt kép előnézete, a jobb oldalon pedig a Címkék oszlop. Ez a képernyő a Címkék szerkesztője.
Új címke hozzáadásához válassza az első (plusz alakú) ikont a Címkék eszköztáron.
Nevezze el a "Stop-Sign" címkét, és nyomja le az Enter billentyűt .
Kattintással és húzással téglalapot rajzolhat a kép minden stop jeléhez. Ha a kurzor nem teszi lehetővé téglalap rajzolását, válassza a téglalap rajzolása eszközt a felső eszköztáron, vagy használja az R billentyűparancsot.
A téglalap rajzolása után az előző lépésekben létrehozott Stop-Sign címkét választva adja hozzá a címkét a határolókerethez.
Kattintson az adathalmaz következő képének előnézeti képére, és ismételje meg ezt a folyamatot.
Folytassa a 3–4. lépést minden egyes képbe való leállítási bejelentkezéshez.
A VoTT JSON exportálása
Az összes betanítási rendszerkép címkézése után exportálhatja azt a fájlt, amelyet a Model Builder a betanításhoz fog használni.
Válassza a bal oldali eszköztár negyedik ikonját (az átlós nyilat tartalmazó ikont egy mezőben), és lépjen az Exportálási beállítások területre.
Hagyja a szolgáltatótVoTT JSON-ként.
Módosítsa az Eszközállapot értékét Csak címkézett eszközök értékre.
Törölje a Képek belefoglalása jelölőnégyzet jelölését. Ha belefoglalja a képeket, a betanítási képeket a rendszer a létrehozott exportálási mappába másolja, ami nem szükséges.
Válassza az Exportálási beállítások mentése lehetőséget.
Vissza a Címkék szerkesztőhöz (a bal oldali eszköztár második ikonja menüszalagként). A felső eszköztáron válassza a Projekt exportálása ikont (az utolsó ikon egy mezőben nyílként formázva), vagy használja a Ctrl+E billentyűparancsot.
Ez az exportálás létrehoz egy vott-json-export nevű új mappát a Stop-Sign-Images mappában, és létrehoz egy StopSignObjDetection-export nevű JSON-fájlt az új mappában. Ezt a JSON-fájlt fogja használni a következő lépésekben egy objektumészlelési modell betanításához a Model Builderben.
Konzolalkalmazás létrehozása
A Visual Studióban hozzon létre egy StopSignDetection nevű C# .NET Core-konzolalkalmazást.
mbconfig
Fájl létrehozása
- A Megoldáskezelő kattintson a jobb gombbal a StopSignDetection projektre, majd válassza aGépi tanulási modellhozzáadása>... lehetőséget a Modellkészítő felhasználói felületének megnyitásához.
- A párbeszédpanelen adja a StopSignDetection nevet a Modellszerkesztő projektnek, majd kattintson a Hozzáadás gombra.
Forgatókönyv kiválasztása
Ebben a példában a forgatókönyv az objektumészlelés. A Modellkészítő Forgatókönyv lépésében válassza ki az Objektumészlelési forgatókönyvet.
Ha nem látja az objektumészlelést a forgatókönyvek listájában, előfordulhat, hogy frissítenie kell a Model Builder verzióját.
A betanítási környezet kiválasztása
A Model Builder jelenleg csak az Azure Machine Learning használatával támogatja a betanítási objektumészlelési modelleket, így alapértelmezés szerint az Azure-beli betanítási környezet van kiválasztva.
Ahhoz, hogy betanítsa a modellt az Azure ML használatával, létre kell hoznia egy Azure ML-kísérletet a Model Builderből.
Az Azure ML-kísérlet egy erőforrás, amely egy vagy több gépi tanulási betanítási futtatás konfigurációját és eredményeit foglalja magában.
Azure ML-kísérlet létrehozásához először konfigurálnia kell a környezetet az Azure-ban. Egy kísérlet futtatásához a következőkre van szükség:
- Azure-előfizetés
- Munkaterület: egy Azure ML-erőforrás, amely központi helyet biztosít a betanítási futtatás részeként létrehozott összes Azure ML-erőforráshoz és összetevőhöz.
- Számítás: Az Azure Machine Learning-számítás egy felhőalapú Linux rendszerű virtuális gép, amelyet betanításhoz használnak. További információ a Model Builder által támogatott számítási típusokról.
Azure ML-munkaterület beállítása
A környezet konfigurálása:
Válassza a Munkaterület beállítása gombot.
Az Új kísérlet létrehozása párbeszédpanelen válassza ki az Azure-előfizetését.
Válasszon ki egy meglévő munkaterületet, vagy hozzon létre egy új Azure ML-munkaterületet.
Új munkaterület létrehozásakor a következő erőforrások lesznek kiépítve:
- Azure Machine Learning-munkaterület
- Azure Storage
- Azure Application Insights
- Azure Container Registry
- Azure Key Vault
Ennek eredményeképpen ez a folyamat eltarthat néhány percig.
Válasszon ki egy meglévő számítást, vagy hozzon létre egy új Azure ML-számítást. Ez a folyamat eltarthat néhány percig.
Hagyja meg az alapértelmezett kísérletnevet, és válassza a Létrehozás lehetőséget.
Az első kísérlet létrejön, és a kísérlet neve regisztrálva lesz a munkaterületen. A későbbi futtatások (ha ugyanazt a kísérletnevet használják) ugyanannak a kísérletnek a részeként lesznek naplózva. Ellenkező esetben egy új kísérlet jön létre.
Ha elégedett a konfigurációval, a Modellszerkesztő Következő lépés gombját választva lépjen az Adatok lépésre.
Az adatok betöltése
A Modellkészítő Adat lépésében kiválaszthatja a betanítási adatkészletet.
Fontos
A Model Builder jelenleg csak a VoTT által létrehozott JSON-formátumot fogadja el.
Válassza a Bemenet szakaszban található gombot, és a Fájlkezelő segítségével keresse meg a
StopSignObjDetection-export.json
Stop-Signs/vott-json-export könyvtárban található elemet.Ha az adatok helyesnek tűnnek az Adatelőnézetben, a Következő lépés lehetőséget választva lépjen tovább a Betanítása lépésre.
A modell betanítása
A következő lépés a modell betanítása.
A Modellkészítő betanítása képernyőn válassza a Betanítás indítása gombot.
Ekkor az adatok fel lesznek töltve az Azure Storage-ba, és a betanítási folyamat az Azure ML-ben kezdődik.
A betanítási folyamat eltarthat egy ideig, és az idő a kiválasztott számítási mérettől és az adatok mennyiségétől függően változhat. Amikor először tanít be egy modellt az Azure-ban, valamivel hosszabb betanítási idő várható, mivel erőforrásokat kell kiépíteni. Az 50 képből álló minta betanítása körülbelül 16 percet vett igénybe.
A futtatások előrehaladását az Azure Machine Learning portálon követheti nyomon a Visual Studio Azure Portal-ban található Aktuális futtatás figyelése hivatkozásának kiválasztásával.
A betanítás befejezése után a Következő lépés gombra kattintva lépjen tovább az Értékelés lépésre.
A modell értékelése
Az Értékelés képernyőn áttekintést kap a betanítási folyamat eredményeiről, beleértve a modell pontosságát is.
Ebben az esetben a pontosság 100%, ami azt jelenti, hogy a modell több mint valószínű , hogy túl méretezhető az adathalmaz túl kevés képe miatt.
A Modell kipróbálása felületen gyorsan ellenőrizheti, hogy a modell a várt módon működik-e.
Válassza a Kép tallózása lehetőséget, és adjon meg egy tesztképet, lehetőleg olyat, amelyet a modell nem használt a betanítás részeként.
Az észlelt határolókereteken megjelenő pontszám jelzi az észlelt objektum megbízhatóságát . A fenti képernyőképen például a stopjel körüli határolókeret pontszáma azt jelzi, hogy a modell 99%-os biztos abban, hogy az észlelt objektum leállítási jel.
A küszöbérték csúszkával növelhető vagy csökkenthető pontszám küszöbértéke a pontszámok alapján hozzáadja és eltávolítja az észlelt objektumokat. Ha például a küszöbérték .51, akkor a modell csak azokat az objektumokat jeleníti meg, amelyek megbízhatósági pontszáma 0,51 vagy annál magasabb. A küszöbérték növelésekor kevesebb észlelt objektum jelenik meg, és a küszöbérték csökkentésekor több észlelt objektum jelenik meg.
Ha nem elégedett a pontossági metrikákkal, a modell pontosságának javításának egyik egyszerű módja a további adatok használata. Ellenkező esetben a Következő lépés hivatkozásra kattintva lépjen tovább a Modellszerkesztő Használat lépésére.
(Nem kötelező) A modell felhasználása
Ebben a lépésben olyan projektsablonok lesznek, amelyekkel felhasználhatja a modellt. Ez a lépés nem kötelező, és kiválaszthatja az igényeinek leginkább megfelelő módszert a modell kiszolgálásához.
- Konzolalkalmazás
- Webes API
Konzolalkalmazás
Amikor konzolalkalmazást ad hozzá a megoldáshoz, a rendszer kérni fogja, hogy nevezze el a projektet.
Nevezze el a konzolprojektet StopSignDetection_Console.
Kattintson a Hozzáadás a megoldáshoz elemre a projekt aktuális megoldáshoz való hozzáadásához.
Futtassa az alkalmazást.
A program által létrehozott kimenetnek az alábbi kódrészlethez hasonlóan kell kinéznie:
Predicted Boxes: Top: 73.225296, Left: 256.89764, Right: 533.8884, Bottom: 484.24243, Label: stop-sign, Score: 0.9970765
Webes API
Amikor webes API-t ad hozzá a megoldáshoz, a rendszer kérni fogja, hogy nevezze el a projektet.
Nevezze el a webes API-projektet StopSignDetection_API.
Kattintson a Hozzáadás a megoldáshoz elemre a projekt aktuális megoldáshoz való hozzáadásához.
Futtassa az alkalmazást.
Nyissa meg a PowerShellt, és írja be a következő kódot, ahol a PORT az a port, amelyen az alkalmazás figyel.
$body = @{ ImageSource = <Image location on your local machine> } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
Ha sikeres, a kimenetnek az alábbi szöveghez hasonlóan kell kinéznie.
boxes labels scores boundingBoxes ----- ------ ------ ------------- {339.97797, 154.43184, 472.6338, 245.0796} {1} {0.99273646} {}
- Az
boxes
oszlop az észlelt objektum határolókeret-koordinátáit adja meg. Az itt található értékek a bal, a felső, a jobb és az alsó koordinátákhoz tartoznak. - A
labels
az előrejelzett címkék indexe. Ebben az esetben az 1 érték egy stopjel. - A
scores
határozza meg, hogy a modell mennyire biztos abban, hogy a határolókeret az adott címkéhez tartozik.
Megjegyzés
(Nem kötelező) A határolókeret koordinátái 800 képpont szélességre és 600 képpont magasságra normalizálódnak. A kép határolókeret-koordinátáinak további utófeldolgozás során történő skálázásához a következőket kell elvégeznie:
- Szorozza meg a felső és az alsó koordinátákat az eredeti képmagassággal, és szorozza meg a bal és a jobb koordinátát az eredeti képszélességgel.
- Ossza el a felső és az alsó koordinátákat 600-tal, a bal és a jobb koordinátát pedig 800-tal.
Például az eredeti képméretek
actualImageHeight
ésactualImageWidth
a , valamint egyModelOutput
nevű kódrészletprediction
alapján az alábbi kódrészlet bemutatja a koordináták skálázásátBoundingBox
:var top = originalImageHeight * prediction.Top / 600; var bottom = originalImageHeight * prediction.Bottom / 600; var left = originalImageWidth * prediction.Left / 800; var right = originalImageWidth * prediction.Right / 800;
Előfordulhat, hogy egy kép több határolókeretet is tartalmazhat, ezért ugyanazt a folyamatot kell alkalmazni a kép minden határolókeretére.
- Az
Gratulálunk! Sikeresen létrehozott egy gépi tanulási modellt, amely észleli a képeken lévő leállítási jeleket a Model Builder használatával. Az oktatóanyag forráskódját a dotnet/machinelearning-samples GitHub-adattárban találja.
További források
Ha többet szeretne megtudni az oktatóanyagban említett témakörökről, tekintse meg az alábbi forrásanyagokat: