この記事では、オンライン学習サイトUdemyのShrobon Biswasによるコース「Hands On Computer Vision with OpenCV & Python」のレビューを提供したいと思います。
この記事を書いている時点で、このコースは平均4.1/5星で146の評価と851人の受講生がおり、そこそこ成功していると言えるでしょう。
説明によると、このコースは入門コースで、プログラミング言語Pythonの基本を理解している初心者から中級プログラマーを対象にしているとのことです。
このコースを開始した時点で、私は画像処理やコンピュータビジョンに関する背景知識がほとんどなく、OpenCVの経験もありませんでしたので、このコースの理想的な対象者となりました。
以下のセクションでは、様々なコンテンツエリアをレビューし、教材に対する私の意見を述べたいと思います。
コースセクションのレビュー
イントロダクション&インストレーション
このセクションでは、この種のコースの多くがカバーする典型的な導入コンテンツがあり、コースの基本的な説明やアウトラインがカバーされていました。
インストールは、Anaconda環境とOpenCVのインストール方法について、簡単な文章で紹介されています。
私見ですが、説明文ではなく、必要なソフトをインストールする様子を動画で紹介しても良かったのではないかと思います。
画像の基礎
このセクションでは、コースの著者はHTTP経由でWebリソースから画像を取得する方法と一緒に、ディスクへの画像の読み取りと書き込みの基本について説明します。
基本的なファイルIOに加えて、赤、緑、青のカラー画像のための画像チャネルの概念もうまく説明しています。
画像チャンネルの説明に加えて、Pythonプログラミング言語とOpenCVライブラリを使って、チャンネルを個別に選択・操作したり、カラー画像とグレースケール画像の間で変換を行ったりする、いくつかの良い例も紹介されています。
最後に、OpenCVライブラリとmatplotlib可視化ライブラリを使って画像を表示する方法について説明しています。
このセクションに対する私の感想は、全体的に非常にポジティブなものです。
ディスクを使った画像データの読み込みと保存の方法について、説明とコーディング例のバランスが適切であったと思います。
また、HTTP 経由で画像を読み込む方法が含まれているのは、実用上非常に良い判断だと思いますが、著者はここで、使用されているライブラリが OpenCV ではなく、Anaconda のインストールパッケージと一緒にインストールされている Scikit-Learn ライブラリのサブモジュールであることを明確にしていませんでした。
画像チャンネルの概念に関する議論はよく練られており、シンプルかつエレガントな例で実証されています。
ヒストグラム
ここでは、カラー画像やグレースケール画像の単一チャンネルに沿った強度の分布を表すヒストグラムの使用について説明されています。
このセクションの内容は短いものですが、要点がまとまっており、このコースの後のトピックの基礎となるものです。
ピクセル操作とジオメトリ
このセクションでは、OpenCVがユーザに見せるデジタル画像データは、整数の多次元numpy配列に過ぎないことを示すことから始めます。
そして、おなじみのnumpyのインデックスを使った個々の画素の値の操作の例を通して、さらに詳しく説明します。
次に、OpenCVライブラリを使って、単純な線やその他の幾何学的形状を描く方法を紹介します。
基本的な幾何学的形状の描き方を示した後、著者はさらに画像操作に踏み込んでいきます。
反転、拡大縮小、回転のトピックを、より多くのコーディング例を使って説明しています。
このセクションで、私は少しイライラし始めたことに気がつきました。
著者が少し急いでいるように見える瞬間があり、さまざまなライブラリメソッドのパラメーターの詳細について早口で説明しています。
また、この章では、一貫性に欠けるところがありました。
例えば、このセクションに至るまで、サンプルで使用されているすべての画像とスクリプトは、ダウンロード可能なリソースとして提供されていました。
しかし、このセクションでは、いくつかの画像が利用可能なリソースから除外され、いくつかの例のスクリプトが提供されていないため、フォローするのがより難しくなっています(不可能ではありません)。
なお、私がサンプルスクリプトのコーディングに取り組んだところ、代替画像を使用しても問題なく動作しました。
プロジェクト – スニッピングユーティリティ
このセクションでは、OpenCV ライブラリを使用して、表示されている画像上のマウスイベントをキャプチャし、元の画像を切り取って生成するデモを行います。
私は、このセクションをコースで見ることができて、とても嬉しかったです。
私は個人的に、このセクションの原始的なスニッピングツールのケースのように、機能を実証するものを作成するために技術のユーティリティを実証するのに時間をかけるコースは好きです。
フィルタリング、ぼかし、ノイズ除去
このセクションは非常に魅力的だと思いました。
おそらく、デジタル画像を向上させるためにフィルタリング技術を適用するというコンセプトは、私にとって驚くべきものだからです。
しかし、インストラクターは、なぜそれが有用なのかを説明し、それを達成する方法を実演することで、十分に健全な仕事をしていると感じています。
残念なのは、著者が使用した画像やサンプルスクリプトを提供していないという点で、再び一貫性に欠ける点があります。
閾値処理について
このセクションでは、まず閾値処理とは何かという簡単な説明から始まります。
その後、OpenCVライブラリを使わずに手動で閾値処理された画像を作成するコーディング演習に挑戦します。
もちろん、講師は解決策を提示してくれますが、私はいつも、講座でこのような課題が出されるのが好きです。
というだけではありません。
結論
この記事では、UdemyのShrobon BiswasによるHands On Computer Vision with OpenCV & Pythonのコースについて、公平でバランスの取れた概要を説明することに努めました。
その際、講師がオンライン学習コミュニティに価値を提供していると感じているため、実際のコンテンツの詳細を漏らさないように注意しながら、カバーされている内容を説明することを目標としました。
冒頭で述べたように、私はComputer Visionのコンセプトをほとんど理解せず、プログラミング言語であるPythonをある程度理解した上で、このコースに参加しました。
とはいえ、画像や映像コンテンツを操作するためのOpenCVライブラリの使い方については、十分に学ぶことができたと思っています。
個人的な意見としては、ライブラリの機能の詳細や基礎となる理論について、もっと詳しく説明してもよかったのではないかと思いますが、それがこのコースの主な目的であったとは思えません。
コース構成や内容の組織的な面では、少し投げやりな印象を受けた部分もあり、不満はあります。
例えば、画像やスクリプトの例が提供されていなかったり、著者が別のトピックをカバーするために戻ってくると言っておきながら、それが実現しなかったりするケースが少なからずありました。
このコースは、セールで手に入れることができれば、良い買い物だと思いますが、199ドルという基本価格は、提供される価値に対して高すぎるでしょう。
また、このコースは、「痒いところに手が届く」ような内容になっています。