iOS 18(macOS 15)Vision 中新增的任意图片智能评分功能试玩

news2024/9/21 20:45:00

在这里插入图片描述

概述

在 WWDC 24 中库克“大厨”除了为 iOS 18 等平台重磅新增了 Apple Intelligence 以外,苹果也利用愈发成熟的机器学习引擎扩展了诸多内置框架,其中就包括 Vision。

在这里插入图片描述

想用本机人工智能自动为我们心仪的图片打一个“观赏分”吗?“如意如意,就如你心意吧”。

在本篇博文中,您将学到如下内容:

  • 概述
  • 1. Vision 框架简介
  • 2. 图片“令人愉悦”的美学属性
  • 3. 拒绝临渊羡鱼,撸起袖子上手实验!
  • 总结

Apple Intelligence 的大幕正徐徐拉开,那小伙伴们还等什么呢?

让我们先来品尝点 AI 甜点吧!Let’s go!!!😉


1. Vision 框架简介

Vision 是苹果在 iOS 11(macOS 10.13)引入的一款将计算机视觉算法应用在图片和视频上以便完成各种任务的框架。

在这里插入图片描述

Vision 框架结合了机器学习(ML,Machine Learning)技术和 Swift 新并发特性,可以出色的在应用程序中执行计算机视觉任务。

在这里插入图片描述

Vision 特别擅长下面几种任务:

  • 跟踪人和动物的身体姿势或对象的轨迹;
  • 识别 18 种不同语言的文本;
  • 检测人脸和人脸标志,如眼睛、鼻子和嘴巴等;
  • 执行手动跟踪以启用新设备交互;
  • 计算图片的美学评分以确定它们到底有多么让人“流连忘返”;

在这里插入图片描述

要开始使用 Vision 框架,一般的流程是:

  • 为对应的分析类型创建一个请求(有 25 个以上的请求可供选择),每个请求都符合 VisionRequest 协议;
  • 执行请求以获得观察结果或观察结果数组,以及请求的详细分析信息;
  • 将定制的 Core ML 模型用于分类或对象检测等任务;

从 iOS 18(macOS 15)开始,苹果利用最新的 Swift 6 编译器大大简化了 Vision 的调用方式并且开始全面支持 Swift 现代化并发模型。

在这里插入图片描述

在这里插入图片描述

接下来,我们就从 Vision 众多 Request 中挑一个来看看它到底有多么强大、使用起来又是多么的方便吧!

2. 图片“令人愉悦”的美学属性

从 iOS 18(macOS 15)开始,苹果为 Vision 新增了一个 CalculateImageAestheticsScoresRequest 请求类型:

在这里插入图片描述

使用它我们可以轻而易举的分析任意图片的“美学分数”(Image Aesthetics Scores)。

虽然目前苹果开发官网对于 CalculateImageAestheticsScoresRequest 的介绍还“寥若晨星”,不过通过 WWDC 24 相关视频释放出的信号来看 —— 这个新请求主要目的是用来“评判”我们所拍摄相片在将来会有多么的令人“回味无穷”。

在这里插入图片描述

除了图片的“品质(quality)”以外,我们还可以使用 CalculateImageAestheticsScoresRequest 来分析图片是否为一张功能图片(Utility Image)。至于到底何为“功能图片”,请大家在观赏 WWDC 24 中对应的视频时“细细品味”吧。


想要进一步了解 WWDC 2024 中对于 Vision 的全新和增强功能,请小伙伴们猛戳如下链接观赏官方视频:

  • Discover Swift enhancements in the Vision framework

现在,我们对 CalculateImageAestheticsScoresRequest 的所有了解都只是“纸上谈兵”。小伙伴们何不同我一起“御驾亲征”,来亲自感受一下它的高强本领呢!

3. 拒绝临渊羡鱼,撸起袖子上手实验!

目前 CalculateImageAestheticsScoresRequest 请求需要 iOS 18(iPadOS 18)或 macOS 15 系统,并且无法通过模拟器来执行。

虽然我的手机还未更新至 iOS 18 beta,但好在 mac 已经“捷足先登”升级至 macOS 15 beta3 了,所以最简单的方法就是在 mac 的 playground 中运行测试代码。

用 Xcode 16 新建一个 Playground 项目,并输入如下内容:

import AppKit
import Vision

let imageNames = ["1.jpeg", "2.JPG"]

for imageName in imageNames {
    if let image = NSImage(named: imageName), let cgImage = image.cgImage(forProposedRect: nil, context: nil, hints: nil) {
        
        let request = CalculateImageAestheticsScoresRequest()
        
        Task {
            do {
                let observation = try await request.perform(on: cgImage)
                let desc = observation.description
                let score = observation.overallScore
                print("[\(imageName)] desc: \(desc), score: \(score.formatted(.number.precision(.fractionLength(2))))")
            } catch {
                print(error.localizedDescription)
            }
        }
    }
}

