機械学習開発のための学習済モデル

Loading...

はじめに

 株式会社KADOKAWA ConnectedのKCS部Cloud Native課の夏目です。最近は産業におけるディープラーニング(ディープニューラルネットワーク、以下「DNN」)の適用が幅広く進んでいます。私(夏目)はSmartCity研究所にて画像認識を利用するプロジェクトで業務を行なっています。今回は初心者のかた向けに、主に画像・映像の認識を行なうための機械学習およびDNNの学習済モデル、そのモデルを利用した転移学習について紹介したいと思います。

教師あり学習の課題

 機械学習の1つの手法として、教師あり学習がありますが、教師あり学習ではラベル付け(アノテーション)された学習用のデータが必要になります。一般的に学習用のデータが少ないと精度に影響が出ます(精度が低くなる可能性がある)ので、ある程度学習用データを集める必要があります。しかし、学習用データを数多く揃えるのは難しい場合があります。また、学習の処理に必要な計算量が非常に大きくなるという課題もあります。そのため、既に他の人(他の組織)が作成した学習済のモデルを利用することにより、それらの課題を解決することを検討する必要があります。

Model Zoo

「多くの人々がさまざまなタスクのために機械学習モデルを訓練し、プレトレーニング済みのモデルを一般開放してくれて」(書籍「scikit-learnとTensorFlowによる実践機械学習」 P. 292)おり、その一般開放されている学習(Pretraining)済の機械学習モデルの集合を「Model Zoo」と呼びます。ここではいくつかのModel Zooを紹介していきたいと思います。

  1. TensorFlow Hub(図1)
     機械学習のライブラリであるTensorFlowの学習済モデルが集められています。どのような学習済モデルがあるかというと、画像分類(image classification)、物体検出(object detection)、自然言語処理(BERT)、動作認識(action recognition)などに関するモデルがあります。ライセンスはApache License Version 2.0が多いようです(モデルの各ページでご確認ください)。

    f:id:kdx_writer:20200831152012j:plain

    【図1】TensorFlow Hub
     以下の図3は、そのうちの1つの学習済モデル(ssd_mobilenet_v2/fpnlite_640x640)を使用して、物体検出(object detection)を行なった結果です(元の画像は図2です)。

    f:id:kdx_writer:20200831152118j:plain

    【図2】物体検出の元の画像

    f:id:kdx_writer:20200831152145p:plain

    【図3】物体検出の結果

  2. PyTorch Hub(図4)
     機械学習のライブラリであるPyTorchのためのModel Zooです。画像分類、物体検出、翻訳、自然言語処理(BERT)、イメージ生成などに関するモデルがあります。ライセンスはモデルごとに設定されており、BSD 3-Clause "New" or "Revised" licenseMIT LicenseApache License Version 2.0などです。

    f:id:kdx_writer:20200831152248j:plain

    【図4】PyTorch Hub

  3. OpenVINO
     OpenVINO はIntel Corporationが開発・提供している主に画像(Computer Vision)にフォーカスしたディープラーニングのツールキットです。OpenVINOのModel Zooには、以下のような学習済モデルが含まれています(パブリックモデルは省略しています) 。

    • 年齢・性別認識
    • テキスト(文字列)検出
    • 画像の高解像度化
    • 顔検出
    • 人物検出
    • 自動車の特徴検出

     ライセンスはGitHub (Model ZooToolkit)にあるコードはApache License Version 2.0となっていますが、ツールキットをダウンロードしてインストールする場合には、ユーザ登録と「Intel End User License Agreement」に同意することが必要になっています。

     以下の図6は、そのうちの1つの学習済モデル(text-spotting-0002)を使用して、テキスト(文字列)検出(Text Spotting)を行なった結果です。(元の画像は図5です。)

    f:id:kdx_writer:20200831152646j:plain

    【図5】テキスト(文字列)検出の元の画像

    f:id:kdx_writer:20200831152700j:plain

    【図6】テキスト(文字列)検出の結果

  4. YOLO
     YOLOはリアルタイムの物体検出システムです。Darknetというフレームワークが使用されていて、その学習済モデルとしてYOLOv3やTiny YOLOv3が提供されています。この映像のように物体が枠で囲まれ、それが何であるかを表すラベルが付加されます。なお、YOLOv4もあります。ライセンスはYOLO LICENSEとなります。

  5. Detectron2

     Detectron2はFacebook AI Research (FAIR)によって開発されている物体検出とセグメンテーションのためのプラットフォームです。Detectron2はPyTorchを利用しています。Detectron2にもModel Zooがあり、主に以下のような学習済モデルが含まれています。ライセンスはモデルに関してはCreative Commons Attribution-ShareAlike 3.0 licenseとなります。


    • 物体検出(Object Detection)
    • セグメンテーション(Instance SegmentationPanoptic Segmentation
    • 人物のKeypointの検出(Person Keypoint Detection)
      ※  Keypoint: 例えば、人体の肩、肘、手首、膝などの点
    • 都市空間(Cityscapes)のセグメンテーション

  6. GluonCV

     GluonCVは「Computer Vision(コンピュータによるデジタルの映像や画像の認識を扱う研究分野)における最先端のディープラーニングに関するアルゴリズムの実装を提供するツールキット」です。GluonCVは、ディープラーニングのライブラリであるApache MXNetを利用しています。GluonCVのModel Zooには主に以下のような学習済モデルが含まれています。デモについてはこちらから見ることができます。ライセンスはApache License Version 2.0となります。


    • 画像分類(Classification)
    • 物体検出(Object Detection)
    • セグメンテーション(Segmentation)
    • 姿勢推定(Pose Estimation)
    • 動作認識(Action Recognition)
    • 深度(距離)予測(Depth Prediction)

  7. パブリッククラウドサービス
     最近ではパブリッククラウドサービスのAIサービスを利用することも多いと思います。AWSではAmazon Rekognitionが提供されており物体検出・認識、シーンの認識、テキスト検出、顔検出と分析、有名人の認識、動線の検出などが可能になっています。また、Google CloudではVision APIVideo Intelligence APIが提供されており、事前定義されたラベルを使用した画像の分類、オブジェクトの検出、印刷テキストと手書き文字の検出、顔の検出、著名な場所(ランドマーク)と製品ロゴの識別、Celebrity Recognition(有名人の顔の特定)、動画の分類、オブジェクトの検出とトラッキング、テキスト検出と OCR による抽出などが可能になっています。また、AWS Marketplaceでは、学習済モデルを(有料で)購入することもできるようになっています。

     Amazon RekognitionはAPIを呼び出して利用しますが、AWSのコンソールからデモを試すこともできます。図8はAmazon Rekognitionによる「オブジェクトとシーンの検出」の例です。(元の画像は図7です。)

    f:id:kdx_writer:20200831152958j:plain

    【図7】Amazon Rekognitionによる「オブジェクトとシーンの検出」の元の画像

    f:id:kdx_writer:20200831153014j:plain

    【図8】Amazon Rekognitionによる「オブジェクトとシーンの検出」

    転移学習とファインチューニング

     既存の学習済モデルを利用する場合、自分たちの要件を満たさない場合があります。例えば、画像を分類する学習済モデルがあるとして、そのモデルが分類の対象としている画像以外の画像の分類を行ないたいというような場合です。

     その場合は既存の学習済モデルを利用して、転移学習やファインチューニングを行ない、利用します。転移学習とは「学習済みのネットワークを利用して新しいタスクの識別に活用すること」(書籍「深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト」 P. 166)であり、ファインチューニングとは「学習済みのモデルを使い、最後の方の層だけをタスクに合わせて学習し直す(微調整する)方法」(書籍「図解即戦力 機械学習・ディープラーニングのしくみと技術がこれ1冊でしっかりわかる教科書」 P.175)のことです。ただし、今回紹介した学習済モデルについてはファインチューニングが不可となっているモデルもあります。

     それではTensorflow Hubにある学習済モデルとAmazon SageMaker Notebooksを利用して具体的に転移学習を試してみたいと思います。(TensorFlowのチュートリアルと同様の手順で行ないます。ただし、モデルと画像データについては別のものを用います。一部のコードについては同じコードを用いています。)

     まず、必要なパッケージのインストールとインポートを行ないます(図9)。

    f:id:kdx_writer:20200831153214j:plain

    【図9】パッケージのインストールとインポート

     学習済モデルの「imagenet/inception_resnet_v2/classification」を利用して、水の入ったペットボトルの画像が分類できるか試します。学習済モデルのロードと画像の準備を行ないます(図10)。

    f:id:kdx_writer:20200831153254j:plain

    【図10】学習済モデルのロードと画像の準備

     水の入ったペットボトルの画像の分類を行ないます(図11)。「Water Bottle」と正しく分類されました。

    f:id:kdx_writer:20200831153340j:plain

    【図11】画像の分類

     次に同じモデルと「Rock Paper Scissors」のデータセット(Rock Paper Scissors Dataset - lmoroney@)を使って、分類を試してみます(図12)(このデータセットは「CC By 2.0」のライセンスに従い利用することができます)。「Rock Paper Scissors」はジャンケンのグー、チョキ、パーを表す人の手の画像を集めたデータセットです。使用している学習済モデルの学習用データには、人の手(hand)や「グー」、「チョキ」、「パー」のラベルが付けられたデータはないため、試行結果では「scale」や「Band Aid」、「vollyball」に分類されています。

    f:id:kdx_writer:20200831153426j:plain

    【図12】「Rock Paper Scissors」のデータセットの分類(転移学習なし)

     それでは転移学習を行ない、「グー」(Rock)、「チョキ」(Scissors)、「パー」(Paper)を分類できるようにします。さきほど利用したモデルの一番最後(top)の分類のための層を除いたヘッドレスモデル(Headless model)である「imagenet/inception_resnet_v2/feature_vector」を利用します。ヘッドレスモデルに「グー」、「チョキ」、「パー」の分類(3種類の分類)のための層を追加します(図13)。

    f:id:kdx_writer:20200831153519j:plain

    【図13】ヘッドレスモデルに分類層を追加

     ここで用いる学習のためのデータセットは「グー」、「チョキ」、「パー」各124枚、合計372枚であり、そのセットを2回(2エポック)繰り返し学習させ、転移学習を行ないます(図14)。1エポック当たり12ステップで、計24ステップの学習を行なっています。なお、データセットには他に(学習用データとして)各840枚、合計2520枚のデータもありますが、ここでは学習のためのデータが少ない場合を想定して試行しています。

    f:id:kdx_writer:20200831153558j:plain

    【図14】転移学習の実行

    ステップの実行にともなう損失(Loss)と精度(Accuracy)の推移は図15のようになりました。

    f:id:kdx_writer:20200831153635j:plain

    【図15】損失と精度の推移

     転移学習を行なったモデルを使って同じデータセットの別の33枚の画像を分類します。図16の画像が分類結果で、画像の上の文字列が緑になっているものが結果が合っているもので、赤のものが結果が間違っているものです。多少間違っているものもありますが、概ね合っているという結果になっています。

    f:id:kdx_writer:20200831153723j:plain

    【図16】「Rock Paper Scissors」のデータセットの分類(転移学習後)

    おわりに

     今回はModel Zooおよび学習済モデルを利用した転移学習について紹介しました。KADOKAWA ConnectedではAIを利用した取り組みを進めており(具体的な取り組み内容は後日別の記事でお伝えする予定です)、一緒にAIを利用した取り組みを推進してくれる仲間を募集しております。皆さんもKADOKAWA Connectedで一緒に働きませんか?こちらのページからご応募お待ちしております。AI人材は現時点で新規募集はしておりませんが、ご興味がある方がいればお手数ですがオープンポジションからご応募ください。

    ※ IntelおよびOpenVINOはIntel Corporationまたはその子会社の商標です。その他の会社名、製品名、サービス名は各社の登録商標または商標です。

     今回紹介したライブラリ、ツールキット、データセット等のライセンス(使用条件)については2020年8月時点での情報を掲載しております。ご利用になる場合は、最新のライセンス(使用条件)について念のためご確認ください。