当前位置: 首页 > 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;一般用十六进制数字表示。可以利用指…...

城通网盘解析工具:3分钟获取直连地址的完整高效解决方案

城通网盘解析工具&#xff1a;3分钟获取直连地址的完整高效解决方案 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 城通网盘解析工具 ctfileGet 是一款专为破解城通网盘下载限制而设计的开源工具&…...

QMCDecode:终极QQ音乐格式解密指南,一键解放你的加密音乐库

QMCDecode&#xff1a;终极QQ音乐格式解密指南&#xff0c;一键解放你的加密音乐库 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&…...

手机号码定位技术:从查询到地图可视化的完整解决方案

手机号码定位技术&#xff1a;从查询到地图可视化的完整解决方案 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirro…...

CTF流量分析必修课:HTTP/2与HPACK解码实战指南

1. 这不是Wireshark的问题&#xff0c;是你的分析链路断在了第一环你打开NewStarCTF一道Web流量题&#xff0c;导入pcapng文件&#xff0c;熟练地敲下http.request.method "POST"&#xff0c;结果空空如也。再试http contains "flag"&#xff0c;还是没反…...

无Root安卓隐私检测:Frida+Camille实战指南

1. 为什么“不Root也能做隐私检测”这件事值得大书特书 去年在给一家金融类App做第三方合规评估时&#xff0c;客户明确提了一条硬性要求&#xff1a;“所有检测必须在未Root的量产机上完成&#xff0c;测试环境要完全模拟真实用户场景。”当时我第一反应是皱眉——毕竟市面上…...

深入理解css-grid-polyfill原理:从源码角度解析实现机制

深入理解css-grid-polyfill原理&#xff1a;从源码角度解析实现机制 【免费下载链接】css-grid-polyfill A working implementation of css grids for current browsers. 项目地址: https://gitcode.com/gh_mirrors/cs/css-grid-polyfill CSS Grid布局是现代Web开发中强…...

UE材质进阶:拆解WAT世界对齐纹理原理,从‘井盖积雪’到‘墙体苔藓’的通用实现思路

UE材质进阶&#xff1a;WAT世界对齐纹理原理与多场景实战指南想象一下这样的场景&#xff1a;你的开放世界游戏中&#xff0c;一辆越野车驶过泥泞道路&#xff0c;轮胎上的泥渍会随着行驶距离逐渐积累&#xff0c;但无论车辆如何移动旋转&#xff0c;泥渍纹理始终与地面环境保持…...

雪球md5__1038签名逆向:从Chrome调试到Node.js稳定复现

1. 这不是“破解”&#xff0c;而是对前端加密逻辑的常规逆向工程实践你打开雪球网的行情接口&#xff0c;抓到一个带md5__1038xxx参数的请求&#xff0c;复制下来一试——换台电脑、换个时间、甚至只是刷新一下页面&#xff0c;参数就失效了。后端直接返回403 Forbidden或{&qu…...

LLM提示压缩技术:原理、实现与优化实践

1. 提示压缩技术概述在大型语言模型&#xff08;LLM&#xff09;应用中&#xff0c;推理延迟已成为关键瓶颈。当处理包含多个检索段落的RAG&#xff08;检索增强生成&#xff09;系统时&#xff0c;长上下文会导致提示&#xff08;prompt&#xff09;体积膨胀&#xff0c;显著增…...

避坑指南:在openEuler 22.03上配置vsftpd虚拟用户,解决PAM认证和SELinux权限问题

深度实战&#xff1a;openEuler 22.03中vsftpd虚拟用户配置全流程与疑难解析 在服务器运维领域&#xff0c;FTP服务作为经典的文件传输方案&#xff0c;其安全配置一直是系统管理员的核心技能。本文将聚焦openEuler 22.03操作系统环境&#xff0c;深入剖析vsftpd虚拟用户模式的…...