在这里插入图片描述

概述

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

在这里插入图片描述

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

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

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


本文对应的视频课在此,欢迎小伙伴们恣意观赏:

iOS 18 macOS 15 Vision 为任意图片打分


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 的全新和增强功能,请小伙伴们猛戳如下链接观赏官方视频:


现在,我们对 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)其新增的为任意图片“观赏度”恣意评分的功能,这是通过本地机器学习来实现的。

感谢观赏,再会啦 😎

GitHub 加速计划 / vi / vision
15.85 K
6.89 K
下载
pytorch/vision: 一个基于 PyTorch 的计算机视觉库,提供了各种计算机视觉算法和工具,适合用于实现计算机视觉应用程序。
最近提交(Master分支:3 个月前 )
518ee93d 7 天前
7d077f13 9 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