[レポート] Making a strong and robust deep model by simple but effective data augmentation #linedevday_report

2019年11月20日(水)・21日(木)にLINEのデベロッパーカンファレンス「LINE DEVELOPER DAY 2019」が開催されました。本記事ではセッション「Making a strong and robust deep model by simple but effective data augmentation」をレポートします。
2019.11.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

せーのでございます。

2019年11月20日(水)・21日(木)にグランドニッコー東京 台場でLINEのデベロッパーカンファレンス「LINE DEVELOPER DAY 2019」が開催されました。

本記事は、セッション「Making a strong and robust deep model by simple but effective data augmentation」をレポートします。

スピーカー

  • Sangdoo Yun [NAVER AI Research / OCR Research Scientist]

セッション概要

深層学習の台頭に伴い、視覚認識は、学問目的と産業目的の両方を含むコンピュータービジョンと機械学習の分野で最も話題に挙がる不可欠なテーマになりました。強力な認識モデルは、それ自体が有用であるだけでなく、物体検出やセマンティックセグメンテーション、人体姿勢推定など様々なタスクに用いられるバックボーンモデルとして適用することができます。そのため、現実的な問題の解決には、強力かつ堅固な認識モデルが必要です。本セッションでは、最新の深層学習に基づいた画像認識モデルと、深層モデルを効果的に学習させるコツについて簡単にご説明します。それから、新たに開発されたデータ拡大方法をご紹介し、それが他の方法に比べ優れている点についてお話ししたいと思います。本セッションでは、「最新のCNN(畳み込みニューラルネットワーク)ベースの画像認識方法」「他のコンピュータービジョンタスクへの画像認識モデルの適用方法」「強力かつ堅固なモデルを学習させるための当社のシンプルかつ効果的なデータ拡大方法」「実験結果と学習のコツ」の内容に触れる予定です。

レポート

  • 昨今AIとDeepLearningは画像認識、物体検出、セマンティックセグメンテーションなどで様々な課題を解決してきた
    • Clova OCR: 文字検出
    • NAVER SmartLens: 画像探索によるショッピング検索
  • 私達の研究目標はこれらのサービスをより強力なものとするために基礎となるDeepLearningsの基礎基盤を築くこと
  • Agenda
    • Deep CNNベースの画像認識について
    • 画像認識を超えて: 自分のタスクに適用させる方法
    • シンプルで効果的な学習の戦略
  • Deep CNNベースの画像認識
    • Deep CNNとは: 畳み込みネットワークのレイヤーが深いもの
    • AlexNet(2012): 8レイヤ
    • VGGNet(2014): 16レイヤ
    • RssNet(2016): 100レイヤ以上
  • 分類の問題のみ解決していても自分のタスクには適用できない
    • オブジェクト化やセグメンテーションなどより複雑なパスが必要となる場合、どのように適用していけばよいのか

  • Deep networkではなにが行われているのか

    • 各層ごとに異なる処理が行われる

    • 最初のレイヤ: 画像の色や断片を認識
    • 次のレイヤ: エッジやテクスチャ
    • より深いレイヤ: shapeオブジェクトなどの抽象的な情報
    • 最後のレイヤ: 今までの条件を連結する
    • これらのレイヤ処理を「feature extractor」 => backbone、と呼ぶ
  • 最後のレイヤはユーザーデータを使ってトレーニングする
    • それぞれのタスクに合わせて微調整する
    • Fine-tuningという
  • backboneとして基盤的な分類モデルを学習してそれぞれのタスクに合わせて転移学習して微調整する
  • 転移学習のコツ
    • backboneは強力にする
    • backboneが1〜2%上がると、最終的な結果が違ってくる
    • backboneを強力にするには
    • より沢山のデータで学習させる: コスト高
    • より大きく深いモデルを使う: コスト高
    • より良いトレーニングの戦略を練る: 効率的
  • トレーニングの戦略
    • かつての戦略
    • 画像を反転させる
    • 画像をトリミングする
    • 角度を回転させる
    • 最近の戦略
    • cutout: 画像の一部を切り取る
    • mixup: 別の画像と混ぜる
    • cutmix: 別の画像の一部を切り取り上書きする
      • 使用した画像の割合もデータとして使う
    • cutmixが一番効果が出た

    • FAQ

    • パッチするオブジェクトがなかったら?

    • オブジェクトがなくても背景などでも十分意味を持つ
    • 2つ以上の画像を混ぜ合わせたら?
    • 3つの画像を混ぜても結果は2つとあまり変わらなかった
    • トレーニングに使うコストは?
    • cutmixは画像を切って貼るだけなのでコストはかからない

まとめ

機械学習の精度を効率よく高める上で転移学習というのは非常に重要になるのですが、そのベースを作る時のコツを教えてもらいました。Py-Torchを使ったCutMixの事前学習モデルがgithubに公開されていますのでこちらも参考にしてみてはどうでしょうか。