• 日本語
    • English (英語)
Avinton JapanAvinton JapanAvinton JapanAvinton Japan
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
    • 見てわかる観光庁オープンデータ
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ

【機械学習】一般物体検知アルゴリズム SSD : 第1編

    Home 技術解説 【機械学習】一般物体検知アルゴリズム SSD : 第1編
    99.9%車だと検知している画像

    【機械学習】一般物体検知アルゴリズム SSD : 第1編

    By James Cauchi | 技術解説, 技術ブログ&インタビュー | Comments are Closed | 13 3月, 2018 | 3

    機械学習を用いた一般物体検知のアルゴリズムに、SSD(Single Shot Multibox Detector)というものがあります。

    https://avinton.com/wp-content/uploads/2018/03/test.mp4

     

    深層学習の技術を使い、高スピードで多種類の物体を検知できます。
    特定の物体を覚えさせ、その特定の物体を検知させることもできます。

    このブログは、2編あるSSDについてのブログの第1編となっており、このアルゴリズムの理論を説明します。

     

    本記事の目的は、初心者でもわかるような難易度にSSDのアルゴリズム理論を噛み砕いて説明することで、新しく機械学習・物体検知の世界に入りたい、コーディングはできないがとりあえず理論を理解したい、と考えている方々の助けになる事です。
    より簡潔にハイレベルな内容がまとめられているのは、原著であるSSDの論文ですので、より詳しくはそちらをぜひ参照してみてください。
    SSD: Single Shot MultiBox Detector

     

    TensorFlowとKerasを用いたpythonの実装については、Avintonアカデミー受講者にコンテンツを提供予定です。Avintonではインターン、機械学習エンジニアを募集しています。
    ご興味のある方は是非お問い合わせください。

    また、物体検知をビジネスに生かしたい、というお客様へのAIシステム導入コンサルティングも実施しております。ぜひお気軽にご相談ください。

    デフォルトボックスとは

    SSDの肝となるのは、「デフォルトボックス(default boxes)」という長方形の「枠」です。
    一枚の画像をSSDに読ませ、その中のどこに何があるのか予測させるとき、SSDは画像上に大きさや形の異なるデフォルトボックスを8732個乗せ、その枠ごとに予測値を計算します。

    赤で覆われた画像
    図1:8732個のデフォルトボックスを描画

     

    8732個の枠を描画すると、画像が枠で埋め尽くされます。分解してみていくと、

    複数の赤い枠で覆われた車の画像
    図2:8732個のデフォルトボックスのうち、数十個をランダムに描画

     

    このように様々な大きさの枠が様々な位置に描画されている事がわかります。

     

    このデフォルトボックスの役割は、それぞれが、
    1. 自身が物体からどのくらい離れていて、どのくらい大きさが異なるのか
    2. そこには何があるのか
    の2つを予測する事です。

    これらを位置の予測とクラスの予測と呼びます。

     

    具体的な例を見てみます。
    先ほどの画像は、縦横が[math]300\times300[/math]の大きさで、物体「車」が写っています。この画像に、デフォルトボックスを描画してみます。描画の便宜上、4つだけ選びます。

    複数の赤い枠で車を囲っている画像
    図3:緑が正解の座標、赤がデフォルトボックス(4つのみ選んで描画)

     

    中心(center)の座標を[math]cx[/math]と[math]cy[/math]、幅(width)と高さ(height)を[math]w,h[/math]とすると、物体とデフォルトボックスの座標はそれぞれ以下の表の通りです:

    id [math]cx[/math] [math]cy[/math] [math]w[/math] [math]h[/math]
    物体(車) [math]207.5[/math] [math]162.5[/math] [math]140[/math] [math]200[/math]
    1 [math]208[/math] [math]176[/math] [math]134.0969[/math] [math]134.0969[/math]
    2 [math]176[/math] [math]176[/math] [math]156.9777[/math] [math]78.4888[/math]
    3 [math]56[/math] [math]72[/math] [math]34.6410[/math] [math]103.9230[/math]
    4 [math]204[/math] [math]144[/math] [math]111[/math] [math]111[/math]

    表1:物体(車)と4つのデフォルトボックスの座標

    位置の予測

    上の例で、位置についてSSDが実際に出した予測値をみてみましょう。

    赤い枠と計算式で囲われた車の画像
    図4:デフォルトボックスごとに差分符号化した予測先の座標

     

    id [math]\Delta cx[/math] [math]\Delta cy[/math] [math]\Delta w[/math] [math]\Delta h[/math]
    1 [math]0.08[/math] [math]−1.068[/math] [math]0.11[/math] [math]−1.214[/math]
    2 [math]2.353[/math] [math]−1.773[/math] [math]−0.683[/math] [math]1.708[/math]
    3 [math]0.092[/math] [math]0.279[/math] [math]0.719[/math] [math]−0.456[/math]
    4 [math]0.038[/math] [math]1.964[/math] [math]1.382[/math] [math]-0.072[/math]

    表2:4つのデフォルトボックスの出した位置の予測(差分符号化されている)

     

    [math]\Delta[/math](デルタ)で表される座標は、対応するデフォルトボックスの座標を基準とした差分を表しており、このような表現形式を差分符号化(delta encoding)と言います。

    この値はそれぞれ基準となるデフォルトボックスの座標などを使って変換することで、実際に予測した先の座標にすることができます。

    複数の赤い枠で囲われた車の画像

    図5:赤の実線が変換後の予測値(座標)、赤の点線が対応するデフォルトボックスの位置

     

    id [math]cx[/math] [math]cy[/math] [math]w[/math] [math]h[/math]
    1 [math]209.07213[/math] [math]161.68217[/math] [math]137.08094[/math] [math]105.18074[/math]
    2 [math]212.93426[/math] [math]162.08465[/math] [math]136.94126[/math] [math]110.44376[/math]
    3 [math]56.31937[/math] [math]74.89882[/math] [math]39.99739[/math] [math]94.87071[/math]
    4 [math]208.42104[/math] [math]165.80191[/math] [math]146.33688[/math] [math]109.40799[/math]

    表3:変換後の座標

    車に被っていたデフォルトボックスが、全て車の位置に「寄って」行っていることがわかります。

    この変換の計算について詳しくは第2篇で取り扱います。

    クラスの予測

    クラスの予測は、その枠が囲っているのがどの物体である可能性が高いかが、予測するクラスごとに確率で表現されます。

    赤い枠と計算式で囲われた車の画像

    図6:クラス名と、そのクラスに属する予測(確率)

     

    id background car boat person
    1 [math]0.0\%[/math] [math]99.916\%[/math] [math]0.001\%[/math] [math]0.0\%[/math]
    2 [math]100.0\%[/math] [math]3.772\%[/math] [math]0.008\%[/math] [math]0.0\%[/math]
    3 [math]100.0\%[/math] [math]0.04\%[/math] [math]0.221\%[/math] [math]0.202\%[/math]
    4 [math]0.0\%[/math] [math]96.67\%[/math] [math]0.013\%[/math] [math]0.0\%[/math]

    表4:4つのデフォルトボックスの出したクラスの予測

     

    ここでは、背景(background)の他に、ボート(boat)、車(car)、そして人(person)のどのクラスの物体であるかをそれぞれのデフォルトボックスが予測しています。

    1と4のデフォルトボックスが、車であるとする高い予測値を出しました。

    デフォルトボックスの選択

    1も4も高い確率で車と予測しました。ここでもし「背景以外で8割以上の予測をした枠のみ残す」といったルールのみで枠を選ぶと、枠が重なり合って残ってしまいます。

    赤と緑の枠で囲われた車

    図7:「背景以外で8割以上の予測をした枠のみ残す」ルールで予測先の枠を描画

     

    ここでは、

    1. もっとも高い予測値を出した枠をまず選び、
    2. その枠に重なっている部分の面積(Intersection)が、枠を組み合わせた面積(Union)の5割以上の枠を全て消す

    という操作をします。

    この重なり度合いの指標をIntersection over Union(IoU)と呼び、上の操作のことをNon-maximum suppressionと呼びます。

    Intersection ÷ Unionを説明した画像

    図8:Intersection over Union(IoU)

     

    1と4の枠のIoUは5割を越しているので、予測値の高かった1のみ残し、4は消すことで、最終出力が得られます。

    青と緑の枠と計算式で囲われた車
    図9:Non-maximum suppression後の最終出力

     

    このように、比較的高精度で、物体に枠をつける事ができました。

    これでSSDの推論の説明は大まかに終わりです。とてもざっくりした説明ですが、流れは理解できたでしょうか。

     

    おわりに

    今回の記事では、主にSSDの推論について触れました。

    次の記事では、主にSSDはどのように物体を学習するのかについて見ていきます。また、今回は触れなかった数学的側面にも触れます。

    実際に学習が一回りする過程を丁寧に見ていきます。高校数学+α程度で理解できる範囲ですので、数学が苦手という方もぜひ読んでみてください。

    また、更に進んで実際に物体の検知ができるコードを書きたい、もしくは物体検知をビジネスに活用したい、という方はぜひお問い合わせください。

    合わせて読みたい関連記事

    【機械学習入門】クラスタリング
    【機械学習入門】教師あり学習と教師なし学習
    【機械学習入門】機械学習に向けてのデータ前処理
    Avintonアカデミー

    あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?

    社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?

    採用情報
    機械学習, 技術, SSD

    Related Post

    • G検定合格体験記

      G検定合格体験記

      By Avinton rk | Comments are Closed

      Read more

    • Kubernetes入門:初心者からプロフェッショナルへ – 学び方とおすすめリソース

      Kubernetes入門:初心者からプロフェッショナルへ – 学び方とおすすめリソース

      By Avinton rk | Comments are Closed

      Read more

    • deploying-postgresql-operator-in-Kubernetes

      PostgreSQL Operator on Kubernetes

      By Avinton rk | Comments are Closed

      Read more

    • AIモデルの最適化

      AIモデルの最適化

      By Avinton rk | Comments are Closed

      Read more

    • Pytorch Datasets & DataLoaders

      PyTorch – Datasets & DataLoaders

      By Avinton rk | Comments are Closed

      Read more

    採用情報

    採用情報

    Categories

    • 相互学習
    • 採用
    • 社員インタビュー
    • 学習&資格取得
    • 技術解説
    • イベント告知
    • 学内説明会&講義
    • 産学連携
    • 就職活動
    • イベントレポート
    • その他
    • 技術ブログ&インタビュー
    • mainpage
    • New Graduates Interviews
    • 中途エンジニア
    • カテゴリーなし
    • ニュースリリース&イベント

    Avinton SDGs

    SDGsへの貢献

    Search

    タグ

    AIカメラ AI時代の経営 AvintonAcademy on Campus AWS Docker DQN FINOLAB Git James Cauchi LPIC LPIC-2 PM&PMO Raspberry Pi Sound Analysis SSD イベントレポート インターン インフラ エッジコンピューティング エリクソン エンジニア クラウトネイティブ コンテナ技術 ディープラーニング データ生成 ファンダフルリレーマラソン モブワーク リスキリング リードエンジニア 中瀬幸子 企業説明会 勉強会 大学&専門学校 帰社日 強化学習、機械学習 技術ブログ 採用 掲載告知 未経験 深層学習 田中 研之輔 画像分類 社員紹介 第一級陸上特殊無線技士 観光データ
    © 2023 Avinton | All Rights Reserved | プライバシーポリシー
    • サービス
      • Avinton Data Platform
      • エッジAIカメラ
        • 自動車ナンバープレート自動認識システム
      • プライベートクラウド
      • AIサービス開発
      • AIカメラ/画像解析無料体験版
      • 見てわかる観光庁オープンデータ
    • 最新情報
      • ニュースリリース&イベント情報
      • 技術ブログ&インタビュー
    • アカデミー
      • Avintonアカデミー
      • Academy on Campus
      • Academy with Platform
    • 採用情報
      • Avintonジャパン 採用ページ
      • 求人一覧
      • よくある質問
      • 新卒採用
    • 企業情報
      • 会社概要
      • 代表からご挨拶
      • SDGsへの貢献
    • お問い合わせ
    • 日本語
      • English (英語)
    Avinton Japan