В моята предишна статия представих Core ML, който е обща рамка за машинно обучение. Apple също предоставя рамки за специфични области. В тази статия ще се потопя във Vision framework за компютърно зрение. Тази рамка е базирана на Core ML.

Vision ни предоставя няколко инструмента за анализиране на изображение или видео, за откриване и разпознаване на лице, откриване на баркод, откриване на текст, откриване и проследяване на обект и т.н. Ще обясня всеки инструмент с пример. Примерът е качен в GitHub — NilStack/HelloVision.

Най-просто казано, има три роли в използването на Vision. Те са заявка, заявка за обработка и наблюдение. Има различни типове заявки за анализ на изображения за използване на различни инструменти във Vision. Например ние дефинираме VNDetectFaceRectanglesRequest за откриване на лице в изображение. Като манипулатор на заявки има само два вида манипулатори на заявки: VNImageRequestHandler и VNSequenceRequestHandler. Единият е за едно изображение, а другият е за „поредица от множество изображения“. Резултатите са опаковани в „наблюдения“. Информацията в наблюдението е като ограничителна кутия на резултата от анализа.

Прост шаблон за използване на Vision е като следния кодов блок.

Във всяка функция показвам само части от кодове. Моля, вижте пълния проект в GitHub.

1. Анализ на изображения с машинно обучение

Това е за анализиране на изображение с Core ML модел. Съответната заявка е VNCoreMLRequest. Ще използвам нов модел MobileNets на Google. Той е „за мобилни и вградени визуални приложения“. Можете да изтеглите файла с модела, който е конвертиран във формат Core ML от Matthijs Hollemans от awesome-CoreML-models.

Ето и резултата

2. Разпознаване на лица

Разпознаването на лица е да помогне за намиране на лица в изображение. Съответната заявка е VNDetectFaceRectanglesRequest. Ограничаващите полета за открити лица са обвити в резултата VNFaceObservations. В примера около лицата са начертани правоъгълници.

HandFaces е манипулаторът за завършване.

Резултатът е

3. Разпознаване на забележителности на лицето

Функцията за откриване на забележителности на лицето помага да се намерят различни черти на лицето в изображението. Съответната заявка е VNDetectFaceLandmarksRequest. Регионите за различни забележителности са обвити в резултатите. В даден регион точките ще маркират ориентирите като очи, нос, уста и др.

Резултатът е по-долу.

4. Откриване на текст

Откриването на текст е за откриване на текстова област в изображението. Заявката е VNDetectTextRectanglesRequest.

Резултатът е

5. Откриване на баркодове

Откриването на баркодове е за откриване на баркодове в изображението. Но винаги получавам нула с VNDetectBarcodesRequest и не мога да намеря документ или образец като справка. Моля, помогнете ми, ако получите правилен резултат с откриването на баркодове.

6. Проследяване на обекти

Използвам VNImageRequestHandler в предишни заявки. Но при проследяването на обекти трябва да обработвам видео, така че е време да сменя на VNSequenceRequestHandler, което е за „поредица от множество изображения“.

Този пример е от блога на jeffreybergier Getting Started with Vision on iOS 11.

Да видим резултата.

Вземете пълен проект за всички примери от GitHub — NilStack/HelloVision.

Следващата статия за машинното обучение в iOS 11 е

Swift World: Какво е новото в iOS 11 — Обработка на естествен език

Най-накрая ще изброя официални ресурси от официалния документ на Apple и сесията на WWDC.

„Документ за визия“

WWDC 2017 Session Vision Framework: Надграждане на Core ML

Ще продължа да актуализирам тази статия и пример. Благодаря за отделеното време. Моля, щракнете върху бутона ❤, за да бъде видяна тази статия от повече хора. Говорете с Peng чрез Twitter: nilstack | GitHub: nilstack | LinkedIn: Peng | Имейл: [email protected]

Забележка: Swift World е нова публикация от мен за събиране на отлични статии, уроци и кодове за Swift. Моля, следвайте го, ако се интересувате.