stMind

about Tech, Computer vision and Machine learning

CourseraのDeep Learning SpecializationのCourse2まとめ

www.coursera.org

引き続き、Deep Learning SpecializationのCourse2を受講しました。Course1では日本語訳がありましたが、Course2では英語字幕(時々誤り有り)のみで、仕事で頭を使ってから帰った後で取り組むのは難しいものがありました。結局、週末に一気に仕上げる感じでしたが、Course2もCourse1と同様で、具体的なケースで基本の説明、なぜworkするかの理由が説明されるので、すいすいと進めることが出来たように思います。

Course2振り返り

Week1, Week2, Week3の構成で、特にWeek1が他の二つに比べて大ボリュームで盛りだくさんでした。自分のCoursera学習スタイルは、

  • Videoは、重要なスライドをEvernoteに画像で貼り付け、解説を聞いて自分なりにまとめた説明とともにノートに保存
  • ノートにはタグ付けして、QuizとProgramming assignmentに取り組むときに、忘れた内容があったらタグ検索して参照

という感じで、今回のCourse2では約30のノートが出来ました。

基本的にはこれまでに一度は聞いたことのある概念(Regularization,Batch Normalizationなど)なのですが、なぜRegularizationがOverfittingを防ぐのか?Batch Normalizationは何をしているのか?などの理解が、複雑な数式なしに深めることが出来たと感じています。Course1と合わせて、Deep Learningの基本理解はこのCourse2まで受講すれば十分だと思えるくらいの濃い内容のコースでした。

CourseraのDeep Learning SpecializationのCourse1まとめ

www.coursera.org

Andrew Ng先生のディープラーニング講座を始めました。Course1はNeural Network and Deep Learningで、Logistic regressionから始まって、Neural Networkの基本、Shallow and Deep Neural Networkという流れで学習するコースになってます。

全体の印象

ディープラーニングを勉強しようと思ってウェブを検索してみると、フレームワークを利用したプログラミング例で確かに結果が得られるのだけど、ブラックボックスでいまいち何をやっているのかが曖昧だったり、一方で内部を数式から理解しようとすると線形代数微積分学の知識が必要とされて、数式をおいきれなくなって挫折したりということが多い気がします。 このコースでは両者のバランスが良くて、最初にWx + bを理解する必要はあるけれど、コース全体で一貫して同じ表現が登場するので、記憶に定着して、やっていることが段階的につかめるようになっていると思います。また、各週のprogramming assignmentでNeural Networkを実装するときにも変数名に同じ表現を使うので、ビデオ内容と実装が直結していて感覚的にも理解が深まりやすいです。

やや難しいBack propagation

Ng先生もビデオの中で語っていますが、Back propagation(逆伝播)は少し難しい内容かもしれません。Back propagationは、Computation graph(計算グラフ)を知っていると理解しやすいと思いますが、このコースでは少ししか触れられていません。なので、評判の良いゼロから作るDeep Learningを参考書として持っておくといいかもしれません。事前に、Computation graphの所を読んでおくとより良いと思います。実際、自分が取り組んだときに非常に役に立ちました。

英語

英語も一つの心配事項なのかなと思いますが、Course1に限って言えばほとんどのビデオに日本語訳があるので、心配ないと思います。Course1以降は今取り組み始めたところですが、英語字幕のみのようなので、英語が苦手な場合には少し難しさが増してしまうかもしれません。ただ、Course1が完了できれば、ディープラーニング学習の導入としては十分理解出来たと言えると思います。

kinect生産終了のニュースに触れて

www.nikkei.com

www.fastcodesign.com

トータルで全世界3500万台、発売60日間で800万台売れたということでギネス記録にもなったキネクトが生産終了となるようです。

キネクトといえば、RGB-D画像からRandom Forestで部位を推定する手法がCVPR2010でベストペーパーにもなりました。

www.microsoft.com

部位推定の手法も、2013年にDeepPoseがGoogleのチームによって発表された辺りからディープラーニングベースの手法が主流になって、ECCV2017のBest demoにもなったPart Affinity Fieldによる複数人リアルタイム姿勢推定がOpenPoseとしてソフトウェアが公開されたこともあって、製品レベルに一気に進化した感がありますね。

キネクトの論文で1st authorのJamie shottonさんのページを見てみるとHoloLensのチームをリードしているということだし、その他のキネクトチームのメンバーもCortanaやWindows Hello Face Recognitionのチームに移っているということなんで、キネクトの世界から進化してHoloLensを中心にしたMRの世界構築にシフトしたということが改めて発信されたということかなという感じがしました。

I lead the HoloLens Science team at Microsoft in Cambridge. My research is focused at the intersection of computer vision, AI, machine learning, and graphics, with particular emphasis on systems that allow people to interact naturally with computers.

www.microsoft.com

www.microsoft.com

インストール済みのcudnnのバージョン確認

#include <cudnn.h>
#include <iostream>

int main(int argc, char** argv) {
    std::cout << "CUDNN_VERSION: " << CUDNN_VERSION << std::endl;
    return 0;
}
$ nvcc cudnn_version.cpp -o cudnn_version
$ ./cudnn_version
CUDNN_VERSION: 5110

このプログラムはこのIssueで知ったのですが、CUDNNってNVIDIAのサイトからダウンロードした後はディレクトリにコピーするだけなので、どのバージョンをインストールしたのかぱっと見はわからなくなってしまうので、パスの通った所に実行ファイルをおいておくと何気に便利かもしれません。

failed to install chainer with cuda 8.0 / cuDNN v6 · Issue #2501 · chainer/chainer · GitHub

flickr8k dataset

Deep Visual-Semantic Alignments for Generating Image Descriptions

image caption用のflickr8k datasetは、アノテーションとVGGの特徴量は上記リンクからダウンロード可能ですが、対応する画像自体は別途ダウンロードする必要があります。各画像のダウンロード先URLをFlickr Services: Flickr API: flickr.photos.getSizesを使って取得して、バッチ的に取得するスクリプトを書きました。8k枚の画像をダウンロードするので、すごい時間がかかるのが難点ですが...

github.com

上手に考えるための引き出しを増やす

新しい分かり方

新しい分かり方

新しいアイデアを必要とする状況というのは意外と多く、その度に同じような事しか考えられず、自分はアイデアを考える才能がないなあと思ったりする人もいるかもしれないけれど、それって才能の問題ではなく、実は考える技術が下手なだけなのかもしれない。事実をそのまま受け取るのではなくて、差分を見つけたり、異なる立場から解釈してみたり、言うは易く行うは難し、そんな考え方のテクニックを何とも不思議な作品を通して体験する事ができる本。

www.masahicom.com