人类即将进入人工智能时代,作为一个普通程序员我们除了增删改查之外,还应接触一下新的技术与事物。本文我将带领大家做个小demo,用SwiftUI和CoreML组件来制作一个识别物体的智能App
人人都能学会人工智能
其实我开始想写机器学习,但是担心把大家都吓跑了。请大家放心,本文保证绝不出现一个公式,也不讲深奥的理论,将通过一个实实在在的小例子让大家掌握制作智能应用的方法。
我争取在300行代码以内,完成智能识别App的制作。
先看后学真把式
我们在学之前先看看最终效果
如你所见,我们创建一个滚动视图,视图里面罗列待识别的照片。我们找了一些牛、猫、狗、山的照片,用来测试App识别效果。
打铁还须自身硬
接下来,我们来逐步实现这个app吧!
第一步:我们首先来创建一个滚动视图,用于让用户选择识别的照片。
1、定义一个数组存储待识别照片名称
//定义一个数组存储待识别照片名称
let images = ["niu","cat1","dog","tree","mountains"]
2、
//
VStack {
ScrollView([.horizontal]) {
HStack {
ForEach(self.images,id: \.self) { name in
Image(name)
.resizable()
.frame(width: 300, height: 300)
.padding()
.onTapGesture {
self.selectedImage = name
}.border(Color.orange, width: self.selectedImage == name ? 10 : 0)
}
}
}
第二步 完善整个页面
import SwiftUI
struct ContentView: View {
let images = ["niu","cat1","dog","tree","mountains"]
@State private var selectedImage = ""
@ObservedObject private var imageDetectionVM: ImageDetectionViewModel
private var imageDetectionManager: ImageDetectionManager
init() {
self.imageDetectionManager = ImageDetectionManager()
self.imageDetectionVM = ImageDetectionViewModel(manager: self.imageDetectionManager)
}
var body: some View {
NavigationView {
VStack{
HStack{
Text("识别结果:")
.font(.system(size: 26))
.padding()
Text(self.imageDetectionVM.predictionLabel)
.font(.system(size: 26))
}
VStack {
ScrollView([.horizontal]) {
HStack {
ForEach(self.images,id: \.self) { name in
Image(name)
.resizable()
.frame(width: 300, height: 300)
.padding()
.onTapGesture {
self.selectedImage = name
}.border(Color.orange, width: self.selectedImage == name ? 10 : 0)
}
}
}
Button("智能识别") {
self.imageDetectionVM.detect(self.selectedImage)
}.padding()
.background(Color.orange)
.foregroundColor(Color.white)
.cornerRadius(10)
.padding()
Text(self.imageDetectionVM.predictionLabel)
.font(.system(size: 26))
}
}
.navigationBarTitle("Core ML")
}
}
}