CoreML Modelのファイル(.mlmodelc)から入力パラメータおよび出力データの情報を取得するAppleScriptです。
テストに使ったのはMS Classifier(299×299ピクセルの画像を入力)で、入力画像をGundamのモビルスーツとして扱い、連邦軍機体かジオン軍機体かを判定するCoreML Modelです。
機械学習モデルのパラメータ/モデル解析を行うツール「Netron」にはWebアプリ版もあるので、JavaScriptやPythonで解析できてしまうのかもしれません(Netronのソースを読んでみたら、そういう感じのファイルだけ入っていて驚かされました)。
AppleScript名:CoreML Modelからパラメータを取得する v2.scptd |
— – Created by: Takaaki Naganoya – Created on: 2020/12/28 — – Copyright © 2020 Piyomaru Software, All Rights Reserved — use AppleScript version "2.7" — 10.13 or later use framework "Foundation" use framework "CoreML" use scripting additions set aVer to system version of (system info) –Get OS Version considering numeric strings if aVer < "10.15" then –macOS 10.14。10.13は未検証 set mlFile to POSIX path of (choose folder) –mlmodelcを指定。macOS 10.14のFinder上ではフォルダに見えてしまう else –macOS 10.15 or later set mlFile to POSIX path of (choose file of type {"com.apple.coreml.mlmodelc"}) –mlmodelcを指定。macOS 10.15以降のFinder上ではファイルに見える end if end considering set mlURL to current application’s |NSURL|’s fileURLWithPath:mlFile set aModel to current application’s MLModel’s modelWithContentsOfURL:mlURL |error|:(missing value) if aModel = missing value then return –mlmodelファイルだとエラーになる set aMLDesc to aModel’s modelDescription set inputDesc to aMLDesc’s inputDescriptionsByName() –Input Information set kList to inputDesc’s allKeys() as list –> {"image"} set vList to inputDesc’s allValues() as list –> {(MLFeatureDescription) image : Image (Color, 299 x 299)} –Output Information set outputDeck to aMLDesc’s outputDescriptionsByName() set k2List to outputDeck’s allKeys() as list –> {"classLabel", "classLabelProbs"} set v2List to outputDeck’s allValues() as list –> {(MLFeatureDescription) classLabel : String, (MLFeatureDescription) classLabelProbs : Dictionary (String → Double)} set vResList to {} repeat with v in v2List set the end of vResList to v’s |name|() as string end repeat return vResList –> {"classLabel", "classLabelProbs"} |