Бірлік 4 / 11

Құрылғыдағы AI: Core ML, TensorFlow Lite және ML Kit

Табыстар:

  • Құпиялылық, желіден тыс қажеттілік, үлгі өлшемі және батарея критерийлері негізінде құрылғыда немесе бұлтта шешім қабылдау және дұрыс құралды таңдау мүмкіндігі (ML Kit, Core ML, TensorFlow Lite)
  • Модельді біріктіруде үлгі құжатынан енгізуді алдын ала өңдеуді (өлшем және қалыпқа келтіру) тексеру арқылы үнсіз қателерді болдырмау мүмкіндігі
  • Төмен сенімділік болжамдарын абсолютті шындық ретінде көрсетпей, сенімділік ұпайын бағалау және нәтижені пайдаланушы мақұлдауымен және нақты құрылғыда өлшеу мүмкіндігі.

Әзірге біз AI-ны даму процесін жылдамдату үшін көмекші ретінде қолдандық. Енді біз AI-ның екінші рөліне көшеміз: қолданбаға енгізілген талант. Қазіргі телефондар кескінді тану, мәтінді аудару, сөйлеуді транскрипциялау және т.б. сияқты AI үлгілерін тікелей құрылғыда (құрылғыда — серверге бармай-ақ телефонның жеке процессорында) іске қосу мүмкіндігіне ие. Құрылғыдағы AI; Ол бұлттық шешімдерге қарағанда жылдамдық, құпиялылық және желіден тыс жұмыс істеу тұрғысынан үлкен артықшылықтар ұсынады. Бұл бөлімде біз AI-ді iOS Core ML, кросс-платформалық TensorFlow Lite (қазір LiteRT деп аталады) және Google дайын ML Kit шешімі арқылы қолданбаға қалай енгізу керектігін және AI-ны осы интеграцияда көмекші ретінде қалай пайдалану керектігін үйренеміз.

Құрылғыда ма, әлде бұлттық па?

Бұл бірінші және ең маңызды архитектуралық шешім. Құрылғыдағы AI телефоннан деректерді жоймайды — құпиялылық үшін үлкен жеңіс. Ол сондай-ақ лезде және желіден тыс жұмыс істейді, өйткені желіде кідіріс жоқ. Дегенмен, ол құрылғының өңдеу қуатымен және жадымен шектеледі; Өте үлкен үлгілер (мысалы, алып тіл үлгілері) телефонға сыймайды немесе батареяны тауысады. Бұлтты AI, керісінше, шексіз қуатты ұсынады, бірақ деректерді серверге жібереді, желіні қажет етеді және кідіріс жасайды.

критерий

Құрылғыда

Бұлтты (бұлттық API)

Құпиялық

Деректер құрылғыда сақталады, күшті

Деректер серверге жіберіледі, назар аудару қажет

жылдамдық

Лезде, желі жоқ

Желінің кешігуіне байланысты

желіден тыс

Бұл жұмыс істейді

Жұмыс істемейді

Үлгі өлшемі

Шектеулі (телефон ресурсы)

шексіз

батарея/қызу

Ауыр қолдану әсерлері

Сервер жүктелуде, құрылғы босаңсыды

Құны

Тегін (құрылғы көзі)

Пайдалану үшін төлем

Шешім қабылдау ережесі: жеке/сезімтал деректер өңделіп жатса, желіден тыс жұмыс істеу қажет болса немесе жылдам жауап беру маңызды болса, құрылғыны таңдаңыз. Егер сізге өте үлкен үлгі қажет болса, бұлтқа бұрылыңыз. Бұл құрылғы құрылғыға бағытталған; Біз келесі бөлімде бұлтты AI-ны қарастырамыз.

Кеңес: Құпия деректерді (денсаулық, биометрика, орын) өңдейтін мүмкіндік үшін әрқашан құрылғыны әдепкі етіп жасаңыз. «Деректер құрылғыдан кетпейді» деген тіркес құпиялылықты сақтау үшін де, пайдаланушы сенімі үшін де баға жетпес құнды болып табылады және дүкеннің құпиялылық белгісінде үлкен айырмашылықты жасайды.

Үш жол: ML жинағы, Core ML, TensorFlow Lite

ML Kit (Google) – бастаудың ең оңай жолы: ол мәтінді тану (OCR — суреттегі мәтінді оқу), бетті анықтау, штрих-кодты оқу, бірнеше жолға аудару сияқты дайын мүмкіндіктерді береді. Өз үлгіңізді үйретудің қажеті жоқ. Core ML (Apple) – iOS жүйесінде жеке үлгіні немесе дайын үлгіні іске қосудың ең тиімді жолы; Ол Apple компаниясының Neural Engine (жасанды нейрондық желі процессоры) аппараттық құралын пайдаланады. TensorFlow Lite/LiteRT - бұл Android және iOS жүйелерінде жеке оқытылған үлгіні іске қосуға мүмкіндік беретін кросс-платформалық шешім.

