Первый взгляд на Google ML Kit: непрофессиональная оценка от новичка в машинном обучении

машинное обучение искусственный интеллект Google I/O

На 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Развертывание моделей машинного обучения на мобильных устройствах по-прежнему остается хорошим вариантом.