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

news2024/11/21 1:37:36

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

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

机器学习 - 模型 - Apple Developer

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

我们可以点击该浏览页面中的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种对象分类名称:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试进阶齐飞!Github一天万赞的阿里Java系统性能优化有多牛?

前两天在知乎上看到一个问答,说的是: 一个Java程序员具备什么样的素质和能力才可以称得上高级工程师? 这个问题也引发了我的一些思考,可能很多人会说,“作为高级工程师,基础得过硬、得熟练掌握一门编程语…

信创办公–基于WPS的PPT最佳实践系列 (项目11 绘制流程图)

信创办公–基于WPS的PPT最佳实践系列 (项目11 绘制流程图) 目录 应用背景操作步骤1、流程图制作过程 应用背景 如果在smartart图形当中没有找到你所需要的图形,想要快速绘制,可以试试以下方法。 操作步骤 以图1为例&#xff0c…

AI智慧安防平台EasyCVR无法成功通过RTMP协议接入是什么原因?

EasyCVR视频融合平台基于云边端协同架构,具有强大的数据接入、处理及分发能力。平台可支持多协议、多类型的前端设备接入,包括市场主流标准协议与厂家私有协议及SDK,如:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、宇视S…

AIGC和ChatGPT推进百度、阿里、腾讯、华为大模型技术创新

AIGC | PC集群 | PC Farm | GPU服务器 生成式AI | Stable Diffusion | ChatGPT 2022 年 12 月,OpenAI 推出了 ChatGPT,这是一种高性能计算的大型语言生成模型。它的出现推动了人机对话技术的发展,并在网络上引起了极大的关注。目前&#xff…

K-verse “韩流崛起”合作伙伴介紹

你们可以通过这次 K-verse LAND 销售活动认识许多品牌和 IP。更多详情见下文。 Netmarble Netmarble IP LAND 以全新方式来享受一系列以 Netmarble 的标志性 IP 为特色的内容! Netmarble Corporation 于 2000 年在韩国成立,是全球最畅销手机游戏的领先…

【数据结构】顺序二叉树的实现—以堆的实现为例、堆的调整、堆的创建、堆的插入和删除、堆排序

文章目录 1.堆的概念及结构2.堆的实现(以大堆为例)2.1堆的插入2.1.1堆的向上调整算法 2.2堆的删除2.2.1堆的向下调整算法 2.3堆的创建2.4有关建堆的时间复杂度 3.堆排序4.C语言堆实现源码 1.堆的概念及结构 堆就是顺序结构二叉树。 如果有一个关键码的集…

操作系统第四章——文件管理(上)

凡所有相,皆是虚妄,若见诸相非相,即见如来 文章目录 4.1.1 初识文件管理前情回顾文件的属性文件内部的数据应该怎样组织起来?文件之间应该怎么样组织起来?操作系统应该向上提供那些功能?文件如何存放在外存…

JOSEF约瑟 JDZY-1440 DC110V 静态中间继电器 导轨安装 常用于电力系统

名称:中间继电器;型号:JDZY-1440;品牌:JOSEF约瑟;额定电压:24,48,110,220VDC/AC380VAC;触点容量:250VAC/5A;功率消耗:2W/3.5W;返回时间…

图数据库实践 - 如何将图数据库应用于身份与访问管理

导读 目前,随着云计算和大数据的快速发展,身份与访问管理(Identity and Access Management,IAM)系统变得比以往任何时候都更加重要。因为涉密信息可能在几分钟内就被破解,网络犯罪分子仅需要一个员工账号&…

【敬伟ps教程】蒙版和通道的基础知识

文章目录 通道通道面板 Alpha 通道通道和选区的关系编辑 Alpha通道原色通道的利用 图层蒙版编辑图层蒙版快速蒙版 通道 通道是图像文件的一种颜色数据信息存储形式,它与图像文件的颜色模式密切相关 多个分色通道(如图:红R、绿G、蓝B)叠加在一起可以组成一幅具有颜…

通过Python的PIL库给图片添加马赛克

文章目录 前言一、Pillow是什么?二、安装PIL库三、查看PIL库版本四、使用方法1.引入库2.定义图片路径3.打开需要打马赛克的图片4.获取图片尺寸5.创建一个新的图片对象6.定义块的宽高7.循环遍历图片中的每个块进行处理8.保存马赛克图片9.效果 总结 前言 大家好&#…

《Redis-Windows平台下Redis集群的使用》

文章目录 Redis主从集群1.集群结构2.准备实例和配置3.启动4.开启主从关系5.测试Redis主从集群 win-redisx64下载地址 :https://github.com/microsoftarchive/redis/releases 1.集群结构 我们搭建的主从集群结构如图: 共包含三个节点,一个主节点,两个从节点。 这里我们…

内网远程桌面控制软件推荐

远程控制企业内部网中的计算机(没有连接外网),如果控制端和被控端都处在该内网,您可以按照以下步骤操作: 1、确保两台计算机都连接到同一个局域网 确保要控制的计算机和要启动远程控制的计算机连接到企业内的同一个局…

python知识点100篇系列(11)-浮点数四舍五入的两种方法

Python 的四舍五入主要有两种方式; 内置函数 round(number[, ndigits])使用 Decimal先说结论: 如果是对金额的四舍五入,不建议使用内置函数,原因如下: 使用round方法: python3中的round函数对浮点数进行四舍五入的规则: 参数ndigits 不为 0 的情况如果保留位数的后一位…

瑞云科技助力番职院打造虚拟数字人,探索职业教育创新之路

3月24-25日,教育部高等学校科学研究发展中心主办、广州番禺职业技术学院承办的2022-2023年职业教育示范性虚拟仿真实训基地建设工作推进会在中国广州举行。会议旨在指导各院校建好用好管好虚拟仿真示范实训基地,以数字化、网络化、智能化赋能职业教育高质…

SeaTunnel本地运行以及kafka发送到redis说明

下载 Seatunnel2.3.1源码 Idea中的目录结构 编译 通过maven进行代码编译 编译命令 mvn clean package -pl seatunnel-dist -am -Dmaven.test.skiptrue 编译单个模块命令 mvn clean package -pl seatunnel-examples/seatunnel-engine-examples -am -Dmaven.test.skiptrue …

@开源爱好者,字节跳动这项技术,正式宣布开源了

告诉大家一个好消息,字节跳动的云原生数据仓库 ByConity 正式宣布开源了。 ByConity 是一个云原生数据仓库,由字节跳动数据平台团队在国际知名开源数据库管理系统 ClickHouse 社区版本基础上开发。 早期,字节跳动的数据存储使用的是 ClickHou…

【Axure教程】通过文本框维护下拉列表选项

下拉列表(Dropdown List)是一种常见的用户界面元素,用于提供一组选项供用户选择。它通常以一个展开的列表形式出现,用户可以点击或选择列表中的一个选项。一般来说,他的选项值是由系统代码组成的,所以一般是…

leecode每日一题 1080 根到叶路径上的不足节点

题目描述 给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 不足节点 ,并返回最终二叉树的根节点。 假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit,则该节点被称之为 不足节点 &#xff0…

接口测试神器, ApiKit ,亲测好用

自己关注的公众号比较多,之前有收到过有关 ApiKit 的文章,自己也是大致看看,还没有用过它! 最近看到比较多有关 ApiKit 的文章,所以自己就花了点时间去研究它,使用完后发现确实比Postman功能更强大,界面也…