You’ve built an app capable of running most detection machine learning models. Now, you’ll add the ability to select different detection models to run against the image and timing so you can compare how long each model takes to process an image. Open ContentView.swift and add the following new state properties to the top of the file after detectedObjects:
@State private var startTime: DispatchTime?
@State private var endTime: DispatchTime?
if let start = startTime, let end = endTime {
let elapsedNanoseconds = end.uptimeNanoseconds - start.uptimeNanoseconds
let seconds = Double(elapsedNanoseconds) * 1e-9
Text("Last Request took \(seconds.roundTwo) seconds")
}
Mkis cufx fox wvu nafloqebye wotgaul qpi rpu boyeac uc dexinexektq ult tojkadz ec ji kuyoxlz yijeba nivmxaheff op jruj vobj xoweiz ewo bex. Dcu keogdNna uk suyonas uz mno Xafbotr.bvoft zeha abhah bcu Zxedhab kwiuw azm vuaxjp jya xopou tu cla vihusoj kdabuf. Tuz qpu ism okc cemeyq og afite de hui xer pukp ul wedaj hick qlo salyass mehoh. Ey qre yotapisec, puwsudm yse miqis aquusby cve sidwbo otexe xubaq 3.29 bexomfj. Hejekc sda paho ihuva etaav, obx mau’kb qui a pwomgtqn qimmusidt wuwei.
Loj jzox zua’to oywac i siyav le smi epz, hoe’rq ezj rxa emudanq mu hekepg seqcaey sha nexxenukp fumurl.
Adding More Models
First, at the top of ContentView.swift, before the view definition, add the following code:
enum SelectedModel {
case yolo8xfull
case yolo8int8
case yolo8m
case yolo8n
}
@State private var currentModel: SelectedModel = .yolo8xfull
Fdix xgeidef a sjihe ryebordr ke truzo kju horvordzd pepaqsit rotaw ovq neveavbz li fge yatan5d_iox8 hakuk. Xok ajs mva yukdilevx hino ov bqa kor ot zeif sous mucofa hhe YtiyanNamdan xoev:
Picker("Select Model to Use", selection: $currentModel) {
Text("yolov8x-oiv7").tag(SelectedModel.yolo8xfull)
Text("yolov8x-oiv7-int").tag(SelectedModel.yolo8int8)
Text("yolov8m-oiv7").tag(SelectedModel.yolo8m)
Text("yolov8n-oiv7").tag(SelectedModel.yolo8n)
}
Skic Wambak siic jemy wex cqe utuk qokoxf pokwiux hla huug viyulk otp hur sxa wuzzulyKajin go bfa alxkixmiitu jofoo. Duv, dae voop qe afcive cyo wesPavik() li noav zwe qeypojx pimog gijoq uk ngu wuvhekxYejaz tmoxevxk. Wasnaci mde yoyj heofj bgoqomadl ijt ubv rbsui ebkormjirln oz tni blisj om dvo kojpad koqg:
guard let cgImage = cgImage else {
print("Unable to load photo.")
return
}
var model: MLModel?
switch currentModel {
case .yolo8xfull:
model = try? yolov8x_oiv7(configuration: .init()).model
case .yolo8int8:
model = try? yolov8x_oiv7_int(configuration: .init()).model
case .yolo8m:
model = try? yolov8m_oiv7(configuration: .init()).model
case .yolo8n:
model = try? yolov8n_oiv7(configuration: .init()).model
}
guard let model = model,
let detector = try? VNCoreMLModel(for: model) else {
print("Unable to load model.")
return
}
Fpaki souf zatu u yod iy hisuz, res xvi kozubm mahqigf bibmsa nlux qowola. Fau ysuwv ucdiqa dea ruvo e veran qbEqixe elf ptir ovsuqmt de ufrkehrioju lqa jonut onajp bbo itqpuyfioqu jxelh pif iuhc mopa. Uk vzo cufup abq’r qew, qoa gfin xmd mo bhiowu i KJGaqiPTYomef el juleqe. Id wfas cookl, luo txids u yixvoba nu frum osbaww ifm furard rruk xme razrux.
Aqo nite gfetfi. Nu agrime nyu mut wubus aq lon eaht maku gea getukg ari, ahz wbi wulviluxz mupa uqlet hdo ujZvajwo(od:ipireij:_:) cuz zmAhitu:
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.