Печалби:
- Възможност за вземане на решение на устройството или в облака и избор на правилния инструмент (ML Kit, Core ML, TensorFlow Lite) въз основа на поверителност, офлайн нужди, размер на модела и критерии за батерия
- Възможност за предотвратяване на тихи грешки чрез проверка на предварителната обработка на входа (размер и нормализиране) от документа на модела в интеграцията на модела
- Възможност за оценка на резултата за доверие и измерване на резултата с одобрението на потребителя и на реално устройство, без да се представят прогнози с ниска степен на доверие като абсолютна истина.
Досега сме използвали AI като помощно средство за ускоряване на процеса на разработка. Сега преминаваме към втората роля на AI: талантът, вграден в приложението. Съвременните телефони имат силата да изпълняват AI модели като разпознаване на изображения, превод на текст, транскрипция на реч и т.н. директно на устройството (на устройството — в собствения процесор на телефона, без да отивате до сървъра). AI на устройството; Той предлага големи предимства пред облачните решения по отношение на скорост, поверителност и офлайн работа. В този модул ще научим как да вграждаме AI в приложението с Core ML на iOS, междуплатформен TensorFlow Lite (сега известен като LiteRT) и готовото решение ML Kit на Google и как да използваме AI като помощник в тази интеграция.
На устройство или в облак?
Това е първото и най-важно архитектурно решение. AI на устройството не премахва данни от телефона – огромна победа за поверителността. Освен това е мигновен и работи офлайн, тъй като няма забавяне на мрежата. Той обаче е ограничен от процесорната мощност и паметта на устройството; Много големи модели (напр. модели с гигантски език) няма да се поберат в телефона или ще изтощават батерията. Cloud AI, от друга страна, предлага неограничена мощност, но изпраща данни към сървъра, изисква мрежа и създава латентност.
критерий
На устройството
Облак (облачен API)
Поверителност
Данните остават на устройството, силно
Данните отиват към сървъра, необходимо е внимание
скорост
Мигновено, без мрежа
Зависи от латентността на мрежата
офлайн
Работи
не работи
Размер на модела
Ограничен (телефонен ресурс)
неограничен
батерия/топлина
Ефекти при тежка употреба
Сървърът е под натоварване, устройството е отпуснато
цена
Безплатно (източник на устройството)
Такса за използване
Правило за вземане на решения: Изберете на устройството, ако се обработват лични/чувствителни данни, трябва да работи офлайн или незабавният отговор е от съществено значение. Ако имате нужда от много голям модел, обърнете се към облака. Това устройство е фокусирано върху устройството; Ще разгледаме облачен AI в следващия раздел.
Съвет: Винаги настройвайте устройството по подразбиране за функция, която обработва чувствителни данни (здраве, биометрични данни, местоположение). Фразата „данните не напускат устройството“ е безценна както за спазването на правилата за поверителност, така и за доверието на потребителите и прави голяма разлика в етикета за поверителност на магазина.
Три начина: ML Kit, Core ML, TensorFlow Lite
ML Kit (Google) е най-лесният начин да започнете: той дава готови възможности като разпознаване на текст (OCR — четене на текст в изображение), разпознаване на лица, четене на баркод, превод в няколко реда. Не е необходимо да обучавате свой собствен модел. Core ML (Apple) е най-ефективният начин да стартирате собствен модел или готов модел на iOS; Той използва хардуера на Neural Engine на Apple (процесор за изкуствена невронна мрежа). TensorFlow Lite/LiteRT е крос-платформено решение, което ви позволява да стартирате свой собствен обучен модел както на Android, така и на iOS.
Общият поток на интеграция с AI протича така:
- Определение за талант. Ясна цел, като например „Искам да прочета текста на снимката“.
- Избор на път. Ако има готов талант, ML Kit; Core ML/TF Lite, ако е наличен специален модел.
- Формат на модела. .mlmodel (Core ML), .tflite (TF Lite). Обяснява стъпките за трансформация на AI.
- Интеграционен код. Зареждане на модела, предварителна обработка на входа, интерпретиране на изхода.
- Тест за ефективност. Измерване на скорост, памет, батерия на реално устройство.
Внимание: Най-честата грешка на 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 Text Recognition (на устройството, офлайн) - Вземете изображение от камера или галерия - Извлечете сумата и датата от разпознатия текст с регулярен израз - Представете резултата на потребителя за одобрение в полето за РЕДАКТИРАНЕ, автоматично запазване - Управление на потока на разрешения за камера и отхвърлянето. Запишете предварителна обработка и ситуации на грешка, обяснете стъпките."
Копируеми шаблони
Шаблон за избор на път: "Искам да направя следната функция: [функция]. Трябва ли да е на устройство или в облак? Сравнете въз основа на: поверителност, офлайн нужда, размер на модела, батерия, цена. Препоръчайте подходящия инструмент (ML Kit / Core ML / TF Lite) и обосновете."
Шаблон за интеграция: „Напишете [модел/възможност] интеграция за [платформа]: 1) Зареждане на модела 2) Предварителна обработка на входа (очакван размер и нормализиране) 3) Повикване за извод 4) Интерпретация на изхода и проверка на резултата за достоверност 5) Предупреждение към потребителя за резултат с ниска достоверност Напомнете ми да проверя стойностите за предварителна обработка от документацията на модела.“
Шаблон за оценка на доверието: „Разгледайте оценката на доверието в този код за извод: - Настоящ резултат „точен“ под прага (напр. 0,6) - Показване на бележка „това е приблизителна оценка“ на потребителя - Обърнете се към експерт, ако е критична област (здраве, безопасност) [код]“
Шаблон за проверка на производителността: „Избройте показателите, които трябва да измеря на действителното устройство за тази интеграция на модела на устройството: време за извод, увеличаване на паметта, въздействие на батерията, нагряване. Кажете метода на измерване за всеки.“
Често срещани грешки
- Пропускане на предварителната обработка или извършване неправилно. Грешен размер/нормализиране безшумно води до грешен резултат.
- Игнориране на резултата за доверие. Представянето на оценка с ниска достоверност като точна ще подведе потребителя.
- Тестване на модела в емулатора. Действителната скорост на устройството и батерията са много различни; винаги измервайте на реален хардуер.
- Ненужно изпращане на чувствителни данни към облака. Избирането на облак, когато е възможно на устройството, е риск за поверителността.
- Пренебрегване на размера на модела. Приложенията с големи модели увеличават размера на изтеглянето и се сриват на слаб хардуер.
- Забравяне на лимита за обучение на модела. Моделът греши в състояние, в което не вижда (нощ, различен език); Изяснете това на потребителя.
В обобщение
AI на устройството осигурява поверителност, скорост и офлайн работа, като съхранява данни на телефона; Ограничението е мощността на устройството и размерът на модела. ML Kit се използва за възможности извън кутията, Core ML (iOS) и TensorFlow Lite (между платформи) се използват за персонализирани модели. Тихият убиец на интеграцията е неправилната предварителна обработка; Размерът на входа и нормализирането се проверяват от документацията на модела. Всеки резултат идва с оценка на доверието и прогнозите с ниска степен на доверие не се представят като абсолютна истина. Решенията се измерват на реалното устройство, а не на емулатора.
Задача за приложение
За функция „четене на текст от снимка“ или „четене на баркод“, попитайте AI дали трябва да бъде на устройството или в облака с „шаблон за избор на път“, след което поискайте базиран на ML Kit план с „шаблон за интегриране“. Уверете се, че стъпката за предварителна обработка и потокът на потребителско одобрение/редактиране присъстват в кода. Задайте праг на оценка на доверието и напишете какво ще направите, ако резултатът е ниско доверие.
контролен списък
- [ ] Взех решението на устройството/облака въз основа на критерии
- [ ] Избрах правилния инструмент (ML Kit / Core ML / TF Lite)
- [ ] Проверих измерението на предварителната обработка и нормализирането от документацията на модела
- [ ] Проверих резултата за доверие и предупредих за резултати с ниско доверие
- [ ] Представих резултата на потребителя с одобрение/редактиране, не го запазих сляпо
- [ ] Измерих производителността на реалното устройство, а не на емулатора