/DeepLearningMugenKnock

Primary LanguageJupyter NotebookMIT LicenseMIT

ディープラーニング∞本ノックぅぅ!!

DeepLearningの実装Tips (WiP)

ノック作るのが大変になってきたのでTips集に変更しました

  • 【注意】このページを利用して、または関して生じた事に関しては、私は一切責任を負いません。 すべて 自己責任 でお願い致します。
  • なんとなく本とか買わずにDLを勉強したいーーーって人向けだと思う

もしこれがみなさんのお役に立ったらGithub Sponsorになってください!

何問になるか分からないので∞本になってます。多分これからいろんな技術が出るからどんどん更新する予定でっす。これはイモリと一緒にディープラーニングの基礎からDLのライブラリの扱い、どういうDLの論文があったかを実装しながら学んでいくための問題集です。本とか論文読んだだけじゃ机上の空想でしかないので、ネットワークの作成や学習率などのハイパーパラメータの設定を自分の手を動かしながら勉強するための問題集です。

問題集として使ってもテンプレやチートシートとして使っても使い方は自由です!!!!

Related

★追記 2019.11.7

Study-AI株式会社様 http://kentei.ai/ のAI実装検定のシラバスに使用していただくことになりました!(画像処理100本ノックも) Study-AI株式会社様ではAIスキルを学ぶためのコンテンツを作成されており、AIを学ぶ上でとても参考になります! 検定も実施されてるので、興味ある方はぜひ受けることをお勧めします!

画像処理ノックはこっち

画像処理100本ノック!!

Update

Twitterで更新を発信してますぅ

https://twitter.com/curry_frog

  • 2020.5.3 Sun [pytorch] CycleGANを追加
  • 2020.4.3 Fri [tf.keras] pix2pixを追加
  • 2020.3.27 Thu [tf.keras] Style Transferを追加
  • 2020.2.25 Tue [Pytorch] WGAN-GPを修正
  • 2020.1.1 [Pytorch] EfficientNetB1~B7を追加
  • 2019.12.30 [Pytorch] EfficientNetB0を追加
  • 2019.12.23 Chainerのサポートが終了したらしいので、PytorchとTensorflowに絞っていきます
  • 2019.12.23 [Pytorch] 可視化 Grad-CAMを追加
  • 2019.11.23 [Pytorch] 言語処理・会話生成のHREDを追加
  • 2019.11.19 [Pytorch] 画像生成のWGAN-GPを追加
  • 2019.11.8 [Pytorch] 画像生成のVAEとalphaGANを追加
  • 2019.10.28 [Pytorch] 画像生成のWGANを追加
  • 2019.10.21 [PyTorch] Semantic SegmentationでSegNetを追加
  • 2019.10.16 [PyTorch] Seq2Seq Hard Attentionを追加
  • 2019.10.10 [PyTorch] Seq2Seq Attention(Step別)を追加
  • 2019.9.30 [Pytorch] MobileNet v2 を追加
  • 2019.9.19 [TensorFlow] Xception, MobileNet_v1 を追加
  • 2019.9.16 [TensorFlow] ResNet 18, 34, 50, 101, 152 を追加
  • 2019.8.19 [Pytorch] NLP: Seq2seq+Attention, word2vecを追加
  • 2019.8.15 [Pytorch] pix2pixを追加
  • 2019.8.4 [Pytorch] DenseNet121, 169, 201, 264を追加
  • 2019.7.30 [PyTorch, Keras] Xceptionを追加
  • 2019.7.28 [Keras] ResNeXt-50, 101を追加
  • 2019.7.23 [Pytorch] ResNeXt-50, 101を追加
  • 2019.7.17 [Pytorch] VAEを追加 [keras, tensorflow, chainer] CGAN(MNIST)を追加
  • 2019.7.5 [pytorch, keras]ResNet18, 34, 101, 152を追加
  • 2019.6.16 [pytorch, tensorflow, keras, chainer] ResNet50を追加
  • 2019.6.9 [tensorflow] DCGANを追加
  • 2019.6.7 [Pytorch, tensorflow, keras, chainer]GoogleNet-v1(Inception)を追加
  • 2019.5.26 [tensorflow] DCGAN, Conditional GANを追加
  • 2019.5.19 [Keras, Chainer] ConditionalGANを追加
  • 2019.5.18 [データセット準備] MNIST, [Pytorch]ConditionalGANを追加
  • 2019.5.2 [データセット準備] Cifar10、[AutoEncoder, ConvAutoEncoder, GAN, DCGAN]Cifar10を追加
  • 2019.3.31 [画像認識モデル] APIを追加
  • 2019.3.19 [Pytorch][Chainer] GAN, DCGANを追加
  • 2019.3.17 Pooling layerを追加したけど、あとからクラス化と学習を追加する予定
  • 2019.3.17 seq2seq, convolutional layer を追加
  • 2019.3.16 ニューラルネットをクラス化 を追加
  • 2019.3.13 パーセプトロン系を追加
  • 2019.3.12 AutoEncoder, ConvAutoEncoder, パーセプトロンを追加
  • 2019.3.9 GAN, DCGANを追加
  • 2019.3.6 RNN, LSTM, BDLSTMを追加
  • 2019.3.5 AutoEncoder, RNNを追加
  • 2019.3.4 データ拡張・回転を追加
  • 2019.3.3 UNetを追加

