Upgrade to Pro — share decks privately, control downloads, hide ads and more …

機械学習のブルーオーシャン Core ML by 堤 修一 #iOSDC Japan 2020

shu223
September 20, 2020

機械学習のブルーオーシャン Core ML by 堤 修一 #iOSDC Japan 2020

iOSDC Japan 2020 9/20 13:20〜 Track Eでのトークです。

------------------------------------------------------------

■概要

今や技術面で何か画期的なことが達成される場合、十中八九、機械学習/ディープラーニングが利用されています。大学で専門的に機械学習を学ぶ人も多く、技術書でもオンライン講座でも機械学習系は非常に人気です。今や猫も杓子も機械学習を学び一見レッドオーシャンとなっている機械学習分野ですが、我々iOSエンジニアには実は「機械学習のブルーオーシャン」が残されています。それがCore MLです。

『Core ML?触ってみたことあるけど、簡単だし、今更トークで聞くことなくない?』

と思われた方もいるかもしれません。しかし、多くの人が触ったことがあるのは、CoreML.framework止まりです。

CoreML.frameworkは既存のモデルをiOSで扱う際に利用するフレームワークに過ぎず、実はそれはCore MLのポテンシャル全体からみれば氷山の一角にすぎません。たとえば近年のWWDCでは毎年多くのML関連の新機能が発表されますが、CoreML.frameworkのレイヤーだけ知っていてもその機能の多くは活かせず、そもそも具体的に何がどこまでできるということすら理解は難しいと思われます。

Core MLはCore MLのモデルフォーマットと、そのモデル作成を担うCore ML Tools(coremltools)を理解してこそその真価を発揮できます。そして、iOSで最先端の機械学習モデルを効率的に動作させるには、このCore MLの全体を理解しつつ、iOSアプリ開発についても熟知し、その上で機械学習にも理解がある必要があるので、機械学習の専門家でも簡単には参入できないブルーオーシャンとなるわけです。

本トークではiOS×ML分野で仕事をするために必要な技術領域全体について解説します。

------------------------------------------------------------

■参考書籍

・「Core ML Tools実践入門 - iOS × DEEP LEARNING」
https://booth.pm/ja/items/1723495

・「Metal入門」
https://booth.pm/ja/items/826318

------------------------------------------------------------

■その他関連リンク

・本トークのプロポーザル
https://fortee.jp/iosdc-japan-2020/proposal/2d8f5458-140e-4c68-95f1-30964d605013

・iOSDC 2020タイムテーブル
https://fortee.jp/iosdc-japan-2020/timetable

・堤のTwitter
https://twitter.com/shu223

shu223

September 20, 2020
Tweet

More Decks by shu223

Other Decks in Programming

Transcript

  1. !

  2. iOSσόΠεͷੑೳΛ࠷΋׆͔ͤΔͷ ͸Core ML • PyTorch MobileʢLibTorchʣ -> CPU • Tensor

    Flow for iOS -> CPU • Tensor Flow Lite -> CPU, GPU • Core ML -> CPU, GPU, Neural Engine
  3. ํ਑ɿ Core MLԽ͢Δ • TensorFlow for iOSʢC++Ͱॻ͔Εͨެࣜϥούʔʣ = CPU ॲཧ

    • → Core MLԽ͢Ε͹GPU + Neural EngineͰॲཧ͞ΕΔΑ͏ ʹͳΔ
  4. Core ML Tools • ͞·͟·ͳϞσϧΛCore MLϞσϧ ʢ.mlmodelʣʹม׵͢Δπʔϧ • Φʔϓϯιʔε •

    https://github.com/apple/ coremltools • Pythonύοέʔδͱͯ͠͸ coremltools
  5. ม׵ͯ͠ΈΔ import tfcoreml mlmodel = tfcoreml.convert( tf_model_path = tf_model_path, #

    .pbϞσϧͷύε mlmodel_path = mlmodel_path, # .mlmodelग़ྗύε input_name_shape_dict = in_dict, # ೖྗϊʔυ໊ͱshape output_feature_names = out_names, # ग़ྗϊʔυ໊ ...)
  6. strip_unused_lib ͰαϒάϥϑΛ੾Γग़͢ from tensorflow.python.tools import strip_unused_lib in_names = ['Preprocessor/sub'] #

    ೖྗϊʔυ໊ͷ഑ྻ out_names = ['Squeeze', 'concat_1'] # ग़ྗϊʔυ໊ͷ഑ྻ gdef = strip_unused_lib.strip_unused( input_graph_def = original_gdef, input_node_names = in_names, output_node_names = out_names, placeholder_type_enum = dtypes.float32.as_datatype_enum)
  7. Core MLϞσϧ΁ม׵͢Δ import tfcoreml input_shapes = {"Preprocessor/sub:0":[1,300,300,3]} output_tensor_names = ['Squeeze:0',

    'concat_1:0'] mlmodel = tfcoreml.convert( tf_model_path = tf_model_path, mlmodel_path = ml_model_path, input_name_shape_dict = in_shapes, output_feature_names = out_names, image_input_names = image_in_names)
  8. ੾ΓऔͬͨPreprocessor෦෼Λม׵ΦϓγϣϯͰิర mlmodel = tfcoreml.convert( tf_model_path = tf_model_path, mlmodel_path = ml_model_path,

    input_name_shape_dict = in_shapes, output_feature_names = out_names, image_input_names = image_in_names, red_bias = -1.0, green_bias = -1.0, blue_bias = -1.0, image_scale = 2./255)
  9. ࣮ྫ1ͷ࢓ࣄͰඞཁͳ஌ࣝ • iOSσόΠε, iOS SDK, Swift • Core ML Tools

    • TF, Python, ػցֶश͸গ͠ • → iOSΤϯδχΞ΋ઓ͑Δʂ
  10. Core ML Tools iOS × Deep Learning TensorFlow, Kerasͱ coremltools

    ʹΑΔΧελϜϞσϧߏங ࣮ફೖ໳ Core ML Toolsʹ͍ͭͯ ΋ͬͱֶͿ • ެࣜϦϙδτϦͷαϯϓϧ • ެࣜυΩϡϝϯτ • ॻ੶ʮCore ML Tools࣮ફೖ໳ʯ • ٯҾ͖Ϩγϐ͖ͭ