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

Azure CustomVision ハンズオン

shota-yano
February 18, 2020

Azure CustomVision ハンズオン

2020/2/18に社内で実施したAzure のCustom Visionを使ったハンズオンの資料です。

shota-yano

February 18, 2020
Tweet

More Decks by shota-yano

Other Decks in Technology

Transcript

  1. 自己紹介 • 株式会社KIS • 矢野翔大 • 在宅勤務中 • 興味あること:ARとかVRとか電子部品 •

    趣味はモノづくり • ようやくMRTKv2触り始めた • Dynamics365 Guidesお試し中 • KumaMCNで活動中 MRTKv2 Dynamics365 Guides
  2. ・犬1匹 ・猫1匹 ・左にいるのが猫 ・右にいるのが犬 { “Class”:”Cat”, “Accuracy”:94.8 “Rect”:{ “top”:30,“left”:10, “width”:40

    ,”height”:50}, “Class”:”Dog”, “Accuracy”:98.1 “Rect”:{ “top”:25,“left”:60, “width”:42 ,”height”:75}}
  3. ・犬1匹 ・猫1匹 ・左にいるのが猫 ・右にいるのが犬 { “Class”:”Cat”, “Accuracy”:94.8 “Rect”:{ “top”:30,“left”:10, “width”:40

    ,”height”:50}, “Class”:”Dog”, “Accuracy”:98.1 “Rect”:{ “top”:25,“left”:60, “width”:42 ,”height”:75}} ざっくり言うと 人間が認知するのと同じようなふるまいをするもの
  4. 人間の認知機能(Cognitive)機能の一部を Web APIとして利用できる“AIパーツ” Vision 視覚 Speech 音声 Language 言語 Decision

    決定 Search 検索 Labs ラボ 画像分類 ビデオ読解 顔識別 感情判定 OCR 話者識別 音声⇔テキスト 文章解析 文脈理解 推定 予測 Bingエンジン による検索 Preview版
  5. 人間の認知機能(Cognitive)機能の一部を Web APIとして利用できる“AIパーツ” Vision 視覚 Speech 音声 Language 言語 Decision

    決定 Search 検索 Labs ラボ Computer Vision Custom Vision Face Video Indexer Form Recognizer Ink Recognizer Speech to Text Text to Speech Speech Translation Speaker Recognition Translator Text Text Analytics QnA Maker Immersive Reader Language Understanding Personalizer Content Moderator Anomaly Detector Autosuggest Custom Search Entity Search Image Search News Search Spell Check And more Academic Knowledge Knowledge Exploration Conversation Learner Personality Chat Answer Search Event Tracking And more
  6. リソースを作成する 両方を選択 項目 値 名前 適当に サブスクリプション ご自身が契約してるもの リソースグループ 次のスライドに記載

    トレーニングの場所 東日本 • 一番近いところがお勧め • 場所によって価格が変動することがある トレーニング価格レベル F0(無料の場合)/S0(有料の場合) 予測の場所 F0(無料の場合) 予測価格レベル 東日本
  7. 全部入力したら作成 作成をクリック 項目 値 名前 適当に サブスクリプション ご自身が契約してるもの リソースグループ 前のスライドで作成したもの

    トレーニングの場所 東日本 • 一番近いところがお勧め • 場所によって価格が変動することがある トレーニング価格レベル F0(無料の場合)/S0(有料の場合) 予測の場所 F0(無料の場合) 予測価格レベル 東日本
  8. 新しいプロジェクトを作成 項目 値 Name 適当に Description(任意) プロジェクトの説明 Resource Group Azureで作成したものを選択

    Project Type Classification(分類)を選択 Classification Type Multiclass(画像1つにつき1タグ) Domains Foodを選択 ※用途で使い分ける • General(他が当てはまらない場合) • Food(食べ物) • Landmarks(建造物など) • Retail(小売り(洋服などもここ)) • Compact系(エクスポートしたい場合) 入力後クリック
  9. 結果の見方 項目 説明 Precision(精度) 正しかったと識別された分類の割合。 100枚の画像が犬として識別され、 そのうち 99枚が実際に犬であった場合、 精度は 99%

    になります。 Recall(再現率) 正しく識別された実際の分類の割合。 実際に犬である画像が 100枚あり、 80枚が犬として識別された場合、 再現率は 80% になります。 AP(平均精度) 閾値で計算されたPrecisionの平均値
  10. 結果の見方 項目 説明 Precision(精度) 正しかったと識別された分類の割合。 100枚の画像が犬として識別され、 そのうち 99枚が実際に犬であった場合、 精度は 99%

    になります。 Recall(再現率) 正しく識別された実際の分類の割合。 実際に犬である画像が 100枚あり、 80枚が犬として識別された場合、 再現率は 80% になります。 AP(平均精度) 閾値で計算されたPrecisionの平均値 犬99枚狐1枚合計100枚の画像を与える この100枚の画像は 全部犬だ 精度99%
  11. 結果の見方 項目 説明 Precision(精度) 正しかったと識別された分類の割合。 100枚の画像が犬として識別され、 そのうち 99枚が実際に犬であった場合、 精度は 99%

    になります。 Recall(再現率) 正しく識別された実際の分類の割合。 実際に犬である画像が 100枚あり、 80枚が犬として識別された場合、 再現率は 80% になります。 AP(平均精度) 閾値で計算されたPrecisionの平均値 犬の画像を100枚与える この100枚のうち 80枚は犬の画像だ 再現率80%
  12. 結果の見方 閾値 区分 閾値との関係 閾値を上げたらどうなるか Precision 閾値を上げる ⇒上がる 間違って分類されるものが減る。 取りこぼしは増える

    Recall 閾値を下げる ⇒上がる 取りこぼしは減る。 間違って分類されるものも増える APIから呼び出す時に 調整できるかは不明 (パラメータが見当たらないため) このパラメータをどう扱うかは作りたいもの次第 例:MRIなどの画像から癌を見つける場合 閾値を上げる:癌なのに癌じゃないと判断されるかも 閾値を下げる:癌じゃないのに癌だと診断されるかも どちらが良いのか?
  13. 赤字の部分を書き換える $.ajax({ url: "https://YourUrl", beforeSend: function(xhrObj){ // Request headers xhrObj.setRequestHeader("Content-Type","multipart/form-data");

    xhrObj.setRequestHeader("Prediction-key",“YoutKey"); }, ①AURLを入力 ※2つ前のスライドの値です ②キーを入力 ※2つ前のスライドの値です
  14. 新しいプロジェクトを作成 項目 値 Name 適当に Description(任意) プロジェクトの説明 Resource Group Azureで作成したものを選択

    Project Type Object Detectionを選択 Domains Generalを選択 ※用途で使い分ける • General • Logo(ロゴの検出) • Compact ①クリック
  15. Foodの時と同じように赤文字を置き換えて保存する $.ajax({ url: "https://YourUrl", beforeSend: function(xhrObj){ // Request headers xhrObj.setRequestHeader("Content-Type","multipart/form-data");

    xhrObj.setRequestHeader("Prediction-key",“YourKey"); }, type: "POST", data: $("input[name='ufile']").prop("files")[0], processData: false, contentType: false })