当前位置: 首页 > news >正文

照片中对象识别模型YOLOv3在iOS项目中的浅析与使用

本文所指的YOLOv3模型为苹果开发者官网提供的图形识别对象的CoreML模型,可识别80种对象,并给出识别的对象在图形中的位置和大小信息。

我们可以直接在官网下载该模型:

机器学习 - 模型 - Apple Developer

然后直接将模型拖入工程中(使用的是xcode14.3),xcode会自动根据模型生成对应的工具类YOLOv3,该类文件不可修改。在工程中我们可以查看模型的信息:

a0156130547f4559aef36d2305550849.png

我们可以点击该浏览页面中的Model Class查看自动生成YOLOv3工具类。在浏览页面中我们看到下方有几个tab选择,重点的tab介绍:

General:模型的描述信息,重要的是Class Label,这个清单中列出了可识别的80种对象名称。

Preview:直接体验模型的预测效果,感兴趣可在该tab下拖入图片进行预览。

Prediction:描述了模型的输入输出信息。

接下来,我们可以在工程中使用该模型进行预测了,demo代码如下(YOLOv3类无需import):

do {let config:MLModelConfiguration = MLModelConfiguration()let model:YOLOv3! = try YOLOv3(configuration: config)if model != nil {//为了方便,我直接拿了asset中的照片let image:UIImage? = UIImage(named: "IMG_0096")if image != nil {let input:YOLOv3Input = try YOLOv3Input(imageWith: image!.cgImage!)let outPut:YOLOv3Output = try! model.prediction(input: input)print("识别成功")print(outPut.coordinates.count)}else{print("图片读取失败")}}else{print("模型初始化失败")}}catch{print(error)}

代码中涉及三个类:

YOLOv3:模型类,其实例也可以理解为模型本身。

YOLOv3Input:类实例为输入对象。

YOLOv3Output:类实例为识别结果输出对象。

代码中,outPut对象包含了所有的识别数据,coordinates属性值代表识别出的物体对象的坐标和大小数据,confidence属性值代表识别出的物体对象的概率值。

coordinates:元素为包含4个double值的数组,每个double值依次代表识别出的物体在图片中的相对坐标和宽高:

  • x:识别对象的中心点距离图片左侧的像素相对图片宽度像素的比例;
  • y:识别对象的中心点距离图片顶部的像素相对图片宽度像素的比例;
  • w:识别对象的宽度相对图片宽度的比例;
  • h:识别对象的高度相对图片高度的比例;

confidence:元素为包含80个double值的数组,每个double值依次代表识别出的物体属于80种对象分类的概率。

在经过艰难的查找后,始终无法通过api获取80种对象分类名称的值,只能通过模型浏览看到,最后在控制台找到对应的属性,但是无法通过YOLOv3对象获取,控制台中打印出的80种对象分类名称:

1782646f0b4645dc974ee550e3d991a9.png

 如果后续找到友好方式获取Class Label的方式再补上。

 

http://www.lryc.cn/news/90025.html

相关文章:

  • Caffeine 本地高速缓存工具类
  • 加密解密软件VMProtect教程(八)许可制度之序列号生成器
  • 单源最短路的建图
  • MyBatis基本操作及SpringBoot单元测试
  • Linux之创建进程、查看进程、进程的状态以及进程的优先级
  • k8s部署rabbitmq
  • 关于QGroundControl的软件架构的理解
  • Android 文本识别:MLKIT + PreviewView
  • 刮泥机的分类有哪些及组成部分
  • Qt编程基础 | 第六章-窗体 | 6.2、VS导入资源文件
  • NET框架程序设计-第4章类型基础
  • Java设计模式-备忘录模式
  • Zookeeper集群 + Kafka集群
  • “邮件营销新趋势,这个平台让你收获颇丰!
  • Python列表推导
  • git使用查看分支、创建分支、合并分支
  • vue3.0与vue2.0
  • HTML 中的常用标签用法
  • 【C++】指针 - 定义和使用,所占内存空间,空指针,野指针,const 修饰指针,指针和数组,指针和函数
  • 新规之下产业园区如何合理收费水电费用
  • 1011. 在 D 天内送达包裹的能力
  • 基于SpringBoot养老院管理系统
  • 1.3 eBPF的工作原理初探
  • 【CH32】| 02——常用外设 | GPIO
  • 第四章 测试用例编
  • 解决dpdk reserve的内存返回的虚拟地址和iova地址一样的问题
  • JQuery实现小项目
  • 【C++/嵌入式笔试面试八股】一、23.结构体指针 | 指针和引用 | 万能指针 | 野指针
  • 【C++初阶】类和对象(下)构造函数(初始化列表) + explicit关键字 +static成员
  • chatgpt赋能python:Python代码怎么用?一个10年编程经验工程师的实践总结