Eenheid 4 / 11

AI op het apparaat: Core ML, TensorFlow Lite en ML Kit

Winst:

  • Mogelijkheid om op het apparaat of in de cloud te beslissen en de juiste tool te kiezen (ML Kit, Core ML, TensorFlow Lite) op basis van privacy, offline behoefte, modelgrootte en batterijcriteria
  • Mogelijkheid om stille fouten te voorkomen door de voorverwerking van invoer (grootte en normalisatie) uit het modeldocument te verifiëren bij modelintegratie
  • Mogelijkheid om de betrouwbaarheidsscore te evalueren en het resultaat te meten met goedkeuring van de gebruiker en op het echte apparaat, zonder voorspellingen met een laag vertrouwen als absolute waarheid te presenteren.

Tot nu toe hebben we AI gebruikt als hulpmiddel om het ontwikkelingsproces te versnellen. Nu gaan we verder met de tweede rol van AI: het talent ingebed in de applicatie. Moderne telefoons hebben de mogelijkheid om AI-modellen zoals beeldherkenning, tekstvertaling, spraaktranscriptie, enz. rechtstreeks op het apparaat uit te voeren (on-device - in de eigen processor van de telefoon zonder naar de server te gaan). AI op het apparaat; Het biedt grote voordelen ten opzichte van cloudoplossingen op het gebied van snelheid, privacy en offline werking. In deze unit leren we hoe we AI in de applicatie kunnen insluiten met iOS's Core ML, platformonafhankelijke TensorFlow Lite (nu bekend als LiRT) en de kant-en-klare oplossing ML Kit van Google, en hoe we AI als assistent kunnen gebruiken bij deze integratie.

Op het apparaat of in de cloud?

Dit is de eerste en belangrijkste architectonische beslissing. AI op het apparaat verwijdert geen gegevens van de telefoon – een enorme winst voor de privacy. Het is ook onmiddellijk en werkt offline omdat er geen netwerklatentie is. Het wordt echter beperkt door de verwerkingskracht en het geheugen van het apparaat; Zeer grote modellen (bijvoorbeeld modellen met een gigantische tong) passen niet in de telefoon of laten de batterij leeglopen. Cloud AI biedt daarentegen onbeperkte kracht, maar stuurt gegevens naar de server, vereist een netwerk en creëert latentie.

criterium

Op apparaat

Cloud (cloud-API)

Privacy

Gegevens blijven op het apparaat, sterk

Gegevens gaan naar de server, aandacht vereist

snelheid

Direct, geen netwerk

Afhankelijk van de netwerklatentie

offline

Het werkt

Werkt niet

Modelgrootte

Beperkt (telefoonbron)

onbeperkt

batterij/warmte

Effecten bij intensief gebruik

Server belast, apparaat ontspannen

Kosten

Gratis (apparaatbron)

Vergoeding per gebruik

Beslissingsregel: Kies op het apparaat als persoonlijke/gevoelige gegevens worden verwerkt, offline moeten werken of onmiddellijke reactie essentieel is. Als je een heel groot model nodig hebt, ga dan naar de cloud. Dit apparaat is gericht op het apparaat; In de volgende unit behandelen we cloud-AI.

Tip: Maak op het apparaat altijd uw standaardfunctie voor een functie die gevoelige gegevens verwerkt (gezondheid, biometrie, locatie). De zinsnede ‘gegevens verlaten het apparaat niet’ is van onschatbare waarde voor zowel de naleving van de privacywetgeving als het vertrouwen van de gebruiker, en maakt een groot verschil in het privacylabel van de winkel.

Drie manieren: ML Kit, Core ML, TensorFlow Lite

ML Kit (Google) is de gemakkelijkste manier om te beginnen: het biedt kant-en-klare mogelijkheden zoals tekstherkenning (OCR – tekst in een afbeelding lezen), gezichtsdetectie, lezen van streepjescodes, vertaling in een paar regels. U hoeft niet uw eigen model te trainen. Core ML (Apple) is de meest efficiënte manier om uw eigen model of een kant-en-klaar model op iOS te draaien; Het maakt gebruik van Apple's Neural Engine-hardware (kunstmatige neurale netwerkprocessor). TensorFlow Lite/LiteRT is een platformonafhankelijke oplossing waarmee u uw eigen getrainde model op zowel Android als iOS kunt uitvoeren.

