当前位置: 首页 > 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的方式再补上。

 

相关文章:

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

本文所指的YOLOv3模型为苹果开发者官网提供的图形识别对象的CoreML模型,可识别80种对象,并给出识别的对象在图形中的位置和大小信息。 我们可以直接在官网下载该模型: 机器学习 - 模型 - Apple Developer 然后直接将模型拖入工程中&#x…...

Caffeine 本地高速缓存工具类

目录 Caffeine工具类方式 SpringBoot 整合 Caffeine 缓存 (SpringCache模式) 驱逐策略 开发使用 Caffeine是一种高性能的缓存库,是基于Java 8的最佳(最优)缓存框架,性能各方面优于guava。 Caffeine工具…...

加密解密软件VMProtect教程(八)许可制度之序列号生成器

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic(本机)、Virtual Pascal和XCode编译器。 同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起…...

单源最短路的建图

1.热浪 信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/problem_show.php?pid1379 很裸的单源最短路问题&#xff0c;n2500,可以用dijksta或者spfa都能过&#xff0c;下面展示spfa的做法 #include<bits/stdc.h> usi…...

MyBatis基本操作及SpringBoot单元测试

目录 一、什么是单元测试&#xff1f; 1.1 单元测试的好处 1.2 单元测试的实现步骤 1.2.1 生成单元测试类&#xff1a; 1.2.2 SpringBootTest注解 1.2.3 检验方法结果&#xff1a; 二、利用MyBatis实现查询操作 2.1单表查询 2.2 参数占位符 #{} 和 ${} 2.2.1 ${} 字符…...

Linux之创建进程、查看进程、进程的状态以及进程的优先级

文章目录 前言一、初识fork1.演示2.介绍3.将子进程与父进程执行的任务分离4.多进程并行 二、进程的状态1.进程的状态都有哪些&#xff1f;2.查看进程的状态2.运行&#xff08;R&#xff09;3.阻塞4.僵尸进程&#xff08;Z&#xff09;1.僵尸状态概念2.为什么要有僵尸状态&#…...

k8s部署rabbitmq

docker pull rabbitmq:3.9.28-management 1.部署模板 apiVersion: v1 kind: Service metadata:name: rabbitmq spec:ports:- name: amqpport: 5672targetPort: 5672- name: managementport: 15672targetPort: 15672selector:app: rabbitmq---apiVersion: apps/v1 kind: Statef…...

关于QGroundControl的软件架构的理解

首先QGC是基于QT平台开发&#xff0c;个人理解软件架构即为项目前后端结构&#xff0c;以及前后端数据交互的逻辑。下面是对QGroundControl源码的一些个人理解&#xff0c;写这个博客只是为了记录下来&#xff0c;防止时间久了忘记&#xff0c;过程中看了一些大佬的博客来帮助理…...

Android 文本识别:MLKIT + PreviewView

随着移动设备的普及和摄像头的高像素化&#xff0c;利用相机进行文本识别成为了一种流行的方式。MLKit 是 Google 提供的一款机器学习工具包&#xff0c;其中包含了丰富的图像和语言处理功能&#xff0c;包括文本识别。PreviewView 是 Android Jetpack 的一部分&#xff0c;它提…...

刮泥机的分类有哪些及组成部分

刮泥机的分类有哪些及组成部分 刮泥机的分类&#xff1a; 刮泥机主要包括&#xff1a;周边传动刮泥机、中心传动浓缩刮泥机。 1、中心传动浓缩刮泥机&#xff1a;主要由溢流装置、大梁及拦杆、进口管、传动装置、电器箱、稳流筒、主轴、浮渣耙板、刮集装置、水下轴承、小刮刀、…...

Qt编程基础 | 第六章-窗体 | 6.2、VS导入资源文件

一、VS导入资源文件 1.1、导入资源文件 步骤一&#xff1a; 将所有图片放到各自文件夹下&#xff0c;并将文件夹拷贝到资源文件&#xff08;.qrc文件&#xff09;的同级目录下&#xff0c;如下&#xff1a; 步骤二&#xff1a; 新建VS项目的时候&#xff0c;系统会自动建好一…...

NET框架程序设计-第4章类型基础

4.1 所有类型的基类型&#xff1a;System.Object CLR 要求每个类型最终都要继承自 System.Object 类型。 两种类型定义&#xff1a; 1&#xff09;隐式继承 //隐式继承 Object class Employee{}2&#xff09;显式继承 class Employee:System.Object{}System.Object 主要的公…...

Java设计模式-备忘录模式

简介 在软件开发中&#xff0c;设计模式是为了解决常见问题而提出的一种经过验证的解决方案。备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许我们在不破坏封装性的前提下&#xff0c;捕获和恢复对象的内部状态。 备忘录模式是一种…...

Zookeeper集群 + Kafka集群

Zookeeper 概述 Zookeeper 定义 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目。 Zookeeper 工作机制 Zookeeper从设计模式角度来理解&#xff1a;是一个基于观察者模式设计的分布式服务管理框架&#xff0c;它负责存储和管理大家都关心的数…...

“邮件营销新趋势,这个平台让你收获颇丰!

随着各媒体平台的迅速发展&#xff0c;2023年大家更专注于视频营销、网红营销、直播营销等营销方式。可以见得&#xff0c;数字媒介手段的发展&#xff0c;对于营销方式也产生了巨大的影响。但是&#xff0c;企业在拥抱新兴的营销方式的同时&#xff0c;也不要忽视传统的营销方…...

