SlideShare a Scribd company logo
Webカメラ画像のリアルタイム識別
Inception v3を動かす
開発倶楽部
Hideki Tsujimoto (moto2g)
内容
 Webカメラから取り込んだ画像をInception v3で識別する。
 学習済みモデルを使うので、高性能GPUが無くても大丈夫。
サンプル あるある
 Pythonやライブラリのバージョンアップにより、この内容のままでは動
かないかも…。今回も参考にしたサンプルを修正する必要があった。
Inception v3とは
 Googleが開発した画像識別の学習済みモデル
 ものすごい量の画像を学習しており、識別精度が非常に高い
実行したときの環境
 Windows 10 Home
 Webカメラ (Logicool C270m)
 NVIDIA GTX1080Ti
 Python 3.6.5
 Tensorflow-GPU 1.11.0
 Keras 2.2.4
 Open CV 3.4.3.18 … Webカメラ画像の処理用
環境構築 CUDA(GPUを使う場合だけ)
 GPUのドライバ、CUDA、cuDNNをインストールしておく。
※ Tensorflowが対応しているCUDA、cuDNNのバージョンを調べて
おくこと。
Software requirements
https://www.tensorflow.org/install/gpu
環境構築 Pythonライブラリ
> pip install tensorflow-gpu ※GPUを使う場合はこっち
> pip install tensorflow ※GPUを使わない場合はこっち
> pip install keras
> pip install opencv-python
> pip install pillow ※Python 3.x系ではPILの代わりにPillowを使う
Inception v3のサンプルソース取得
以下をクローン
https://github.com/fchollet/deep-learning-models
※"inception_v3.py"さえあればOK
動作確認用に識別する画像を配置
 識別したい画像を"inception_v3.py"と同じフォルダに
“elephant.jpg”という名前で配置する。
 象じゃなくても何の画像でも良い。
サンプルプログラムが“elephant.jpg”を読み込むようになっているの
で、ひとまずそのままにしているだけ。
サンプルプログラムの修正
下記の環境ではプログラム修正が必要だった。
Keras==2.2.4
Keras-Applications==1.0.6
サンプルプログラムの修正
inception_v3.py 35行目あたり
from keras_applications.imagenet_utils import decode_predictions
※こっちは変えない
from keras_applications.imagenet_utils import _obtain_input_shape
サンプルプログラムの修正
inception_v3.py 157行目あたり
# Determine proper input shape
input_shape = _obtain_input_shape(
input_shape,
default_size=299,
min_size=139,
data_format=K.image_data_format(),
require_flatten=include_top)
Webカメラ無しで動作確認
> python inception_v3.py
下記のように識別した結果が表示される。
Predicted: [[('n02504458', 'African_elephant', 0.58458555),
('n01871265', 'tusker', 0.35385665), ('n02504013',
'Indian_elephant', 0.01978532), ('n02134084', 'ice_bear',
0.0005529468), ('n02437312', 'Arabian_camel', 0.0005336157)]]
以降、"inception_v3.py"を"inception_v3_with_cam.py"とい
う名前でコピーしてそちらを修正する。
学習済みモデルをローカルに保存
 元のサンプルプログラムはモデルを毎回ダウンロードしている。
予めダウンロードしたファイルを読み込むようにプログラムを修正する。
 “inception_v3_with_cam.py”と同じ場所に”models”フォルダ
を作成し、下記からダウンロードしたものをその中に配置する。
https://github.com/fchollet/deep-learning-
models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels.h5
https://github.com/fchollet/deep-learning-
models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5
https://s3.amazonaws.com/deep-learning-models/image-models/imagenet_class_index.json
学習済みモデルをローカルに保存
 kerasのget_fileにmd5_hashを渡すと、モデルがキャッシュされて
いてもダウンロードしてチェックする。md5_hashを渡さなくする。
inception_v3_with_cam.py 378行目あたり、384行目あたり
if include_top:
weights_path = get_file(
'inception_v3_weights_tf_dim_ordering_tf_kernels.h5',
WEIGHTS_PATH,
cache_subdir='models',
md5_hash=None)
else:
weights_path = get_file(
'inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5',
WEIGHTS_PATH_NO_TOP,
cache_subdir='models',
md5_hash=None)
Webカメラの画像を読み込むように修正
 import cv2
 inception_v3.pyのmainをガッツリ変える。
スライドでは書ききれないので以下の内容を参照
https://github.com/moto2g/image_recognition
Webカメラ対応版の動作確認
> python inception_v3_with_cam.py
カメラ画像上に、最も可能性の高い識別結果とパーセンテージを表示する。
カメラ画像のウインドウをアクティブにして"q"キーで終了。
おつかれさまでした

