ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Create MLの物体検出モデルの改善
Create MLで物体検出のカスタムCore MLモデルをトレーニングする際、Appに画像を理解させることができます。 転移学習による、少ない学習データでより小さなモデルを構築する方法を理解しましょう。更にCreate MLの進化したパラメータによって、インプットする画像のトレーニングイテレーション、バッチサイズ、グリッドの寸法をコントロールでき、モデルの精度に関して十分な管理が可能になります。 物体検出の入門編については、WWDC19の"Training Object Detection Models in Create ML"をご覧になってください。
リソース
関連ビデオ
WWDC19
-
ダウンロード
どうも 私はシュレヤ・ジェイン Create MLチームのエンジニアです 今日は物体検出テンプレートの改善点と― よりよいモデル作りへの活用法を紹介します Create MLの物体検出になじみのない方は― 下記のWWDC 2019の動画をご覧ください 物体検出は Appエンゲージメント体験を向上させます ゴミ整理を手伝うAppを作ったり 飼い猫に仮想メガネをかけるApp 検出した材料から レシピを提案するAppを作ることもできます このAppのモデル構築は― Create MLの新機能を活用する絶好の機会です
物体検出は大幅に改善されました 少ない訓練データで 正確で より小さいモデルを訓練できますし 構成オプションが増え 訓練をカスタマイズしやすくなります
さっそく始めましょう
まず最初に― Create ML AppをSpotlightから開きます まず目に入るのはテンプレート選択です 物体検出を選択します ダイアログボックスが出るので― Create MLプロジェクトの詳細を入力します プロジェクト名は“FindMyRecipe” 材料を検出できるという説明を加えます 作成する前に プロジェクトのロケーションを変えられます 次は設定タブです ここで訓練前に データと構成オプションを調整できます データをロードする前に― データをどう用意するか説明しましょう
物体検出データはフォルダに保管します その中には 訓練画像とJSONファイルの注釈を置きます annotation.jsonのコンテンツが何なのかは― この画像の例で分かります この画像には パンとトマトの2つのオブジェクトがあります 各オブジェクト注釈は― ラベルと 画像内のロケーションから成ります ロケーションは画像内の左上端が基準です 訓練データ画像のオブジェクトは― このように注釈可能です
これらの注釈は この形式で1つのJSONファイルにまとめられます
この情報を使って訓練データを用意します
データを用意したら― Create ML Appにロードできます
ビューボタンを押すと データセットのクラス分布が表示されます ご覧のとおり トマト チーズ パンとバジルのクラスがあります 設定タブに戻ると― 検証データがオプションで入手できます モデルが未知のデータでうまく機能するか 確認できます 今回は検証データを自動に設定 Create MLが データセットの一部を使用できるようにします
モデルの訓練をより制御しやすくする新しい 訓練パラメータもあります アルゴリズム イテレーション バッチサイズ そしてグリッドサイズです 訓練にはアルゴリズムが2つあります
1つはFull network Full networkアルゴリズムを詳しく見ましょう
Full networkは 2019年にCreate MLに導入されました それ以来 デフォルトの訓練アルゴリズムです
このアルゴリズムは YOLOv2アーキテクチャに基づいています
このネットワークのパラメータは 皆さんのデータを使って訓練されます
生成されたCore MLモデルには 学習したパラメータがすべて含まれます
このCore MLモデルは 16ビット精度で 重みを保存できるよう量子化されています その結果 モデルサイズは以前の半分に 以前は約65メガバイトだったモデルが― 33メガバイトになります
訓練データが大量にある場合― このアルゴリズムを推奨します 例えばクラス当たり 200バウンディングボックス以上の場合などです 生成されるモデルは後方互換性があり― iOS 12まで対応しています より少ない訓練データで 精度の高いモデルを作れるようにしたかったので 我々は今回 皆さんに Transfer Learningアルゴリズムを紹介します
Transfer Learningは OSにある既存の機械学習モデルを活用します 例えばPhotos Appには 検索とMemoriesを動かすモデルが含まれます
Photosが使う訓練済みバックボーンの1つは Object printです これは大量の多様なデータから訓練されたものです Transfer Learningでは― これを利用し必要なデータを減らすことができます
Transfer Learningアルゴリズムでは Object printと共に― Head networkを利用します Head networkのみがデータで訓練されるため― 訓練が必要なパラメータの数が減ります
その結果 Core MLモデルには Head networkのパラメータのみが含まれるため― Full networkの5分の1のサイズになります 2019では65メガバイトだったモデルが― 量子化で33メガバイトになり Transfer learningアルゴリズムによって 7メガバイトに
データが限られ 軽いモデルにしたい時は― Transfer Learningが有効です クラス当たり80訓練例という少なさでも十分です このモデルで OSが出荷するobject printを活用するには― iOS 14が必要です
アルゴリズムは新しい構成の1つにすぎません イテレーションや バッチサイズなどのパラメータも加わりました
イテレーションは モデルのパラメータが更新される回数です デフォルト値は データセットのサイズにより選択されます 皆さんの使用事例では― モデルの収束前なら イテレーションを増やすことができます モデルが順調なら減らすこともできます
バッチサイズは1回のイテレーションで使われた 訓練例の数を言います デフォルト値は ハードウェアの制約に基づいて選択されます バッチサイズは高いほうがいいですが デフォルト値を使うか― パフォーマンスの制約に合わせて減らすといいでしょう
最後にFull networkではグリッドサイズを カスタマイズできます グリッドサイズを理解するには― Full networkの推測の仕組みを知る必要があります 詳しく見てみましょう
このインプット画像を― 訓練されたFull networkモデルに渡します その結果 推測されたオブジェクトと バウンディングボックスが得られます
オブジェクトを画像内で見つけるため― モデルはグリッドと いくつかのアンカーボックスを活用します そのグリッドは インプット画像のアスペクト比と― モデルがオブジェクトを探す場所を定義します 例として5×5のグリッドで― モデルがどうなるか見てみましょう 画像はグリッドに合わせサイズ変更されます この場合 正方形になり― 定義された数のセルに分割されます
ネットワークは 各グリッドセルにつき1つ推測を生成します
各推測には以下の情報が含まれます セル内のオブジェクトの有無と― オブジェクトとバウンディングボックスのクラスです YOLOはセルと1対1である限り― 複数オブジェクトがあっても機能します ただこの画像の場合― 中心のバナナと犬は同じセルにあります セル当たり1クラスしか推測できないため― バナナか犬 どちらかが選択されます
そこでバナナと犬の両方を推測するため― アンカーボックスが定義されます アンカーボックスには既定のアスペクト比があり グリッドセル内の複数オブジェクトを検出できます
Create MLはデフォルトで13×13のグリッドを使用します 合計で169セルです 異なるアスペクト比の15個のアンカーボックスが― 各セルで評価されます デフォルトのモデルは― 1画像当たり 合計2535の推測を行うことになります
このサイコロの画像を― 3×3のグリッドで 物体検出するとどうなるか見てみましょう
1つのセルに 複数の似たアスペクト比のサイコロが存在するため― その中の1つしか検出されません 9×9のグリッドサイズ グリッドが大きくなると検出されるサイコロが増えます
ただし画像当たりの推測の数が増えます グリッドサイズを変更する時は 計算コストを考慮することが重要です
こちらの1500×800というような 正方形でないインプット画像の場合 8×8のグリッドを使えば情報が失われ― オブジェクトの形がゆがんでしまいます モデルが訓練中に よりきめ細かいパターンをとらえにくくなり― 推測の妨げになります
15×8のグリッドサイズなら― 画像の元のアスペクト比が維持されます その結果 モデルがより多くの情報を学習し― 結果もよくなります
ではFindMyRecipeプロジェクトのモデルの 訓練に戻りましょう Transfer Learningアルゴリズムを選択し― イテレーションを1000 バッチサイズを自動に設定します
再生ボタンを押すとモデルが訓練を始めます 訓練タブに バッチを準備していることが示されます このステップで標準的な画像拡張が行われ― 堅牢さと一般化可能性を向上させます グラフが現れ 各イテレーションごとの損失値が示されます
訓練中 スナップショットボタンを押すと― その時のモデルが得られます スナップショットは訓練の進捗確認に役立ちます このモデルは 画像の推測をプレビューするのに使えます
画像ごとに― モデル推測がプレビュータブに示されます バウンディングボックスをクリックすると― 各クラスの確信度が下に示されます スナップショットは App内で実験するのにも使えます
訓練が完了すると― 訓練と精度検証データの評価尺度が― 評価タブで見られます これらの数字は何を表すか?
物体検出モデルの評価には2要素が必要です ラベルの正しさだけでなく― ロケーションの正しさも必要です バウンディングボックスを 注釈ボックスと完全に一致させるのは困難です 推測と注釈ボックスが― どれだけ近いかを示す数字が必要になります
その評価指標がIoUと呼ばれるものです 0%は重なりがないことを示し― 100%は完全に重なっていることを示します
推測が正しいと判断されるには― 正しいクラスラベルが必要です そしてIoU値が 事前に定義された閾値以上である必要があります
IoU値が閾値よりも低い場合 またはクラスが正しくない場合 推測全体が正しくありません この情報は平均適合率 あるいはmAPという指標を計算するのに使われます
評価タブに戻り これらの数字を見てみましょう
これらの数字は クラス当たりの平均精度を表しています 2つの閾値で計算されており― 1つは50%で固定 もう1つは複数の閾値によって異なります このデータセットの全体のmAPは― 右上端に示されています mAPが高いほど正しい推測となります
このモデルのmAPは良好のようです いくつかの例でモデルをプレビューし― モデルの推測が正しいか確認します
問題なさそうです このモデルをAppにドロップします
今 ご覧に入れた新機能を使えば― Create MLを使って 物体検出モデルを簡単に作ることができます Create MLは訓練を制御しやすくし モデルのカスタマイズに役立ちます より少ないデータとより小さいアウトプットサイズで 正確なモデルを作れます これらの新機能を使って 皆さんがすばらしいアイデアを実現するのを― 楽しみにしています
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。