Vienetas 4 / 11

Įrenginio AI: „Core ML“, „TensorFlow Lite“ ir „ML Kit“.

Pelnas:

  • Galimybė nuspręsti įrenginyje ar debesyje ir pasirinkti tinkamą įrankį (ML Kit, Core ML, TensorFlow Lite) pagal privatumą, poreikį neprisijungus, modelio dydį ir akumuliatoriaus kriterijus.
  • Galimybė užkirsti kelią tylioms klaidoms tikrinant įvesties išankstinį apdorojimą (dydį ir normalizavimą) iš modelio dokumento integruojant modelį
  • Galimybė įvertinti patikimumo balą ir išmatuoti rezultatą, gavus vartotojo sutikimą ir realiame įrenginyje, nepateikiant žemo patikimumo prognozių kaip absoliučios tiesos.

Iki šiol AI naudojome kaip pagalbinę priemonę kūrimo procesui paspartinti. Dabar pereiname prie antrojo AI vaidmens: programoje įterpto talento. Šiuolaikiniai telefonai gali paleisti dirbtinio intelekto modelius, tokius kaip vaizdo atpažinimas, teksto vertimas, kalbos transkripcija ir kt., tiesiai įrenginyje (įrenginyje – paties telefono procesoriuje, nesikreipiant į serverį). AI įrenginyje; Tai suteikia didelių pranašumų, palyginti su debesies sprendimais, atsižvelgiant į greitį, privatumą ir neprisijungus. Šiame skyriuje sužinosime, kaip įterpti dirbtinį intelektą į programą naudojant „iOS“ Core ML, kelių platformų „TensorFlow Lite“ (dabar žinomas kaip „LiteRT“) ir „Google“ paruoštą sprendimą ML Kit ir kaip naudoti AI kaip šios integracijos asistentą.

Įrenginyje ar debesyje?

Tai pirmasis ir svarbiausias architektūrinis sprendimas. Įrenginyje esantis AI nepašalina duomenų iš telefono – tai didžiulis laimėjimas privatumui. Jis taip pat yra akimirksniu ir veikia neprisijungus, nes nėra tinklo delsos. Tačiau jį riboja įrenginio apdorojimo galia ir atmintis; Labai dideli modeliai (pvz., milžiniško liežuvio modeliai) netilps į telefoną arba išsikraus bateriją. Kita vertus, „Cloud AI“ siūlo neribotą galią, tačiau siunčia duomenis į serverį, reikalauja tinklo ir sukuria delsą.

kriterijus

Įrenginyje

Debesis (debesies API)

Privatumas

Duomenys lieka įrenginyje, stiprūs

Duomenys patenka į serverį, reikia dėmesio

greitis

Momentinis, be tinklo

Priklauso nuo tinklo delsos

neprisijungus

Tai veikia

Neveikia

Modelio dydis

Ribotas (telefono ištekliai)

neribotas

baterija/šiluma

Poveikis intensyviai naudojant

Serveris apkrautas, įrenginys atsipalaidavęs

Kaina

Nemokamas (įrenginio šaltinis)

Mokestis už naudojimą

Sprendimo taisyklė: pasirinkite įrenginyje, jei tvarkomi asmeniniai / neskelbtini duomenys, reikia dirbti neprisijungus arba būtinas momentinis atsakymas. Jei jums reikia labai didelio modelio, kreipkitės į debesį. Šis įrenginys yra sutelktas į įrenginį; Kitame skyriuje apžvelgsime debesų AI.

Patarimas: visada nustatykite įrenginyje numatytąją funkciją, kuri tvarko neskelbtinus duomenis (sveikatos, biometrinių duomenų, vietos). Frazė „duomenys nepalieka įrenginio“ yra neįkainojama tiek dėl privatumo laikymosi, tiek dėl vartotojų pasitikėjimo, todėl labai skiriasi parduotuvės privatumo etiketė.

Trys būdai: ML Kit, Core ML, TensorFlow Lite

ML Kit (Google) yra lengviausias būdas pradėti: jis suteikia paruoštas funkcijas, tokias kaip teksto atpažinimas (OCR – teksto skaitymas vaizde), veido aptikimas, brūkšninio kodo skaitymas, vertimas keliomis eilutėmis. Jums nereikia mokyti savo modelio. „Core ML“ („Apple“) yra efektyviausias būdas paleisti savo modelį arba paruoštą modelį „iOS“; Jis naudoja Apple Neural Engine (dirbtinio neuroninio tinklo procesoriaus) aparatinę įrangą. TensorFlow Lite / LiteRT yra kelių platformų sprendimas, leidžiantis paleisti savo apmokytą modelį tiek Android, tiek iOS.

