ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Understanding Images in Vision Framework
Learn all about the many advances in the Vision Framework including effortless image classification, image saliency, determining image similarity, and improvements in facial feature detection, and face capture quality scoring. This packed session will show you how easy it is to bring powerful computer vision techniques to your apps.
リソース
- Analyzing Image Similarity with Feature Print
- Classifying images for categorization and search
- Detecting Objects in Still Images
- Highlighting Areas of Interest in an Image Using Saliency
- Image Classification with Vision and CoreML
- Recognizing Objects in Live Capture
- Selecting a selfie based on capture quality
- Tracking Multiple Objects or Rectangles in Video
- Vision
- プレゼンテーションスライド(PDF)
関連ビデオ
WWDC22
WWDC21
WWDC20
WWDC19
-
ダウンロード
(音楽)
(拍手) おはようございます 私はブリトニー・ワイナート Vision Frameworkの エンジニアです 皆さんが熱狂する 新しい アップデートを紹介します 話すことが多いので 新しい機能に絞って話します Vision初心者でも大丈夫です 話についていけますし 今日紹介する新機能を知れば― あなたのAppに Visionを導入したくなるでしょう
4つの新機能を紹介します サリエンシー 画像分類 画像類似 そしてフェイスクオリティです さらにオブジェクトトラッキングと 顔ランドマークなど― 新しい検出機能と 改善されたCore MLの紹介もします
私がお話しするのは サリエンシーです まず 言葉の定義をします 写真を1枚お見せします 最初に目に入った箇所がどこか 注目してください
3羽のツノメドリの写真を見て― 最初に目を引いたのは? 我々のモデルによると― 大半の人は顔に目がいくのです これがサリエンシーで
注意力ベースと 物体ベースの2種類があります 顔周辺にかかった ヒートマップと呼ばれる枠は― 注意力ベースで 作成されたものです 他の例の前に アルゴリズムの仕組みを説明します
注意力ベースのサリエンシーは 人の感覚に近いです 人が何枚かの画像を見た際 最初に目線がいくところを基に― モデルが作成されます ある画像を見て 最初にどこに注目したかを― ヒートマップが明らかにするのです
一方 物体ベースのサリエンシーは 物体ごとに分けるもので― 前景に写る物体や 被写体を際立たせます 物体が全体的に ヒートマップで強調されます 例を交えて説明します
先ほどのツノメドリです
これは注意力ベースの ヒートマップです こちらが物体ベースのヒートマップ お伝えしたとおり 人はまずツノメドリの顔を見ます ですので ツノメドリの頭部周辺が 強調されています 物体ベースで考えると 被写体全体を捉えようとするので 体全体が強調されます
サリエンシーは人物画像に どう作用するのでしょう
注意力ベースだと 顔周辺が最も強調されます 人はまず人の顔を見るので 当然です
物体ベースでは― 被写体が人であれば その人全体が強調されます
注意力ベースのほうが より複雑な構造になっています “人間らしい要因”によって 確定されるからです 何が人間らしいかを 決める主な要因とは― コントラスト 顔 被写体 視野 光です 物体が動くと その影響を受けることがあります
この写真では 傘の色が鮮やかなので 傘周辺はサリエンシーが 認識できます ですが 道路もまた捉えられています 傘の進む方向を追うからです
物体ベースだと 傘をさした人しか捉えません
もっと例を示せるのですが― 自身で体験するのが 最も簡単に理解できます Saliency Appで 実践してみてください
サリエンシー要求に 話を戻します 主にヒートマップです
これまでお見せしてきた画像では― ヒートマップは調整され 色付けされ―
画像に重ねられていますが 実際は 0から1までの フロートで成り立っている― 微小なCVPixelBufferなのです 0が“全く突出なし” 1が“最も突出あり”です
これと同じ効果を得るには― 追加コードが必要になります 今回は基本的なレベルでの 要求のまとめ方を述べます
VNImageRequestHandlerで 1枚の画像を扱います 次に 作動させたい アルゴリズムを選択 AttentionBasedSaliencyです 同じアルゴリズムをいつも使いたい 場合は修正を設定します
次に 普段と同様の方法で 操作要求をします それが成功すると 要求の結果が― VNSaliencyImageObservationに 移植されます
ヒートマップにアクセスするには pixelBufferに指令を与えます
物体ベースでのサリエンシーを する場合は― 要求ネームを変更し― objectnessに修正します 注意力ベースなら VNGenerateAttentionBased 物体ベースなら VNGenerateObjectnessBasedです
別のツールに話を移します バウンディングボックスです
画像内の突出した全ての部分を 四角で囲みます 注意力ベースの場合は 箱の数は常に1つ 物体ベースの場合は 最大3つまでです バウンディングボックスは 画像の座標空間内にあります 左下の隅が起点となります Visionの他のアルゴリズムによる ボックスに似ています
バウンディングボックスへの アクセス方法と― 利用法はこちらです VNSaliencyImageObservationが あります salientObjectsのプロパティに アクセスし― バウンディングボックスの リストを入手します このように進めます これで要求のまとめ方が 分かりました サリエンシーも理解しました 次は利用例を見ていきます
まず最初に―
画像の編集のために サリエンシーでマスキングします これがヒートマップです
左側は突出していない部分の 彩度を落としたものです 右側は ガウシアンぼかしで処理したもの 被写体が際立ちます
写真の見方の幅が広がる 利用方法もあります 家のカウチに 座っているとしましょう テレビかPCの画面が スタンバイモードで― フォトライブラリの写真が 写っています 写真表示のアルゴリズムは ときに不自然になります ランダムな箇所が ズームされていて― ズームされたのが 見たい場所ではないことがあります サリエンシーでは 物体の場所を常に把握します ドキュメンタリー映像のような 効果が得られます
サリエンシーは 他のアルゴリズムとの親和性もあります 1枚の画像があります 画像内の物体を 分類したいとしましょう 物体ベースのサリエンシーを用いて 画像内の物体を認識します 得られた バウンディングボックス内の― 画像をトリミングします そしてトリミングした画像を― 画像分類のアルゴリズムに通し 物体が何かを突き止めます バウンディングボックスで 物体の場所を知るだけでなく― 物体の ある場所に 焦点を当てられます トリミングされたボックスを 抽出するだけで可能になります Core MLで 物の分類が可能ですが― Visionには新しい 画像分類技術があります ローハンが説明します
(拍手)
おはようございます 私はローハン Visionチームの研究員です 私が紹介するのは Vision APIに今年導入した― 画像分類要求の 技術についてです 画像分類の基本的な仕事は 次の質問に答えることです 画像内にある物体は何か? 画像分類に慣れ親しんでいる方も 多数いるでしょう Create MLやCore MLで― データ上に分類ネットワークを 構築した方も 去年のセッションで お話ししたとおりです 画像分類に関心はあるものの― ソースや専門知識がなく 実行に移せない方もいるでしょう
大規模な分類ネットワークを 一から作るのは大変です 何百万の画像に注釈をつけ― ネットワーク構築に時間を費やし ドメインの知識も必要です 我々はこの過程を すでに過去のものにしています デバイス上での大規模な 分類ネットワークを共有すれば― 膨大な時間と労力を 費やすことなく― この技術を レバレッジすることができます 結果を状況に当てはめて理解する 助けとなるツールも― APIに搭載しています 今 我々が紹介している ネットワークは― 写真検索に使用しているのと 同じものです このネットワークは 他のサービスの処理が不要で デバイス上で効果的に作動します 1000以上の異なる物体の領域から 特定できるのです 多ラベルのネットワークで― 1枚の写真から複数の物体を 特定することができます 単一ラベルのネットワークでは― 中央に位置する大きな物体のみ 特定しようとします この新しい分類APIについて 話す際― 思い浮かぶ最初の質問は― “実際 何を特定するのか?”です 分類器による分類法を タクソノミーと言います タクソノミーはクラス間に 直接関連する階層構造を持ちます この関連性は 共有された意味に基づきます 例えば 犬というクラスでは― ビーグル プードルなどを 子のクラスに持ちます 親のクラスは より大まかな分類になり― 子のクラスは親の 具体例になる傾向があります ImageRequest. knownClassificationsで タクソノミー全体を 見ることができます タクソノミーを構築する際― いくつか特定のルールを設けました 1つ目 クラスは目で見て特定できること “休日”や“祭り”といった 抽象的な表現は避けます 論争を呼ぶものや 攻撃的なものも避けます 固有の言葉に関係するものも 同様に避けます そして職業も避けます 一見 不思議に思うでしょう 例えば エンジニアを思い浮かべると― 思い浮かぶ範囲が とても広いのです 1つの簡潔な答えは きっと出ないでしょう 睡眠不足で パソコンの前に 張り付く姿を除いては さて 画像分類に必要な コードを紹介しましょう 普通はImageRequestHandlerを 使います VNClassifyImageRequestを実行し 結果を取得します この場合 複数の結果を得ました 個々の結果はタクソノミーや コンフィデンス内の― あらゆるクラスに存在します 単一ラベルの場合は 可能性を足すと1になりますが― 多ラベル分類ネットワークは 違います 各予測は 独立したコンフィデンスで― 特定のクラスに関連づけられます このように合計が1にはなりません 同じクラス間での比較を行い 異なるクラス間では行いません 最終予測を決定するのに― 単に値の高いものは選べません 多くのクラスや数を どう処理するか悩むでしょう 結果を理解する助けとなる いくつかのAPIツールがあります それらのツールを説明するため― 基本的な用語の定義を いくつか行います
クラスにおける コンフィデンスを得た際― 通常 それを特定の閾値と 比較します 動作基点と呼ばれるものです クラスコンフィデンスが 閾値を上回れば― クラスが画像内に存在すると みなします クラスコンフィデンスが 閾値を下回れば― 物体が画像内に存在しないと 結論づけます 物体が閾値以上のコンフィデンスを 持つような― 閾値の設定を考えます ターゲットクラスが存在しない場合 スコアが― 閾値を下回るような設定です ですが機械学習も 完璧ではありません ネットワークが不確かで― それに比例してコンフィデンスが 低いことも起こりえます 明るさが不十分だったり 微妙なアングルのときなどです どう閾値を設定しましょう? 3種類の検索結果を生み出す 閾値を設定するには― 3つの異なるレジームが 必要となります 少し具体的に話します ここに 画像のライブラリがあります 分類をすでに行い 結果を保存したものです この中からバイクの画像を 探したいとします バイクの画像の コンフィデンスが― 設定する閾値より 高くなるようにします バイク以外の画像では― その閾値より 低くなるようにします 閾値を低く設定すると 何が起こるでしょう? ご覧のとおり 閾値を低く設定すると― 確かにバイクの画像は得られます しかし右下に見える原付の画像も 得られてしまいます もし熱狂的なバイクファンなら― この結果に少しいら立つでしょう 全ライブラリの中から― ターゲットクラスの画像を得る 確率を極限まで高める検索 実際に写っていないのに “バイクがある”というふうに― 誤った予測をしない検索は 高想起検索です 多くの画像をリターンすることで 想起数を最大限増やせます ですが 存在しないのに “存在する”とした― 誤った予測を得る可能性も よりバランスの取れた地点を 探す必要があります 高想起検索を実行できるように― どうコードを変えるかを お見せします 前と同じスニペットがあります 今回は hasMinimumPrecisionと― 特定の想起値でフィルタを実行 得られた結果の中から クラス関連のコンフィデンスが 設定した想起のレベルを満たすと フィルタが結果を保存します 実際の動作起点は クラスによって異なるでしょう タクソノミー内でネットワークが どう実行されるか内部検査し― その結果で動作起点が決められます フィルタは自動的に この操作を行うので 操作したい想起のレベルを 特定するだけで大丈夫です 高想起検索について 話してきました もし自分のAppが― あるバイクを“ない”と判断することに 我慢できないなら? つまり バイクが写っている画像を 絶対に回収したいとしたら? 画像ライブラリに戻ります より高い閾値を設定してみましょう ご覧のとおり 閾値を高く設定すると― 確実にバイクの画像を 得られます しかし画像数は大きく減りました 画像内のターゲットクラスを 最大限まで高め かつ― 実際 ターゲットクラスが 含まれているのに― 物体を 見落とすことのない検索とは― 高精度検索のことです 高想起検索と同様 バランス良い動作起点を探します ターゲットクラスが現れる可能性が 許容できる程度に少なすぎない起点です それでは コードを修正して― 高精度検索ができるように しましょう
同じスニペットですが フィルタリングには― hasMinimumRecallと 特定の精度値を用いました 自身で設定した精度のレベルを 満たす場合にのみ― 結果が得られます 実行に必要な閾値は クラスによって異なります この作業は フィルタが自動的に行うので 操作したい精度のレベルを 入力するだけです 両極端な2つの検索について 話しました 高想起検索と高精度検索です ですが実際は その2つの妥協点を 見つけるのが好ましいでしょう 妥協点の探し方とその際 何が起きているか説明します まず最初に 精度と想起に関する 曲線を紹介します
精度値が上昇したところと― 想起値が減少したところに 妥協点が作られます グラフを用いて説明します 各動作起点ごとに― 対応する精度と想起の 計算が可能です 例えば 想起値が0.7を示す 動作起点では― 対応する精度値は 0.74を示します 多数の計算を行い ご覧の曲線を完成させました 前述のように― この曲線から 自分のAppに利用できる― 想起と精度のレベルを満たす 点を探します 実行するのに必要な コード変更の方法と 曲線がどう変わるのか 見てみましょう
hasMinimumPrecisionで フィルタリングを実行 ここでは最小限の精度と想起値を 指定します 最小限の精度値を指定するとき― グラフ内の操作したい範囲を 選択しています forRecallで 想起値を選択すると― 動作起点となりうる 曲線に沿った点を選択しています 動作起点が 自分で選んだ範囲にあれば― それが閾値となります 特定のクラスを認識すると フィルタが反応します 動作起点が 指定した範囲に無い場合― 制約条件を満たす動作起点が 存在しません クラスは常に結果から除外されます 操作したい精度と想起のレベルを 提供するだけでいいのです フィルタが自動的に 必要な閾値を決定してくれます
要約すると― 画像分類を実行した際に得られる 結果は― 全てのクラスに対する 数多くの結果なのです 多ラベル問題なので コンフィデンスの合計は1ではなく 独立したコンフィデンス値が 存在します 各クラスにつき 0から1の間の値です 精度と想起を理解し 特定のケースに当てはめれば― hasMinimumPrecisionや hasMinimumRecallで Appに適したフィルタリングが 可能になります 画像分類の一部を 理解いただけたかと思います ギアを切り替え 関連するテーマの話をします 画像… 画像類似です
画像類似とは? 画像の中身を説明する方法 そして― 得られた説明を比較する方法を 意味しています 画像の内容を説明するのに 一番 基本的な方法は― ソースピクセルそのものを 使うことです
類似した あるいは 全く同じピクセル値を持つ― 他の画像を検索し 結果を引き出します ですがこの方法で検索すると― 失敗しやすく 小さな変化に 影響を受けてしまいます 画像の反転や光で ピクセル値が大きく変化します 画像内の物体の意味までは 変化しません 理想は画像内の物体を より高いレベルで説明できること Natural Languageのようにです 前に説明した画像分類APIを 活用すれば― 画像の説明となる いくつかの単語が得られます 他の画像に類似した分類を与えて 回収します これと単語ベクトルを結び 似てはいますが 同一ではない単語を説明します このような検索を行うと― 一般的な意味で 類似した画像を得られますが 画像が現れた経緯や 関係性はそれぞれ異なります タクソノミーによって 制限も受けるでしょう 分類ネットワークにない 画像内に現れたいかなる物体も― このような検索では 表示されないのです 求めるのはピクセル値で 固定されてはいないものの― 画像内の物体を 高レベルで説明できる機能です この機能をあらゆる画像で 適用できるようにします
お分かりのとおり この種の表現学習は― 我々の分類ネットワークには 珍しい機能です
ネットワークの上層には 分類実行に必要な― サリエンシー情報が含まれています タスクの実行に不要な情報を 処分する機能もあります これらを活用して 記述子として機能させられます 特徴点とも呼べるものです 特徴点は特定のタクソノミー内に 制約されていない― 画像の内容を説明するベクトルです 特徴点は訓練課程において ネットワークが学習したものに― レバレッジをかけます 対になる画像を見ることで― 特徴点の類似性を比較できます 値が少ないほど― 2つの画像が “類似している”ことになります 見た目は似ていない 猫2匹の画像でも― 見た目は同じである 異なる動物の画像より― 類似した特徴点を持ちます
もう少し正確に伝えるため 具体例を用います スクリーンに 1枚の画像を出しました この画像と意味的に近い画像を 探しましょう 画像のライブラリを用意し それぞれの特徴点を計算します 元の画像と類似した特徴を持つ 画像を引き出します コーヒー店にいる紳士で 行った場合― コーヒー店やレストランでの 写真が得られました しかし 新聞に注目すると― 新聞の写真が得られます ティーポットに注目すると ティーポットの写真が 画像類似がどう作用するか 紹介するため― Visionチームを呼びましょう
(拍手) こんにちは ブレットです 画像類似のデモを行います 画像類似ゲームと名づけました ルールを紹介します 紙に何かの絵を描きます 仲間がその絵に限りなく似た絵を 描きます 私が最初の絵を描きます
出来ました
私の絵をスキャンしています
そして保存します
今度は私のチームが競争して この絵に近いものを描きます
彼らが描いている間 私は― このサンプルを 皆さんも 利用できることをお伝えします
スキャンに使用する スキャナーはVisionKit 詳細は Text Recognitionセッションでどうぞ もう少しで終わりそうです
5… 4… 3… 完成したようです それではスキャンしましょう
エントリー1番です
いいですね (拍手) 優勝候補ですね 次にエントリー2番
これもいいですね (拍手) 良い出来です (拍手) 続いてエントリー3番
(笑い声と拍手) 良いと思います (拍手) 最後にエントリー4番
これは何でしょうか? (拍手) どうなるでしょうか (拍手) それでは保存しましょう
優勝はエントリー1番です おめでとうございます (拍手) スワイプすると 類似点が多いことが分かりますね 元の画像と近いところにあります 一方 木は遠いですね デモは終了です ローハンを呼びます (拍手)
ありがとうございます デモで使用した スニペットを見てみましょう 優勝者決定の仕組みが分かります コードの一部があります エントリーした4人の 絵の特徴点を― ブレットのものと比べます 特徴点の切り取りには Appで定義した関数を用います featureprintObservationForImage という関数です 特徴点を得ると次は― 元の画像とどれだけ 類似しているかを決定します computeDistanceで 浮動小数点の値を得ます 浮動小数点の値が小さいほど 画像同士は類似しています それぞれの画像で値を決定し― ソートをかけて優勝者を決めます これが画像類似の一部です セルゲイがフェイステクノロジーに ついてお話しします (拍手)
おはようございます 私はセルゲイ Vision Frameworkの エンジニアです Frameworkの新機能を お伝えできて光栄です 最初にフェイステクノロジーについて 2年前にVision Frameworkを 紹介した際― 顔ランドマーク検出の話もしました 今年はこのアルゴリズムに 修正を加えました 変更点を紹介します まず ポイントの数が 76に増えました 以前は65ポイントでした 様々な顔の 部位を認識しやすくなりました ポイントごとに コンフィデンス値を算出できます 今まではコンフィデンス値の 平均しか出せませんでした そして今回最大の特徴は 瞳の検出です ご覧のとおり― 右の画像のほうが正確に 瞳の動きを検出しています
クライアントコードを例にとります
このスニペットは 何度も繰り返しますので― 最初は1行ずつ説明します 今からサンプルを お見せしますが― 目的がスライドの単純化なら App開発の際は 例外処理を行うべきです 意図せぬ境界条件を避けるためです サンプルに戻りましょう 顔にランドマークを置くために― DetectFaceLandmarksRequestを 作成します 次にImageRequestHandlerを 作成し― そこに処理したい画像を通します 要求を処理するよう Handlerを使用します そして 結果を確認します Vision Frameworkで 人間の顔に関する結果は― FaceObservationによって 導き出されます そしてバウンディングボックスの プロパティを引き継ぎます 人間の顔について説明するため― 他のプロパティも追加します ランドマークのプロパティに 注目します これは FaceLandmarks2Dクラスで コンフィデンス値で構成されます 今回 算出する値は 全体と顔の複数の部位の― コンフィデンス値の平均です 顔の各部位を表すクラスは― FaceLandmarkRegion2Dクラスで 示されます プロパティを見てみましょう
最初はpointCountです 特定の顔の部位を表す ポイントの数が分かります キャンセレーションが65ポイントか 76ポイントかによって― プロパティが異なる値になります normalizedPointsのプロパティは 実際のランドマーク値を表し― precisionEstimatesPerPointの プロパティは― 実際のコンフィデンス値を表します 必要なコードをお伝えします スニペットはさっきと同じですが 異なるパースペクティブで 確認します アルゴリズムの修正が Vision Frameworkで― どう行われているのでしょう このスニペットを2018年の SDKでコンパイルし直すと― 要求した内容は次のように 設定されます 修正プロパティは Revision2に― コンスタレーションプロパティは Constellation65Pointsにします 昨年は出来ませんでしたし 出来たとしても 単一の値のみでしょう 今度は同じスニペットを使い 2019年のSDKで コンパイルし直します 修正プロパティは Revision3に― コンスタレーションプロパティは Constellation76Pointsにします
Vision Frameworkが アルゴリズムの修正を― どのように処理しているか 示しています 修正を指示しなければ― コンパイルされたコード内における 最新版が提供されます 常にプロパティは 最新にしましょう 将来の確定的行動を 保証するためです
次に紹介するのは フェイスキャプチャクオリティです 2つの画像があります 片方は光が当たり 焦点が合っていますね 画像全体の キャプチャの質の良し悪しが― スコアとして現れる方法を 開発しました それが フェイスキャプチャクオリティです このために モデルの訓練を積みました 光や焦点に問題がある場合や 表情が暗い場合に 低いスコアをつけるのが目的です 2つの画像に このメトリックを実行します これは浮動小数点数です 数値が高いと その画像は質が良いと 見なすことができます
コードのサンプルがこちらです
さっきのものと かなり似通っています 異なる点は 要求のタイプと得られた結果です 同一人物の顔なので すぐに結果は得られますが― 今回は異なるプロパティを 確認してみましょう faceCaptureQualityです
広範囲の例を見てみます 連写モード等で得られる 連続した画像があるとしましょう 考えてみてください 最も質の良い画像はどれでしょう? 各画像にアルゴリズムをかけ スコアを算出し 比較します 最も値が高かった画像が 最も質が良いということになります
フェイスキャプチャクオリティで 得られる結果を― どう解釈するかを見てみます 2組の対となる画像があります それぞれのモデルは同一人物です フェイスキャプチャクオリティで 算出したスコアの― 最高値と最低値を取り出しました 値の幅を見てください 値が重複している箇所と 値が重複していない箇所があります 可能性としては― 値が全く重複しないこともあります つまりフェイスキャプチャクオリティは 閾値と比較できないのです この場合 もし0.52を抽出すると― 左の画像からは何も得られません 右の画像は中心から少し それただけなので多くを得られます
フェイスキャプチャクオリティとは? 同じ物体を比較 もしくは ランク付けをする際の基準です キーワードは “比較”と“ランク付け”です “このメトリックを使って 美人コンテストのAppを作成しよう” 名案ではないでしょう そのAppでは 異なる顔を比較する必要があります 適しているのはこのメトリックでなく
フェイステクノロジーです
新たに開発した検出機能を 紹介します
上半身 つまり頭と胴を検出する Human Detector 犬や猫を検出する Animal Detectorです これはバウンディングボックスを 表示させ― 検出した動物が何かを ラベル表示させます
クライアントコードの例です
Human Detector用と Animal Detector用です 先ほどと かなり類似しています 異なるのは 要求するタイプと得られる結果です Human Detectorの場合― 大切なのは バウンディングボックスです DetectedObjectObservationを 使用します Animal Detectorでは ラベルも必要なので RecognizedObjectObservationを 使用します バウンディングボックスを受け継ぎ ラベルも追加します
これが新しい検出です 続いてトラッキングについてです トラッカーに修正を加えました バウンディングボックスの 拡張エリアの改良です オクルージョンの性能が 向上しました
機械学習がベースです 電力消費量も 以前より少なくてすみます
例を挙げて説明します ランニングをする男性の映像です 時々 男性が木に隠れますが トラッカーは 男性のキャプチャに成功し トラッキングを続行しています
(拍手) どうも (拍手) クライアントコードの例です 昨年と全く同じスニペットです 最もシンプルな トラッキング結果を表示し 連続する5つのフレームにおいて 追跡します 1行ずつ紹介しますが 強調したいことは2つです まずはSequenceRequestHandler ImageRequestHandlerとは 正反対のものです 連続したフレームをまたぐ 情報を得るのに― SequenceRequestHandlerを使います トラッキングの連続を 実行する際― イテレーションnから結果を得て デュレーション数 n+1をフィードさせます
現在のSDKで コンパイルし直した場合は― 要求の修正は Revision2になります こちらも更新を推奨します
以上がトラッキングです VisionとCore MLの統合に 関する新情報です VisionとCore MLの統合を 去年発表し Vision APIを用いたCore MLモデルの 使用法を紹介しました 利点はImageRequestHandlerの 多重定義を用いて― 手元の画像を Core MLモデルが要求する― 画像のタイプ 大きさ 色の設定に 変えられることです Core MLモデルから得られた 出力信号や結果を― Visionの結果に挿入します
画像スタイルの 転送を行いたい場合は― 少なくとも2種類の 内容とスタイルが必要です 内容にどれだけスタイルが 必要かを示す割合も要るでしょう 3つのパラメータがあります Visionを通しCore MLに 多入力できるAPIを導入します マルチイメージの入力も含まれます
この例では 出力が1つしかありませんが― 2つ以上 特に同じタイプが 2つ以上得られた場合は― 見分けるのが難しくなります そこで 出力欄に表示される 名前に対応可能な― 新しいフィールドを導入しました 入力と出力を確認します 次のスライドで使います
これがVisionを通した Core MLの使用法です 色をつけた箇所が 新しくなった点です まずはコードの説明をしましょう Core MLを動かすため CoreMLModelを記録し Vision CoreMLmodelの ラッパーを作成します Vision CoreMLRequestを作成し ラッパーに通します
ImageRequestHandlerを作成し 要求を処理させ― 結果を確認します 新しいAPIを用いた場合― 昨年 使用した画像が デフォルトとなります メインの画像は― ImageRequestHandlerで 得られた画像で featureNameフィールドに 割り当てられます 他のパラメータは featureProviderプロパティを 通す必要があります 画像スタイルと混合比は 今回の方法で実行しています 得られた結果はfeatureNameの プロパティで確認できます imageResultとの 比較も可能です Core MLの出力欄に 出現する名前に応じて 結果を処理できます
これで今日のプレゼンは終了です 詳細はサイトをご覧ください ありがとうございました この後も楽しんで (拍手)
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。