На Google I/O 2018 Google анонсировала ML Kit. С помощью ML Kit даже разработчики, не имеющие опыта машинного обучения, могут быстро разрабатывать некоторые проекты на основе машинного обучения. Вызов API ML Kit так же прост, как вызов других мобильных SDK. Это действительно захватывающая новость для меня, который много раз знакомился с машинным обучением, но все еще только начинает :sweat_smile:. Однако можно ли широко использовать Google ML Kit в собственных приложениях? Какие преимущества и недостатки? Что произойдет, особенно для специальной сетевой среды Китая? Эта статья кратко познакомит вас с ML Опыт разработки набора и непрофессиональная оценка плюсов и минусов этого инструмента с точки зрения новичка в области машинного обучения.
Кстати, название Google для ML Kit очень умное, и предполагается, что оно принесет много трафика из поисковых систем в Google. Потому что каждый год на WWDC Apple любит называть свои новые SDK в формате FooKit, напримерARKit,MapKit и Т. Д. Однако SDK машинного обучения Apple не назван в честь MLKit, а называетсяCore ML (конечно также Один из предыдущих вариантов именования Apple). Я считаю, что многие студенты, которые ищут Core ML, часто ошибочно набирают его как «MLKit». В это время в будущем Google может безопасно управлять своим собственным SDK (на данный момент Google по-прежнему очень добросовестный, и большинство поисков « mlkit" взяты из Apple Core ML. результат).
Примечание. В этой статье в основном приведены два примера приложений:
- MLKitDemo (кодовый адрес:GitHub.com/IM wildcat/M…, проект распознавания текста привет, мир)
- MLKitExample(официальный пример Firebase)
опыт разработки
Среднестатистическому разработчику iOS требуется не более пяти минут, чтобы создать и запустить проект ML Kit hello world.
Если вы хотите создать собственный проект OCR для iOS (далее именуемый «MLKitDemo»), простоPodfile
Добавьте следующие три строки кода:
pod 'Firebase/Core'
pod 'Firebase/MLVision'
pod 'Firebase/MLVisionTextModel'
Затем вFirebase ConsoleСоздайте собственное приложение в (возможно, потребуется привязать кредитную карту), загрузите соответствующееGoogleService-Info.plist
После этого его можно использовать. Простое распознавание текста выглядит так:
func performTextRecognition() {
textDetector = vision.textDetector()
let uiImage = UIImage(named: "demo_image")
let visionImage = VisionImage(image: uiImage!)
let visionMetaData = VisionImageMetadata()
visionMetaData.orientation = .bottomRight
visionImage.metadata = visionMetaData
textDetector!.detect(in: visionImage) { (features, error) in
guard error == nil, let features = features, !features.isEmpty else {
print("Error. You should also check the console for error messages.")
// ...
return
}
// Recognized and extracted text
print("Detected text has: \(features.count) blocks")
for block in features {
print("\"\(block.text)\"")
}
// ...
}
}
Зависимые проекты и след
Следующая информация основана наMLKitExample(официальный образец Firebase) вместо проекта hello world (MLKitDemo) выше.
Хотя API-интерфейсы, в настоящее время интегрированные в ML Kit, очень просты, зависимости SDK относительно велики (источникpod install
):
Installing Firebase (5.0.0)
Installing FirebaseAnalytics (5.0.0)
Installing FirebaseCore (5.0.0)
Installing FirebaseInstanceID (3.0.0)
Installing FirebaseMLCommon (0.9.0)
Installing FirebaseMLModelInterpreter (0.9.0)
Installing FirebaseMLVision (0.9.0)
Installing FirebaseMLVisionBarcodeModel (0.9.0)
Installing FirebaseMLVisionFaceModel (0.9.0)
Installing FirebaseMLVisionLabelModel (0.9.0)
Installing FirebaseMLVisionTextModel (0.9.0)
Installing GTMSessionFetcher (1.1.15)
Installing GoogleAPIClientForREST (1.3.4)
Installing GoogleMobileVision (1.3.0)
Installing GoogleToolboxForMac (2.1.4)
Installing Protobuf (3.5.0)
Installing TensorFlowLite (0.1.7)
Installing nanopb (0.3.8)
Зависимость поставляется с некоторыми предварительно обученными моделями, которые, естественно, относительно велики (источникncdu
):
635.2 MiB [##########] /GoogleMobileVision
29.5 MiB [ ] /TensorFlowLite
18.2 MiB [ ] /FirebaseAnalytics
4.1 MiB [ ] /FirebaseInstanceID
4.1 MiB [ ] /FirebaseMLVision
2.7 MiB [ ] /FirebaseMLModelInterpreter
1.6 MiB [ ] /Protobuf
556.0 KiB [ ] /GoogleAPIClientForREST
484.0 KiB [ ] /GTMSessionFetcher
292.0 KiB [ ] /Target Support Files
284.0 KiB [ ] /FirebaseCore
232.0 KiB [ ] /Pods.xcodeproj
124.0 KiB [ ] /nanopb
112.0 KiB [ ] /GoogleToolboxForMac
80.0 KiB [ ] /FirebaseMLCommon
12.0 KiB [ ] /FirebaseMLVisionLabelModel
12.0 KiB [ ] /FirebaseMLVisionBarcodeModel
12.0 KiB [ ] /FirebaseMLVisionTextModel
12.0 KiB [ ] /FirebaseMLVisionFaceModel
12.0 KiB [ ] /Firebase
8.0 KiB [ ] Manifest.lock
0.0 B [ ] /Headers
0.0 B [ ] /Local Podspecs
существует GoogleMobileVision
Размер предварительно обученных моделей под:
252.4 MiB [##########] /FaceDetector
250.0 MiB [######### ] /TextDetector
88.2 MiB [### ] /LabelDetector
26.8 MiB [# ] /BarcodeDetector
17.7 MiB [ ] /Detector
Опыт развертывания и использования
Развертывание приложения на базе ML Kit на iOS очень простое и не требует дополнительных действий, достаточно установить его.
Размер приложения
Из-за включения предварительно обученных моделей приложение, естественно, намного больше, чем обычное приложение:
Используйте опыт
Распознавание текста
Точность распознавания текста также очень высока, даже если фотографии немного размыты. Примером может служить каталог The Economist:
Однако эта предварительно обученная модель поддерживает распознавание только английского текста. Для распознавания смешанного китайского или китайско-английского текста необходимо загрузить пользовательскую модель.
Распознавание лиц
Распознавание лиц, естественно, более точное, и все в этой области сделали это более зрело, не говоря уже о Google. Вот пример президента Трампа, пользующегося популярностью у народа:
Распознавание объектов (маркировка изображений)
Все еще используя фотографию президента Трампа для проверки, распознавание имени объекта относительно успешно (достоверность относительно высока), но, к сожалению, местоположение не отмечено:
использование сети
По известным причинам сервисы Google могут работать некорректно в Китае. Автор намеренно использовал Little Snitch для наблюдения за использованием сети (приложения только с автономными моделями) и обнаружил, что все еще есть вызовы API Google:
очевидно play.googleapis.com
Невозможно пропинговать и не подключиться напрямую. К сожалению, в настоящее время этот SDK, похоже, недоступен непосредственно в Китае.
Суммировать
От TensorFlow до AutoML, от TensorFlow Lite до ML Kit — нетрудно увидеть обширную компоновку Google в области машинного обучения. Справедливости ради, учитывая простоту использования ML Kit, можно сказать, что это еще одна часть совести Google: предоставление комплекта для быстрой разработки при обеспечении высокой гибкости с помощью TensorFlow Lite. Но неизбежно, что ML Kit привязан к Firebase (даже если автономный вывод практичен, в настоящее время необходимо настроить учетные данные приложения Firebase), а Firebase используется в Китае. Это непростая задача. Если основная аудитория приложения — китайские пользователи, вы также можете занять второе место и использоватьTensorFlow LiteРазвертывание моделей машинного обучения на мобильных устройствах по-прежнему остается хорошим вариантом.