Bendras integracijos su AI srautas yra toks:

  1. Talento apibrėžimas. Aiškus tikslas, pavyzdžiui, „noriu perskaityti tekstą nuotraukoje“.
  2. Kelio pasirinkimas. Jei yra pasirengę talentai, ML Kit; Core ML/TF Lite, jei yra specialus modelis.
  3. Modelio formatas. .mlmodel (Core ML), .tflite (TF Lite). Paaiškina AI transformacijos žingsnius.
  4. Integracijos kodas. Modelio įkėlimas, išankstinis įvesties apdorojimas, išvesties interpretavimas.
  5. Veikimo testas. Greitis, atmintis, baterijos matavimas realiame įrenginyje.
Įspėjimas: dažniausia AI klaida integruojant įrenginyje esantį modelį yra išankstinis įvesties apdorojimas – vaizdo konvertavimas į tokio dydžio ir spalvos formatą, kokio tikisi modelis. Jei modelis tikisi 224x224 pikselių, o jūs jam duosite 300x300, rezultatas bus beprasmis, bet negausite klaidos pranešimo. Patikrinkite išankstinio apdorojimo reikšmes iš modelio dokumento.

Žinant modelio ribas

Įrenginyje esantis modelis priima sprendimus pagal duomenis, kuriais jis buvo apmokytas. Objektų atpažinimo modelis, apmokytas tik dienos metu darytose nuotraukose, bus klaidingas naktiniuose vaizduose. Modelis turi pasitikėjimo balą (pasitikėjimas – kiek modelis pasitiki savo atsakymu, paprastai nuo 0 iki 1); Pavojinga žemo pasitikėjimo rezultatus vartotojui pateikti kaip tikslius. Pavyzdžiui, odos dėmių nuskaitymo programa neturėtų sakyti „neabejotinai gerybinė“, bet turėtų pasakyti „modelio prognozė tokia, kreipkitės į gydytoją“. Modelio rezultatas yra rekomendacija, o ne diagnozė.

trys mini dėklai

1 atvejis – pagreitis naudojant OCR. Išlaidų stebėjimo programa pašalino naštą, kai reikia rankiniu būdu įvesti kvitus naudojant ML rinkinio teksto atpažinimą. Vartotojas nufotografuoja kvitą, suma ir data įrašomi automatiškai. Rankinio įvedimo laikas vienam kvitui sumažėjo nuo 40 sekundžių iki 8 sekundžių. Komanda visada turėdavo vartotoją patvirtinti AI perskaitytą kiekį; nes susiraukšlėjusių kvitų paklaida buvo 6 %. Automatika + žmogaus pritarimas buvo tinkama pusiausvyra.

2 atvejis – išankstinio apdorojimo klaida. Viena komanda integravo augalų atpažinimo modelį su TensorFlow Lite; Testeryje rezultatai buvo atsitiktiniai. Problema buvo ta, kad AI sugeneruotas kodas nesunormalizavo vaizdo iki [0,1] diapazono, kurio tikėjosi modelis (pikselių reikšmės buvo paliktos 0–255). Pridėjus normalizavimą, tikslumas padidėjo nuo 30% iki 89%. Pamoka: išankstinis apdorojimas yra tylus, bet mirtinas.

3 atvejis – privatumo padidėjimas. Sveikatos programa aptiko širdies ritmo duomenų anomaliją su įrenginyje esančiu Core ML modeliu. Duomenys niekada nepateko į serverį. Šis pasirinkimas leido programai gauti frazę „nerenka duomenų“ „App Store“ privatumo etiketėje ir padidino atsisiuntimo rodiklį, palyginti su konkurentais. Pasirinkimas įrenginyje buvo ir etiškas, ir komerciškai pelningas.

Silpnas raginimas / Stiprus raginimas

Silpnas raginimas: „Pridėti vaizdo atpažinimą prie mano programos“.

Galingas raginimas: "Pridėkite kiekio ir datos skaitymo funkciją prie mano Android / Kotlin programos. - Naudokite "Google ML Kit" teksto atpažinimo funkciją (įrenginyje, neprisijungę) - Paimkite vaizdą iš fotoaparato arba galerijos - Ištraukite kiekį ir datą iš atpažinto teksto naudodami reguliarųjį reiškinį - Pateikite rezultatą vartotojui patvirtinti REEDAGAVIMO lauke, automatiškai išsaugokite - Tvarkykite kameros leidimą, paaiškinkite, kas vyksta ir iš naujo apdoroja klaidą. žingsniai“.

Kopijuojami šablonai