De algemene integratiestroom met AI gaat als volgt:

  1. Talentdefinitie. Een duidelijk doel, zoals 'Ik wil de tekst op de foto lezen'.
  2. Padselectie. Als er talent klaar is, ML Kit; Core ML/TF Lite indien speciaal model beschikbaar.
  3. Modelformaat. .mlmodel (Core ML), .tflite (TF Lite). Legt de AI-transformatiestappen uit.
  4. Integratiecode. Het model laden, de invoer voorbewerken, de uitvoer interpreteren.
  5. Prestatietest. Snelheid, geheugen, batterijmeting op echt apparaat.
Let op: de meest voorkomende AI-fout bij modelintegratie op het apparaat is het voorbewerken van de invoer: het converteren van de afbeelding naar het formaat en kleurformaat dat het model verwacht. Als het model 224x224 pixels verwacht en je geeft het 300x300 op, dan is het resultaat betekenisloos, maar krijg je geen foutmelding. Controleer de voorverwerkingswaarden uit het modeldocument.

De grenzen van het model kennen

Een model op het apparaat neemt beslissingen op basis van de gegevens waarop het is getraind. Een objectherkenningsmodel dat alleen is getraind op foto's die overdag zijn gemaakt, zal het bij nachtelijke beelden fout hebben. Het model heeft een betrouwbaarheidsscore (vertrouwen – hoe zeker het model is over zijn antwoord, meestal tussen 0 en 1); Het is gevaarlijk om resultaten met weinig vertrouwen aan de gebruiker als accuraat voor te stellen. Een toepassing voor het scannen van huidvlekken zou bijvoorbeeld niet moeten zeggen "absoluut goedaardig", maar zou moeten zeggen "de voorspelling van het model is dit, raadpleeg alstublieft een arts". Het modelresultaat is een aanbeveling, geen diagnose.

drie minikoffers

Geval 1 — Versnelling met OCR. Een app voor het bijhouden van uitgaven heeft de last van het handmatig invoeren van bonnen met ML Kit-tekstherkenning weggenomen. De gebruiker maakt een foto van de kassabon en het bedrag en de datum worden automatisch ingevuld. De handmatige invoertijd daalde van 40 seconden naar 8 seconden per kassabon. Het team liet de gebruiker altijd het bedrag bevestigen dat de AI las; omdat gekreukelde bonnen een foutmarge van 6% hadden. Automatisering + menselijke goedkeuring was de juiste balans.

Geval 2 — Voorverwerkingsfout. Eén team integreerde een plantherkenningsmodel met TensorFlow Lite; Op de tester waren de resultaten willekeurig. Het probleem was dat de code die de AI genereerde het beeld niet normaliseerde naar het bereik van [0,1] dat het model verwachtte (de pixelwaarden bleven op 0-255 staan). Toen normalisatie werd toegevoegd, nam de nauwkeurigheid toe van 30% naar 89%. Les: voorverwerking is stil maar dodelijk.

Geval 3 — Privacywinst. Een gezondheidsapplicatie heeft een afwijking gedetecteerd in de hartslaggegevens met het Core ML-model op het apparaat. De gegevens zijn nooit naar de server gegaan. Deze keuze zorgde ervoor dat de applicatie de zinsnede "verzamelt geen gegevens" kreeg in het privacylabel van de App Store en verhoogde de downloadsnelheid in vergelijking met concurrenten. De keuze voor het apparaat was zowel ethisch als commercieel winstgevend.

Zwakke prompt/sterke prompt

Zwakke prompt: "Voeg beeldherkenning toe aan mijn app."

Krachtige prompt: "Voeg de leesfunctie voor het bedrag en de datum toe aan mijn Android/Kotlin-applicatie. - Gebruik Google ML Kit-tekstherkenning (op het apparaat, offline) - Neem een ​​afbeelding uit de camera of galerij - Extraheer het bedrag en de datum uit de herkende tekst met regex - Presenteer het resultaat aan de gebruiker ter goedkeuring in het BEWERKBARE veld, automatisch opgeslagen - Behandel de toestemmingsstroom en afwijzing van de camera. Schrijf voorverwerkings- en foutsituaties op, leg de stappen uit. "

Kopieerbare sjablonen