環境設定

1. Minicondaのインストール

https://conda.io/miniconda.html からMinicondaをインストールする。(Window、MacOS)Minicondaインストール後、端末(Windowでは端末、MacOSではターミナル)を開き、以下コマンドで仮想環境を作成する。またはGoogle colabolatoryならGPUが使用化。

# 1. Create 
## 仮想環境を作成
$ conda create python=3.7 -n dl_env
# 仮想環境を開始
$ source activate dl_env
(dl_env) :~/work_space/DeepLearningMugenKnock/ :$ 

2. レポジトリのインストール

下記コマンドでこのレポジトリを自分のパソコンにインストール。

$ git clone https://github.com/yoyoyo-yo/DeepLearningMugenKnock.git

3. パッケージのインストール

最後に下記コマンドで必要なパッケージをインストールする。

# pytorch
$ pip install matplotlib opencv-python easydict torch torchvision torchsummary
# tensorflow-2.1
$ pip install matplotlib opencv-python easydict tensorflow==2.1
# keras
$ pip install matplotlib opencv-python easydict tensorflow keras
# chainer
$ pip install matplotlib opencv-python easydict chainer

Tips

詳細は各ディレクトリのREADME

ここから基本的に、「python scripts_XXX/YYY.py --train --test」で動く。

問題 Implementation Published year
API ✓ pytorch
LeNet ✓ pytorch ✓ tf.layers ✓ keras ✓ chaienr
AlexNet ✓ pytorch ✓ tf.layers ✓ keras ✓ chainer 2012
ZFNet ✓ pytorch ✓ tf.layers ✓ keras ✓ chainer 2013
Network in network ✓ pytorch ✓ tf.layers ✓ keras ✓ chainer 2013
VGG16 ✓ pytorch ✓ tf.layers ✓ keras ✓ chainer 2014
VGG19 ✓ pytorch ✓ tf.layers ✓ keras ✓ chainer 2014
GoogLeNet-v1 (Inception) ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer 2014
ResNet-18 ✓ pytorch ✓ tf.layers ✓ keras 2015
ResNet-34 ✓ pytorch ✓ tf.layers ✓ keras 2015
ResNet-50 ✓ pytorch ✓ tf.layers ✓ keras ✓ chainer (WiP) 2015
ResNet-101 ✓ pytorch ✓ tf.layers ✓ keras 2015
ResNet-152 ✓ pytorch ✓ tf.layers ✓ keras 2015
ResNeXt-50 ✓ pytorch ✓ tf.layers ✓ keras 2016
ResNeXt-101 ✓ pytorch ✓ keras 2016
Xception ✓ pytorch ✓ tf.layers ✓ keras 2016
DenseNet121 ✓ pytorch 2016
DenseNet169 ✓ pytorch 2016
DenseNet201 ✓ pytorch 2016
DenseNet264 ✓ pytorch 2016
MobileNet-v1 ✓ pytorch ✓ tf.layers 2017
MobileNet-v2 ✓ pytorch 2019
EfficientNetB0 ✓ pytorch 2019
EfficientNetB1 ✓ pytorch 2019
EfficientNetB2 ✓ pytorch 2019
EfficientNetB3 ✓ pytorch 2019
EfficientNetB4 ✓ pytorch 2019
EfficientNetB5 ✓ pytorch 2019
EfficientNetB6 ✓ pytorch 2019
EfficientNetB7 ✓ pytorch 2019
問題 Implementation Published Year
Grad-CAM ✓ pytorch 2016
問題 Implementation Published Year
SemanticSegmentationとは?
Binalization ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
SemanticSegmentation ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
UpSampling. NearestNeighbor補間 ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
UpSampling. Transposed convolution ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
Feature Map Concat ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
UNet ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer 2015
UNet-like Binarization ✓ pytorch 2015
UNet-like ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer 2015
SegNet Binalization ✓ pytorch 2015
SegNet ✓ pytorch 2015
問題 Implementation Published Year
AutoEncoder MNIST ✓ pytorch
AutoEncoder cifar10 ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
AutoEncoder ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
AutoEncoderによる異常検知 ✓ [MNIST] pytorch ✓ [FashionMNIST] pytorch
Convolutional AutoEncoder cifar10 ✓ pytorch ✓ tf.slim✓ keras ✓ chainer
Convolutional AutoEncoder ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
VAE (Variational AutoEncoder) MNIST ✓ pytorch
VAE + Clustering MNIST ✓ pytorch
問題 Implementation Published Year
GAN cifar10 ✓ pytorch ✓ tf.slim (WiP) ✓ keras ✓ chainer
GAN ✓ pytorch
DCGAN cifar10 ✓ pytorch ✓ tf.keras ✓ tf.slim ✓ keras ✓ chainer
DCGAN ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
Conditional GAN MNIST ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer 2014
Conditional GAN CIFAR10 ✓ pytorch ✓tf.slim ✓ keras ✓ chainer
pix2pix Seg ✓ pytorch ✓ tf.keras 2016
pix2pix-GP ✓ pytorch -
WGAN CIFAR10 ✓ pytorch 2017
WGAN ✓ pytorch 2017
WGAN-GP CIFAR0 ✓ pytorch 2017
WGAN-GP ✓ pytorch 2017
alpha-GAN MNIST ✓ pytorch 2017
alpha-GAN cifar10 ✓ pytorch 2017
CycleGAN ✓ pytorch
問題 Implementation Published Year
Style Transfer ✓ tf.keras
問題 Implementation Published year
RNN ✓ pytorch ✓ tf.slim ✓ keras
LSTM ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
Bi-directional LSTM ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer (WiP)
GRU ✓ pytorch ✓ tf.slim ✓ keras ✓ chainer
Seq2seq ✓ pytorch ✓ keras
Transformer ✓ pytorch
Transformer (Hard Attention) ✓ pytorch 2014?
HRED ✓ pytorch 2015
Word2Vec (Skip-gram) ✓ pytorch