More Related Content

PDF
Chainer でのプロファイリングをちょっと楽にする話
PDF
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)
PDF
2015年度GPGPU実践基礎工学 第3回 GPUクラスタ上でのプログラミング(CUDA)
PDF
1076: CUDAデバッグ・プロファイリング入門
PDF
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
PDF
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
PDF
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
PDF
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
Chainer でのプロファイリングをちょっと楽にする話
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)
2015年度GPGPU実践基礎工学 第3回 GPUクラスタ上でのプログラミング(CUDA)
1076: CUDAデバッグ・プロファイリング入門
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術

What's hot (20)

PDF
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
PDF
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
PDF
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
PDF
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
PDF
EnrootとPyxisで快適コンテナ生活
PDF
2015年度GPGPU実践基礎工学 第10回 GPUのプログラム構造
PDF
2015年度GPGPU実践基礎工学 第11回 GPUでの並列 プログラミング(ベクトル和)
PPTX
組込みAndroid入門実習
PDF
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ
PDF
2015年度GPGPU実践プログラミング 第1回 GPGPUの歴史と応用例
PDF
Blueqat SDKハンズオン
PDF
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
PDF
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層
PDF
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
PDF
ディープラーニングによるラーメン二郎全店舗識別と生成
PDF
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
PDF
Jubatus 新機能ハイライト
PDF
GPGPU Seminar (GPGPU and CUDA Fortran)
PDF
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
EnrootとPyxisで快適コンテナ生活
2015年度GPGPU実践基礎工学 第10回 GPUのプログラム構造
2015年度GPGPU実践基礎工学 第11回 GPUでの並列 プログラミング(ベクトル和)
組込みAndroid入門実習
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ
2015年度GPGPU実践プログラミング 第1回 GPGPUの歴史と応用例
Blueqat SDKハンズオン
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
2015年度GPGPU実践基礎工学 第13回 GPUのメモリ階層
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
ディープラーニングによるラーメン二郎全店舗識別と生成
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
Jubatus 新機能ハイライト
GPGPU Seminar (GPGPU and CUDA Fortran)
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
Ad

Similar to Webカメラ画像のリアルタイム識別 / Web Cam Image Recognition with Inception V3 (20)

PPTX
AWSとGPUインスタンスのご紹介
PDF
Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)
PDF
1010: エヌビディア GPU が加速するディープラーニング
PDF
20161122 gpu deep_learningcommunity#02
PDF
ICCV19読み会 "Learning Single Camera Depth Estimation using Dual-Pixels"
PDF
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
PPTX
機械学習 / Deep Learning 大全 (5) Tool編
PDF
JSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワーク
PPTX
Gruntでjava script前作業の自動化!
PDF
GPU と PYTHON と、それから最近の NVIDIA
PDF
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
PDF
Neural Network Console delta_tokyo_#3
PDF
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
PDF
Singularity Containers for Enterprise Use
PPTX
Azure Antenna AI 概要
PDF
Adobe Anywhere デモンストレーション
PDF
エヌビディアが加速するディープラーニング~進化するニューラルネットワークとその開発方法について~
PPTX
深層学習 環境構築 Azure
PDF
研究を加速するChainerファミリー
PDF
ディープラーニングイメージで構築する快適・高速な機械学習環境
AWSとGPUインスタンスのご紹介
Google Meet でもバーチャル背景を使いたい (WebRTC Meetup Online)
1010: エヌビディア GPU が加速するディープラーニング
20161122 gpu deep_learningcommunity#02
ICCV19読み会 "Learning Single Camera Depth Estimation using Dual-Pixels"
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
機械学習 / Deep Learning 大全 (5) Tool編
JSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワーク
Gruntでjava script前作業の自動化!
GPU と PYTHON と、それから最近の NVIDIA
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
Neural Network Console delta_tokyo_#3
機械学習プロジェクトにおける Cloud AI Platform の使い方 (2018-11-19)
Singularity Containers for Enterprise Use
Azure Antenna AI 概要
Adobe Anywhere デモンストレーション
エヌビディアが加速するディープラーニング~進化するニューラルネットワークとその開発方法について~
深層学習 環境構築 Azure
研究を加速するChainerファミリー
ディープラーニングイメージで構築する快適・高速な機械学習環境
Ad

Webカメラ画像のリアルタイム識別 / Web Cam Image Recognition with Inception V3