Kelio pasirinkimo šablonas: "Noriu sukurti šią funkciją: [funkcija]. Ar ji turėtų būti įrenginyje ar debesyje? Palyginkite pagal: privatumą, poreikį neprisijungus, modelio dydį, bateriją, kainą. Rekomenduokite atitinkamą įrankį (ML Kit / Core ML / TF Lite) ir pagrįskite."

Integravimo šablonas: „Parašykite [modelio/pajėgumo] integraciją [platformai]:1) Modelio įkėlimas2) Išankstinis įvesties apdorojimas (numatomas dydis ir normalizavimas)3) Išvadų iškvietimas4) Išvesties interpretavimas ir patikimumo balo tikrinimas5) Įspėjimas vartotojui dėl žemo patikimumo rezultato. Priminkite man patikrinti išankstinio apdorojimo vertes iš modelio dokumentacijos.

Pasitikėjimo balo šablonas: „Apsvarstykite pasitikėjimo balą šiame išvados kode: – Pateikite rezultatą „tikslus“ žemiau slenksčio (pvz., 0,6) – Rodyti „tai yra apytikslis“ pastabą vartotojui. Kreipkitės į ekspertą, jei kritinė sritis (sveikata, sauga) [kodas]“

Našumo patvirtinimo šablonas: „Išvardykite metriką, kurią turiu išmatuoti faktiniame įrenginyje, kad būtų galima integruoti šį įrenginyje esantį modelį: išvados laikas, atminties padidėjimas, akumuliatoriaus poveikis, šildymas. Nurodykite kiekvieno matavimo metodą.

Dažnos klaidos

  • Praleidžiate išankstinį apdorojimą arba atliekate jį neteisingai. Netinkamas dydis / normalizavimas tyliai duoda neteisingą rezultatą.
  • Pasitikėjimo balo nepaisymas. Žemo patikimumo įvertinimo pateikimas kaip tikslus suklaidins vartotoją.
  • Modelio testavimas emuliatoriuje. Faktinis įrenginio greitis ir baterija labai skiriasi; visada matuokite tikra aparatūra.
  • Skelbtini duomenys be reikalo siunčiami į debesį. Pasirinkus debesį, kai įmanoma įrenginyje, kyla pavojus privatumui.
  • Modelio dydžio ignoravimas. Didelių modelių programos padidina atsisiuntimo dydį ir sugenda, kai aparatinė įranga yra žema.
  • Pamiršus modelio treniruočių limitą. Modelis klysta dėl būklės, kai nemato (naktis, kita kalba); Paaiškinkite tai vartotojui.

Apibendrinant

Įrenginyje esantis AI užtikrina privatumą, greitį ir veikimą neprisijungus, nes išsaugo duomenis telefone; Riba yra įrenginio galia ir modelio dydis. ML rinkinys naudojamas nestandartinėms galimybėms, Core ML (iOS) ir TensorFlow Lite (keli platforma) naudojami pasirinktiniuose modeliuose. Tylusis integracijos žudikas yra netinkamas išankstinis apdorojimas; Įvesties dydis ir normalizavimas patikrinami iš modelio dokumentacijos. Kiekvienas rezultatas pateikiamas su patikimumo balu, o žemo pasitikėjimo prognozės nėra pateikiamos kaip absoliuti tiesa. Sprendimai matuojami tikrame įrenginyje, o ne emuliatoriuje.

Taikymo užduotis

Jei norite naudoti „teksto skaitymo iš nuotraukos“ arba „brūkšninio kodo skaitymo“ funkciją, paklauskite AI, ar jis turėtų būti įrenginyje, ar debesyje, naudojant „Kelio pasirinkimo šabloną“, tada paprašykite ML rinkinio pagrįsto projekto su „Integravimo šablonu“. Patikrinkite, ar kode yra išankstinio apdorojimo veiksmas ir vartotojo patvirtinimo / redagavimo eiga. Nustatykite pasitikėjimo balo slenkstį ir parašykite, ką darysite, jei rezultatas bus mažas.

kontrolinis sąrašas

  • [ ] Priėmiau sprendimą dėl įrenginio / debesies pagal kriterijus
  • [ ] Pasirinkau tinkamą įrankį (ML Kit / Core ML / TF Lite)
  • [ ] Iš modelio dokumentacijos patikrinau išankstinio apdorojimo matmenis ir normalizavimą
  • [ ] Patikrinau pasitikėjimo balą ir įspėjau apie žemus pasitikėjimo rezultatus
  • [ ] Rezultatą pateikiau vartotojui su patvirtinimu/redagavimu, aklai neišsaugojau
  • [ ] Našumą matavau realiame įrenginyje, o ne emuliatoriuje