AI-мен жалпы интеграция ағыны келесідей болады:

  1. Дарындылық анықтамасы. «Фотодағы мәтінді оқығым келеді» деген сияқты айқын мақсат.
  2. Жолды таңдау. Дайын талант болса, ML Kit; Арнайы үлгі бар болса, Core ML/TF Lite.
  3. Үлгі пішімі. .mlmodel (Core ML), .tflite (TF Lite). AI түрлендіру қадамдарын түсіндіреді.
  4. Интеграциялық код. Модельді жүктеу, кірісті алдын ала өңдеу, шығысты интерпретациялау.
  5. Өнімділік сынағы. Жылдамдық, жад, нақты құрылғыдағы батареяны өлшеу.
Ескерту: Құрылғыдағы модельді біріктірудегі ең көп таралған AI қатесі - енгізуді алдын ала өңдеу — кескінді үлгі күткен өлшем мен түс пішіміне түрлендіру. Модель 224x224 пиксельді күтсе және сіз оған 300x300 берсеңіз, нәтиже мағынасыз болады, бірақ қате туралы хабарды алмайсыз. Үлгі құжатындағы алдын ала өңдеу мәндерін тексеріңіз.

Модельдің шектерін білу

Құрылғыдағы модель оқытылған деректер негізінде шешім қабылдайды. Күндізгі уақытта түсірілген фотосуреттерде ғана үйретілген нысанды тану үлгісі түнгі кескіндерде қате болады. Модельдің сенімділік көрсеткіші бар (сенімділік — модель өз жауабына қаншалықты сенімді, әдетте 0 мен 1 арасында); Пайдаланушыға сенімділігі төмен нәтижелерді дәлдікпен көрсету қауіпті. Мысалы, тері дақтарын сканерлеу қолданбасы «міндетті түрде жақсы» деп айтпауы керек, бірақ «модельдің болжамы осындай, дәрігермен кеңесіңіз» деп айту керек. Үлгі нәтижесі диагноз емес, ұсыныс болып табылады.

үш шағын іс

1-жағдай — OCR көмегімен жеделдету. Шығындарды бақылау қолданбасы ML Kit мәтінін тану арқылы түбіртектерді қолмен енгізу ауыртпалығын алып тастады. Пайдаланушы түбіртекті суретке түсіреді, ал сомасы мен күні автоматты түрде толтырылады. Қолмен енгізу уақыты әр түбіртек үшін 40 секундтан 8 секундқа дейін қысқарды. Команда әрқашан пайдаланушыға AI оқылған соманы растайтын; өйткені мыжылған түбіртектердің қателік маржасы 6% болды. Автоматтандыру + адамның рұқсаты дұрыс теңгерім болды.

2-жағдай — алдын ала өңдеу қатесі. Бір команда TensorFlow Lite бағдарламасымен өсімдіктерді тану үлгісін біріктірді; Тестілеушіде нәтижелер кездейсоқ болды. Мәселе AI жасаған код кескінді модель күткен [0,1] ауқымына қалыпқа келтірмеуі болды (пиксель мәндері 0-255 қалдырылды). Қалыпқа келтіруді қосқанда, дәлдік 30%-дан 89%-ға дейін өсті. Сабақ: алдын ала өңдеу үнсіз, бірақ өлімге әкеледі.

3-жағдай — Құпиялылыққа қол жеткізу. Денсаулық қолданбасы құрылғыдағы Core ML үлгісімен жүрек соғу жиілігі деректерінен аномалияны анықтады. Деректер ешқашан серверге өтпеді. Бұл таңдау қолданбаға App Store құпиялылық белгісіндегі «деректерді жинамайды» фразасын алуға мүмкіндік берді және бәсекелестермен салыстырғанда оның жүктеу жылдамдығын арттырды. Құрылғыдағы таңдау этикалық тұрғыдан да, коммерциялық тұрғыдан да тиімді болды.

Әлсіз шақыру / Күшті шақыру

Әлсіз шақыру: "Қолданбама суретті тану мүмкіндігін қосыңыз."

Күшті нұсқау: "Менің Android/Kotlin қолданбама мөлшер мен күнді оқу мүмкіндігін қосыңыз. - Google ML Kit мәтінді тану мүмкіндігін пайдаланыңыз (құрылғыда, офлайн) - Камерадан немесе галереядан суретке түсіріңіз - regex арқылы танылған мәтіннен мөлшер мен күнді шығарып алыңыз - Нәтижені EDITABLE өрісінде бекіту үшін пайдаланушыға ұсыныңыз - Қолмен түсіру және рұқсатты өшіру. алдын ала өңдеу және қателік жағдайлары, қадамдарды түсіндіріңіз».

Көшіретін үлгілер

