暂时未有相关云产品技术能力~
暂无个人介绍
iOS16系统引入了实时活动与灵动岛相关的API。实时活动API能够让用户在桌面直接浏览到应用程序所提供的实时性较高的信息,例如比赛的比分信息,外卖的配送进度信息,票务信息等。在支持灵动岛的设备上,实时活动配合灵动岛,更是能带给用户沉浸式的信息获取体验,在某些特定应用场景下非常有用。
人工智能并非是一个新型的词汇,从十九世纪五十年代开始,人们就开始探索为机器赋予类似人的智能能力。限于当时的基础数学理论不够完善,人工智能的发展并不顺利。直到九十年代发展出了基于统计学的数学工具,人工智能才得到飞速的发展。
AIGC即人工智能内容生成,是目前非常火的一个概念。随着各种大模型的问世,通过AI来生成内容的能已经越来越强大。本文将从应用实践方面进行介绍如何在自己的PC电脑上部署一个强大的AI图片生成服务。
本篇文章将是本系列文章的最后一篇。本专题将iOS中有关Machine Learning的相关内容做了整体梳理。下面是专题中的其他文章地址,希望如果你有需要,本专题可以帮助到你。
前面文章中,有介绍如何训练生成定制化需求的 CoreML 模型,以图像分类为例做了演示.
本系列前面的文章详细的介绍了在iOS中与AI能力相关的API的使用,也介绍了如何使用训练好的CoreML模型来实现更强大的AI能力。然而,无论是成熟的API提供的能力,还是各种各样的三方模型,有时候都并不能满足某一领域内的定制化需求。当我们拥有很多的课训练数据,且需要定制化的AI能力时,其实就可以自己训练生成CoreML模型,将此定制化的模型应用到工程中去。
本篇文章将介绍Apple官方推荐的唯一的一个文本处理模型:BERT-SQuAD。此模型用来分析一段文本,并根据提供的问题在文本中寻找答案。需要注意,BERT模型不会生成新的句子,它会从提供的文本中找到最有可能的答案段落或句子。
本篇文章将再介绍三个官方的CoreML模型:PoseNet,DeeplabV3和FCRN-DepthPrediction。
上一篇文章中,我们介绍了几个官方的图片分类的模型,图片分类模型的应用场景在于将图片中最主要的事物进行识别,在已有的词库中找到最可能得事物。而对象识别则要更高级一些。再之前的文章,我们介绍过可以使用官方提供的API来进行矩形识别,文本识别,二维码识别以及人脸识别等,这类识别功能的特点是我们不仅可以将图片中的物体位置和尺寸分析出来,还可以对其进行类别的分类。
对于图片识别分类的模型来说,其输入和输出都一样,输入都为图像参数,输入为两部分,一部分为最佳预测结果,一部分为可能得预测结果及其可信度。
上一篇文章,介绍了使用官方提供的CoreML模型来实现手写数字识别。其实,更多时候我们需要一个更加个性化的模型,对于手写图像来说,每个人的写法可能风格各异,如果可以在用户的使用过程中不断的更新模型,适应更加个性化的场景,就更完美了。幸运的是,CoreML正提供了这样的功能。我们可以创建一个可更新的模型来实现个性化Learning,同样,本文暂无设计模型的训练,我们通过官方的UpdatableDrawingClassifier模型来演示可更新模型的使用。
本系列的前面文章,详细介绍了iOS原生框架中提供的与AI相关的API的使用,使用这些API基本可以满足大多视觉,文字,语音等通用化的AI需求。但是这些API并不是万能的,对于某些定制化较强的需求,这些内置的模型可能并不能满足需求。这时就需要涉及到我们本系列文章的核心了:Core ML。Core ML是iOS种提供的Machine Learning相关框架,配套的还有训练模型的开发者工具。
在语音分析方面,iOS中提供了原生的Speech框架,这个框架可以实时的将语音解析成文本。这个能力非常强大,使用它我们可以实现类似实时翻译的功能。对于非语音的音频,也有一些原生的AI能力可以使用,例如分析语音的类型。SoundAnalysis框架能够识别300多种声音,我们也可以使用自己训练的模型来处理定制化的音频识别需求。
本篇文章将介绍如何使用NaturalLanguage框架来对词句的相似性进行分析。文本相似性的分析在实际开发中应用很多,比如我们可以通过查找与用户输入相似的词来进行内容推荐。
在上一篇文章中,我们介绍了使用NaturalLanguage框架来进行自然语言的拆解,可以将一段文本按照单词,句子或段落的模式进行拆解。并且,在进行拆解时,其可以自动的识别所使用的语言。
本系列的前几篇文章介绍了iOS中有关图像和视频处理的API,视觉处理主要有Vision框架负责,本篇起,将介绍在iOS中Machine Learning领域相关的自然语言处理框架:NaturalLanguage。
人物蒙版图能力是Vision框架在iOS 15中新增的功能,这个功能可以将图片中的人物按照轮廓生成无光蒙版。无光蒙版在实际业务中非常有用,使用此蒙版可以方便的将人物从图片中提取出来,然后和其他的背景图进行合成。
对图片进行热区分析可以帮助我们图片中可能会受关注的区域,也可以获取到图片中需要被关注的事物的区域。
图片相似度分析是Vision框架中提供的高级功能。其本质是计算图片的特征值,通过特征值的比较来计算出图片特征差距,从而可以获取到图片的相似程度。在实际应用中,图片的相似度分析有着广泛的应用。如人脸对比识别,相似物品的搜索和识别等。
轨迹分析是比物体追踪更上层的一种应用。Vision框架中提供了检测视频中多个物体的运动轨迹等能力,在健身,体育类应用中非常有用。
本系列的前面几篇文章中,我们将静态图片分析相关的API做了详尽的介绍。在Vision框架中,还提供了视频中物体追踪的能力。 仔细想来,其实视频的分析和静态图片的分析本质上并无太大的区别,我们可以将视频拆解成图片帧,之后再对图片进行静态分析。将所有图片帧的分析结果反馈到视频上,即实现了对视频的分析能力。 视频中物体运动的跟踪常在一些AR游戏中应用,这些现实增强类的应用常常需要实时追踪显示中的物体。
本系列的前几篇文件,详细了介绍了Vision框架中关于静态图片区域识别的内容。本篇文章,我们将着重介绍静态图片中物体的识别与分类。物体识别和分类也是Machine Learning领域重要的应用。通过大量的图片数据进行训练后,模型可以轻易的分析出图片的属性以及图片中物体的属性。
本系列的前一篇文章介绍了如何使用iOS中自带的API对图片中的矩形区域进行分析。在图像静态分析方面,矩形区域分析是非常基础的部分。API还提供了更多面向应用的分析能力,如文本区域分析,条形码二维码的分析,人脸区域分析,人体分析等。本篇文章主要介绍这些分析API的应用。
本系列文章将完整的介绍iOS中Machine Learning相关技术的应用。本篇文章开始,我们将先介绍一些与Machine Learning相关的API的应用。使用这些API可以快速方便的实现很多如图像识别,分析等复杂功能,且不会增加应用安装包的体积。
在iOS应用中,要推广其他App有两种途径,一种是直接跳转到AppStore软件的对应App商品页,还有一种是在当前应用内内嵌一个App商品页。相比第一种方式,第二种方式的体验更好,并且不会打断用户对当前应用的使用。
最近,随着Chat-GPT的发布,人工智能相关的资讯和话题再次火热了起来。有了人工智能的加持,对人们的生活以及各行各业的工作都将带来效率的极大提升。目前,各种大模型的发布层出不穷,这些大模型虽然功能非常强大(如文本理解,绘图等),但对于个人来说,要跑起这样一个模型来对外提供服务还是比较困难的,其需要有非常强大的算力支持。
同层组件的目标是将原生组件渲染在与其他Web组件同一层级中。在iOS中,我们使用WKWebView来创建Web视图,WKWebView在进行解析渲染时,会将Web组件渲染到WKCompositingView上,这个View是一个原生的UIView子类,通常WKWebView内核会将多个组件共同渲染到同一个WKCompositingView上,但是如果某个HTML标签的style设置了overflow: scroll属性,并且内容超出容器的大小,WKWebView就会为其单独的创建一个WKChildScrollView,因此如果我们可以找到这个View,并和对应的Web组件一一关联起来,就可以将
在最新Swift版本中(Xcode14,Swift5.7),如果协议中有使用泛型,则如果要将此协议作为参数类型,必须使用any关键字进行修饰。其实在Swift5.1中也引入过一个some关键字,any和some都适用于协议,这两个关键字从语义上和写法上对泛型的使用进行了优化。
Mach-O的全称为Mach Object,是OS X与iOS上的一种可执行文件格式。Mach本身指一种操作系统的微内核标准,被用于OS X与iOS系统的内核中。相信对于移动端的iOS开发者来说,对Mach-O文件一定不陌生,我们编译打包的iOS IPA文件,内部其实就有一个可执行的Mach-O文件,我们开发的framework和.a等动态库静态库中,也会包含Mach-O文件,本篇文章,我们就来详细看看Mach-O中究竟放的是什么,Mach-O的结构是怎样的。
iOS可以通过添加Share Extension来扩展系统的分享组件,能够支持将网页,图片,音乐或任何接入了系统分享组件功能的应用分享到我们自己的App内。
面向对象,是程序开发者再熟悉不过的一个概念。一说到它,你首先会想到的是什么?类?继承?方法与属性?不同技术栈的开发者或许有不同的第一反应。面向对象本身只是一种编程方式,支持面向对象的语言很多,但其实现原理却并不都一样。大多数语言的面向对象特性都是基于“类”来实现的,例如C++,Objective-C,Java,Python等。在这些语言中,类是面向对象的基础,面向对象的继承,多态,封装也是通过类来实现的。
作为客户端开发,很多时候我们过多的关注于功能的测试,而忽略标准的单元测试。其实,单元测试是保障项目稳定性的最有效且成本最低的测试方式。越偏向底层服务的代码,越需要使用单元测试来对可靠性进行保障。一旦单元测试覆盖完成,则之后再进行代码优化和迭代的时候则会有引入新问题的几率会大为减小。
Objective-C是一种动态性很强的语言,所谓动态能力,也可以理解为运行时能力。对于Objective-C开发者来说,动态性所带来的编程便利无处不在。例如通过Category类别来扩展已有类的功能。可以使已有类拥有新的方法和属性。
Clang的全称是C Language Family Frontend for LLVM,即基于LLVM的C系列语言的前端编译器。iOS应用的前端编译,即是采用Clang完成的。本篇文章,我们主要介绍Clang内置的一个简单的代码覆盖率检测功能,对于iOS开发来说,此功能更多用于Objective-C的方法插桩,为二进制重排提供支持,优化应用启动速度。但代码覆盖率检测功能并不仅仅只能应用与二进制重排,其本质是对于函数级、基本块级或代码边缘级插入回调,我们可以基于这一原理更灵活的实现所需要的功能。
本篇文章的核心是介绍一款强大的任务流工具Gulp,之所以题目叫做“前端自动化构建之Gulp”,是因为Gulp本身是使用JS编写的运行在Node环境的一个npm包,并且大部分开发者也都使用它来作为前端项目的自动化构建工具。不过,从本质上说,Gulp并非只能做前端自动化构建,后端构建发布自动化,脚本工具集自动化,测试流程自动化等都可以使用Gulp。所以,无论你是哪个技术栈的开发者,学习使用Gulp都会对你大有裨益。
在IP协议这一层,是只关注IP地址的,但是再向下,到封装成数据链路层的数据帧时,已经被转换成了源MAC地址和目的MAC地址。你可能会有疑惑,按照我们前面的理解,通过IP地址已经可以唯一的定位到要进行网络通信的两端,为何要多此一举的又使用MAC地址呢?这样做究竟是什么目的又有什么必要性呢?本篇文章就来帮你解惑。
本系列博客到此,在理解网络这一专题中,我们已经走过了不短的路程。你或许已经发现了,由于网络分层模型的存在,每一层都有明确的任务和目的,使得每一层的工作都不太复杂,上层也不需关心下层的实现方式,整个网络结构有了更强的灵活性与扩展性。在上一篇中,我们介绍了TCP协议,这种可靠的传输协议保证了将应用层的数据准确无误的传输到目的端。从网络模型上看,TCP属性传输层的协议,传输层的TCP协议数据最终会被组成成IP数据报,开始进入真正的数据发送。本篇文章,我们将进入网络世界最核心的部分:网络层。对IP协议进行介绍。
本系列文章的主题是自上而下的理解网络,这里的之上而下,只要指的是基于HTTP的网络服务。我们只要从上之下的将这一过程理解透彻,对于其他的应用来说,只是协议不同,原理是相似的。通过本系列前面几篇博客的介绍,我们了解了在浏览器中输入一个域名或App通过一个域名访问后端服务接口时,域名会转换成IP地址,其实只有IP地址还不够,理论上还需要一个端口号用来确认服务主机上对应的应用程序。只是在实际的应用中,HTTP协议默认的端口号为80,HTTPS协议默认的端口号为443。
无影云桌面是阿里云提供的一款云电脑产品,其还有一个名字:弹性云桌面。致力于为用户提供易用,安全,高效的云上桌面服务。只要在有网络和显示屏的地方,使用无影云桌面产品可以随时随地的实现协同办公,影音娱乐等需求。
DHT11是一款强大的复合传感器,支持环境温度和湿度的测量。其本身比较简单,但是由于其采用串行时序的方式进行数据读写,非常适合我们练习时序编程。
本系列的前一篇博文中,我们介绍了一个很常用的应用层协议HTTP,在日常生活工作中,HTTP协议的应用可谓无处不在,我们浏览网页,我们使用手机App都离不开HTTP。通过前面的介绍,我们也理解了HTTP本质上只是客户端和服务端约定好的一套通信规则,使得客户端和服务端能够相互理解的进行交流。在互联网普及的前期阶段,网页主要用来展示公开的静态内容,HTTP协议并没有明显的缺陷。随着互联网的不断发展,互联网应用越来越个性化也原来越复杂,某些安全性问题就变得非常重要。HTTP向HTTPS演化就成了互联网应用的必经之路。
在iOS项目开发中,或多或少的我们都会遇到一些Crash的情况,大部分Crash抛出的异常都是NSException层的,这类异常是OC层代码问题造成的,通常堆栈信息和异常的提示信息都非常明确,可以直接定位到出问题的代码,从而使这类问题的解决并不困难。可以引起Crash的异常除了NSException外,还有Unix层和Mach层的异常。
不知你是否有发现,我们在使用计算机时,除了第一次启动需要同步下时间外,即是没有联网,断电重启后,计算机的时间依然是准确的。这是因为在计算机主机内部有一个自带电源的硬件时钟模块,在同步时间时将当前的时间写入模块后,此硬件时钟模块会自动的维护准确的当前时间。树莓派内部本身没有硬件时钟模块,但是在某些非联网的需求场景中,我们需要准确的记录当前的日期时间,比如之前我们介绍过许多有关气象相关的传感器,在记录气象数据时,也需要记录当时的准确时间。
在iOS项目开发中,静态库和动态库我们时刻都在使用,离开了库的支持,我们将会举步维艰。比如,你要画界面,总离不开UIKit这个库吧,你要使用的各种基础数据结构,如NSString,NSArray等,也离不开Foundation这个基础库。除了官方的库外,开发中我们也会从Github等开源社区下载第三方的开源库进行使用。一般我们使用的第三方库或自己开发的库都采用静态库的方式使用,而系统提供的库大多是动态库,方便多进程共享。虽然我们天天在用库,但你对静态库和动态库真的了解么?静态库和动态库的结构是怎样的?静态库和动态库有什么区别?它们又是怎么应用的?本节博客,我们就来聊一聊这些问题。
很多公寓和写字楼中都有完善的防火装置,你想知道这些设备是如何对是否产生了火情进行判断的么?当有物体燃烧时,会产生火焰和烟雾,如果我们可以通过传感器对火焰和烟雾进行,实际上就可以做到检测是否有火情发生。
噪声污染是非常令人讨厌的一件事,长时间暴露在噪声中,不仅会使人心烦意乱,甚至还会影响我们的身心健康。本节,借助声音传感器,我们可以开发一个小型的噪声监测工具,当环境噪音过大时,发出提醒。
红外遥控是生活中非常常见的电子器具,电视机,空调,音响等电器都可以通过遥控器进行控制。本篇博客,我们尝试来通过红外发生器和红外信号接受器来进行红外控制实验,在树莓派上通过红外遥控的按键来处理LED灯的控制。
本系列博客的宗旨是【自上而下的理解网络】,因此我们还是要一步一步的从前向后说,如果你已经阅读过了DNS那篇博客,那么现在,你访问网站使用的域名已经转换成了IP地址,有了IP地址,就相当与有了对方的地址(我们姑且先这么理解),从OSI网络模型的设计思路上说,上层无需关注下层的实现,目前我们先不关注拿到IP地址后是如何找到对应的主机的,暂且认为目前我们已经可以找到服务器并与之通信了。
一起玩转树莓派(18)——MPU6050螺旋仪加速度传感器模块应用
一起玩转树莓派(18)——MPU6050螺旋仪加速度传感器模块应用