Az Android fejlesztés világában a mai eszközök teljes kihasználása jelenti a különbséget egy funkcionális alkalmazás és egy valóban élvonalbeli alkalmazás között. Az egyik legsokoldalúbb komponens az ML Kit alapú szkenner, amely a kamera segítségével képes átalakítani az alkalmazás és a környezete közötti interakciót. A vonalkódok és QR-kódok olvasásától kezdve az objektumok észlelésén át a szövegek és arcok felismeréséig a lehetőségek a megfelelő megközelítéssel gyakorlatilag végtelenek.
Sok fejlesztő ragaszkodik az alapokhoz, és nem használja ki teljes mértékben az ML Kit képességeit Androidon. A helyes integráció nem csak a függőségek beépítéséről és a tesztelési példákról szól; A kulcs a teljesítmény optimalizálása, az egyes paraméterek konkrét esetekre való konfigurálása, valamint a hivatalos dokumentáció és más szakemberek tapasztalatai által kínált összes lehetőség és trükk megértése. Ebben a cikkben lépésről lépésre és részletesen áttekintjük mindent, amit tudnod kell ahhoz, hogy a legtöbbet hozd ki az ML Kit szkennerből Androidon, a telepítéstől a speciálisabb beállításokig, beleértve a képelemzést, a koordinátakezelést és a valós idejű munkavégzéshez szükséges alapvető tippeket.
Mi az ML Kit, és miért forradalmasította a szkennelést Androidon?
Az ML Kit egy Google által fejlesztett SDK, amely nagy teljesítményű mesterséges intelligencia technológiákat integrál a mobil eszközökön végrehajtott számítógépes látási feladatokhoz. Nemcsak a gépi tanulási technikák egyszerű alkalmazását teszi lehetővé, hanem magán az eszközön is, internetkapcsolat nélkül. Ezáltal megbízható, gyors és hasznos eszközzé válik olyan alkalmazásokhoz, amelyek kódolvasást, arcfelismerést, szövegolvasást vagy objektumazonosítást igényelnek.
Az ML Kit moduláris architektúrája rugalmasságot biztosít azok számára, akik a legszükségesebbeket szeretnék belefoglalni, vagy a legapróbb részletekig szeretnék testre szabni. Választhat a csomagolt modellek (nagyobbak, már a kezdetektől elérhetők) vagy a dinamikusan letöltött modellek (amelyek helyet takarítanak meg az alkalmazásban, de kezdeti letöltést igényelnek) között. Ez a kettősség lehetővé teszi, hogy a projekt igényeitől függően az alkalmazás méretét vagy a használat azonnaliságát rangsoroljuk.
ML Kit integrálása a CameraX-szel: A nyerő kombináció
Ha robusztus integrációt keresel az Android kamera és az ML Kit képességei között, a CameraX a legjobb szövetségesed. Ez a könyvtár nagyban megkönnyíti a kamera hardveréhez és a képfolyam-kezeléshez való hozzáférést, valamint lehetővé teszi a felhasználói felület elemeinek és a gépi tanulási eredmények kamera előnézetre vetítését.
Az osztályon keresztül ML Kit analizátor, a CameraX kimenetét összekapcsolhatja az ML Kit detektoraival és analizátoraival. Ez az analizátor megvalósítja a felületet Képelemzés.Analyzer, hatékonyan kezeli a képfelbontást, a koordináta-transzformációkat és az eredmények kézbesítését, ami nagymértékben leegyszerűsíti a fejlett szkennelési funkciók fejlesztését.
A CameraController és a PreviewView használata leegyszerűsíti a felület megjelenítését és az eredmények fogadását. Az ML Kit Analyzer integrálásakor csak a kívánt detektor típusát (például vonalkód) és az eredmények fogadásának módját kell megadnia. Ezenkívül a CameraX olyan részleteket is kezel, mint a képforgatás és a képarány, elkerülve a manuálisabb fejlesztések során előforduló gyakori hibákat.
Vonalkódok felismerése és dekódolása: az alapvető példán túl
El vonalkód szkennelés Ez az ML Kit egyik legfontosabb felhasználási esete Androidon. Az érdekes az, hogy az API-ja lehetővé teszi, hogy messze túlmutasson a tipikus QR-kód észlelésén. A GS1, EAN-13, PDF417 szabványoktól kezdve a Data Matrixig vagy az Aztecig a sokoldalúság maximális, megnyitva az utat a logisztika, a kereskedelem, a termékazonosítás és sok más terület alkalmazásai előtt.
A detektor konfigurálásakor a ténylegesen szükséges formátumokra korlátozhatja azt, ami egy megnövelt sebesség és alacsonyabb erőforrás-fogyasztás. A keresés korlátozásával a feldolgozás hatékonyabb és valós időben jobban reagál.
A kiemelt lehetőségek között szerepelnek:
- enableAllPotentialBarcodes(): Lehetővé teszi a képen található összes lehetséges kód észlelését, még akkor is, ha néhányat még nem lehet dekódolni. Ez akkor hasznos, ha a felhasználónak rá kell zoomolnia a kamerára, vagy jobban kell fókuszálnia.
- setZoomJavaslatBeállítások(): Engedélyezi az automatikus zoomot, így az alkalmazás automatikusan javaslatokat tehet a kamera zoomjának mértékére a detektált kód olvashatóságának maximalizálása érdekében.
A Zoom automatikus javaslata egy kulcsfontosságú új funkció ami javítja a felhasználói élményt, különösen olyan helyzetekben, ahol a kódok távolsága vagy mérete nagymértékben változik. Saját magad is megvalósíthatod visszahív a zoom paraméterek beállításához az ML Kit detektor ajánlásai szerint.
Bemeneti képek helyes előkészítése
Az ML Kit szkenner teljesítményének egyik legfontosabb tényezője a bemeneti képek minősége és mérete. A hivatalos dokumentáció nagy hangsúlyt fektet a megfelelő pixelszámra és felbontásra, mivel az érzékelési pontosság közvetlenül függ a képen lévő adatok ábrázolásától.
Például az EAN-13 kódok esetében a vonalaknak és szóközöknek legalább 2 képpont szélesnek kell lenniük; A teljes kódnak legalább 190 pixel szélesnek kell lennie. Az olyan összetettebb formátumoknál, mint a PDF417, a szükséges méretek még nagyobbak, akár 1156 pixel szélesek is lehetnek egyetlen sor esetében.
A koncentráció és az elszántság kulcsfontosságú. Ha a felhasználó elmosódott vagy alacsony felbontású képet készít, az eredmények kiszámíthatatlanok lehetnek. Jó gyakorlat 1280 x 720 vagy 1920 x 1080 felbontású képeket javasolni, amennyiben az eszköz teljesítménye ezt lehetővé teszi. Ha a késleltetés problémát jelent, csökkentheted a felbontást, de ügyelj arra, hogy a kód a lehető legtöbb képet elfoglalja.
Az ML Kit saját API-ja lehetővé teszi a kamerától kapott képforrások átalakítását Bemeneti kép. Ezt az objektumot a következőből építheted fel:
- kamerára jellemző média. Kép.
- Bitkép, ByteBuffer vagy ByteArray.
- Fájl URI (hasznos a képek galériából való betöltéséhez).
A CameraX esetében ezek közül a transzformációk közül sok automatikusan megoldódik., különösen a képforgatás és a valós idejű képkockatovábbítás tekintetében. Ez nagy terhet levesz a fejlesztő válláról, és biztosítja, hogy a feldolgozott kép mindig helyes legyen.
Képek feldolgozása és az eredmények kezelése
Miután a bemeneti kép elkészült, az ML Kit detektor feldolgozza a képet, és visszaadja az eredmények listáját. Vonalkódok esetén objektumokat fog kapni Vonalkód amelyek lehetővé teszik a képen található koordináták, a dekódolt érték, az adattípus (URL, kapcsolat, szöveg stb.) és további attribútumok elérését, ha vannak ilyenek.
Ezen eredmények kezelése rugalmas. Információkat helyezhet a képre, kapcsolatba léphet a felhasználóval (például egy webhivatkozás megnyitásával, ha az egy QR-kód), vagy mentheti a detektált értékeket egy adatbázisba. Használatának köszönhetően hallgatók, kezelheti mind a sikeres, mind a hibákat, illetve a felismeretlen képeseményeket.
A CameraX-szel való integráció során elengedhetetlen az egyes megfelelő lezárás Képproxy a feldolgozás után, hogy elkerüljük a memóriaszivárgásokat és fenntartsuk a valós idejű elemzés folyékonyságát.
Optimalizálás valós idejű elemzéshez
Az ML Kit teljes potenciálja akkor szabadul fel, amikor valós időben dolgozol fel képeket, például egy videostreamből. A zökkenőmentes, akadozásmentes élmény fenntartásához számos fontos tippet érdemes betartani:
- Ne használd a kamera maximális natív felbontását, kivéve, ha feltétlenül szükséges. Sok esetben a 2 megapixeles képek több mint elegendőek, és javítják a feldolgozási sebességet.
- Csökkentsd a felbontást, ha a sebesség a legfontosabb, de a pontos kódoláshoz szükséges minimumot megtartva.
- Videofolyamokban a detektor eltérő eredményeket adhat az egymást követő képkockák között. Célszerű legalább több egymást követő azonos detektálást megvárni, mielőtt egy eredményt érvényesnek tekintenénk.
- Korlátozza a detektorhoz érkező hívások számát. Például, ha egy kép feldolgozása már folyamatban van, akkor a további képkockákat figyelmen kívül kell hagyni, amíg be nem fejezte.
- Ha CameraX-et használsz, mindenképpen állítsd be a stratégiát Képelemzés.STRATEGY_KEEP_ONLY_LATEST hogy mindig a legfrissebb képet jelenítse meg, és az alkalmazás agilis maradjon.
- A grafikák képre helyezéséhez (pl. határolókeretek) először feldolgozza a képet, majd egyetlen menetben rendereli a képet és az átfedést is, optimalizálva a képkockánkénti grafikai munka mennyiségét.
A képformátum típusa is számít. Ha a Camera2-t használod, válaszd ezt: YUV_420_888; régebbi API-k esetén, NV21 kompatibilitást és sebességet garantál.
Objektumészlelés és -követés az ML Kitben
Az ML Kit szkenner lehetőségei nem korlátozódnak a vonalkódokra: az objektumok észlelése és követése egy másik kulcsfontosságú funkció. Ez az API lehetővé teszi legfeljebb öt objektum azonosítását egy képen vagy keretben, azok pozíciójának meghatározását, és mindegyikhez egyedi követőazonosító hozzárendelését. Amikor valós idejű videóval dolgozol, teljes pontossággal követheted egy objektum mozgását az egymást követő képkockákon keresztül.
Az objektumészlelési beállítások lehetővé teszik a következőket:
- Válasszon az átviteli módok között (STREAM_MODE), alacsony késleltetésre és követésre optimalizálva, valamint egyképes módban (EGYKÉPES MÓD).
- Kapcsolja be vagy ki az objektumok tág kategóriákba (divat, étel, otthon, helyek, növények, idegenek) rendezését.
- Állítsa be, hogy több objektumot szeretne-e egyszerre feldolgozni, vagy csak a legkiemelkedőbbet.
Az alkalmazások a bolti termékfelismeréstől kezdve az oktatási alkalmazásokban található növény- vagy állatelemzésen át a fejlett logisztikai és raktári asszisztens rendszerekig terjednek.
A képelőkészítés és a forgatás kezelése ugyanazokat az elveket követi, mint a kódszkennelésnél. és ajánlott használni Bemeneti kép közvetlenül a támogatott formátumokból létrehozva a teljesítmény maximalizálása érdekében.
Szövegfelismerés és arcfelismerés
A szövegfelismerés (OCR) és a valós idejű arcfelismerés az ML Kit két másik fő pillére. A Text API képes blokkok, vonalak és elemek megkeresésére egy képen belül, pontos pozíciójuk és felismert tartalmuk visszaadására, még összetett karakterek vagy többféle nyelv esetén is.
Az arcfelismerés lehetővé teszi a kontúrok, a konkrét vonások (szemek, száj, orr stb.) azonosítását, a gesztusokhoz (például mosolygás vagy pislogás) kapcsolódó valószínűségek megállapítását, és a képre rajzolva vizualizálja az eredményeket. Egyéni osztályok integrálásával például dobozokat vagy pontokat helyezhet el minden egyes észlelt arc felett, és különféle információkat jeleníthet meg a felhasználónak.
Ez a fajta megvalósítás némi plusz menedzsmentet igényel a grafikus ábrázolás tekintetében., de integráció a CameraX-szel és Grafikus átfedés megkönnyíti a folyamatot. A fejlesztők teljes mértékben testreszabhatják a felületet, és az automatikus elemzés eredményeit a kívánt vizuális stílushoz igazíthatják.
Tippek az optimális felhasználói élményhez
Egy fejlett szkennelési funkció sikere nem kizárólag az algoritmusokon múlik; Ez kulcsfontosságú a felhasználói élmény biztosítása szempontjából is. Íme néhány hasznos irányelv:
- Győződjön meg róla, hogy az észlelni kívánt objektumok kellően kiemelkednek és vizuális részletekkel rendelkeznek. Az alacsony kontrasztú vagy nem egyértelmű részletekkel rendelkező elemeknél előfordulhat, hogy a felhasználónak közelebb kell helyeznie azokat a kamerához.
- Objektumosztályozás használatakor készüljön fel ismeretlen vagy kétértelmű objektumok kezelésére, és adjon egyértelmű visszajelzést a felhasználónak.
- Helyezzen el vizuális vagy szöveges jelzéseket a kezelőfelületen, amelyek segítik a felhasználót a helyes fókuszálásban, elkerülve a hibás eredmények miatti frusztrációt.
- Ha több objektumot észlel a rendszer, vegye figyelembe a felhasználó számára a releváns találat kiválasztásához szükséges lehetőségeket (például oktatási vagy leltáralkalmazásokban).
- Ne felejtsd el a felületet és a hibaüzeneteket offline környezetekhez igazítani, különösen, ha dinamikusan letöltött modelleket használsz.
Eredmények elemzése és gyakorlati példák
A képességei ML Kit Lehetővé teszik számunkra, hogy nagyon gazdag és strukturált információkat juttassunk el a végfelhasználóhoz. Mind az objektumészleléshez, mind a vonalkód-leolvasáshoz vannak pozíciók, értékek, típusok és megbízhatósági szintek. Ez lehetővé teszi táblázatok, összefoglalók megjelenítését, vagy automatikus műveletek végrehajtását (például hivatkozások megnyitása vagy információk tárolása a háttérben).
Például objektumészlelés esetén megjelenítheti a felhasználónak az azonosított kategóriát a megbízhatósági szinttel, a követőazonosítót, amellyel ugyanazt az objektumot több képkockán keresztül összehasonlíthatja, valamint az észlelt terület határait. Tehát egy leltáralkalmazásban könnyű kiemelni a fő objektumot, és képkockáról képkockára követni a műveletek feldolgozásához vagy automatizálások elindításához.
A különböző ML Kit modulok integrációja lehetővé teszi a funkciók kombinálásátKépzelje el, hogy leolvassa a vonalkódot egy érzékelt tárgyról, megkapja az értékét és osztályozza azt, mindezt valós időben és a kameraképen. Az ilyen típusú szinergiák csak fejlett konfigurációval és az összes elérhető opció teljes ismeretével lehetségesek.
Hogyan tartsunk mindent naprakészen és kerüljük el a problémákat
Az ML Kit könyvtárainak frissítési aránya magas és fontos, hogy naprakész legyél minden új kiadással kapcsolatban, mivel a teljesítményre, a kompatibilitásra és az új funkciókra vonatkozó fejlesztések gyakran jelennek meg.
Mindig ellenőrizd a fájlodban található függőségeket épít.gradle és ellenőrizd, hogy a minimális SDK szint helyesen van-e definiálva (általában API 21 vagy magasabb). Ezenkívül tekintse át az inicializálási módszereket is, mivel a legújabb verziók optimalizáltak néhány folyamatot, és új funkciókat vezettek be, például az automatikus modellletöltést az alkalmazás telepítésekor.
Egy másik ajánlás, hogy tekintsd meg a hivatalos Google dokumentációban és a nyílt forráskódú tárházakban elérhető mintaalkalmazásokat és oktatási anyagokat. Ezek az erőforrások gyakran tartalmazzák Teljesítménytesztek, integrációs példák fejlett interfészekkel és megoldások a gyakori hibákra.
Kompatibilitás és optimalizálás fenntartása a különböző eszközök között
Az Android alkalmazások fejlesztésének egyik kihívása a piacon elérhető eszközök, felbontások és kamerák hatalmas választéka. Az ML Kit számos eszközre optimalizált, de mindig érdemes az alkalmazást több eszközön is tesztelni, mind a csúcskategóriás, mind az alsó kategóriás eszközökön, hogy megbizonyosodjunk arról, hogy a feldolgozás és a vizuális minőség minden esetben megfelelő.
Ha a közönséged elsősorban alacsony fogyasztású eszközöket használ, akkor a hatékonyságot és a sebességet helyezd előtérbe, szükség esetén feláldozva a felbontást vagy a funkcionalitási tartományt a felhasználói élmény veszélyeztetésének elkerülése érdekében.
Befejezésül egy áttekintést adunk, amely felfrissíti a legfontosabb pontokat, hogy a legtöbbet hozhasd ki az ML Kit szkennerből Androidon: válaszd ki a legjobb integrációs stratégiát a CameraX és az ML Kit között, készítsd elő jól a bemeneti képeket, kezeld megfelelően a formátumokat és felbontásokat a felhasználásnak megfelelően, és szabd testre a felületet és a munkafolyamatokat, hogy a lehető legrobusztusabb és legfejlettebb élményt nyújtsd mind a felhasználók, mind a fejlesztők számára.