而今的手持装备充实雄壮,能够在内地运转神经网络,而不需求云效劳器的延续,这在您出门时是一个很大的便捷。不过,在您的手机或平板电脑上安排和运转一个自界说的神经网络并不浅显,况且这个经过取决于机械的操纵系统。在这篇文章中,我将专一于iOS装备,并引导您完结一共须要的环节,操纵Wolfram谈话磨练一个自界说的图象分类器神经网络模子,经过ONNX(12.2版中的新机能)导出,将其更改为CoreML(苹果的机械研习框架,用于iOS运用程序),末了将其安排到您的iPhone或iPad。
在咱们起头以前,有一个要害的告诫:在没有征询老手的境况下,切勿将此分类器用于烹调。有毒的蘑菇或许是致命的!
创建磨练和测试数据在北半球,蘑菇时令通常在夏令,但假若有一个蘑菇图象分类器在您的手机上内地运转,以便在徒步游览时辨认蘑菇,那就太好了。为了创建如此一个图象分类器,咱们将需求一个卓越的磨练集,个中包含每个蘑菇物种的几十张图象。做为一个例子,我将从赢得一个蘑菇的物种实体起头,即毒蝇伞(Amanitamuscaria),它乃至有自身的绘文字:咱们还能够赢得一个缩略图,以更好地相识咱们正在评论的体例:值得荣幸的是,由人民科学家构成的iNaturalist社区曾经纪录了数以百计的各式蘑菇物种的实地察看。操纵Wolfram函数库中的INaturalistSearch函数,咱们能够找到每个物种的图象。INaturalistSearch函数经过iNaturalist的API检索察看数据。咱们首先需求操纵ResourceFunction猎取INaturalistSearch函数:接下来,咱们将指定物种。而后,咱们将请求操纵"HasImage"选项赢得附有相片的察看成绩,并操纵"QualityGrade"选项和"Research"属性赢得曾经被别人考证的察看成绩:譬喻,第一个察看点的数据下列:咱们能够操纵"ImageURL"属性轻便导入图片:很好!做为一个起始,我有兴致赢得在我的地域(加泰罗尼亚)能够找到的最罕见的有毒和可食用的蘑菇品种的图片。让咱们创建几个自界说函数来猎取imageURLs;导入偏重定名图片;末了,将它们导出到一个文献夹中供往后操纵:咱们能够用另一个有毒物种——灭亡帽(Amanitaphalloides)来测试这个机能:咱们能够从内地文献夹中导入一些灭亡帽图象,并搜检它们看起来能否平常:此刻咱们能够对其余的蘑菇品种做一样的做事:为了创建磨练集和测试集,咱们需求指定classLabels:接下来咱们需求导入图片并创建实例,下列所示:咱们总公有张图片/例子:17个蘑菇品种中的每一个都有50个。让咱们察看一下第一个例子:看起来不错!末了,咱们只要要创建随机的磨练和测试集。这边我理当重视到,trainSet的一部份本质大将经过NetTrain选项ValidationSet做为考证集操纵。磨练神经网络从一个预磨练的模子起头,咱们能够操纵netsurgery函数来创建咱们自身的自界说蘑菇图象分类网络。首先,咱们需求从WolframNeuralNetRepository赢得一个预磨练的模子。这边咱们将操纵WolframImageIdentifyNetV1:
咱们能够搜检网络的巨细对于今朝的智老手机来讲能否公道地小。做为一项法则,它不该该超出MB:
由于一兆字节有一百万个字节,咱们的巨细约为60兆字节,能够铲除这个束缚。
咱们用NetTake来猎取网络的卷积部份:
而后咱们操纵NetJoin增加一个新的分类层,并附加一个新的NetDecoder:
末了,咱们对网络施行培训,使预修的权重坚持静止状况:
咱们能够经过衡量确切率和绘制测试集的混淆矩阵图(操纵NetMeasurements或ClassifierMeasurements)来搜检形成的网络机能:
快捷阅读一下分类最差的例子,咱们能够看到视线和前提都不完美的蘑菇。譬喻,一个被树叶遮盖,另一个仿佛处于分解的高等阶段。
咱们能够用一张来自iNaturalist用户察看的相片来测试分类器:
保管咱们磨练好的模子是一个很好的做法,如此假若咱们从新启动会话,咱们就不需求从新磨练网络了:
经过ONNX导走神经网络做为一此中央环节,咱们需求将咱们磨练好的模子导出为ONNX文献。ONNX是一个盛开的调换格式文献框架,是为了示意机械研习模子而创建的,并令人为智能开辟者能够操纵各式框架的模子。稍后,这将同意咱们将咱们的自界说模子更改为CoreML格式(.mlmodel)。
为了从咱们磨练的模子中赢得ONNX模子,咱们只要要操纵Export:
将神经网络更改为CoreML在本节中,咱们将遍及操纵苹果公司免费供给的一个名为coremltools的Python软件包,以便将外部神经网络模子更改为CoreML。CoreML是苹果公司的框架,用于将机械研习模子集成到iOS运用程序中。
为了设置您的系统来评价外部代码,我倡导您遵照这个做事过程。
一旦Python被设置为ExternalEvaluate,咱们需求将它挂号为一个外部评价器,并启动一个外部会话。
为了将ONNX模子更改为CoreML,咱们需求操纵末端安置两个额外的软件包:
1.coremltools软件包:
2.onnx软件包:
中央ML模子(.mlmodel)的做事方法与Wolfram谈话模子近似。它们也包含一个模子的编码器妥协码器。因而,在将ONNX模子更改为CoreML时,咱们需求指定图象编码器(预管教参数)妥协码器(类标签)。
假若咱们点击原始Wolfram谈话模子的输入端口,咱们将看到以底下板:
在更改经过中,咱们将需求指定输入表率为图象,并包含每个颜色通道的均匀图象值做为偏置。其余,咱们将需求指定一个图象从新缩放系数,由于原始模子的像素值范畴是0到1,而CoreML的值范畴是0到。
coremltools同意咱们操纵一个文本文献来指定模子的类标签,该文献在新的一行中包含每个类标签。操纵Export和StringRiffle导出如此一个文本文献是很直接的:
底下的代码由三部份构成:1)导入coremltools软件包并指定ONNX模子的路线;(2)更改模子的代码;(3)保管生成的CoreML模子的代码:
咱们能够直接操纵coremltools、NumPy和PIL软件包搜检更改后的模子能否平常做事:
将成绩与原始的Wolfram谈话网模子相对照,咱们能够看到顶部几率险些雷同,不同在10–2级:
将神经网络安排到IOS上末了,咱们只要要将咱们的CoreML模子集成到一个iOS运用程序中,并将其安置在咱们的iPhone上。为此,我需求挂号为苹果开辟者,下载并安置Xcode测试版。(重视,相识Swift编程谈话不是须要的)。
首先,咱们需求下载苹果公司供给的Xcode项目,用Vision和CoreML对图象施行分类,做为一个教程。当我用Xcodebeta翻开名为"Vision+MLExample.xcodeproj"的项目时,我看到下列窗口:
一旦我在Xcode项目中投放/上传了模子,我将看到下列的模子窗口。预览部份同意咱们直接操纵Xcode来测试该模子:
末了,咱们需求在ImageClassificationViewControllerSwift文献顶用MobilenetCoreML分类器模子更换咱们的MushroomsWolframNet模子,而后按下左上方的Build而后运转按钮:
在安排模子以前,咱们需求签订该运用程序的开辟团队:
咱们胜利了!此刻咱们只要要到左近的丛林去徒步游览,盼望能找到一些蘑菇。
底下是我近来一次郊游的几个例子,都是切确识其它:
自身着手试试操纵Wolfram谈话创建您自身的自界说神经网络模子,并经过ONNX将其导出。在挪移装备上安排和运转您的模子,并在评论中公布您的运用,或在WolframCommunity上分享。咱们也招待不才面的评论中提议对于其余机能的题目或倡导。
其余资本WolframUclass:ExploringtheNeuralNetFrameworkfromBuildingtoTraining(
转载请注明:http://www.0431gb208.com/sjszlfa/941.html