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.

Képernyőképek a képbesorolásról és az objektumbesorolásról.

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

  1. Töltse le az 50 leállítási jelkép adathalmazát, és bontsa ki.

  2. Töltse le a VoTT-t (Visual Object Tagging Tool).

  3. Nyissa meg a VoTT-t, és válassza az Új projekt lehetőséget.

    A VoTT kezdőképernyője

  4. A Project Settings (Projektbeállítások) területen módosítsa a Megjelenítendő név értékét "StopSignObjDetection" értékre.

  5. Módosítsa a biztonsági jogkivonatotúj biztonsági jogkivonat létrehozására.

  6. A Forráskapcsolat elem mellett válassza a Kapcsolat hozzáadása lehetőséget.

  7. 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.

    VoTT Új kapcsolat párbeszédpanel

  8. 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.

  9. 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:

    VoTT-projektbeállítások párbeszédpanel

  10. 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.

  1. Új címke hozzáadásához válassza az első (plusz alakú) ikont a Címkék eszköztáron.

    VoTT Új címke ikon

  2. Nevezze el a "Stop-Sign" címkét, és nyomja le az Enter billentyűt .

    VoTT Új címke

  3. 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.

  4. 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.

  5. Kattintson az adathalmaz következő képének előnézeti képére, és ismételje meg ezt a folyamatot.

  6. Folytassa a 3–4. lépést minden egyes képbe való leállítási bejelentkezéshez.

    VoTT-jegyzetekkel ellátott képek

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.

  1. 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.

  2. Hagyja a szolgáltatótVoTT JSON-ként.

  3. Módosítsa az Eszközállapot értékét Csak címkézett eszközök értékre.

  4. 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.

  5. Válassza az Exportálási beállítások mentése lehetőséget.

    A VoTT exportálási beállításai

  6. 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.

    VoTT Exportálás gomb

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

  1. 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.
  2. 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.

Modellkészítő varázsló a Visual Studióban

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.

Azure-beli betanítási környezet kiválasztása

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:

  1. Válassza a Munkaterület beállítása gombot.

  2. Az Új kísérlet létrehozása párbeszédpanelen válassza ki az Azure-előfizetését.

  3. 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.

  4. 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.

  5. Hagyja meg az alapértelmezett kísérletnevet, és válassza a Létrehozás lehetőséget.

    Az Azure-munkaterület beállítási párbeszédpanelje

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.

  1. Válassza a Bemenet szakaszban található gombot, és a Fájlkezelő segítségével keresse meg a StopSignObjDetection-export.jsonStop-Signs/vott-json-export könyvtárban található elemet.

    Modellkészítő adatlépése

  2. 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.

Model Builder – Értékelési lépés

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.

Modellkészítő – Próbálja ki a modellt

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.

  1. Nevezze el a konzolprojektet StopSignDetection_Console.

  2. Kattintson a Hozzáadás a megoldáshoz elemre a projekt aktuális megoldáshoz való hozzáadásához.

  3. 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.

  1. Nevezze el a webes API-projektet StopSignDetection_API.

  2. Kattintson a Hozzáadás a megoldáshoz elemre a projekt aktuális megoldáshoz való hozzáadásához.

  3. Futtassa az alkalmazást.

  4. 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"
    
  5. 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:

    1. 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.
    2. 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éretekactualImageHeight és actualImageWidtha , valamint egy ModelOutput nevű kódrészlet predictionalapján az alábbi kódrészlet bemutatja a koordináták skálázását BoundingBox :

    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.

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: