Hoe Machine Learning aan uw Android-apps toe te voegen

Schrijver: Peter Berry
Datum Van Creatie: 16 Lang L: none (month-012) 2021
Updatedatum: 1 Juli- 2024
Anonim
Train machine learning model and develop Android Application (Basic Example)
Video: Train machine learning model and develop Android Application (Basic Example)

Inhoud


Machine learning (ML) kan u helpen bij het creëren van innovatieve, boeiende en unieke ervaringen voor uw mobiele gebruikers.

Als je ML eenmaal onder de knie hebt, kun je het gebruiken om een ​​breed scala aan applicaties te maken, waaronder apps die automatisch foto's organiseren op basis van hun onderwerp, iemands gezicht identificeren en volgen via een livestream, tekst extraheren uit een afbeelding en nog veel meer .

Maar ML is niet bepaald beginnersvriendelijk! Als u uw Android-apps wilt verbeteren met krachtige mogelijkheden voor machine learning, waar begint u dan precies?

In dit artikel geef ik een overzicht van een SDK (Software Development Kit) die belooft de kracht van ML binnen handbereik te hebben, zelfs als u nul ML ervaring. Tegen het einde van dit artikel heb je de basis die je nodig hebt om intelligente, ML-apps te maken die in staat zijn afbeeldingen te labelen, barcodes te scannen, gezichten en beroemde herkenningspunten te herkennen en vele andere krachtige ML-taken uitvoeren.


Maak kennis met de Machine Learning Kit van Google

Met de release van technologieën zoals TensorFlow en CloudVision wordt ML steeds meer gebruikt, maar deze technologieën zijn niet voor bangeriken! Je hebt meestal een diepgaand begrip van neurale netwerken en data-analyse nodig, alleen om dat te krijgen begonnen met een technologie zoals TensorFlow.

Zelfs als je do enige ervaring met ML hebben, het creëren van een machine-learning-aangedreven mobiele app kan een tijdrovend, complex en duur proces zijn, waarbij u voldoende gegevens moet verzamelen om uw eigen ML-modellen te trainen en vervolgens die ML-modellen kunt optimaliseren om efficiënt te werken in de mobiele omgeving. Als u een individuele ontwikkelaar bent of beperkte middelen heeft, is het misschien niet mogelijk om uw ML-kennis in praktijk te brengen.

ML Kit is een poging van Google om machine learning naar de massa te brengen.


Onder de motorkap bundelt ML Kit verschillende krachtige ML-technologieën die doorgaans uitgebreide ML-kennis vereisen, waaronder Cloud Vision, TensorFlow en de Android Neural Networks API. ML Kit combineert deze gespecialiseerde ML-technologieën met voorgetrainde modellen voor veelvoorkomende mobiele toepassingen, waaronder het extraheren van tekst uit een afbeelding, het scannen van een streepjescode en het identificeren van de inhoud van een foto.

Ongeacht of u al enige kennis van ML hebt, u kunt ML Kit gebruiken om krachtige mogelijkheden voor machine learning toe te voegen aan uw Android en iOS-apps - geef gewoon wat gegevens door aan het juiste deel van ML Kit, zoals de Text Recognition of Language Identification API, en deze API gebruikt machine learning om een ​​antwoord te retourneren.

Hoe gebruik ik de ML Kit API's?

ML Kit is verdeeld in verschillende API's die worden gedistribueerd als onderdeel van het Firebase-platform. Als u een van de ML Kit API's wilt gebruiken, moet u een verbinding maken tussen uw Android Studio-project en een bijbehorend Firebase-project en vervolgens communiceren met Firebase.

De meeste ML Kit-modellen zijn beschikbaar als modellen op het apparaat die u lokaal kunt downloaden en gebruiken, maar sommige modellen zijn ook beschikbaar in de cloud, waarmee uw app ML-taken kan uitvoeren via de internetverbinding van het apparaat.

Elke benadering heeft zijn eigen unieke sterke en zwakke punten, dus u moet beslissen of lokale of externe verwerking het meest zinvol is voor uw specifieke app. U kunt zelfs ondersteuning voor beide modellen toevoegen en uw gebruikers vervolgens laten beslissen welk model ze tijdens runtime willen gebruiken. Als alternatief kunt u uw app configureren om het beste model voor de huidige omstandigheden te selecteren, bijvoorbeeld alleen met behulp van het cloud-gebaseerde model wanneer het apparaat is verbonden met Wi-Fi.

Als u kiest voor het lokale model, zijn de functies voor machinaal leren van uw app altijd beschikbaar, ongeacht of de gebruiker een actieve internetverbinding heeft. Omdat al het werk lokaal wordt uitgevoerd, zijn modellen op het apparaat ideaal wanneer uw app grote hoeveelheden gegevens snel moet verwerken, bijvoorbeeld als u ML Kit gebruikt om een ​​livevideostream te manipuleren.

Ondertussen bieden cloud-gebaseerde modellen doorgaans een grotere nauwkeurigheid dan hun tegenhangers op het apparaat, omdat de cloud-modellen de kracht van de machine learning-technologie van Google Cloud Platform benutten. Het apparaatmodel van de Image Labeling API bevat bijvoorbeeld 400 labels, maar het cloudmodel beschikt over 10.000 labels.

Afhankelijk van de API is er mogelijk ook een functionaliteit die alleen beschikbaar is in de cloud. De API voor tekstherkenning kan bijvoorbeeld alleen niet-Latijnse tekens identificeren als u het cloudgebaseerde model gebruikt.

De cloud-gebaseerde API's zijn alleen beschikbaar voor FireBase-projecten op Blaze-niveau, dus u moet upgraden naar een Blaze-plan waarbij u betaalt zoals u wilt, voordat u een van de cloudmodellen van ML Kit kunt gebruiken.

Als u besluit de cloudmodellen te verkennen, was er op het moment van schrijven een gratis quotum beschikbaar voor alle ML Kit API's. Als je gewoon wilde experimenteren met cloudgebaseerde Image Labelling, dan zou je je Firebase-project kunnen upgraden naar het Blaze-plan, de API testen op minder dan 1000 afbeeldingen en dan teruggaan naar het gratis Spark-plan, zonder dat het in rekening wordt gebracht. Algemene voorwaarden hebben echter de vervelende gewoonte om in de loop van de tijd te veranderen, dus lees de kleine lettertjes voordat u de upgrade naar Blaze uitvoert, om er zeker van te zijn dat u niet wordt geraakt door onverwachte facturen!

Identificeer tekst in elke afbeelding met de Text Recognition API

De API voor tekstherkenning kan tekst op intelligente wijze identificeren, analyseren en verwerken.

U kunt deze API gebruiken om applicaties te maken die tekst uit een afbeelding extraheren, zodat uw gebruikers geen tijd hoeven te verspillen aan vervelende handmatige gegevensinvoer. U kunt bijvoorbeeld de API voor tekstherkenning gebruiken om uw gebruikers te helpen de informatie uit bonnen, facturen, visitekaartjes of zelfs voedingsetiketten te extraheren en vast te leggen, gewoon door een foto te maken van het betreffende artikel.

Je zou zelfs de Text Recognition API kunnen gebruiken als de eerste stap in een vertaal-app, waarbij de gebruiker een foto maakt van een aantal onbekende tekst en de API alle tekst uit de afbeelding haalt, klaar om te worden doorgegeven aan een vertaalservice.

De tekstherkenning-API van ML Kit kan tekst in elke op het Latijn gebaseerde taal identificeren, terwijl de cloudgebaseerde tegenhanger een grotere verscheidenheid aan talen en tekens kan herkennen, waaronder Chinese, Japanse en Koreaanse tekens. Het cloud-gebaseerde model is ook geoptimaliseerd om spaarzame tekst uit afbeeldingen en tekst uit dicht opeengepakte documenten te extraheren, waarmee u rekening moet houden bij het beslissen welk model u in uw app wilt gebruiken.

Wil je wat praktische ervaring met deze API? Bekijk dan onze stapsgewijze handleiding voor het maken van een applicatie die de tekst uit elke afbeelding kan extraheren met behulp van de Text Recognition API.

Inzicht in de inhoud van een afbeelding: de Image Labeling API

De Image Labeling API kan entiteiten in een afbeelding herkennen, inclusief locaties, mensen, producten en dieren, zonder dat er aanvullende contextuele metagegevens nodig zijn. De Image Labeling API retourneert informatie over de gedetecteerde entiteiten in de vorm van labels. In de volgende screenshot heb ik de API bijvoorbeeld een natuurfoto gegeven en daarop zijn labels geplaatst zoals 'Forest' en 'River'.

Met deze mogelijkheid om de inhoud van een afbeelding te herkennen, kunt u apps maken die foto's taggen op basis van hun onderwerp; filters die automatisch ongepaste door de gebruiker ingediende inhoud identificeren en deze uit uw app verwijderen; of als basis voor geavanceerde zoekfunctionaliteit.

Veel van de ML Kit API's retourneren meerdere mogelijke resultaten, compleet met bijbehorende vertrouwensscores - inclusief de Image Labeling API. Als u Image Labelling een foto van een poedel doorgeeft, kan dit labels als 'poedel', 'hond', 'huisdier' ​​en 'klein dier' ​​retourneren, allemaal met verschillende scores die het vertrouwen van de API in elk label aangeven. Hopelijk heeft "poedel" in dit scenario de hoogste vertrouwensscore!

U kunt deze vertrouwensscore gebruiken om een ​​drempel te creëren waaraan moet worden voldaan, voordat uw toepassing op een bepaald label werkt, bijvoorbeeld om deze aan de gebruiker weer te geven of een foto met dit label te taggen.

Image Labelling is zowel op het apparaat als in de cloud beschikbaar, maar als u voor het cloudmodel kiest, krijgt u toegang tot meer dan 10.000 labels, vergeleken met de 400 labels die zijn opgenomen in het apparaatmodel.

Voor meer informatie over de API voor beeldlabels, bekijk de inhoud van een afbeelding bepalen met machine learning. In dit artikel bouwen we een applicatie die een afbeelding verwerkt en retourneert vervolgens de labels en vertrouwensscores voor elke entiteit die in die afbeelding wordt gedetecteerd. We implementeren ook apparaat- en cloudmodellen in deze app, zodat u precies kunt zien hoe de resultaten verschillen, afhankelijk van het model dat u kiest.

Uitdrukkingen en tracking-gezichten: de Face Detection API

De API voor gezichtsdetectie kan menselijke gezichten in foto's, video's en livestreams lokaliseren en vervolgens informatie over elk gedetecteerd gezicht extraheren, inclusief de positie, grootte en oriëntatie.

U kunt deze API gebruiken om gebruikers te helpen hun foto's te bewerken, bijvoorbeeld door automatisch alle lege ruimte rond hun nieuwste headshot bij te snijden.

De Face Detection API is niet beperkt tot afbeeldingen - u kunt deze API ook toepassen op video's, u kunt bijvoorbeeld een app maken die alle gezichten in een videofeed identificeert en vervolgens alles vervaagt behalve die gezichten, vergelijkbaar met de achtergrondonscherpte van Skype.

Gezichtsdetectie is altijd uitgevoerd op het apparaat, waar het snel genoeg is om in realtime te worden gebruikt, dus in tegenstelling tot de meeste API's van ML Kit, doet gezichtsdetectie niet neem een ​​cloudmodel op.

Naast het detecteren van gezichten, heeft deze API een paar extra functies die het ontdekken waard zijn. Ten eerste kan de Face Detection API gezichtsoriëntatiepunten identificeren, zoals ogen, lippen en oren, en haalt vervolgens de exacte coördinaten op voor elk van deze oriëntatiepunten. Deze herkenning van herkenningspunten biedt u een nauwkeurige kaart van elk gedetecteerd gezicht - perfect voor het maken van AR-apps (Augmented Reality) die maskers en filters in Snapchat-stijl toevoegen aan de camerafeed van de gebruiker.

De Face Detection API biedt ook gezichtsbehandeling classificatie. Momenteel ondersteunt ML Kit twee gezichtsclassificaties: ogen open en glimlachen.

U kunt deze classificatie gebruiken als basis voor toegankelijkheidsservices, zoals handsfree bediening, of om games te maken die reageren op de gezichtsuitdrukking van de speler. De mogelijkheid om te detecteren of iemand glimlacht of zijn ogen open heeft, kan ook van pas komen als je een camera-app maakt - er is tenslotte niets ergers dan een aantal foto's maken, om later te ontdekken dat iemand zijn ogen dicht had in elk schot.

Ten slotte bevat de Face Detection API een component voor het volgen van gezichten, die een ID toewijst aan een gezicht en dat gezicht vervolgens volgt over meerdere opeenvolgende afbeeldingen of videoframes. Merk op dat dit gezicht is bijhouden en geen echte gezichtsbehandeling erkenning. Achter de schermen volgt de Face Detection API de positie en beweging van het gezicht en concludeert vervolgens dat dit gezicht waarschijnlijk van dezelfde persoon is, maar uiteindelijk niet op de hoogte is van de identiteit van die persoon.

Probeer de Face Detection API zelf! Ontdek hoe je een gezichtsdetectie-app bouwt met machine learning en Firebase ML Kit.

Barcodescannen met Firebase en ML

Barcode Scannen klinkt misschien niet zo opwindend als sommige van de andere API's voor machine learning, maar het is een van de meest toegankelijke onderdelen van ML Kit.

Het scannen van een streepjescode vereist geen gespecialiseerde hardware of software, dus u kunt de Barcode Scanning API gebruiken terwijl u ervoor zorgt dat uw app toegankelijk blijft voor zoveel mogelijk mensen, inclusief gebruikers op oudere of budgetapparaten. Zolang een apparaat een werkende camera heeft, zou het geen problemen moeten hebben om een ​​barcode te scannen.

De Barcode Scanning API van ML Kit kan een breed scala aan informatie uit gedrukte en digitale barcodes extraheren, waardoor het een snelle, gemakkelijke en toegankelijke manier is om informatie uit de echte wereld door te geven aan uw toepassing, zonder dat gebruikers vervelende handmatige gegevensinvoer hoeven uit te voeren .

Er zijn negen verschillende gegevenstypen die de Barcode Scanning API kan herkennen en ontleden uit een barcode:

  • TYPE_CALENDAR_EVENT. Dit bevat informatie zoals de locatie van het evenement, de organisator en de begin- en eindtijd.Als u een evenement promoot, kunt u een afgedrukte barcode op uw posters of flyers opnemen of een digitale barcode op uw website plaatsen. Potentiële deelnemers kunnen vervolgens alle informatie over uw evenement ophalen, eenvoudig door de barcode te scannen.
  • TYPE_CONTACT_INFO. Dit gegevenstype omvat informatie zoals het e-mailadres, de naam, het telefoonnummer en de titel van de contactpersoon.
  • TYPE_DRIVER_LICENSE. Dit bevat informatie zoals de straat, stad, staat, naam en geboortedatum die zijn gekoppeld aan het rijbewijs.
  • TYPE_EMAIL. Dit gegevenstype omvat een e-mailadres, de onderwerpregel van de e-mail en de hoofdtekst.
  • TYPE_GEO. Dit bevat de lengte- en breedtegraad voor een specifiek geo-punt, wat een gemakkelijke manier is om een ​​locatie met uw gebruikers te delen of om hun locatie met anderen te delen. U kunt zelfs geografische barcodes gebruiken om locatiegebaseerde gebeurtenissen te activeren, zoals het weergeven van nuttige informatie over de huidige locatie van de gebruiker of als basis voor locatiegebaseerde mobiele games.
  • TYPE_PHONE. Dit bevat het telefoonnummer en het type van het nummer, bijvoorbeeld of het een telefoonnummer voor thuis of voor werk is.
  • TYPE_SMS. Dit bevat een aantal hoofdtekst van de sms en het telefoonnummer dat aan de sms is gekoppeld.
  • TYPE_URL. Dit gegevenstype bevat een URL en de titel van de URL. Het scannen van een streepjescode TYPE_URL is veel eenvoudiger dan erop vertrouwen dat uw gebruikers handmatig een lange, complexe URL typen, zonder typefouten of spelfouten te maken.
  • TYPE_WIFI. Dit bevat de SSID en het wachtwoord van een wifi-netwerk, plus het coderingstype zoals OPEN, WEP of WPA. Een wifi-streepjescode is een van de gemakkelijkste manieren om wifi-inloggegevens te delen, terwijl ook het risico volledig wordt weggenomen dat uw gebruikers deze informatie verkeerd invoeren.

De Barcode Scanning API kan gegevens ontleden uit verschillende barcodes, waaronder lineaire formaten zoals Codabar, Code 39, EAN-8, ITF en UPC-A, en 2D-formaten zoals Aztec, Data Matrix en QR Codes.

Om het uw eindgebruikers gemakkelijker te maken, scant deze API tegelijkertijd voor alle ondersteunde barcodes en kan ook gegevens worden geëxtraheerd ongeacht de oriëntatie van de barcode - het maakt dus niet uit of de barcode volledig ondersteboven staat wanneer de gebruiker deze scant!

Machine Learning in the Cloud: de Landmark Recognition API

U kunt de Landmark Recognition API van ML Kit gebruiken om bekende natuurlijke en geconstrueerde oriëntatiepunten in een afbeelding te identificeren.

Als u deze API een afbeelding geeft die een beroemd oriëntatiepunt bevat, retourneert het de naam van dat oriëntatiepunt, de breedte- en lengtewaarden van het oriëntatiepunt en een selectiekader dat aangeeft waar het oriëntatiepunt in de afbeelding is ontdekt.

U kunt de Landmark Recognition API gebruiken om applicaties te maken die automatisch de foto's van de gebruiker taggen, of om een ​​meer aangepaste ervaring te bieden, bijvoorbeeld als uw app herkent dat een gebruiker foto's van de Eiffeltoren maakt, dan kan dit interessante feiten bieden over deze bezienswaardigheid of suggereren vergelijkbare toeristische attracties in de buurt die de gebruiker vervolgens zou willen bezoeken.

Ongebruikelijk voor ML Kit is de Landmark Detection API alleen beschikbaar als een cloudgebaseerde API, dus uw toepassing kan alleen landmark-detectie uitvoeren wanneer het apparaat een actieve internetverbinding heeft.

De Language Identification API: ontwikkelen voor een internationaal publiek

Tegenwoordig worden Android-apps overal ter wereld gebruikt door gebruikers die veel verschillende talen spreken.

De Language Identification API van ML Kit kan uw Android-app helpen een internationaal publiek aan te spreken door een reeks tekst te nemen en de taal te bepalen waarin het is geschreven. De Language Identification API kan meer dan honderd verschillende talen identificeren, waaronder geromaniseerde tekst voor Arabisch, Bulgaars, Chinees, Grieks, Hindi, Japans en Russisch.

Deze API kan een waardevolle aanvulling zijn op elke toepassing die door de gebruiker geleverde tekst verwerkt, aangezien deze tekst zelden enige taalinformatie bevat. U kunt ook de API voor taalidentificatie gebruiken in vertaal-apps, als de eerste stap naar vertalen iets, is weten met welke taal je werkt! Als de gebruiker bijvoorbeeld de camera van zijn apparaat op een menu richt, kan uw app de API voor taalidentificatie gebruiken om te bepalen dat het menu in het Frans is geschreven en vervolgens aanbieden om dit menu te vertalen met een service zoals de Cloud Translation API ( misschien na het extraheren van de tekst, met behulp van de Text Recognition API?)

Afhankelijk van de string in kwestie, kan de Language Identification API meerdere potentiële talen retourneren, vergezeld van vertrouwensscores, zodat u kunt bepalen welke gedetecteerde taal het meest waarschijnlijk correct is. Merk op dat op het moment van schrijven ML Kit niet meerdere verschillende talen binnen dezelfde string kon identificeren.

Om ervoor te zorgen dat deze API in realtime taalidentificatie biedt, is de taalidentificatie-API alleen beschikbaar als een apparaatmodel.

Binnenkort: slim antwoord

Google is van plan om in de toekomst meer API's aan ML Kit toe te voegen, maar we weten al over een opkomende API.

Volgens de ML Kit-website is de aanstaande Smart Reply API kunt u contextuele berichten beantwoorden in uw toepassingen, door stukjes tekst voor te stellen die in de huidige context passen. Op basis van wat we al weten over deze API, lijkt het erop dat Smart Reply vergelijkbaar is met de voorgestelde responsfunctie die al beschikbaar is in de Android-app, Wear OS en Gmail.

De volgende schermafbeelding laat zien hoe de voorgestelde responsfunctie er momenteel uitziet in Gmail.

Wat is het volgende? TensorFlow Lite met ML Kit gebruiken

ML Kit biedt vooraf gebouwde modellen voor veelvoorkomende gevallen van mobiel gebruik, maar op een gegeven moment wilt u misschien verder gaan dan deze kant-en-klare modellen.

Het is mogelijk om uw eigen ML-modellen te maken met TensorFlow Lite en deze vervolgens te distribueren met ML Kit. Houd er echter rekening mee dat, in tegenstelling tot de kant-en-klare API's van ML Kit, het werken met uw eigen ML-modellen wel een significant hoeveelheid ML-expertise.

Nadat u uw TensorFlow Lite-modellen heeft gemaakt, kunt u deze uploaden naar Firebase. Google beheert vervolgens de hosting en biedt deze modellen aan uw eindgebruikers. In dit scenario fungeert ML Kit als een API-laag over uw aangepaste model, wat een deel van het zware werk vereenvoudigt dat gepaard gaat met het gebruik van aangepaste modellen. Het meest opvallende is dat ML Kit automatisch de nieuwste versie van uw model naar uw gebruikers stuurt, zodat u uw app niet elke keer hoeft bij te werken wanneer u uw model wilt aanpassen.

Om de best mogelijke gebruikerservaring te bieden, kunt u de voorwaarden opgeven waaraan moet worden voldaan, voordat uw toepassing nieuwe versies van uw TensorFlow Lite-model downloadt, bijvoorbeeld alleen het model bijwerken wanneer het apparaat inactief is, wordt opgeladen of verbonden met Wi- Fi. U kunt ML Kit en TensorFlow Lite zelfs naast andere Firebase-services gebruiken, bijvoorbeeld met behulp van Firebase Remote Config en Firebase A / B-testen om verschillende modellen te bedienen voor verschillende sets gebruikers.

Als u verder wilt gaan dan vooraf gebouwde modellen, of als de bestaande modellen van ML Kit niet helemaal aan uw behoeften voldoen, kunt u meer informatie over het maken van uw eigen machine learning-modellen vinden op de officiële Firebase-documenten.

Afsluiten

In dit artikel hebben we elk onderdeel van de machine learning kit van Google bekeken en enkele veelvoorkomende scenario's behandeld waarin u mogelijk elk van de ML Kit API's wilt gebruiken.

Google is van plan om in de toekomst meer API's toe te voegen, dus welke machine learning API's zou u later aan ML Kit willen toevoegen? Laat het ons weten in de reacties hieronder!

Update 14 oktober 2019 (11:40 AM ET): Michien wilt u toppen met het vernieuwen van uw pagina 'Controleren op update' omdat het erop lijkt dat we nog wat langer moeten wachten op de tabiele ver...

14 februari 2019 14 februari 2019Dit i degene waar je op hebt gewacht. Vandaag bekijken we de camerapretatie van de Huawei Mate 20 Pro. I het alle wat het i om te zijn?...

Zorg Ervoor Dat Je Eruit Ziet