Жолды таңдау үлгісі: "Мен келесі мүмкіндікті жасағым келеді: [мүмкіндік]. Ол құрылғыда немесе бұлттық болуы керек пе? Негізге қарай салыстырыңыз: құпиялылық, желіден тыс қажеттілік, үлгі өлшемі, батарея, құны. Сәйкес құралды ұсыныңыз (ML Kit / Core ML / TF Lite) және негіздеңіз."

Интеграция үлгісі: «[платформа] үшін [модель/мүмкіндік] интеграциясын жазыңыз: 1) Үлгіні жүктеу2) Енгізуді алдын ала өңдеу (күтілетін өлшем және қалыпқа келтіру)3) Қорытынды шақыру4) Шығаруды түсіндіру және сенімділік ұпайын тексеру5) Төмен сенімді нәтиже туралы пайдаланушыға ескерту. Құжаттың алдын ала өңделуіндегі мәндерді тексеруді ескертіңіз."

Сенім көрсеткішінің үлгісі: "Осы қорытынды кодындағы сенімділік ұпайын қарастырыңыз: - Шекті мәннен төмен "нақты" нәтижені көрсетіңіз (мысалы, 0,6) - Пайдаланушыға "бұл бағалау" ескертуін көрсетіңіз - Критикалық аймақ (денсаулық, қауіпсіздік) [код] болса, сарапшыға хабарласыңыз"

Өнімділікті растау үлгісі: "Осы құрылғыдағы үлгіні біріктіру үшін нақты құрылғыда өлшеу керек көрсеткіштерді тізімдеңіз: шығару уақыты, жадты арттыру, батареяның әсері, қыздыру. Әрқайсысы үшін өлшеу әдісін айтыңыз."

Жалпы қателер

  • Алдын ала өңдеуді өткізіп жіберу немесе оны дұрыс орындамау. Қате өлшем/қалыптылау үнсіз қате нәтиже береді.
  • Сенімділік көрсеткішін елемеу. Сенімділігі төмен бағалауды дәлдікпен ұсыну пайдаланушыны жаңылыстырады.
  • Модельді эмуляторда сынау. Құрылғының нақты жылдамдығы мен батареясы өте әртүрлі; әрқашан нақты жабдықта өлшеңіз.
  • Бұлтқа құпия деректерді қажетсіз жіберу. Құрылғыда мүмкін болған кезде бұлтты таңдау құпиялылыққа қауіп төндіреді.
  • Үлгі өлшемін елемеу. Үлкен үлгідегі қолданбалар жүктеп алу көлемін арттырады және төмен жабдықта істен шығады.
  • Модельдің жаттығу шегін ұмыту. Үлгі көрмейтін күйде қателеседі (түн, басқа тіл); Мұны пайдаланушыға түсіндіріңіз.

Қысқаша

Құрылғыдағы AI телефонда деректерді сақтау арқылы құпиялылықты, жылдамдықты және желіден тыс жұмысты қамтамасыз етеді; Шектеу - құрылғының қуаты мен үлгі өлшемі. ML жинағы қордан тыс мүмкіндіктер үшін пайдаланылады, Core ML (iOS) және TensorFlow Lite (кросс-платформа) пайдаланушы үлгілері үшін пайдаланылады. Интеграцияның үнсіз өлтіруі - дұрыс емес алдын ала өңдеу; Енгізу өлшемі мен қалыпқа келтіру үлгі құжаттамасынан тексеріледі. Әрбір нәтиже сенімділік ұпайымен келеді, ал төмен сенімділік болжамдары абсолютті шындық ретінде ұсынылмайды. Шешімдер эмуляторда емес, нақты құрылғыда өлшенеді.

Қолданбалы тапсырма

«Фотосуреттен мәтінді оқу» немесе «штрих-кодты оқу» мүмкіндігі үшін AI-дан «Жолды таңдау үлгісімен» құрылғыда немесе бұлттық болуы керектігін сұраңыз, содан кейін «Интеграция үлгісі» бар ML жинағы негізіндегі сызбаны сұраңыз. Кодта алдын ала өңдеу қадамы мен пайдаланушының мақұлдау/өңдеу ағынының бар екенін тексеріңіз. Сенім ұпайының шегін орнатыңыз және нәтиже сенім төмен болса, не істейтініңізді жазыңыз.

бақылау парағы

  • [ ] Мен өлшемдер негізінде құрылғыда/бұлттық шешім қабылдадым
  • [ ] Мен дұрыс құралды таңдадым (ML Kit / Core ML / TF Lite)
  • [ ] Мен үлгі құжаттамасынан алдын ала өңдеу өлшемін және қалыпқа келтіруді тексердім
  • [ ] Мен сенімділік ұпайын тексердім және төмен сенім нәтижелері туралы ескерттім
  • [ ] Мен пайдаланушыға нәтижені мақұлдау/өңдеу арқылы ұсындым, мен оны соқыр сақтаған жоқпын
  • [ ] Мен өнімділікті эмуляторда емес, нақты құрылғыда өлшедім