20190406~0407 えひめAI・IoT研究会技術セミナー 備忘録

 2019年4月7日~4月8日で行われた、えひめAI・IoT研究会技術セミナーの個人メモです。主観的なコメントも混ざってます。

■Introduction
・ゲームのAIがなぜ人間に勝てるようになったのか。
 →AI vs AIで対戦回数を稼ぐ。
 ……現実世界では、データは人間が集めないといけない。

・”人工知能”と”機械学習”の意味、定義
 人工知能:機械による知的判断
 機械学習:機械が学習する仕組み

・機械学習はデータに基づく判断の仕組み
 学習:データを解析して知識、判断基準等を抽出
 判断:抽出した知識に基づき判断

・(従来の)機械学習での画像処理
 データをもとに判断のモデル構築
 計測データ(画像等)を特徴量に変換して機械学習に入力する必要あり。
 ……どの特徴量を使う? 人の特徴量設計能力に結果が依存
 →どの特徴をみるかが非常に重要
 →対象が複雑だと良いものができにくい

・深層学習での画像処理
 計測データ(画像など)から自動的に特徴量を求める機能がある。
 →学習用データが多いほど判断の精度が向上

・(将来的な)コンピュータによる医療支援
 ……誤り、見落とし軽減
・医療の自動化
 診断、治療に含まれるルーチンワークを自動化、一定水準の医療を提供
 →医師はレア、特殊な症例に集中
 →医師不足の解消

■機械学習を用いた医療支援紹介
・CT像
 体の断面を撮影した2次元画像……体内の臓器を観察可能
 0.5mm感覚で撮影可能。
 複数のCT像を用いて3次元の仮想的な人体を作成もできる。

・臓器自動識別
 画像から臓器領域を判断(セグメンテーション)
 診断支援、治療支援の前処理として重要
 ……CTだけでなく、様々な医用画像を対象
 (X線透視、MR、病理画像、内視鏡……etc)

・膵臓の自動識別
 CT像からの自動識別研究の推移
 2013……69.1%
 2018……89.7%
 →機械学習(DeapLearning)の導入による飛躍的な精度向上

・臓器識別後の用途
 それぞれの部位に自動で名称付与を実施
 血管構造のレポート自動作成
 手術ナビゲーション
 3Dプリンター造形への応用
 VRへの応用

・機械学習の精度向上にはデータが重要
 →何個くらいデータが必要?
  数十:機械学習以外
  数百:機械学習が有効
  数千:機械学習(特にDL)が有効
  数万:DL大活躍
 →いかに大量のデータを集めるか→地域、学会規模のデータ整備
 ……施設単位のデータでは不十分。データ取得、撮影条件の統一

・機械学習の持つ課題
 ①大量データ収集の困難さ、正解データ作成の労力
 →個人でのデータ収集には限界が 

 ②ブラックボックス的判断……DLは判断基準がわかりにくい。
 →判断理由を明らかにする研究が進行中。

■深層学習の応用例
〇魚の選別作業支援(近畿大学)
 目的:真鯛の稚魚選別作業では稚魚を吸い上げるポンプ流量調整が必要
 →選別作業に適してスピードで吸い上げる必要あり
 AIが流量自動制御し、稚魚数を一定に保つ

〇魚の行動把握
 目的:魚の養殖における個体数把握、死亡原因解析
 方法:NNでビデオから個体数計測と異常行動解析

〇森林構造把握
 目的:林業での木台流通コスト推定
 →森林資源管理のため森林の状態をモニタリング
 方法:CNNで航空写真から森林構造を推定

〇りんご自動収穫のための技術
 目的:人件費削減のため果樹収穫の自動化
 →果樹収穫機(Shake and catch)での収穫
 木や枝にアームを当てる操作は手動→自動化したい
 方法:カメラ画像と距離画像で果樹を撮影
    →CNNで画像から木を自動検出

〇化合物の性質推定
 目的:CO2を効率よく吸収する材料作成
 ……実際に化合物生成し性質を確認するには時間を要する
 方法:CNNで合成前の物質から化合物の性質推定

〇遺伝子解析
 目的:遺伝情報と発生する生物学的機能の推定
 方法:CNNで遺伝子塩基配列から生物に発現する性質・機能を推定

〇花粉飛散量推定
 目的:花粉飛散量と花粉患者発生の関係解明
 方法:Twitterの花粉症話題度、花粉飛散量、患者数の関係調査
    →SNSを花粉症発生の地域分布解析に利用