Python列表推导

列表推导式 列表推导式创建列表的方式更简洁。常见的用法为&#xff0c;对序列或可迭代对象中的每个元素应用某种操作&#xff0c;用生成的结果创建新的列表&#xff1b;或用满足特定条件的元素创建子序列。 例如&#xff0c;创建平方值的列表&#xff1a; squares [] for …...

git使用查看分支、创建分支、合并分支

一、查看分支 查看的git命令如下&#xff1a; git branch 列出本地已经存在的分支&#xff0c;并且当前分支会用*标记 git branch -r 查看远程版本库的分支列表 git branch -a 查看所有分支列表&#xff08;包括本地和远程&#xff0c;remotes/开头的表示远程分支&#xff09;…...

vue3.0与vue2.0

一、生命周期的变化 1.vue2.响应式架构 2.vue3.0 响应式架构图 Vue3.0响应式框架在设计上&#xff0c;将视图渲染和数据响应式完全分离开来。将响应式核心方法effect从原有的Watcher中抽离。这样&#xff0c;当我们只需要监听数据响应某种逻辑回调(例如监听某个text属性的变化…...

HTML 中的常用标签用法

HTML是构建Web页面的基础语言&#xff0c;其中包含许多不同类型的标签。这些标签由尖括号包围&#xff0c;以指示浏览器如何呈现文本。下面是HTML中的一些常用标签以及它们的使用方法&#xff1a; 标题标签&#xff08;h1-h6&#xff09; 标题标签用于标识页面内容的标题&…...

【C++】指针 - 定义和使用,所占内存空间,空指针,野指针,const 修饰指针,指针和数组,指针和函数

文章目录 1. 定义和使用2. 所占内存空间3. 空指针4. 野指针5. const 修饰指针6. 指针和数组7. 指针和函数 1. 定义和使用 数据类型 * 变量名; 指针的作用是&#xff0c;可以通过指针间接访问内存。 内存编号是从 0 开始记录的&#xff0c;一般用十六进制数字表示。可以利用指…...

新规之下产业园区如何合理收费水电费用

一、政策背景 2018年3月30日&#xff0c;国家发改委发布《国家发展改革委关于降低一般工商业电价有关事项的通知》。明确提出进一步规范和降低电网环节收费&#xff0c;一是提高两部制电价的灵活性&#xff1b;二是全面清理规范电网企业在输配电价之外的收费项目&#xff0c;重…...

1011. 在 D 天内送达包裹的能力

传送带上的包裹必须在 days 天内从一个港口运送到另一个港口。 传送带上的第 i 个包裹的重量为 weights[i]。每一天&#xff0c;我们都会按给出重量&#xff08;weights&#xff09;的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。 返回能在 days 天内将…...

基于SpringBoot养老院管理系统

目录 一、项目介绍 二. 运行环境 三、项目技术 四、部署项目 五、项目运行 六、项目展示 五、项目下载 一、项目介绍 基于springboot的养老院管理系统拥有多种角色账号&#xff1a;管理员和用户 管理员&#xff1a;管理员管理、用户管理、健康管理、病例方案管理、药品…...

1.3 eBPF的工作原理初探

写在前面 上一节提到过,eBPF程序是面向BPF体系结构指令集编写的,它并不直接运行在Linux内核中,我们可以理解为它是运行在eBPF虚拟机,由eBPF虚拟机来执行eBPF字节码,就像java运行在jvm一样。 我们用一张原理图来看下eBPF程序的编译,加载,验证,钩子,映射等结点。 如上是…...

【CH32】| 02——常用外设 | GPIO

系列文章目录 【CH32】| 00——开发环境搭建 【CH32】| 01——新建工程 | 下载 | 运行 |调试 【CH32】| 02——常用外设 | GPIO 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 前言1. GPIO简介2. IO口的内部结构框图保护二极管上下拉电阻施密特触发器两个MOS管输出寄存器…...

第四章 测试用例编

本科程目标 1.什么是测试用例 2.测试用例的重要性 3.测试用例的八大要素&#xff08;重点&#xff09; 4.测试用例的评审 一、什么叫软件测试用例 测试用例&#xff08;TestCase&#xff09;是为项目需求而编制的一组测试输入、执行条件以及预期结果&#xff0c;以便测试…...

解决dpdk reserve的内存返回的虚拟地址和iova地址一样的问题

1. 背景: 在ubuntu20.04上用dpdk API: rte_memzone_reserve_aligned("L1L2_PCIE_MEMORY", 1.5*1024*1024*1024, rte_socket_id(), RTE_MEMZONE_1GB|RTE_MEMZONE_IOVA_CONTIG, RTE_CACHE_LINE_SIZE); 分配1.5…...

JQuery实现小项目

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 目录 文章目录 一、JQuery是什么 二、JQuery项目 2.1 猜数字 2.2 表白墙 2.3 聚合搜索 2.4 计算器 一、JQuery是什么 jQuery是一个快速、简洁的JavaScript框架&#xff0c;是继Prototype之…...

【C++/嵌入式笔试面试八股】一、23.结构体指针 | 指针和引用 | 万能指针 | 野指针

结构体指针 28.将结构体作为参数向函数中传递 传递方式有两种: 值传递地址传递,利用操作符 -> 可以通过结构体指针访问结构体属性//学生结构体定义 struct student {//成员列表string name; //姓名int age; //年龄int score; //分数 };//值传递...

【C++初阶】类和对象(下)构造函数(初始化列表) + explicit关键字 +static成员

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…...