Sjabloon voor padselectie: "Ik wil de volgende functie maken: [functie]. Moet deze op het apparaat of in de cloud zijn? Vergelijk op basis van: privacy, offline behoefte, modelgrootte, batterij, kosten. Beveel de juiste tool aan (ML Kit / Core ML / TF Lite) en motiveer."

Integratiesjabloon: "Schrijf [model/capaciteit]-integratie voor [platform]:1) Model laden2) Invoervoorverwerking (verwachte grootte en normalisatie)3) Inferentieoproep4) Uitvoerinterpretatie en controle van de betrouwbaarheidsscore5) Waarschuwing voor gebruiker bij resultaat met weinig vertrouwenHerinner me eraan de voorverwerkingswaarden uit de documentatie van het model te verifiëren."

Sjabloon voor betrouwbaarheidsscore: "Overweeg de betrouwbaarheidsscore in deze gevolgtrekkingscode: - Presenteer het resultaat 'exact' onder de drempel (bijv. 0,6) - Toon 'dit is een schatting' aan de gebruiker - Verwijs naar een expert als het een kritiek gebied is (gezondheid, veiligheid) [code]"

Sjabloon voor prestatieverificatie: "Maak een lijst van de statistieken die ik moet meten op het daadwerkelijke apparaat voor deze modelintegratie op het apparaat: inferentietijd, geheugentoename, batterij-impact, verwarming. Vertel voor elk de meetmethode."

Veel voorkomende fouten

  • Voorbewerking overslaan of verkeerd uitvoeren. Verkeerde maat/normalisatie levert stilletjes een verkeerd resultaat op.
  • Het negeren van de betrouwbaarheidsscore. Het presenteren van een schatting met weinig vertrouwen als accuraat zal de gebruiker misleiden.
  • Het model testen in de emulator. De werkelijke apparaatsnelheid en batterij zijn heel verschillend; meet altijd op echte hardware.
  • Gevoelige gegevens onnodig naar de cloud sturen. Kiezen voor de cloud wanneer dit op het apparaat mogelijk is, brengt een privacyrisico met zich mee.
  • Modelgrootte negeren. Grote model-apps verhogen de downloadgrootte en crashen op lage hardware.
  • De trainingslimiet van het model vergeten. Het model vergist zich in de toestand waarin het niet ziet (nacht, andere taal); Maak dit duidelijk voor de gebruiker.

Samengevat

AI op het apparaat biedt privacy, snelheid en offline werking door gegevens op de telefoon te bewaren; De limiet is het apparaatvermogen en de modelgrootte. ML Kit wordt gebruikt voor kant-en-klare mogelijkheden, Core ML (iOS) en TensorFlow Lite (platformonafhankelijk) worden gebruikt voor aangepaste modellen. De stille moordenaar van integratie is onjuiste voorverwerking; De invoergrootte en normalisatie worden geverifieerd aan de hand van de documentatie van het model. Elk resultaat wordt geleverd met een betrouwbaarheidsscore en voorspellingen met een laag vertrouwen worden niet als absolute waarheid gepresenteerd. Beslissingen worden gemeten op het echte apparaat, niet op de emulator.

Applicatie taak

Voor de functie ‘tekst lezen van foto’ of ‘barcode lezen’ vraagt u de AI of dit op het apparaat of in de cloud moet gebeuren met de ‘Padselectiesjabloon’, en vraagt u vervolgens om een op ML Kit gebaseerde blauwdruk met de ‘Integratiesjabloon’. Controleer of de voorverwerkingsstap en de gebruikersgoedkeurings-/bewerkingsstroom aanwezig zijn in de code. Stel een drempel voor de vertrouwensscore in en schrijf op wat u gaat doen als het resultaat laag vertrouwen is.

controlelijst

  • [ ] Ik heb de beslissing op het apparaat/in de cloud genomen op basis van criteria
  • [ ] Ik heb de juiste tool gekozen (ML Kit / Core ML / TF Lite)
  • [ ] Ik heb de voorverwerkingsdimensie en normalisatie geverifieerd aan de hand van de documentatie van het model
  • [ ] Ik heb de vertrouwensscore gecontroleerd en gewaarschuwd voor lage vertrouwensresultaten
  • [ ] Ik heb het resultaat ter goedkeuring/bewerking aan de gebruiker gepresenteerd, ik heb het niet blindelings opgeslagen
  • [ ] Ik heb de prestaties gemeten op het echte apparaat, niet op de emulator