Submit Search
Upload
オトナの画像認識 2018年3月21日実施
•
0 likes
•
1,097 views
Katsuhiro Morishita
Follow
オトナのプログラミング勉強会で実施した、ニューラルネットワークを利用した画像認識の資料です。kerasを利用したCNNの使い方について簡単に紹介しています。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 39
Download now
Download to read offline
Recommended
Pythonのパッケージ管理ツールの話@2020
Pythonのパッケージ管理ツールの話@2020
Katsuhiro Morishita
2020年5月23日のかごもくで発表させて頂いた、Pythonのバージョン管理ツールの話です。全然詳しくないのでpipとvenvの話しかしていませんが・・・。
探究工学(12)「あそびまなび論」
探究工学(12)「あそびまなび論」
Hirofumi Yamada
探究工学のまとめ資料です。
Maverick az. rev01ppt
Maverick az. rev01ppt
kazueda Kazueda
Androidの会浜松支部 第17回ミーティング LT
Twitter
Twitter
yyyyppp
オンラインイベントの勘所
オンラインイベントの勘所
VirtualTech Japan Inc./Begi.net Inc.
https://ospn.connpass.com/event/174832/
プロダクション環境でオンラインで機械学習を動かすにあたってツライ話 #MLCT
プロダクション環境でオンラインで機械学習を動かすにあたってツライ話 #MLCT
Tokoroten Nakayama
オフライン学習、オンライン予測ってジャンルが微妙に無いので、ツライことになるよ、という話。
Zoomで開くオンラインイベント入門 α版
Zoomで開くオンラインイベント入門 α版
VirtualTech Japan Inc./Begi.net Inc.
5月7日(木)に開催を予定しているセミナーの資料、まだ出来たてのα版です。
SpectatorViewで創る伝統 x MRアートの挑戦
SpectatorViewで創る伝統 x MRアートの挑戦
Akihiro Ueyama
Tokyo HoloLens ミートアップ vol.25 https://hololens.connpass.com/event/204946/ 「SpectatorViewで創る伝統 x MRアートの挑戦」
Recommended
Pythonのパッケージ管理ツールの話@2020
Pythonのパッケージ管理ツールの話@2020
Katsuhiro Morishita
2020年5月23日のかごもくで発表させて頂いた、Pythonのバージョン管理ツールの話です。全然詳しくないのでpipとvenvの話しかしていませんが・・・。
探究工学(12)「あそびまなび論」
探究工学(12)「あそびまなび論」
Hirofumi Yamada
探究工学のまとめ資料です。
Maverick az. rev01ppt
Maverick az. rev01ppt
kazueda Kazueda
Androidの会浜松支部 第17回ミーティング LT
Twitter
Twitter
yyyyppp
オンラインイベントの勘所
オンラインイベントの勘所
VirtualTech Japan Inc./Begi.net Inc.
https://ospn.connpass.com/event/174832/
プロダクション環境でオンラインで機械学習を動かすにあたってツライ話 #MLCT
プロダクション環境でオンラインで機械学習を動かすにあたってツライ話 #MLCT
Tokoroten Nakayama
オフライン学習、オンライン予測ってジャンルが微妙に無いので、ツライことになるよ、という話。
Zoomで開くオンラインイベント入門 α版
Zoomで開くオンラインイベント入門 α版
VirtualTech Japan Inc./Begi.net Inc.
5月7日(木)に開催を予定しているセミナーの資料、まだ出来たてのα版です。
SpectatorViewで創る伝統 x MRアートの挑戦
SpectatorViewで創る伝統 x MRアートの挑戦
Akihiro Ueyama
Tokyo HoloLens ミートアップ vol.25 https://hololens.connpass.com/event/204946/ 「SpectatorViewで創る伝統 x MRアートの挑戦」
数ページの卒業論文作成のためのwordの使い方
数ページの卒業論文作成のためのwordの使い方
Katsuhiro Morishita
卒論をwordで作ってもらう際に必要なテクニック等について、まとめてみました。
オトナのpandas勉強会(資料)
オトナのpandas勉強会(資料)
Katsuhiro Morishita
オトナのプログラミング勉強会2020年2月19日の「pandasの勉強会」で使ったスライド資料です。
SIgfox触ってみた in IoTLT in 熊本市 vol.3
SIgfox触ってみた in IoTLT in 熊本市 vol.3
Katsuhiro Morishita
マルツパーツさんで購入したSigfoxモジュールをArduino M0で制御した話をIoTLT 熊本市 vol.3でお話ししたときのスライドです。
Google Colaboratoryの使い方
Google Colaboratoryの使い方
Katsuhiro Morishita
Google Colaboratoryの使い方について、授業で使う範囲で必要なことを説明してみました。
Excelでのグラフの作成方法re
Excelでのグラフの作成方法re
Katsuhiro Morishita
Excelを使ったグラフの作成方法と、論文などへ掲載する上で必要となる編集機能の使い方を解説しました。 Excelの起動方法や、ヒストグラムの作成方法を追記しました。
Pythonのmain関数
Pythonのmain関数
Katsuhiro Morishita
Pythonのスクリプトにおけるmain関数とそれを動かすための条件分岐について解説しました。
Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018
Katsuhiro Morishita
Pythonで作ったプログラムファイルを実行する方法をまとめました。
機械学習と主成分分析
機械学習と主成分分析
Katsuhiro Morishita
機械学習における主成分分析について説明するとともに、実際のデータを用いた処理について説明しました。 2018-05-17 誤字修正のため、再アップ それまでのログ:view: 6934, like 4, download: 35
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Katsuhiro Morishita
2017年度の数値計算の授業で取り組んだ結果について、2018年4月のわんくま勉強会で報告した資料です。内容は採点の方法とか、学生の躓いた点とかです。 タイトルは、前年度にVBAを使ったことを考慮して決めました(笑) *リンクを更新したのでアップロードしなおしています。サービス変えようかなぁ。。。
マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04
Katsuhiro Morishita
マークシート試験を実施したので、そのマークシートを読み取って採点するプログラムをPythonで作ったお話です。 # これは2018-04-04に熊本市の未来会議室で開催されたオトナのプログラミング勉強会のLTで発表した資料に加筆したものです。
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
Katsuhiro Morishita
LoRa-WANを使った河川水位計測デバイスを作ったはなしです。省電力に広域のセンシングに向いています。
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、ニューラルネットワークを用いた識別(シングルラベル)の概要について説明しました。
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、ニューラルネットワークによる非線形回帰について説明しました。
シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、Kerasを使ったニューラルネットワークによる線形回帰問題について説明しました。
シリーズML-05 ニューラルネットワーク
シリーズML-05 ニューラルネットワーク
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、ニューラルネットワークについて説明しました。
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、ランダムフォレストによる識別の例を説明しました。
シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、機械学習の概要について説明しました。
Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策
Katsuhiro Morishita
Pythonの便利ライブラリの一つであるpandasを使っているうちに出てくる文字コード由来のエラーとその対策についてまとめました 。
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Katsuhiro Morishita
デジタル通信において誤り訂正に使われているビタビ符号をPythonで実装した報告です。*これは2017-07-05に熊本市の未来会議室で開催されたオトナのオブジェクト勉強会でのLT資料です。
機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017
Katsuhiro Morishita
鹿児島市で開催されたMobile conference 2017での発表資料です。テーマは機械学習です。仕事で機械学習を使ってみたいけど使ってはいないという人を対象にスライドを作ってみました。あとでちょっとだけ修正するかもしれません。
More Related Content
More from Katsuhiro Morishita
数ページの卒業論文作成のためのwordの使い方
数ページの卒業論文作成のためのwordの使い方
Katsuhiro Morishita
卒論をwordで作ってもらう際に必要なテクニック等について、まとめてみました。
オトナのpandas勉強会(資料)
オトナのpandas勉強会(資料)
Katsuhiro Morishita
オトナのプログラミング勉強会2020年2月19日の「pandasの勉強会」で使ったスライド資料です。
SIgfox触ってみた in IoTLT in 熊本市 vol.3
SIgfox触ってみた in IoTLT in 熊本市 vol.3
Katsuhiro Morishita
マルツパーツさんで購入したSigfoxモジュールをArduino M0で制御した話をIoTLT 熊本市 vol.3でお話ししたときのスライドです。
Google Colaboratoryの使い方
Google Colaboratoryの使い方
Katsuhiro Morishita
Google Colaboratoryの使い方について、授業で使う範囲で必要なことを説明してみました。
Excelでのグラフの作成方法re
Excelでのグラフの作成方法re
Katsuhiro Morishita
Excelを使ったグラフの作成方法と、論文などへ掲載する上で必要となる編集機能の使い方を解説しました。 Excelの起動方法や、ヒストグラムの作成方法を追記しました。
Pythonのmain関数
Pythonのmain関数
Katsuhiro Morishita
Pythonのスクリプトにおけるmain関数とそれを動かすための条件分岐について解説しました。
Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018
Katsuhiro Morishita
Pythonで作ったプログラムファイルを実行する方法をまとめました。
機械学習と主成分分析
機械学習と主成分分析
Katsuhiro Morishita
機械学習における主成分分析について説明するとともに、実際のデータを用いた処理について説明しました。 2018-05-17 誤字修正のため、再アップ それまでのログ:view: 6934, like 4, download: 35
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Katsuhiro Morishita
2017年度の数値計算の授業で取り組んだ結果について、2018年4月のわんくま勉強会で報告した資料です。内容は採点の方法とか、学生の躓いた点とかです。 タイトルは、前年度にVBAを使ったことを考慮して決めました(笑) *リンクを更新したのでアップロードしなおしています。サービス変えようかなぁ。。。
マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04
Katsuhiro Morishita
マークシート試験を実施したので、そのマークシートを読み取って採点するプログラムをPythonで作ったお話です。 # これは2018-04-04に熊本市の未来会議室で開催されたオトナのプログラミング勉強会のLTで発表した資料に加筆したものです。
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
Katsuhiro Morishita
LoRa-WANを使った河川水位計測デバイスを作ったはなしです。省電力に広域のセンシングに向いています。
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、ニューラルネットワークを用いた識別(シングルラベル)の概要について説明しました。
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、ニューラルネットワークによる非線形回帰について説明しました。
シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、Kerasを使ったニューラルネットワークによる線形回帰問題について説明しました。
シリーズML-05 ニューラルネットワーク
シリーズML-05 ニューラルネットワーク
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、ニューラルネットワークについて説明しました。
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、ランダムフォレストによる識別の例を説明しました。
シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要
Katsuhiro Morishita
機械学習シリーズスライドです。このスライドでは、機械学習の概要について説明しました。
Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策
Katsuhiro Morishita
Pythonの便利ライブラリの一つであるpandasを使っているうちに出てくる文字コード由来のエラーとその対策についてまとめました 。
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Katsuhiro Morishita
デジタル通信において誤り訂正に使われているビタビ符号をPythonで実装した報告です。*これは2017-07-05に熊本市の未来会議室で開催されたオトナのオブジェクト勉強会でのLT資料です。
機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017
Katsuhiro Morishita
鹿児島市で開催されたMobile conference 2017での発表資料です。テーマは機械学習です。仕事で機械学習を使ってみたいけど使ってはいないという人を対象にスライドを作ってみました。あとでちょっとだけ修正するかもしれません。
More from Katsuhiro Morishita
(20)
数ページの卒業論文作成のためのwordの使い方
数ページの卒業論文作成のためのwordの使い方
オトナのpandas勉強会(資料)
オトナのpandas勉強会(資料)
SIgfox触ってみた in IoTLT in 熊本市 vol.3
SIgfox触ってみた in IoTLT in 熊本市 vol.3
Google Colaboratoryの使い方
Google Colaboratoryの使い方
Excelでのグラフの作成方法re
Excelでのグラフの作成方法re
Pythonのmain関数
Pythonのmain関数
Pythonスクリプトの実行方法@2018
Pythonスクリプトの実行方法@2018
機械学習と主成分分析
機械学習と主成分分析
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
マークシート読み込みプログラムを作ってみた@2018-04-04
マークシート読み込みプログラムを作ってみた@2018-04-04
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
LoRa-WANで河川水位を計測してみた@IoTLT@熊本市 vol.001
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
シリーズML-08 ニューラルネットワークを用いた識別・分類ーシングルラベルー
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-07 ニューラルネットワークによる非線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-06 ニューラルネットワークによる線形回帰
シリーズML-05 ニューラルネットワーク
シリーズML-05 ニューラルネットワーク
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-03 ランダムフォレストによる自動識別
シリーズML-01 機械学習の概要
シリーズML-01 機械学習の概要
Pandas利用上のエラーとその対策
Pandas利用上のエラーとその対策
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
Pythonによる、デジタル通信のための ビタビ符号化・復号ライブラリの作成
機械学習(仮)in Mobile conference 2017
機械学習(仮)in Mobile conference 2017
オトナの画像認識 2018年3月21日実施
1.
ver. 1.2 2018-03-21 19:00-21:00
未来会議室 森下功啓 1 オトナの画像認識入門
2.
改訂履歴 • 2018-03-21 ver.
1.0 release • 2018-03-22 ver. 1.1 再開時の処理について追記 • 2018-04-14 ver. 1.2 リンクの修正 2
3.
自己紹介 リリースしてきたもの • 鳴き声から鳥の種類を当てるソフトウェア • https://github.com/KatsuhiroMorishita/birdsong_project •
阿蘇の雲海予報を行う「うんかいったー」 • https://twitter.com/unkaitter 3 名前 専門 趣味の一つ SNS Facebook https://www.facebook.com/katsuhiro.morishita Github https://github.com/KatsuhiroMorishita SlideShare https://www.slideshare.net/katsuhiromorishita/ 衛星測位やセンサー使う方 森下功啓 @KatsuhiroKU 機械学習
4.
今日のゴール 機械学習 AI IoT データ分析 4 「画像認識やれそうだわい」 ってとこまで行けたら良いな
5.
本日の目次 • 画像認識の概要 • 画像データと特徴量 •
畳み込みニューラルネットワーク • ImageDataGeneratorによる教師データの水増し • 学習 • callback 5
6.
画像認識の分類 6 画像認識 物体認識 シーン認識 クラス認識 インスタンス認識 認識結果: 「桜島」 類似画像検索・顔認証など 認識結果:「山」 認識結果: 「海辺を観光」 http://www.kagoshima-kankou.com/guide/11813/ *それぞれアプローチが異なる
7.
画像認識の分類 7 画像認識 物体認識 シーン認識 クラス認識 インスタンス認識 今日取り組む内容 http://www.kagoshima-kankou.com/guide/11813/ 認識結果: 「桜島」 類似画像検索・顔認証など *それぞれアプローチが異なる 認識結果:「山」 認識結果: 「海辺を観光」
8.
画像認識の概要 画像データと特徴量 畳み込みニューラルネットワーク ImageDataGeneratorによる教師データの水増し 学習 callback 8
9.
画像データの構造 • 画素(ピクセル)毎に色がある • 色は3原色(RGB)で合成される •
RGBはそれぞれの明るさを0-255で表現 • RGBの3色で1枚のカラー画像 • プログラムで読み込むと3次元配列になる 9 データの並び方には色々ある [[r1, g1, b1], [r2, g2, b2], … [[g1, b1, r1], [g2, b2, r2], … [[r1, r2, r3, …] , [g1, g2, g3, …], [b1, b2, b3, …]] http://neareal.net/index.php?ComputerGraphics%2FImageProcessing%2FTheStructureOfImageData 画像とプログラムによっては透 過率を表すαチャンネルがつい てくるので注意
10.
画像データの座標系とサイズ • 左上が原点 • 画像には、横W
pixel 縦H pixelの様に、サイズがある 10 http://neareal.net/index.php?ComputerGraphics%2FImageProcessing%2FTheStructureOfImageData
11.
画像の特徴量 • 輝度勾配を基に、SIFTなどの特徴量が提案されている • 画像マッチングにはSIFTなどを使う •
分類に有効な特徴量は自明ではない • 畳み込みニューラルネットワークは、畳込み層で特徴量を獲得する 11 輝度勾配の例 http://gori-naru.blogspot.jp/2012/11/hog.html 抽出されたSIFT特徴点の例 http://lang.sist.chukyo-u.ac.jp/classes/OpenCV/py_tutorials/py_feature2d/py_sift_intro/py_sift_intro.html
12.
画像認識の概要 画像データと特徴量 畳み込みニューラルネットワーク ImageDataGeneratorによる教師データの水増し 学習 callback 12
13.
ニューラルネットワーク • 神経細胞を模したユニットを層状に結合したもの • 前段ユニットの出力に結合係数を掛けたものが次の入力となる •
入力データに合わせた非線形写像を実現する • 画像認識や画像生成などに使われる 13 https://qph.fs.quoracdn.net/main-qimg-330e8b2941bc0164211bbdc7d5c693f3 ニューラルネットワークの例 入力 ベクトル𝒙 出力 ベクトル𝒚
14.
代表的な層の種類 • 前後のユニットの結合の仕方にバリエーションがある 14 全結合層 畳み込み層
プーリング層 ドロップアウト層
15.
畳み込みフィルタ(カーネル) • Photoshopなどで使うフィルタが畳み込みである • 平滑化フィルタやエッジ強調フィルタなどがある •
フィルタをずらしながら、積和演算により新たな画像を作る • フィルタは特徴的な輝度勾配を強調できる • CNNでは、このフィルタを学習により獲得する 15 http://agnesmustar.com/tag/vgg16/ 3×3のフィルタで、左上の画素を生成 3×3のフィルタで、中心の画素を生成
16.
畳み込みの例 16 元画像 http://agnesmustar.com/tag/vgg16/ フィルタと畳み込みで生成された画像 • 畳み込みを実施した例を示す フィルタ
17.
畳み込みニューラルネットワーク(CNN) 17 畳み込み層 CNN (この図ではフィルタは1つ) 全結合層のみで構成 普通のニューラルネットワーク
18.
プーリング層 • プーリングでは、複数画素内から求めた最大値や平均を使って 新たな画像を生成する • 縮小画像を作ることで、データ量を減らす •
画像に写る物体の平行な位置ズレを吸収する効果がある 18 http://agnesmustar.com/tag/vgg16/ *stride(窓をずらす量)は指定できる
19.
ドロップアウト層 • ドロップアウト層は、学習時に、ある確率で抽出したユニットを一時的 にネットワーク上に存在しないものとして扱う • 無いものとされたユニットに繋がる結合係数は学習で更新されない •
抽出のやり直しは学習の度に行われる • ユニット数が減ることで学習が進みやすくり、且つ過学習を防止できる • ノイジーなユニットが確率的に不活性化され、学習が進む • また、一時的にユニット数が減ったことで写像能力が落ちる 19 学習段階では、一部のユニットを 無いものとして扱う 予測時には全ユニットが使われる
20.
VGG16 • VGGは画像認識で実績のあるモデル • VGG16がよく使われる •
1000クラス分類問題を学習したモデルが公開されている 20http://agnesmustar.com/tag/vgg16/ (全結合層) (畳み込み層)
21.
画像認識の概要 画像データと特徴量 畳み込みニューラルネットワーク ImageDataGeneratorによる教師データの水増し 学習 callback 21
22.
ImageDataGeneratorとは • 画像を水増しすることで教師データを増やす • 画像データの収縮拡大、回転、平行移動、正規化などを施す •
これで汎化能力を増す • 注意:入力する画像データの画素の値は0-1の範囲に変換しておく 22 Kerasによるデータ拡張 http://aidiary.hatenablog.com/entry/20161212/1481549365
23.
使い方 • サンプルコードで使い方を確認しましょう • jupyter
notebookを起動し、「ImageDataGeneratorを試 す.ipynb」を開いて下さい • セルを上から順次実行(再生ボタンを押す)し、結果を確認し てください 23 https://github.com/KatsuhiroMorishita/machine_leaning_samples/tree/master/keras_Image_classification/test_of_ImageDataGenerator
24.
画像認識の概要 画像データと特徴量 畳み込みニューラルネットワーク ImageDataGeneratorによる教師データの水増し 学習 callback 時間がないので、非常に単純な例を示します 24
25.
サンプルプログラムで学習 • 下記URLの学習用サンプルプログラムを動かします 25 https://github.com/KatsuhiroMorishita/machine_leaning_samples/tree/master/keras_Image_classification/flower これは、写真から花の種類を当てる例題です
26.
ファイルの説明 • learning.py:学習用のプログラム • prediction.py:学習済みの結合係数を読み込んで、未知画像を予測する •
label_dict.pickle:クラスの番号をクラス名に変換する辞書をシリアラ イズ化して保存したもの • model:保存されたモデルデータ • param.hdf5:保存された結合係数 • 1_train, 2_train:学習用の画像が入っているフォルダ • 1_test, 2_test:学習結果を評価するための画像が入っているフォルダ • 学習には利用しない • prediction_result.csv:prediction.pyが保存した予測結果 • validation_table*.csv: learning.pyが保存した、検証データに対する真 値と予測値とで作った分割表 26
27.
learning.pyの動作 • ソースコードで指定されたフォルダ内の画像を読み込み、学習する • フォルダ名から正解ラベルを取得する •
教師データの一部を、学習に用いずに、過学習の判定に利用 • 学習後に結合係数やモデルの情報を保存する 27
28.
Tips • Optimizerは結合係数を修正するアルゴリズム • Optimizerは学習の途中でadamからSGDに変えると良いらしい •
loss(損失)は小さい方が良い • acc(精度)は1.0に近い方が良い • lossとval_loss(またはaccとval_acc)が乖離していたら過学習 • batch_sizeは大きい方が母集団の勾配を表現できるが、大きいと勾配 が消失したり(学習が進まない)、GPUのメモリが不足したりする • 学習の結果が満足できるものかは、分割表で判断 28 ←恐らく学習に成功した例 縦軸がlossで、横はepoch 青色はloss、橙色はval_loss
29.
分割表の見方 • サンプルプログラムが作る分割表の例を以下に示す • この例では、1つのクラス1がクラス2に誤って識別されている 29 入力 出力
30.
画像認識の概要 画像データと特徴量 畳み込みニューラルネットワーク ImageDataGeneratorによる教師データの水増し 学習 callback 30
31.
学習時間を有効に使うためのcallback • 学習には時間がかかるため、定期的に学習係数を保存した方が良い • 保存していれば、一旦中断して再開することができる •
学習が進まなくなったら途中で処理を止めたい場合もある • kerasのcallbackの使い方 • https://keras.io/ja/callbacks/ • 下記URLのサンプルコードを例に説明します 31 https://github.com/KatsuhiroMorishita/machine_leaning_samples/tree/master/keras_Image_classification/flower_with_callback
32.
callbackの基本的な使い方 • kerasのドキュメントのコードをコピる • model.fit()の引数にオブジェクトをリストで渡す 32サンプルコードの実装例(抜粋) 上:学習が進まなくなったら止める 下:良い成績が出たらモデルを保存 リストで渡す
33.
サンプルコードにおける、 途中で処理を再開するための仕掛け • 学習に使うデータと検証に使うデータをそれぞれ保存 • フォルダ名とクラス番号などのヒモ付辞書も保存 •
モデルはOptimizerの状態や結合係数ごと保存 • callbackでsave_weights_only=Falseと設定 • 実行時に引数をチェックし、指示があれば途中から再開 33 読み込んだ画像データ等の保存 実行時の引数で"再開" or "最初から"の選択
34.
付録 34
35.
メモ • 画像内での物体の回転が考えられる場合は、それだけ畳み込みのフィ ルタが必要になる。ゆえに、野菜の等級判断などにおいて、画像の向 きを調整できるのであれば、調整した上で入力した方が学習コストを 下げることができる。 • 野菜などの形状判定にはCNNは向いていない。形状を表す特徴量設計 を行った方が断然性能が出ると思う。 35
36.
参考リンク集 ネット上に情報はあふれるようになったが、ゴミも多い。おス スメの書籍を以下に紹介する。 36 ゼロから作るDeep Learning 画像認識 https://goo.gl/d1vNZb https://goo.gl/fxMc5D
37.
参考リンク集 ネット上に情報はあふれるようになったが、ゴミも多い。書籍 を数冊用意した上で、下記もおススメする。 • KerasでVGG16を使う • http://aidiary.hatenablog.com/entry/20170104/1483535144 •
VGG16のFine-tuningによる犬猫認識 (2) • http://aidiary.hatenablog.com/entry/20170110/1484057655 • 勾配ブースティングについてざっくりと説明する • http://smrmkt.hatenablog.jp/entry/2015/04/28/210039 37
38.
告知:PyCon Kyushu 2018 •
connpassで告知が有ると思います • https://pycon-kyushu.connpass.com/ • もうすぐ講演募集開始です! • 日時:2018年6月30日(前夜祭と懇親会を企画中) • 場所:LINE福岡 • Web:http://kyushu.pycon.jp/ 38
39.
39 面白ツイート 個人的には、古き良き手法で精度が出るならそれでいいと思う・・・
Download now