Theory

Num Theory 1 Answer Num Theory 2 Answer
1 パーセプトロン AND 13 画像認識
2 パーセプトロン 学習 14 誤差関数
3 パーセプトロン 収束性 Sigmoid Cross Entropy
4 パーセプトロン Sigmoid Convolutional Layer
5 パーセプトロン バイアス Padding
6 パーセプトロン OR Stride
7 パーセプトロン NOT Max-pooling layer
8 パーセプトロン XOR Average-pooling layer
9 多層パーセプトロン FeedForward
10 多層パーセプトロン 学習
11 更に多層パーセプトロン
12 ニューラルネットのクラス化

DataAugmentation

番号 問題 答え 番号 問題
1 自分で用意したデータセットの読み込み
2 ミニバッチの作成
3 イテレーション・エポック
4 データ拡張・水**転
5 データ拡張・上下反転
6 データ拡張・回転

OpenSource

問題 答え
MNIST
CIFAR-10
Fashion MNIST

フレームワーク早見表

PyTorch Tensorflow Keras Chainer Caffe
入力 [mb,c,h,w] [mb, h, w, c] [mb, h, w, c] [mc, c, h, w] [mb, c, h, w]
教師ラベル index [mb] onehot [mb, cls] onehot [mb, cls] index [mb] index [mb]
速度 まあまあ早い 早い 早い 普通 まあまあ早い?
how to ✓install(Docker)
✓install(Native)
sample ✓(slim)
✓(layers)
✓(raw)

Citation

@article{yoyoyo-yoDeepLearningMugenKnock,
    Author = {yoyoyo-yo},
    Title = {DeepLearningMugenKnock},
    Journal = {https://github.com/yoyoyo-yo/DeepLearningMugenKnock},
    Year = {2019}
}

License

© Curry yoshi All Rights Reserved.

This is under MIT License.