CoreML — это новая платформа машинного обучения, запущенная в iOS 11 и являющаяся основным содержанием искусственного интеллекта, которую можно применять к приложению после обученной модели машинного обучения.
Обученная модель — это набор результатов, полученных путем применения алгоритма машинного обучения к набору обучающих данных.Core ML является основой для предметно-ориентированных структур и функций. Core ML обеспечивает поддержку обработки изображений для Vision, поддержку обработки естественного языка для Foundation (например, класс NSLinguisticTagger),GameplayKitОбеспечивает поддержку анализа изученных деревьев решений. Сам Core ML построен на низкоуровневых примитивах, включая Accelerate, BNNS и Metal Performance Shaders.
получить модель
Core ML поддерживает множество моделей машинного обучения, включая нейронные сети, ансамбли деревьев, машины опорных векторов и обобщенные линейные модели. Запуск Core ML требует использования формата модели Core ML (то есть моделей, заканчивающихся расширением .mlmodel).
Apple предоставляет некоторые общиемодель с открытым исходным кодомДля всех, эти модели уже используют формат модели Core ML. Вы можете скачать эти модели самостоятельно и начать использовать их в своем приложении.
Инженерный пример
Прежде всего, поскольку CoreML и Vision — это функции, доступные только в iOS 11, вам необходимо убедиться, что устройства Xcode9 и iOS 11, конечно же, симуляторы также доступны. Язык разработки с использованием Swift4
-
Добавьте модель в Xcode. Создайте проект и импортируйте файл модели.
Нажмите на этот файл, чтобы увидеть детали этой модели
Ниже приводится официальное представление этой модели.
Обнаруживает доминирующие объекты на изображении из набора из 1000 категорий, таких как деревья, животные, продукты питания, транспортные средства, люди и т. д.
-
Интерпретация модели
Во входных данных написано, что требуется размер изображения 299*299, в выходных данных два параметра classLabelProbs и classLabel, classLabelProbs — это массив [string:Double] словарей, и каждый словарь в массиве — это возможный словарь, полученный из анализ входного изображения. Результирующая строка представляет собой описание типа изображения, а двойник — процент вероятности. Другой classLabel является наиболее вероятным описанием результата.
Model ClassНиже приведен этот файл класса, нажмите, и вы увидите следующие три класса.
источник ввода, вы можете видеть, что ему нужна картинка в формате CVPixelBuffer в качестве ввода
В выводе вы можете увидеть два параметра вывода classLabel и classLabelProbs, Мы представили все возможные массивы результатов и описания наиболее вероятных результатов выше.
inceptionv3 вызывает метод Prediction этого класса, чтобы начать анализ
-
Напишите код. Определите изображение, метку и кнопку. Нажмите кнопку, чтобы открыть альбом, чтобы выбрать изображение, выберите, чтобы завершить выполнение следующего метода, а затем метку, чтобы отобразить результаты анализа.
func process(_ image: UIImage) {
imageView.image = image
// 需要CVPixelBuffer格式的输入源
guard let pixelBuffer = image.pixelBuffer(width: 299, height: 299) else {
return
}
//I have `Use of unresolved identifier 'Inceptionv3'` error here when I use New Build System (File > Project Settings) ¯\_(ツ)_/¯
let model = Inceptionv3()
do {
// 调用model的prediction方法进行分析
let output = try model.prediction(image: pixelBuffer)
// 打印输出结果
let probs = output.classLabelProbs.sorted { $0.value > $1.value }
if let prob = probs.first {
Label.text = "\(prob.key) \(prob.value)"
}
}
catch {
self.presentAlertController(withTitle: title,
message: error.localizedDescription)
}
}
текущий результат
Demo
?Скачать демоверсию Пожалуйста, нажмите звездочку, если это поможет