卒業論文
デ ィ ー プ ラ ー ニ ン グ 顔 画 像 解 析 基 盤 シ ス テ ム
の 試 作 と 評 価 実 験
提出者
田坂征也
提出年 月日
平成 31 年 1 月 25 日
指導教 員
金子邦彦 教授
デ ィ ー プ ラ ー ニ ン グ 顔 画 像 解 析 基 盤 シ ス テ ム
の 試 作 と 評 価 実 験
情 報 工 学 科 田 坂 征 也研 究 概 要
近 年 の 事 故 の 中 で 多 い のはハ ンド ル操 作 を 誤 っ た ,ブ レーキ とアク セル を踏 み間 違 えた などの運 転 操 作 ミスや,脇 見 運 転 や同 乗 者 とのおしゃべり, 居 眠 り,単 にボーッとしていたなどの漫 然 運 転 が原 因 としてあがり,この 3 つ は全 てヒ ューマンエラ ーによって起 こされるものである .このよう なヒューマンエ ラ ーによ る事 故 を 防 ぐべく さまざ まな安 全 装 置 がある中 , 私 は運 転 者 本 人 を 注 目 するシステムを目 標 とした.目 次
1. ま え が き ... 1 2. 既 存 技 術 お よ び ラ イ ブ ラ リ ... 1 2.1 Chocolatey ... 1 2.2 Anaconda ... 1 2.3 ezgiakcora/Facial -Expression ... 2 2.4 ipazc/MTCNN ... 2 2.5 mpatacchiola/DeepGaze ... 2 3. 顔 画 像 解 析 基 盤 シ ス テ ム の セ ッ ト ア ッ プ ... 3 3.1 Chocolatey のインストール ... 3 3.2 Anaconda,Python2 のインストール ... 3 3.3 Anaconda における隔 離 された Python 環 境 の作 成 ... 4Microsoft Build Tools for Visual Studio 2017 のインストール ... 5 Dlib のインストール方 法 ... 5 3.4 ezgiakcora/Facial -Expression-Keras のインストール方 法 ... 6 3.5 ipazc/MTCNN のインストール方 法 ... 6 3.6 mpatacchiola/DeepGaze のインストール方 法 ... 6 4. 実 験 ... 6 4.1 表 情 認 識 の実 験 概 要 ... 7 4.2 表 情 認 識 の実 験 結 果 ... 7 4.3 顔 検 知 の実 験 概 要 ... 7 4.4 顔 検 知 の実 験 結 果 ... 7 4.5 肌 色 抽 出 の実 験 概 要 ... 10 4.6 肌 色 抽 出 の実 験 結 果 ... 10 5. 試 し て み た が う ま く い か な か っ た も の ... 11 6. む す び ... 11
- 1 -
1. ま え が き
近 年 の 交 通 事 故 の 中 で多 いのはハンド ル操 作 を誤 り や,ブレーキとアクセ ルを踏 み間 違 えたなどの運 転 操 作 ミスや, 脇 見 運 転 や同 乗 者 とのおしゃべり や,居 眠 りや,単 にボーッとしていたなどの漫 然 運 転 である.これらは全 てヒュ ーマンエラ ー である. この よ う なヒ ューマンエラ ーの事 故 を 防 ぐべく, 車 載 セ ン シ ン グ 機 器 に よ り , 生 体 反 応 や ヒ ヤ リ ・ ハ ッ ト な ど を 検 出 し , 検 出 し た 情 報 は 管 理 者 へ 通 知 さ れ る と い っ た シ ス テ ム が す で に 多 数 存 在 し て い る . ま た , 運 転 者 本 人 を 注 目 した システムの他 に, 車 載 の さまざまな安 全 システムが搭 載 さ れ て い る . 最 新 の 乗 用 自 動 車 で は , ア ン チ ロ ッ ク ブ レ ー キ 装 置 , 横 滑 り 防 止 装 置 , エ ア バ ッ グ 装 置 な ど の 安 全 装 備 が 標 準 化 さ れ て い る . ま た 近 年 で は , 前 方 を 走 る 自 動 車 と の 追 突 事 故 を 予 想 し て 防 ぐ シ ス テ ム が 多 く の 車 種 に設 定 されるようになっている.また,並 列 する車 両 があるときに アラームで知 らせ,不 意 のレーンチェンジを抑 止 する装 置 もある. 本 論 文 では,カメラ付 きのコンピュータとディープラーニング基 盤 Keras を 使 った,人 工 知 能 カメラ(AI カメラ)の試 作 と評 価 実 験 について報 告 する.本 論 文 で 示 す 人 工 知 能 カ メ ラ に つ い て , 種 々 の 実 験 の 取 り 組 み を 重 ね た . 将 来 は , 運 転 者 本 人 の 顔 色 や そ の 他 顔 の 変 化 を 読 み 取 る こ と が で き る デ ィ ー プ ラ ーニ ン グ 顔 画 像 解 析 に 役 立 つ 可 能 性 が あ る 基 盤 シ ス テ ム で あ る . 事 故 を未 然 に防 ぐという社 会 的 意 義 がある.2. 既 存 技 術 お よ び ラ イ ブ ラ リ
2.1 Chocolatey Chocolatey と は , パ ッ ケ ー ジ マ ネ ー ジ ャ ー と い う も の の 1 つ で あ る . Chocolatey は,Windows オペレーティングシステムで動 く.その機 能 には, パッケージの検 索 ,インストール,アップデート,バージョンを指 定 してのインス トールなどがある. 2.2 AnacondaAnaconda は,Continuum Analytics 社 が提 供 している Python バー ジョン 3 の言 語 処 理 系 ,開 発 環 境 やツール,管 理 ツールである conda,その 他 Python の主 要 なパッケージを 1 つにまとめたソフトウェアである.次 のア プリケーションも同 封 されている.
- 2 -
R , Lua , LuaJIT , Haskel , Scala , Go , JavaScript , node.js , bash などに対 応 している. qtconsole:対 話 型 の実 行 環 境 である.コンソール機 能 ,グラフ 描 画 機 能 がある. spyder:Python 用 の学 習 向 けに開 発 さ れた 統 合 開 発 環 境 である . エディ タ ,デバ ッガ , 対 話 型 実 行 環 境 な ど,便 利 なツ ールが セットにな っ ている .Python プログラムを書 くと,構 文 を見 やすく色 をつけたり, プ ロ グ ラ ムを 記 述 す る と き に 便 利 な 機 能 が つ い て い る だ け で な く , プ ロ グ ラ ム を 途 中 で 止 め て 変 数 の 一 覧 を 確 認 で き る ブ レ ー ク ポ イ ン ト 機 能 などのプログラム開 発 に便 利 な機 能 がある. 2.3 ezgiakcora/Facial-Expression ezgiakcoro/Facial-Expression-Keras は,GitHub にて公 開 されている プログラムである.これは顔 検 知 ・顔 識 別 のライブラリである Dlib を使 った表 情 認 識 プ ロ グラ ムで , ディ ープ ラ ーニ ングを 使 用 し て 映 像 か ら 表 情 を 認 識 す ることができる.各 フレーム内 の顔 を検 出 してから,表 現 を 7 つのクラスのうち の 1 つ に 分 類 を す る . そ の 7 つ は , Angry( 怒 り ) , Disgusted( 嫌 悪 ) , Neutral(中 間 ),Sad(悲 しい),Happy(幸 せ),Surprised(驚 く),Fear(恐 怖)である. 2.4 ipazc/MTCNN ipazc/MTCNN は , GitHub に て 公 開 さ れ て い る プ ロ グ ラ ム で あ る . Python3.4 以 降 で動 く,TensorFlow を用 いた顔 検 出 ソフトウェアである. 2.5 mpatacchiola/DeepGaze mpatacchiola/DeepGaze は,GitHub にて公 開 されているプログラムであ る .ヒ ュ ー マ ン コ ン ピ ュ ータ イ ン タ ラ ク ショ ン , 人 物 検 出 , およ び 顔 検 出 , 頭 部 姿 勢 推 定 およ び 分 類 の た め の ラ イ ブ ラ リ で あ り , 畳 み 込 み ニ ュ ーラ ル ネ ッ トワ ー ク(CNN)を 用 いている.人 の 注 視 点 に 関 す る情 報 ( 注 意 を 向 けている方 向 で も あ る ) は , 頭 の 向 き を 見 つ け る こ と に よ っ て 推 定 で き る . 目 の 情 報 を 直 接 利 用 しないことは,サングラスなど, 目 が 何 かで覆 われているとき,またはユ ーザーがカメラから 離 れす ぎて目 の領 域 を 適 切 な解 像 度 でつか むことができ な い と き に 役 立 つ . な お , 虹 彩 が 画 像 と し て 取 得 で き る と き は , 眼 球 の 注 視 方 向 を推 定 することが可 能 である. DeepGaze には以 下 の便 利 なパッケージが含 まれている.
- 3 - 頭 部 姿 勢 推 定 (Perspective-n-Point) 顔 検 出 (Haar Cascades) 肌 と色 の検 出 (範 囲 検 出 ,逆 投 影 ) ヒストグラムに基 づく分 類 (ヒストグラム交 差 法 ) 動 き検 出 (フレーム差 分 ,MOG,MOG2) モーショントラッキング(Particle filter) 顕 著 性 マップ(FASA)
3. 顔 画 像 解 析 基 盤 シ ス テ ム の セ ッ ト ア ッ プ
3.1 Chocola tey の イ ン ス ト ー ル Chocolatey の Web ページの記 載 の手 順 に従 う.① Web ブラウザで,下 記 の URL の Chocolatey の Web ページを開 く.
https://chocolatey.org/
② 「 Install Chocolatey Now 」 を ク リ ッ ク す る . 移 動 し た ペ ー ジ に て , 「Install with cmd.exe」のコマンドをコピー.
③ Windows のコマンドプロントを管 理 者 として実 行 した後 に ,先 ほどコピ ーしたコマンドを 実 行 .
Chocolatey を用 いて,git,cmake,wget,7zip をインストールするため に,Windows のコマンドプロントを管 理 者 として実 行 し,下 記 のコマンドを実 行 .
choco install -y git cmake.install wget 7zip 3.2 Anaconda,Python2 の イ ン ス ト ー ル
① Anaconda,Python2 をインストールしたいので Windows のコマンド プロントを管 理 者 として実 行 し, 下 記 のコマンドを実 行 .
choco install -y anaconda3 python2
② Anaconda の conda-forge のチャンネルを削 除 するために下 記 のコ マンド を 実 行 .エラ ー メ ッセ ージ が出 る こ と も あ るが , この とき の エラ ーメ ッセージは無 視 して良 い.
C:¥tools¥Anaconda3¥Scripts¥conda config –remove chanenls conda-forge
③ Anaconda の conda パッケージを更 新 したいので,下 記 のコマンドを 実 行 .
- 4 -
y か n を尋 ねる質 問 が来 たときは,続 行 したいので「y」.
④ Anaconda の古 い conda パッケージファイルの削 除 するために下 記 のコマンドを実 行 .
C:¥tools¥Anaconda3¥Scripts¥conda clean --packages ⑤ Chocolatey でインストール済 みのパッケージを一 括 更 新 .
下 記 のコマンドを Windows コマンドプロントにて実 行 . choco upgrade -y all
⑥ 先 ほどインストールしたソフトウェア類 に関 する設 定 にて, Windows の システム環 境 変 数 Path の先 頭 部 分 の設 定 した.
3.3 Ana conda に お け る 隔 離 さ れ た Python 環 境 の 作 成 Anaconda を用 いて.必 要 なソフトウェアをインストールする. ① 今 から作 成 する Python 環 境 の名 前 と,Python のバージョンを決 め ておく. Python 環 境 の名 前 :ai Python のバージョン:3 ② Windows のコマンドプロントを実 行 し,下 記 のコマンドを実 行 . conda reate -n ai python=3
これにより元 から の Python 環 境 と,新 規 作 成 された Python 環 境 (Python のバージョン 3,名 前 は ai)の共 存 ができた. 新 規 作 成 された Python 環 境 を使 いたいときには,Windows でコマ ンドプロントを実 行 し,下 記 の通 りに実 行 . active ai もとの Python 環 境 に戻 るときは「exit」. ③ Keras,TensorFlow,OpenCV,spyder のインストールをするために 下 記 のコマンドを実 行 .
conda install -y tensorflow keras spyder opencv
④ numpy , scipy , h5py , scikit-learn , scikit-image , matplottlib , seaborn , pandas , pillow , jupyter , pytest , docopt , pyyaml , cython のインストールするために下 記 のコマンドを実 行 .
conda install -y numpy scipy h5py learn scikit-image matplotlib seaborn pandas pillow
- 5 - ⑤ imutils を一 度 削 除 するために下 記 のコマンドを実 行 . mkdir c:¥pytools cd c:¥pytools rmdir ¥s ¥q imutils ⑥ imutils をインストールするために下 記 のコマンドを実 行 . cd c:¥pytools
git clone https://GitHub.com/jrosebr1/imutils
cd imutils
python setup.py build python setup.py install
Microsoft Build Tools for Vi sual Studio 2017 の イ ン ス ト ー ル ここでは,Chocolatey を用 いてインストールすることにしている.
① Windows SDK 10.1 と Microsoft Build Tools for Visual Studio 2017 をインストールするために Windows のコマンドプロントを管 理 者 として実 行 し,下 記 のコマンドを実 行 .
choco install -y windows-skd-10.1
choco install -y visualstudio2017-installer choco install -y Microsoft-build-tools
② C++について設 定 をしたいので,Visual Studio Installer を起 動 す る.
③ Visual Studio Build Tools 2017 の画 面 で「変 更 」をクリック. ④ 「Visual C++ Build Tools 」を選 び,右 下 の「変 更 」をクリック.
⑤ インストールが始 まるので待 つ.終 わると「インストール済 み」と表 示 され る. Dlib の イ ン ス ト ー ル 方 法 Dlib をインストールするために,Windos のコマンドプロントを管 理 者 として 実 行 し,Dlib Python パッケージをインストールするために下 記 のコマンドを 実 行 . cd c:¥pytools
git clone https://GitHub.com/davisking/dlib
cd dlib
- 6 - python setup.py install
3.4 ezgiakcora/Fa cial -Expression -Kera s の イ ン ス ト ー ル 方 法
① 節 2.3 にて説 明 した ezgiakcora/Facial-Expression-Keras をイン ストールするために,Windows コマンドプロントを管 理 者 として実 行 し, 下 記 のコマンドを実 行 .
cd c;¥pytools
git clone https://GitHub.com/ezgiakcora/Facial-Expression-Keras cd Facial-Expression-Keras ② 節 3.2.2 にてインストールした Dlib 関 連 のファイルをコピー. copy c:¥pytools¥dlib¥python_examples¥shape_predictor_ 68_face_landmarks.dat 3.5 ipazc/MTCNN の イ ン ス ト ー ル 方 法 節 2.4 にて説 明 した ipazc/MTCNN をインストールするために,Windows コマンドプロントを管 理 者 として実 行 し,下 記 のコマンドを実 行 . cd c:¥pytools
git clone https://GitHub.com/ipazc/mtcnn
cd mtcnn
python setup.py build python setup.py install
3.6 mpata cchiola/DeepGaze の イ ン ス ト ー ル 方 法
節 2.5 にて説 明 した mpatacchiola/Deepgaze をインストールするために, Windows コマンドプロントを管 理 者 として実 行 .
cd c:¥pytools
git clone https://GitHub.com/mpatacchiola/deepgaze
cd deepgaze
python setup.py build python setup.py install
4. 実 験
- 7 -
精 度 評 価 、顔 検 知 の 精 度 、 肌 色 部 分 の 抽 出 の 精 度 の 確 認 であ る.3 章 で 説 明 した顔 画 像 解 析 基 盤 システムを用 いて,評 価 実 験 を実 施 した.
4.1 表 情 認 識 の 実 験 概 要
実 験 は , 隔 離 し た Pyhon 環 境 を 有 効 に し , ezgiakcora/Facial-Expression-Keras 中 の「demo.py」を Windows のコマンドプロントにて実 行 し ,USB カメラを通 して,表 情 の変 化 をつけたり,複 数 人 いた場 合 ,どの 表 情 を認 識 するかを評 価 する. 4.2 表 情 認 識 の 実 験 結 果 図 1 では,顔 の表 情 で感 情 ごとに Windows のコマンドプロント上 にて% 表 記 さ れ て い る た め わ か り や す い が , 大 袈 裟 な 反 応 を し な い と 思 っ た 通 り の 感 情 と い う 結 果 に な ら な い こ と が 確 認 で き た . コ マ ン ド プ ロ ン ト に て 顔 の 表 情 によって,感 情 を 数 値 化 するのは複 数 顔 があった 場 合 ,先 に 顔 として認 識 さ れた方 が優 先 されるということが確 認 できた . 図 1 ezgiakcoro/Facial-Expression-Keras の表 情 認 識 の画 面 4.3 顔 検 知 の 実 験 概 要 実 験 は , 隔 離 し た Python 環 境 を 有 効 に し , そ の Python 環 境 に て spyder を起 動 し, USB カメラを通 した映 像 や,研 究 室 の人 が各 自 スマホ で自 分 の顔 を自 撮 りした動 画 を使 い ,ipazc/MTCNN を実 行 した. 4.4 顔 検 知 の 実 験 結 果 図 2 では,ちゃんと顔 検 知 されているが,図 3 においては顔 を検 知 してい ると共 に,後 ろにあるマウスまで顔 として検 知 し てしまうことが確 認 できた.
- 8 -
図 2 自 撮 りした動 画 を顔 検 知 した画 像 1
- 9 -
図 4 と図 5 を比 較 すると,顔 の上 に手 を持 ってくると顔 検 知 が外 れること が確 認 できた.
図 4 自 撮 りした動 画 を顔 検 知 した画 像 2
- 10 - 4.5 肌 色 抽 出 の 実 験 概 要 実 験 は , 隔 離 し た Python 環 境 を 有 効 に し , そ の Python 環 境 に て Spyder を起 動 し,研 究 室 の人 が各 自 スマホで自 分 の顔 を自 撮 りした動 画 を 使 い,mpatacchiola/DeepGaze を実 行 した. 4.6 肌 色 抽 出 の 実 験 結 果 図 6 では,肌 色 部 分 の切 り出 しを行 っているが,一 部 光 の反 射 によって切 り出 しから 除 外 されていたり,コンピュータ ーには肌 色 と思 われる木 等 の部 分 が肌 色 として切 り出 されていることが確 認 できた. 図 6 自 撮 りした動 画 を肌 色 部 分 の抽 出 をした画 像 1
- 11 - 図 7 では,動 画 の画 質 が悪 いため,肌 色 の切 り出 し方 が粗 く,逆 光 の影 によって顔 の大 部 分 が肌 色 として抽 出 されないことが確 認 できた. 図 7 自 撮 りした動 画 を肌 色 部 分 の抽 出 した画 像 2
5. 試 し て み た が う ま く い か な か っ た も の
adithyaselve/face-expression-detect と は , ezgiakcora/Facial-Expression-Keras と似 たような表 情 認 識 をできるものだが,私 の環 境 にて 正 常 に動 作 しなかった.原 因 追 及 のため,さまざまのことを試 したが解 決 には 至 らなかった.原 因 を調 べ切 ることもできなかった.6. む す び
本 研 究 で は 既 存 の 技 術 を 重 視 し , コ ン ピ ュ ータ ー によ る 人 間 の 顔 の 表 情 の 読 み 取 り や , 顔 検 知 , 肌 色 部 分 の 抽 出 を 行 っ た . 人 工 知 能 カ メ ラ を 作 る 取 り 組 み の 上 で , 新 た な 課 題 を 発 見 す る こ と が で き た . ま た , 人 間 の 状 態 や 異 常 を コンピューターに読 み取 らせる上 で, 医 学 のような自 分 の専 攻 外 の分- 12 - 野 に 触 れるよ いきっか けとなった . 今 回 ,人 工 知 能 カメ ラ とし て必 要 だと判 断 したソフトウエア類 を Windows オペレーティングシステムで動 作 させる手 順 を まとめることができたこと,それらの検 証 もできたことも成 果 である.
謝 辞
本 研 究 の実 施 に あた り、卒 業 論 文 指 導 教 員 の 情 報 工 学 科 ・金 子 邦 彦 教 授 にご 指 導 を 賜 りまし た.金 子 邦 彦 研 究 室 の飯 塚 氏 , 井 上 氏 ,半 田 氏 には, 実 験 の協 力 , 研 究 室 や実 験 の場 での議 論 等 を 通 し て,知 識 や 示 唆 の提 供 をいただきました.ここに感 謝 の意 を表 します. 本 研 究 は科 研 費 (16K00163) の助 成 を受 けたものである.参 考 文 献
(1) Chocol at e y – The package m anager for windows https://chocolatey.org/
(2) Hom e – Anaconda
https://www.anaconda.com/
(3) GitHub - davi sking/ dlib: A toolkit for maki ng real world machine learning and data analysis applications in C++itHub - davisking/dlib: A toolkit for making real world machine learning and da ta analysis applications in C++
https://GitHub.com/davisking/dlib
(4) GitHub - ez gi akcora/ Facial -Expressi on -Keras : The ai m of this project is to recognize facial expression from a video streaming by using deep learning.
https://GitHub.com/ezgiakcora/Facial -Expression-Keras
(5) GitHub - i pazc/mt cnn: M TCNN face det ect ion impl em entation for TensorFlow, as a PIP package.
https://GitHub.com/ipazc/mtcnn
(6) GitHub mpat acchiola/deepgaz e: C omput er Vision l ibrar y for hum an -computer interaction. It implements Head Pose and Gaze Direction Estimation Using Convolutional Neural Networks, S kin Detection through Backprojection, Motion Detection and Tracking, Saliency Map. https://GitHub.com/mpatacchiola/DeepGaze