#ファイルだけでプレビューできるようにする方法です
#画像プレビューはどうやるの?
CoreMLの出力を画像タイプにすると、ファイルを開いたときにプレビュータブが現れ、プレビューできるようになります。
しかし、画像をドロップしてみると、インディケーターが回り続けてStylized画像が表示されない場合や、
ノイズのような画像が表示されるなど、うまくプレビューできない場合があります。
何が間違っているのでしょうか?
#画像の出力形状の並べ替えや非正規化が必要
例えば、モデルの出力形状が[1,256,256,3]の場合、
CoreMLファイルがプレビューできるRGB画像の形状は[3,256,256]なので、形状を並べ替える必要があります。
spec = mlmodel.get_spec()
builder = ct.models.neural_network.NeuralNetworkBuilder(spec=spec)
builder.spec.description
builder.add_permute(name="permute",dim=[0,3,1,2], input_name={output name in printed description}, output_name="permute_out")
そして、最初の1の次元は必要ないので、削ります。
builder.add_squeeze(name="squeeze", input_name="permute_out", output_name="squeeze_out", axes = None, squeeze_all = True)
これで、出力形状がCoreMLでプレビューできる形になります。
また、モデルの出力が−1〜1の範囲の場合、1〜255の色範囲に非正規化する必要があります。
builder.add_activation(name="activation",non_linearity="LINEAR",input_name="squeeze_out",output_name="image",params=[127.5,127.5])
最後に、追加したアクティベーション層の出力を画像に指定します。
from coremltools.proto import FeatureTypes_pb2 as ft
builder.spec.description.output.pop()
builder.spec.description.output.add()
output = builder.spec.description.output[0]
output.name = "image"
output.type.imageType.colorSpace = ft.ImageFeatureType.ColorSpace.Value('RGB')
output.type.imageType.width = 256
output.type.imageType.height = 256
これで、プレビューできるようになります。
🐣
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。