新規記事の投稿を行うことで、非表示にすることが可能です。
2019年10月21日
【10日目成果】英語版Udemy講座で学ぶ!OpenCV、ディープラーニングを使ってpythonで画像認識
進捗 93%(+6%)
順調。
結局、CIFAR-10でエラーになる件はその後の講義にも影響があるため、対処を行うことにした。
■セクション8:画像認識のためのディープラーニング(続き)
・エラーになる件の対処
OSを変更してMacで試してみたところ、動作することは確認できた。
学習済のモデルも用意されてはいるが、初めてなので実際の学習を行ってみた。すると、CIFAR-10の講義の学習を行うだけで4時間以上かかっている。マシーンが古く非力なせいだ。
実務でディープラーニングを行う際は十分パフォーマンスが出る環境を準備するのが大切であることを経験として認識した。
・カスタム画像を用いたディープラーニング
これに関しても、学習の処理をするとPCのパフォーマンスの問題でハンパなく時間がかかりそうなので、学習済のモデルを使って一通り、実行してみた。
特に学習を行う際に1つの画像をランダムに回転させたり、反転させたりして、加工してテストすることにより、バリエーションを増やし、ロバスト性を上げるあたりが個人的には面白かった。
・アセスメント
モノクロ画像が対象であるため、カラー画像ではエラーが出て学習が進まないWindowsマシンでもできそうなのでWindowsマシーンでアセスメントを実施することにする。
(これから実施予定)
・YOLOネットワーク
(これから学習予定)
■セクション9:CapStone Project
このセクションでは今までの学んできたことを生かして課題を行っていく。画像認識をテーマとした課題だ。プロジェクトの概要のみ確認した。
(これから学習予定)
■次は
アセスメントとYOLOネットワークの学習を行い、最終のプロジェクト(CapStone Project)に入る。
明日中には終わらせたい。
このコースへのリンク
Python for Computer Vision with OpenCV and Deep Learning
全般ランキング
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image
2019年10月20日
【9日目成果】英語版Udemy講座で学ぶ!OpenCV、ディープラーニングを使ってpythonで画像認識
進捗 87%(+15%)
想定外に非常に順調。
コーディングは非常に単純になっている。特につっかえるところもなくあっという間にディープラーニングの結果が得られる。
■セクション8:画像認識のためのディープラーニング(続き)
・ディープラーニング理論
基本から勉強をスタート。ニューロンの仕組みから入り、次に活性化関数のシグモイド関数やRuLUを学ぶ。続いて、コスト関数であるQuadratic Cost, Cross Entropyなどを学ぶ。ディープラーニングはフレームワークがしっかりしている分、理屈がどうなっているのかがわかっているかが重要だ。
自分で独自にニューロンのネットワークを作成するにあたっても、どうしてこの構造が正しいのかを説明できる必要があると感じた。
・ Keras
まずKerasの基礎を学ぶということで画像なしでモデルを作り、学習、評価を行う。Kerasは非常によくできていて柔軟に多層のニューラルネットワークを簡単に構築できる。
バックエンドはTensorflowを使用する。
https://keras.io/ja/
テストセットの分割をするのにはsklearnの関数を用いる。この辺はApache Sparkの機械学習で勉強したのと同じような流れだ。
次に、画像にmnistのデータを使用したCNNを用いたディープラーニングを行い、CIFAR-10を用いてカラー画像のディープラーニングを行う。
残念ながら、私の環境では、CIFAR-10のディープラーニングを行うとエラーが出てしまい、処理が進まない。学習済のモデルで動作させても、pythonがエラーを出してしまうので処理ができなかった。
新しいPCが来るのが待ち遠しい(11月上旬予定)
ディープラーニングは通常のプログラムと異なり、プログラミングしたら思い通りに動くというわけではない。
作成後のチューニングや十分なテストデータ準備などの作業や、知識、経験も必要である。
この辺りは、さらに今後も自分から主体的に課題を見つけて学習しながら積み上げていく必要があると強く感じた。
■次は
アセスメントとYOLOネットワークの学習を行い、最終のプロジェクト演習に入る。
このコースへのリンク
Python for Computer Vision with OpenCV and Deep Learning
全般ランキング
2019年10月19日
【8日目成果】英語版Udemy講座で学ぶ!OpenCV、ディープラーニングを使ってpythonで画像認識
進捗 72%(+8%)
順調。
早く進むのは良いのだが、その分、理解が追いついてない気がする。
結局、動画の部分はカメラを使用せずに済ます方向だ。
■セクション7:オブジェクトトラッキング
・Optical flow
cv2.goodFeaturesToTrackで検出したコーナーに対して、トラッキングを行い、その軌跡を描画する。
初めに検出したコーナーに対して、位相を計算して、軌跡を描画しているので、長時間トラッキング対象が動くとどうしても、ずれが生じてしまう。
これを防ぐには、コーナー検出を定期的に行い、補正をしていく必要がある。
・MeanShift,CamShift
MeanShiftでは追跡対象のオブジェクトのヒストグラムを作成し、その密度の高い方向へ、ウインドウを動かす。
CamShiftでは、MeanShiftでは追跡対象が接近してもウインドウが同じサイズだったのに対して、ウインドウサイズを調整することができる。
・アセスメントテスト
このセクションにはアセスメントテストはない。
■セクション8:画像認識のためのディープラーニング
このセクションでは、まず、機械学習を学び、次にディープラーニングの概要を講義形式で学ぶ。その後、実際にコーディングを行いながら、Kerasのフレームワーク、最後にYOLOネットワークを学習する。
・機械学習、ディープラーニング講義
以前のPySparkの講義で機械学習は勉強済ということで説明もすんなり入っていく。
■次は
残り時間は4時間を切っている。
ディープラーニングの講義はササッと終わってコーディングをしながらディープラニングを勉強していく。
最後のほうのセクションのCapstoneプロジェクトの演習が面白そうな気がして期待をしている。
このコースへのリンク
Python for Computer Vision with OpenCV and Deep Learning
全般ランキング
2019年10月18日
【7日目成果】英語版Udemy講座で学ぶ!OpenCV、ディープラーニングを使ってpythonで画像認識
進捗 64%(+10%)
順調。
1つ1つの講義の動画は長めだが、サクサクと消化している。
画像認識の中心の部分に入ってきているので進めていて楽しい!
■セクション6:物体検出
・Watershedアルゴリズム
閾値処理で分離すると対象オブジェクトが重なっている場合に1つ1つのオブジェクトの分離ができないが、このアルゴリズムを使用することで1つ1つのオブジェクトへの分離が可能だ。
https://docs.opencv.org/3.4.3/d3/db4/tutorial_py_watershed.html
・顔検出のアルゴリズム
これもなかなかすごい。特に集合写真を対象に処理を行うと一気にほぼ全員の顔をあっという間に検出してくれる。しかも、設定ファイルのxmlを変更することにより、目など顔以外のオブジェクトの検出も可能だ。
https://docs.opencv.org/3.4/db/d28/tutorial_cascade_classifier.html
・アセスメント
オブジェクト検出を行い、その結果を用いて、画像処理を行う課題。
講座が進むにつれ、課題も実際のものに沿ったものになり、面白くなってきた。
取りあえず、ほぼ自力で完了することができた。
■次は
セクション7のオブジェクトトラッキングを進めていく。
このコースへのリンク
Python for Computer Vision with OpenCV and Deep Learning
全般ランキング
2019年10月17日
【6日目成果】英語版Udemy講座で学ぶ!OpenCV、ディープラーニングを使ってpythonで画像認識
進捗 54%(+9%)
順調。
しばらくは動画の画像認識はないようなので、Macのセットアップはほっておく。
画像認識の勉強はAPIをコールしながらも、多重ループを使ったり、複雑なAPI呼び出しを繰り返したりというのを想像していたのだが、OpenCVを使ったものはまったく違う感じだ。
■セクション6:物体検出
・テンプレートマッチング
テンプレートマッチングの複数のアルゴリズムを試して比較を行う。うーん、matchTemplate関数を一回コールするだけで、テンプレートマッチングが完了するのがすごい!これがOpenCVの威力か!
pythonのeval関数の説明あり。pythonの勉強はしたことがあるが、evalは知らなかった。勉強になる。
evalとは文字列(式)を実行(評価)してくれるのだ。
例えば、eval('1 + 1') は2になる。
検出結果を見るとTM_CCORRのアルゴリズムの検出だけが間違って検出されている。
OpenCVのドキュメントでも同様だ。
https://docs.opencv.org/3.4.3/d4/dc6/tutorial_py_template_matching.html
Matching Resultの画像の一覧を見る。なるほど、画像の白いポイントが検出位置になっているようだ。全体が白いところに引っ張られて検出が間違っているようだ。正規化を行ったTM_CCORR_NORMEDは正しく検出できている。
一つずつ見るとTM_SQDIFFとTM_SQDIFF_NORMEDは反対の黒い所が検出位置になっている。差分で評価を行うアルゴリズムなので差分が最小になる所=黒が検出位置か。コードも同様になっていることを確認した。
・エッジ検出
Cannyのアルゴリズムに掛ける前に、ぼかしをしておくときれいにエッジが検出できるとのこと。改めて処理した結果の差を見ると大きく異なる。
https://docs.opencv.org/3.4.3/da/d22/tutorial_py_canny.html
OpenCVのドキュメントではいきなり、エッジ検出なっている。
検出対象の画像の背景が元々ぼけている画像だからか。非常にきれいにエッジ検出できている。Cannyのしきい値の設定もポイントなんだろうな。
・輪郭検出
単に輪郭が検出できるだけでなく、外輪郭の線、内部の輪郭の線を区別して検出できて、さらに内部の輪郭をグルーピングできている。
https://docs.opencv.org/3.4.3/d3/d05/tutorial_py_table_of_contents_contours.html
■次は
セクション6の残りを終わらせたい。
このコースへのリンク
Python for Computer Vision with OpenCV and Deep Learning
全般ランキング
2019年10月16日
Udemyで勉強を始めてみよう
■udemyとは
Udemyは世界最大級のオンライン学習プラットフォームで、世界中の学びたい人と教えたい人をオンラインでつなぐサービス。2019年現在、受講者数約3000万人の生徒の利用実績があり、約42,000人の講師と10万の講座があります。
日本ではベネッセが事業パートナーとして米国Udemy,Inc.が運営するプラットフォームで協業をしています。
■特徴
・豊富な講座!、学びたい講座が必ず見つる!
・0.5〜2倍の変速が可能なプレーヤーで自分のペースで効率よく受講可能
・専用アプリでスマホにコースをダウンロードしてオフラインで視聴可能
・講師に直接掲示板から質問ができるので疑問を解決し自学自習をサポート
■特におすすめ
・プログラム言語など習得したいスキルが明確で、年収アップのために学習しているエンジニア
・テクノロジー、ビジネスに関するスキルアップに関心が高い方(特にAI・機械学習を学んでスキルアップを検討されている方)
・Adobeのソフトなどウェブデザインを学びたいと考えている方
・仕事に関連して、スキル獲得や資格取得が必須な方
・転職・再就職・副業のために自己投資を検討している方
講座の確認はこちらから
■料金
1講座あたり数千〜数万円程度で実践的なスキルアップが可能。講座は一度購入すれば視聴期限なく受講でき、30日返金保証もついているので安心して始めることができます。
Udemyはこちら
【5日目成果】英語版Udemy講座で学ぶ!OpenCV、ディープラーニングを使ってpythonで画像認識
進捗 45%
順調。
取りあえず、Webcamなしでコースを進める。動画のCaptureのところは動画データの読み込みで代用する。
■セクション5:動画の基礎とPython,OpenCV
動画を読み込み再生する。簡単だ。さらにこの動画の上に矩形や、円などの図形の描画を行う。描画のタイミングはマウスの操作に連動して行う。Windowsのマウスのハンドリングとは少し異なるが、シンプルでわかりやすい感じだ。
・アセスメント
特に問題なく進む。これにてセクション5は完了となった。
■セクション6:物体検出
ようやく、画像認識の内容に入ってきた。このセクションと、この後のディープラーニングのセクションはそれぞれ3時間と長くてこの講座のコアの部分だ。面白くなってきた。
■次は
セクション6を進める。2日くらいで終わらせたい。
Macのセットアップを並行して進める。
このコースへのリンク
Python for Computer Vision with OpenCV and Deep Learning
全般ランキング
2019年10月15日
【4日目成果】英語版Udemy講座で学ぶ!OpenCV、ディープラーニングを使ってpythonで画像認識
進捗 39%
順調。
残念ながら、台風の影響もあり、Webcamの入手が遅れそうだ。
今回はWebcamなしでコースを完了になる方向かなぁ。
一応、Macの内蔵のカメラを使うことも可能ではあるが。。。
考え中。
■セクション4:画像処理(残り)
ヒストグラムの作成、アセスメントのテストを行う。
・ヒストグラムの作成
まず、グレースケールのヒストグラムを作成する。
それをチャネル分ループさせてカラー画像の各チャネルのヒストグラムを作成する。
最後にヒストグラムをストレッチし、画像のコントラストの調整を行う。
ゴリラの血色がよくなったところでおしまい。
https://docs.opencv.org/3.4.3/d1/db7/tutorial_py_histogram_begins.html
・アセスメント
1つ1つの処理が簡単なせいか、細かいところで、ちゃんと覚えていないことがある。
OpenCVのドキュメントに頼りながら、何とか回答ができた。
OpenCVのドキュメントは非常によく整備されており、役に立つ。
これにてセクション4は完了。
■セクション5:動画の基礎とPython,OpenCV
一応、WebCamなしでも動画がおさめられているので、その動画を使って進められる、とのこと。
途中。
■次は
セクション5の動画を一通りなめる。
その中で、この後の動画の部分をMacでやるかを決める。
そして、いよいよ、画像認識のセクション6の物体検出に進む。
このコースへのリンク
Python for Computer Vision with OpenCV and Deep Learning
全般ランキング
2019年10月14日
【3日目成果】英語版Udemy講座で学ぶ!OpenCV、ディープラーニングを使ってpythonで画像認識
進捗 33%
順調。特に問題ない。
■セクション4:画像処理(続き)
画像合成、しきい値処理、ぼかし処理の学習を行う。
ぼかしの処理の説明のあたりから、画像の読み込み、表示の関数などのよく使う機能を関数として準備し、これらをコピペして修正しながら進む。
一応、勉強のため、基本的には自分でコードは打ち込むようにしながら進む。
・画像合成
bitwise_orやbitwise_notを駆使して画像合成を行う。
実用の際は、一度、関数を作ってしまえば、それを使いまわすことにはなると思う。
しかしながら、1つ1つの段階を理解して勉強しておくのもよいだろう。
・しきい値処理
画像処理を行う際の前処理の定番。
OpenCVにはいろいろなしきい値処理のオプションが用意されている。
参考)
https://docs.opencv.org/3.4.3/d7/d4d/tutorial_py_thresholding.html
これら2つは二値化を行うオプションだ。
・cv2.THRESH_BINARY
・cv2.THRESH_BINARY_INV
この3つは一部諧調を保持して、条件に合致する際は最大、もしくは最小値にするというものだ。
実際に使うユースケースが思い浮かばないが。。。
グレースケール画像だけでオブジェクト抽出したりするような場合かなぁ。
・cv2.THRESH_TRUNC
・cv2.THRESH_TOZERO
・cv2.THRESH_TOZERO_INV
・ぼかし処理
画像エフェクトとしてだけでなく、画像処理の前処理でノイズ除去に使われる。
参考)
https://docs.opencv.org/3.4.2/d4/d13/tutorial_py_filtering.html
特にmedianBlurはぼかしというよりはノイズ除去の機能だ。
・cv2.blur
・cv2.GaussianBlur
・cv2.medianBlur
・cv2.bilateralFilter
・エッジ検出
Sobel,laplacianオペレータを扱う。
エッジ検出後に二値化を行えば、検出したエッジを目立たせることができる。
参考)
https://docs.opencv.org/3.4.2/d2/d2c/tutorial_sobel_derivatives.html
https://docs.opencv.org/3.4.2/d5/db5/tutorial_laplace_operator.html
・cv2.sobel
・cv2.laplacian
・ヒストグラム
グレースケールのヒストグラムから始まり、RGBそれぞれのヒストグラムを作成し、視覚化し、ヒストグラムの形状を観察する。
■次は
ヒストグラムのストレッチなど学習を行う。そして最後に、この章のアセスメントを行う。
このコースへのリンク
Python for Computer Vision with OpenCV and Deep Learning
全般ランキング
タグ:opencv
2019年10月13日
【2日目成果】英語版Udemy講座で学ぶ!OpenCV、ディープラーニングを使ってpythonで画像認識
進捗 24%
順調。特に問題ない。
あえて言うなら、早く画像認識系のことをやりたい!
■セクション3:画像の基礎とOpenCV(続き)
・基本的な画像の取り回し
画像の読み込みからスタート。
matplotlibとopencvの色のチャネル順序は異なるので、注意が必要だ。
変換は下記で行う。
new_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
この後、グレースケールへの変換、リサイズ、反転、保存と一通りをこなす。
・図形描画
次はCanvasを作成して、図形を描画する。矩形、円、線、多角形とその塗りつぶしを習った。
・マウス操作
ウインドウを生成し、マウスのイベントを取得し、描画を行う。
・アセスメントテスト
以外に難しかった。基本的なことができてない感じ。
モジュールの読み込みをいざ自分で書いてみるとわからなかったり、マウスイベントのハンドラや、円滑に終了させるためのループ処理など、実際に書いてみるとうる覚えの部分がかなりあった。
テスト完了後に復習を行う。
■セクション4:画像処理
・カラーマップ
RGB、HSVなどの色空間の指定方法を勉強。
■次は
セクション4の続きを進める。
このコースへのリンク
Python for Computer Vision with OpenCV and Deep Learning
全般ランキング