サイトアイコン NegativeMindException

畳み込みニューラルネットワーク (CNN: Convolutional Neural Network)

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





「あえてPythonを使わずにUnity C#で実装しながら勉強する」とか言っておきながら、結局途中でコーディングを断念。意外と面倒だったので。。。

書籍のPythonコードをUnity C#で再現しようとしてMNISTデータセットをUnityのテクスチャとして読み込むコードとかも書いたりしたんだけど、lambda式や抽象クラス、インターフェイスあたりで混乱して躓いた。改めてPythonとNumPyの記述の手軽さを理解しましたとさ。抽象度が高い代わりに読みづらくもあるんだけど。

2018年7月 追記:CNNではないけど、mattatzさんがUnity上で動くニューラルネットワークの実装を公開している。

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ビジュアライザーというのを作った方がいらっしゃいます↓



追記:こういうのもある↓



以前見つけたお勉強ツールのMLDemosは、各機械学習手法による処理結果の違いを可視化するツールだったけど、動作の仕組みそのものを可視化して眺めるともう一段踏み込んで理解ができるね。(MLDemosにDeepLearningは入ってなかったけど)
MLDemos:機械学習について理解するための可視化ツール
たまたま面白いツールを見つけた。機械学習のパラメータをいじるとインタラクティブに学習結果が可視化して見れるお勉強アプリ。MLDemos - A visualization tool for machine learningMLDemosは、...

読書再開

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



階層型ネットワークである畳み込みニューラルネットワークまでは分かったので、グラフィカルモデル系の相互結合型ネットワークから読書再開。
ホップフィールドネットワークの可視化動画も見つけたけど、ちょっと理解できない。。。



スポンサーリンク

関連記事

  • Google製オープンソース機械学習ライブラリ『TensorFlow』のWindows版が公開された
  • Physics Forests:機械学習で流体シミュレーションを近似する
  • TorchStudio:PyTorchのための統合開発環境とエコシステム
  • Math.NET Numerics:Unityで使える数値計算ライブラリ
  • 3Dスキャンに基づくプロシージャルフェイシャルアニメーション
  • CGのためのディープラーニング
  • fSpy:1枚の写真からカメラパラメーターを割り出すツール
  • 疑似3D写真が撮れるiPhoneアプリ『Seene』がアップデートでついにフル3Dモデルが撮影できる...
  • オープンソースのネットワーク可視化ソフトウェアプラットフォーム『Cytoscape』
  • UnityでPoint Cloudを表示する方法
  • 2021年 観に行った映画振り返り
  • Fast R-CNN:ディープラーニングによる一般物体検出手法
  • SVM (Support Vector Machine)
  • Deep Learningとその他の機械学習手法の性能比較
  • UnityでARKit2.0
  • iPadをハンディ3Dスキャナにするガジェット『iSense 3D Scanner』
  • openMVG:複数視点画像から3次元形状を復元するライブラリ
  • Dlib:C++の機械学習ライブラリ
  • C#で使える遺伝的アルゴリズムライブラリ『GeneticSharp』
  • UnityでShaderの入力パラメータとして行列を渡す
  • 顔検出・認識のAPI・ライブラリ・ソフトウェアのリスト
  • UnrealCV:コンピュータビジョン研究のためのUnreal Engineプラグイン
  • Faster R-CNN:ディープラーニングによる一般物体検出手法
  • SSII2014 チュートリアル講演会の資料
  • SSII 2014 デモンストレーションセッションのダイジェスト動画
  • OpenCV 3.1のsfmモジュールを試す
  • Mitsuba 3:オープンソースの研究向けレンダラ
  • TensorSpace.js:ニューラルネットワークの構造を可視化するフレームワーク
  • 統計的な顔モデル
  • Leap MotionでMaya上のオブジェクトを操作できるプラグイン
  • Accord.NET Framework:C#で使える機械学習ライブラリ
  • 東京オリンピックと案内表示
  • TeleSculptor:空撮動画からPhotogrammetryするツール
  • 機械学習手法『Random Forest』
  • 機械学習について最近知った情報
  • ニューラルネットワークと深層学習
  • CNN Explainer:畳み込みニューラルネットワーク可視化ツール
  • 3DCG Meetup #4に行ってきた
  • ManimML:機械学習の概念を視覚的に説明するためのライブラリ
  • OpenCV 3.1のsfmモジュールのビルド再び
  • FreeMoCap Project:オープンソースのマーカーレスモーションキャプチャ
  • スクラッチで既存のキャラクターを立体化したい
  • モバイルバージョンを終了