随后我们需要将几张测试图片放入 Playground 中:

在这里插入图片描述

值得注意的是,我们必须利用 mac 本机 macOS 15 的“原生力量”,所以 Playground 的运行平台需要设置为 macOS:

在这里插入图片描述

最后,用不同图片测试一下它们的“艺术美感”吧:

在这里插入图片描述

[1.jpeg] desc: ImageAestheticsScoresObservation(overallScore: 0.52685547, isUtility: true, uuid: 22EBF9CD-2FBE-42F7-9D20-ED883EE024F4, confidence: 1.0), score: 0.53
[2.JPG] desc: ImageAestheticsScoresObservation(overallScore: 0.7636719, isUtility: false, uuid: B34CEA6E-8E1F-498A-AE42-7F301BE905D5, confidence: 1.0), score: 0.76

可以看到风景图片得分会远高于“垃圾箱”图片的得分,正应了那句古话:“银烛秋光冷画屏,轻罗小扇扑流萤;停车坐爱枫林晚,霜叶红于二月花”,棒棒哒!💯

总结

在本篇博文中,我们讨论了苹果开发中的 Vision 框架,并介绍 iOS 18(macOS 15)其新增的为任意图片“观赏度”恣意评分的功能,这是通过本地机器学习来实现的。

感谢观赏,再会啦 😎

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

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

相关文章

【2.3】回溯算法-重新排序得到 2 的幂

一、题目 给定正整数N&#xff0c;我们按任何顺序&#xff08;包括原始顺序&#xff09;将 数字重新排序 &#xff0c;注意其前导数字不能为零。 如果我们可以通过上述方式得到2的幂&#xff0c;返回 true&#xff1b;否则&#xff0c;返回false。 提示&#xff1a; 1 < …

学习记录第二十六天

进程运行 1&#xff0c;子进程和父进程做相同的事----创建子进程 执行任务 2&#xff0c;子进程做与父进程不同的事 ----fork exec exec族 l VS v :主要是第二个参数的传参方式不同 p :表示寻找可执行文件 是通过PATA环境变量 e : 表示可以给…

升级软文发稿开源系统源码论文期刊一键发布

升级软文发稿运营管理源码—论文期刊一键发布 软文发稿系统源码&#xff08;软文发布系统&#xff09;在基于旧版本的媒介软文发布平台项目改造升级了新的功能模块简称&#xff08;3.0版&#xff09;本系统还是基于开源的PHPMYSQLlayui&#xff08;前端界面&#xff09;代码进行…

唐山网站建设方案优化

唐山作为一个重要的工业城市&#xff0c;网站建设在这里具有重要的意义。为了更好地服务于市民和企业&#xff0c;唐山网站建设方案需要不断优化和更新。下面将从内容、技术和设计三个方面来探讨唐山网站建设方案的优化。 首先是内容方面。唐山作为一个历史悠久且拥有丰富文化底…

如何提高遭受网络攻击后的恢复速度

现实促使组织探索提供更快恢复和增强安全性的替代网络保护和恢复方法&#xff0c;尤其是在更严格的法规驱动下&#xff0c;这种紧迫感愈加明显。以下是一些提高网络安全策略恢复速度的方法。 近年来&#xff0c;勒索软件攻击已成为一个重大且令人担忧的趋势&#xff0c;其频率和…

Spring之最基础的创建与Bean的存储与获取(还有Maven加载jar包报错的解决方法)

目录 创建Spring项目 如何解决Maven加载jar包报错 存储Bean和取Bean 在Java中对象也称为Bean。所以后面我提到Bean&#xff0c;大家要知道我说的是什么。 创建Spring项目 我的idea是2022版本的&#xff0c;如果大家和我一样可以参考我的。 1.创建一个Maven项目。图片上忘了…

【TiDB】08-离线部署TiDB 8.1

目录 1、环境检查 1.1、检测及关闭系统 swap 1.2、设置TiDB节点的临时空间 1.3、安装NTP服务 1.3.1、更新apt源 1.3.2、安装NTP 1.3.3、将本机作为NTP服务器 1.3.4、客户端连接 1.4、配置SSH互信及sudo免密码 2、离线安装 2.1、下载离线安装包 2.2、解压安装 2.3、…

YOLOv8改进 | 主干网络 | 动态调整目标的感受野的LSKNet【旋转目标检测SOTA】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

程序员最常用的操作——git

软件安装 官方下载&#xff08;比较慢&#xff09;&#xff1a;https://git-scm.com/downloads gitee 注册账号 https://gitee.com/ 新建仓库 honey2024 先全局配置下邮箱 配置 git config --global user.email “your_emailexample.com” git config --global user.name…