☆深層学習は因果関係にある2つのデータ間の関係を確立するもの
→従来は人が発見した数理モデルなどで関係確率
深層学習はデータに基づき関係確立(多層パーセプトロン)

★コメント
データ数については、画像だと同じものを複数取ると一つのサンプルからとっていることになり、精度が上がりづらい
どのモデルが有効か……トライアンドエラー

■深層学習の仕組みと行えること

〇深層学習で行えること
 画像処理で深層学習が広く活躍
 ネットワーク構造ごとに得意な対象あり

〇ネットワークの種類
・単純パーセプトロン
 ニューラルネットワークを構成する基本要素
 →入力から重み付きの和を計算し出力
 →ニューロンから簡単な判断を行うことが可能

・多層パーセプトロン
 単純パーセプトロンを直列につなぐ

・(階層型)Neural Network(NN)
 入力は特徴量、出力はクラス番号や連続値
 隠れ層が1層以上ある。
 →ニューラルネットワークの動きを観察(http://playground.tensorflow.org/)

・Convolutional Neural Network(CNN)
 畳み込み層と全結合層の組み合わせ。
 
 全結合層(NN):特徴の分類、回帰
 入力は画像、出力はクラス番号や連続値

・畳み込み演算(層)(Convolution)
 画像処理に非常に有効な層。
 画像の性質を考慮したネットワーク構造
 →画像の性質は局所的に存在:互いに近い画素は相関する情報を表現
 連続適用して、画像からの高次特徴量抽出
 →意味のある特徴がどんどん圧縮されていくイメージ。
 特徴量算出に係る領域の(段階的な)拡大

・CNN使用例
 手書き数字の分類、病変検出
 CT画像から小画像(パッチ)を切り出し、CNNで病変or正常かを判断

・Fully Convolutional Network(FCN)
 全層(主に)畳み込み層で形成
 ・使用例
  低解像度画像から高解像度画像を推定
  2Dセグメンテーション:
  X線画像から臓器ラベル画像を推定
 

・U-net:医用画像からのセグメンテーションに有効
 2D[Ronneberger15]、3D[Cicek16]で報告されている
 特徴量抽出前の情報を特徴量抽出後の画像に適用

・Recurrent Neural Network(RNN)
 再帰的なネットワーク接続を使用。時系列データによく使用される。
 入力:画像や特徴量
 出力:クラス番号や連続値
 使用例:術中の腹腔鏡動画を入力し、手術残り時間を推定

 適用対象:ビデオ、時系列画像への適用
 RNNの入力系列の長さ
  -系列長が長い場合注意
  -RNNは高々10系列まで
  -LSTMで更に長い系列を扱える(100系列程度)

・深層学習のタスク分類
 分類:画像を2クラス~多クラス分類
 回帰:画像から関連する連続値を推定
 画像回帰:画像から別の画像を推定
 その他:画像観レジストレーション、特徴量抽出、異種情報の統合利用 
    (画像とテキストなど)

・深層学習による研究の発展
 画像、テキスト、音声、その他様々な計測データ→必要な情報
 ★領域横断的な研究がやりやすい
 →結果に貢献するデータをぶち込めば期待する動きをしやすい

 従来より容易にデータ間を結びつき確立
 発想を広げ、何と何を結びつけて意味ある情報を得るかを考える。

■ハンズオン
 mnitstデータを読み込むための変換
 28*28の画素値を1次元配列に格納
 →1次元配列を画像数分並べた2次元配列を作成

 ネットワークを学習する際、重みが更新されるが、
 重みの初期値には乱数が入力される
 →Pythonは初期乱数の発生系列を固定する関数があるので、
    それを使えばある程度再現性を担保できる

・ネットワークによる違い
 浅いネットワーク→誤りが多い
 ……画像から高次特徴量を算出できていない? 
 個人間のバリエーションを捉えられていない?
 →ネットワークを深くしたら……表現力の向上、計算量の増大

・GPUを使用するためのWindows環境セットアップ
 一つの環境にCPU用のTensorflowとGPUのTensorflowを混在させないほうが良い(挙動がおかしくなる可能性あり)

■深層学習用のソフトウェア
 注意:クラウド版はデータが2次利用されないか確認
 Pythonの利用は深層学習を行う上で避けて通れない
 今後:動的ネットワークなど新たな方式への対応
  -画像以外のデータを直接的に扱う方法が広まるか
  -形状データ、大域構造データ

■深層学習用のハードウェア
・深層学習には特別な装置不要
→普通のPCでOK。ただし2Dや3Dの画像を使う場合長時間必要
(数日以上かかることも)
・高並列処理が可能なGPU利用で学習を高速実行可能
 -CPUと比較して10~倍ほど高速になる場合あり
 -深層学習ではNVIDIAのGPU利用がメジャー

★導入形態
・GPUを購入して既存PCに装着
 -安価に実施可能
・深層学習用に組まれたPCを購入
 -複数GPU搭載PCなどを選択可能
 -サーバ、クライアント的利用に良い
・深層学習クラウドサービス利用
 -出費を抑えつつ高性能GPUを利用可能。
 -大学、国立研究機関の計算機センター、企業がサービス提供
・アップロードしたデータを2次利用されないか要確認

★GPU……メモリの重要性
・GPUメモリ量と学習結果の関連性
 -3D処理には多くのメモリが必要
・深層学習とGPUメモリの関係
 -学習時に局所解に落ちるのを防ぐのに、ミニバッチ(複数データの集合)単位でパラメータ更新
 -ミニバッチサイズがある程度大きいほうが良い学習結果が得られやすい
 -ミニバッチサイズに応じてGPUメモリ必要
  ・100枚(32*32Pix)で9GB、1000枚で17GB
  ※画像データだけでなく、ネットワークも格納するため、それも考慮
・GPUメモリと学習結果
 -GPUメモリが多いほどミニバッチサイズ選択自由度が向上し学習結果に結びつく

★かかるお金(設備費用)
 0円:手持ちのPCで実施
 10万台:RTX2080
 30万台:Quadro RTX5000/P5000-メモリ16GB
 70万台:Quadro RTX6000/P6000-メモリ24GB
 80万台:NVIDIA Quadro RTX8000-メモリ48GB……3Dで処理も
 150万台:NVIDIA Tesla V100/Quadro GV100
 
 その他
  -深層学習用PCを購入するプラン(100万~数千万)
  -クラウドサービスを利用して従量課金


■最近の深層学習の応用例(株式会社ディースピリットの応用例紹介)
①美joyon診断システム

 学習用データ通算1500名を超える
 システム価格150万。現在7セット販売済み

 いちゃもんはつけようと思えばいくらでも付けられる。
 →協力的な顧客と一緒に仕事。AIの特徴に理解いただく。

 ・いちゃもん例
 Kinectがベストなの?他ので測ったほうがいいんじゃ?
 →もっと良いデバイスはあるが、費用対効果を考えてKinectに

 ・AIと顧客印象
 AIによってただ結果を押し付けるのでなく、過程を丁寧に見せる
 →納得度を上げるための理由付け。
 上記に加え、美容師さんによる補足、中身の説明。
 →AIによって美容師さんの説明の説得力を向上させる
 →AIの絶対判断でなく、美容師さんの仕事をしやすくする

 ★必ずしもDLで良い結果が得られるとは限らない。
 →システムはNNで構築

②高齢者転倒検知システム
 仙台市の福祉施設業者と協力(宮城県ものづくり補助金の交付)
 ウェアラブルデバイスを用いた取り組み
  →利用者(患者)が取り付けを嫌がる、電池がすぐ切れる
  →AIでの転倒検知取り組みに着手
  ラズパイ、NVIDIAのボード等いくつものハードで実装を試みた

 ・システム構成
  ①人体特徴点抽出(30s撮影)
  ②特徴データを時系列データに変換(30s間)
  ③AI(LSTM)へデータ入力
  ④分析結果の出力(通常、転倒)

■深層学習の応用例の実現方法を推測してみる
・魚の選別作業
 AIによる流量調節
  -画像(ポンプ吸入口付近の画像)からポンプ強度を推定
  -CNNで実現可能
  -学習データとして画像とベテランのポンプ調節を記録する

・魚の行動把握
  個体数計測
   -画像(水中画像の一部)から魚が写っている尤度推定
   -CNNで実現可能
   -学習データとして画像から魚部分を切り出したものを多数用意する
  ソナー画像カラー化
   -対応のないデータペアから学習可能なGAN使用

・森林構造把握
 画像(航空写真)から画像(樹種写真)の推定
  -U-NetなどのFCNで実現可能
  -学習データとして航空写真と正解樹種画像のペアを用意

■質疑応答
Q:NNやDNNの根拠とは
A:謎。NNですべてを表現可能(3層)
いろんなデータが与えられて、それに対してどのネットワークが適切なのかは事前判別難しい。
→実際にいろいろ試してみないと結果はわからない。