27 августа, 2018в Мобильная разработка, Разработка веб-приложений, Веб-сервисы

Основная структура машинного обучения:

Core ML — это платформа машинного обучения Apple, которую можно использовать для
интеграции модели машинного обучения в ваше приложение, что делает его более интеллектуальным. Расширение файла
для Core ML должно быть .mlmodel.

Что такое машинное обучение?

Машинное обучение — это приложение, дающее компьютерам возможность учиться
без явного программирования. Получайте доступ к данным и используйте их для самостоятельного изучения.

Методы машинного обучения:

Контролируемое обучение​: все данные помечены, и алгоритмы учатся прогнозировать выходные данные на основе
входных данных. Например, если мы захватываем изображение кошки, это означает, что имя кошки уже помечено.
Обучение без учителя:​ Все данные не помечены. Изучите информацию из входных данных.
Обучение с подкреплением: алгоритм глубокого машинного обучения. Взаимодействуйте с системой и
проверяйте каждое движение.

Основная модель машинного обучения:

Доступны следующие типы моделей для доступа к Core ML для вашего приложения IOS

Мобильная сеть:​

На основе оптимизации архитектуры. Используется для создания облегченной глубокой нейронной
сети. Доступно 1000 категорий, таких как деревья, животные, еда, транспорт, люди и
многое другое.

SqueezeNet:

идентификация изображений на основе его следов

Places205-GoogLeNet​:

обнаружить изображения из набора аэропорт, лес, побережье.

Начальная версия 3​:

Эта модель обнаруживает и доминирует присутствие на изображении набора из 1000 категорий.

Внедрение базовой модели ML Inception v3 в приложения IOS:

1. Загрузка модели Core ML:

В ядре ML доступно множество различных моделей. мы используем
модель Inception v3. Загрузите фреймворк по следующей ссылке:
https://developer.apple.com/machine-learning/build-run-models/

2. Создайте новый проект Xcode:

Используя шаблон приложения с одним представлением, мы создаем проект.

3. Интеграция Core ML в приложение IOS:

Загруженная начальная модель V3 добавлена ​​в каталог проекта IOS и включена в
рабочее пространство вашего проекта. Он содержит классы моделей для обработки базовой модели ML. Импортируйте
фреймворк CoreML ​и Vision f​ во ViewController.

4. Включение UIImagePickerController:

Мы используем UIImagePickerController для захвата изображения с камеры устройства и
анализа этого изображения для базовой модели ML и получения имени и описания в формате json
.

В файле info.plist вашего приложения необходимо добавить ключ NS CameraUsageDescription. Этот ключ используется
для доступа камеры устройства к вашему приложению.

Следующая строка используется для идентификации выбора камеры

imagePicker.sourceType = .камера

Следующая функция используется для доступа к захваченному изображению в ваше приложение.

func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String: Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {

imageView.image = изображение

imagePicker.dismiss (анимация: правда, завершение: ноль)

guard let ciImage = CIImage(image: image) else {
fatalError("не удалось преобразовать uiimage в CIImage")
}
обнаружить(image: ciImage)
}
}

5. Получение результата распознавания изображений из модели CoreML V3:

* Загрузите модель машинного обучения через сгенерированный класс
guard let model = try? VNCoreMLModel(for: Inceptionv3().model) else {
fatalError("невозможно загрузить модель ML")
}
* отправить запрос и получить имя и описание изображения
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results as? [VNClassificationObservation],
let topResult = results.first
else {
fatalError («неожиданный тип результата от VNCoreMLRequest»)
}
}
do { попробуйте handler.perform([запрос]) }
catch { print(error) }

6. Разработайте пользовательский интерфейс для отображения захваченного изображения и отображения имени

Используя UIImage , UILabel спроектируйте пользовательский интерфейс в раскадровке.
let topResult = results.first
let name = topResult.identifier
Получите имя идентификатора и отобразите его в UILabel.