虚幻5|AI行为树,进阶篇

一&#xff0c;打开敌人的角色蓝图&#xff0c;编写以下蓝图&#xff0c;该蓝图只是创建一个敌人并非ai行为树 1.编写蓝图 2.打开主界面&#xff0c;创建一个导航网格体积&#xff0c;上一章都有讲&#xff0c;在添加体积这里面&#xff0c;找到导航网格体积&#xff0c;点击创…

安装buf工具和环境变量

安装buf工具和环境变量 下载buf的可执行文件&#xff1a; 访问buf官方的GitHub releases页面。 没梯子的就用csdn下载吧 https://download.csdn.net/download/qq_27229113/89638643 找到最新版本的buf。 在Assets部分&#xff0c;下载适合Windows的二进制文件&#xff0c;一…

如何利用宝塔给WordPress网站搬家?详细分步教程

对于使用WordPress建站的站长来说&#xff0c;网站搬家是一项必备技能。无论是重装系统、升级配置还是服务器迁移&#xff0c;掌握网站搬家的技巧可以让你在选择服务器时更加灵活。本文将详细介绍如何使用宝塔面板来搬迁WordPress网站。 1. 备份数据库 记住数据库用户名和密码…

Python 批量读取西门子PLC

需要安装 pip install python-snap7 import snap7 from snap7.util import * import struct # PLC的IP地址, Rack和Slot plc snap7.client.Client() plc.connect(127.0.0.1, 0, 1) # IP, Rack, Slot # 读取DB1中的10个字节&#xff0c;起始于0位置 db_number …

企业多样化需求一键满足:可道云teamOS,助力定制专属企业网盘

在这个飞速发展的数字化时代&#xff0c;企业的运营需求越来越多样化&#xff0c;如何高效地管理数据、实现安全协作&#xff0c;成为摆在我们面前的重要课题。 幸运的是&#xff0c;我遇到了可道云teamOS。 首先&#xff0c;可道云teamOS的自定义用户权限功能让我印象深刻。…

Bug定义及生命周期(七)

BUG 定义 软件的bug&#xff0c;软件程序的漏洞或缺陷 – 常见&#xff0c;首先发现 软件可改进的细节&#xff0c;或与需求文档存在差异的功能实现等 测试工程师&#xff1a;发现bug&#xff0c;定位bug&#xff0c;提交bug&#xff0c;回归bug 类型 确定bug类型&#xff…

Android-->产物收集(含apk文件重命名, aab文件重命名)

以前写过修改apk生成路径和文件名的文章, 如下: AS–›Gradle 7.0.0/4.1.0/4.0/3.3/3.0 修改APK生成路径和文件名(附AAR修改方式以及分析过程)_com.android.build.gradle.internal.api.libraryvaria-CSDN博客 这种方法入侵了gradle,破坏了原有的gradle环境, 经常会导致如下问…

2024年8月中国数据库排行榜:OceanBase攀升再夺冠,达梦跃入三甲关

在这个炽热的季节&#xff0c;随着巴黎奥运会的盛大开幕&#xff0c;全球将目光聚集在了体育的无限魅力和竞技的巅峰对决上。如同奥运赛场上的激烈角逐&#xff0c;中国数据库界也上演着一场技术与创新的较量&#xff0c;各个数据库产品正在中国乃至全球舞台上展示着它们的实力…

mitmproxy 抓包工具的使用

motmproxy 是一个支持 HTTP/HTTPS 协议的抓包程序&#xff0c; 和 Fiddler, Charles 有些类似的功能&#xff0c;只不过它以控制台的形式操作 mitmproxy 还有两个关联组件。 一个是 mitmdump &#xff0c; 这是 mitmproxy 的命令接口&#xff0c; 利用它我们可以对接 Python …

企业用的文件加密软件有哪些?2024年最好用的十款文件加密软件

随着数字化转型的深入&#xff0c;企业数据安全成为了一个日益重要的议题。文件作为企业日常运营和知识管理的核心载体&#xff0c;其安全性直接关系到企业的商业机密和知识产权保护。为了应对日益严峻的数据安全挑战&#xff0c;市场上出现了多款功能强大、操作简便的文件加密…

从0开始搭建vue + flask 旅游景点数据分析系统(十):Element-UI消息插件封装

上一期我们使用过了elementui的Message来弹出消息提示框&#xff0c;但是上期的写法每次都要在vue文件中引入Message&#xff0c;并且要写不少重复代码&#xff0c;这一期就以插件方式将message封装到Vue的实例中。 创建plugins/message.js 这边加了判断的作用是&#xff0c;…