例の書籍「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」を一通り読み終わりました。


「あえてPythonを使わずにUnity C#で実装しながら勉強する」とか言っておきながら、結局途中でコーディングを断念。意外と面倒だったので。。。
書籍のPythonコードをUnity C#で再現しようとしてMNISTデータセットをUnityのテクスチャとして読み込むコードとかも書いたりしたんだけど、lambda式や抽象クラス、インターフェイスあたりで混乱して躓いた。改めてPythonとNumPyの記述の手軽さを理解しましたとさ。抽象度が高い代わりに読みづらくもあるんだけど。
2018年7月 追記:CNNではないけど、mattatzさんがUnity上で動くニューラルネットワークの実装を公開している。
Created GPU-based neural network implementation in #unity 🧠https://t.co/DeQAURpuLa Unity上で動くGPU使ったニューラルネットワークの実装、ひとまずgithubにあげました!CNNの実装はこれからやっていきたい⚡️ pic.twitter.com/8UKSqkznk1
— Masatatsu Nakamura (@mattatz) 2018年7月26日
MINISTデータセットをC#で読み込むやり方のサンプルあるのね↓
https://jamesmccaffrey.wordpress.com/2013/11/23/reading-the-mnist-data-set-with-c/
2019年 追記:C#で使えるNumPyライクな数値計算ライブラリを知ったので、今ならコレを使う↓

さて、書籍でCNNの仕組みまでは分かったところで、ちょっとYouTubeで調べてみたら、CNNの動作の様子を可視化してくれてる人がチラホラいる。
畳み込み層 (Convolution Layer)
こちらは畳み込み層の動作を可視化した動画↓
プーリング層 (Pooling Layer)
こちらはプーリング層の動作を可視化した動画。(最大値を取るMax-Poolingの例)
追記:こちらの記事のgifがとても分かりやすい↓
http://pynote.hatenablog.com/entry/dl-convolutional-neural-network
追記:Max Poolingの処理は、要するにモルフォロジー変換であると言われてみれば確かに↓
https://blog.shikoan.com/morphological-transformations-maxpool/
3D Visualization of a Convolutional Neural Network
こちらはWeb上でインタラクティブにCNNの動作を見れるデモ。定番のMNISTデータセットを使った手書き数字認識。
http://scs.ryerson.ca/~aharley/vis/conv/
3D Multilayer Neural Network Simulation
https://tutorials.retopall.com/index.php/2019/02/17/neural-networks/
https://tutorials.retopall.com/index.php/2019/02/24/convolutional-neural-networks/
https://tutorials.retopall.com/index.php/2019/03/01/aieditor-neural-network-editor/
3Blue1Brown
そして、数学をアニメーションで視覚的に解説するYouTubeチャンネルを発見。
https://www.youtube.com/3blue1brown
今月ちょうどニューラルネットワーク(畳み込みではないけど)の動画が公開されたところ。
2022年追記:畳み込みについての解説動画も来た↓
仕組みを理解してからだとネット上の記事も読めるようになるけど、初見だとなかなか。
https://deepage.net/deep_learning/2016/11/07/convolutional_neural_network.html
ところで、探してみると、ニューラルネットワークを可視化している人が結構いることに気づいた↓
http://hhok777.hatenablog.com/entry/2016/11/08/184233
https://www.youtube.com/user/munimunibekkan/
アルゴリズムを物理的な機械構造へ落とし込むスキルがすごい。。。
マインクラフトでの例も↓
Blender_Neural_Network
BlenderのAnimation Nodeでニューラルネットワークを表現したもの。
https://www.youtube.com/channel/UC5bSCGdcE9x9ffqqgJlGp5Q
https://animatedai.github.io/
最近知ったDrawNetというやつ↓
http://people.csail.mit.edu/torralba/research/drawCNN/drawNet.html
2023年 追記:書籍を参考にNNビジュアライザーというのを作った方がいらっしゃいます↓
https://t.co/4ODfExCdVR
ゼロから作るDeep Learningで学んだニューラルネットワークをリアルタイムにビジュアル化するサイト公開しました。
キャンバスに文字を描いたら、リアルタイムに数字を判定します。
Githubでも公開しました。https://t.co/Xw283dnO52#deeplearning #NeuralNetworks pic.twitter.com/6zbm4wqo94— Kenji Saito (@kenji_special) November 27, 2023
追記:こういうのもある↓

以前見つけたお勉強ツールのMLDemosは、各機械学習手法による処理結果の違いを可視化するツールだったけど、動作の仕組みそのものを可視化して眺めるともう一段踏み込んで理解ができるね。(MLDemosにDeepLearningは入ってなかったけど)

読書再開
ということで、再びこちらの書籍に戻る。

階層型ネットワークである畳み込みニューラルネットワークまでは分かったので、グラフィカルモデル系の相互結合型ネットワークから読書再開。
ホップフィールドネットワークの可視化動画も見つけたけど、ちょっと理解できない。。。
関連記事
UnityのuGUIチュートリアル
書籍『3次元コンピュータビジョン計算ハンドブック』を購入
TorchStudio:PyTorchのための統合開発環境と...
CGのためのディープラーニング
OpenCV 3.1のsfmモジュールを試す
LLM Visualization:大規模言語モデルの可視化
ニューラルネットワークと深層学習
Kornia:微分可能なコンピュータービジョンライブラリ
フィクションに登場するUIデザインのまとめサイト
3D復元技術の情報リンク集
3Dモデルを立体視で確認できるVRアプリを作っている
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
Super Resolution:OpenCVの超解像処理モ...
Kinect for Windows v2の日本価格決定
画像生成AI Stable Diffusionで遊ぶ
BGSLibrary:OpenCVベースの背景差分ライブラリ
Unity Scriptコーディング→Unreal Engi...
OpenCVで平均顔を作るチュートリアル
データサイエンティストって何だ?
Runway ML:クリエイターのための機械学習ツール
PGGAN:段階的に解像度を上げて学習を進めるGAN
AnacondaとTensorFlowをインストールしてVi...
FacebookがDeep learningツールの一部をオ...
スクラッチで既存のキャラクターを立体化したい
Adobeの手振れ補正機能『ワープスタビライザー』の秘密
書籍『仕事ではじめる機械学習』を読みました
OpenCV3.3.0でsfmモジュールのビルドに成功!
写真に3Dオブジェクトを違和感無く合成する『3DPhotoM...
Mitsuba 3:オープンソースの研究向けレンダラ
全脳アーキテクチャ勉強会
Paul Debevec
Immersive Math:線形代数をインタラクティブに学...
オープンソースの顔認識フレームワーク『OpenBR』
ヘッドマウントディスプレイとビジュアリゼーションの未来
第1回 3D勉強会@関東『SLAMチュートリアル大会』
書籍『OpenCV 3 プログラミングブック』を購入
Googleが画像解析旅行ガイドアプリのJetpac社を買収
Maya LTのQuick Rigを試す
OpenFace:Deep Neural Networkによ...
Swark:コードからアーキテクチャ図を作成できるVSCod...
Unity MonoBehaviourクラスのオーバーライド...
openMVGをWindows10 Visual Studi...



コメント