Basic Deep Learning

Book list of Deep learning


2018年ごろに以下2冊が入門本として勉強しました。

  • 深層学習(岡谷 貴之 著) 2015年
  • ゼロから作るDeep Learning - Pythonで学ぶディープラーニングの理論と実装(斎藤 康毅 著) 2016年

CNNの基本


Loss関数

Neural Networkは最適なパラメータ(Weightとbias)を見つけるため、学習で損失関数が最小値を取るとき

  • 2乗和誤差
  • クロースエントロピー誤差

パラメータ更新

https://github.com/j-w-yun/optimizer-visualization

SGD(確率的勾配降下法)

Momentum

  1. 勾配の累積 (モメンタム更新):

  2. パラメータの更新:

AdaGrad

  1. 勾配の累積二乗和:

  2. パラメータの更新:

Adam

  1. 勾配の移動平均 (モーメント計算):

  2. バイアス補正:

  3. パラメータの更新:

正則化

モデルが過学習(オーバーフィッティング)するのを防ぐため目的にパラメータに何らかの制約を課すことです
よく使われる正則化手法は以下です。

制約付き最適化(KKT条件から導く)

L2正則化(Ridge回帰)

寄与が小さい重みを抑える

L1正則化(Lasso回帰)

寄与が小さい重みをゼロにする

Dropout

データ拡張

Early Stopping

バッチ正則化

basic-cnn-models

Dataset

画像

  • MNIST
  • ImageNet
  • COCO2017
  • Cityscapes
  • KITTI
  • nuScenes
  • Megaface
  • WaymoOpen

音声

  • LibriSpeech
  • AudioSet
  • Common Voice

Early models

モデル 発表年 学会または発表場所 論文タイトル URL
AlexNet 2012 NIPS 2012 (現NeurIPS) ImageNet Classification with Deep Convolutional Neural Networks AlexNet
VGG16 2014 arXiv (未発表) Very Deep Convolutional Networks for Large-Scale Image Recognition VGG16
GoogLeNet 2014 CVPR 2015 (2014年発表) Going Deeper with Convolutions GoogLeNet
ResNet 2015 CVPR 2016 (2015年発表) Deep Residual Learning for Image Recognition ResNet
DenseNet 2016 CVPR 2017 (2016年発表) Densely Connected Convolutional Networks DenseNet

Application models

Detection

論文名 発表時間 発表者 発表組織 URL
R-CNN 2013/11 Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik UC Berkeley link
Fast R-CNN 2015/04 Ross Girshick Microsoft Research link
Faster R-CNN 2015/06 Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun Microsoft Research link
YOLO 2015/06 Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi University of Washington, Allen Institute for AI link
SSD 2015/12 Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg Google Research, University of North Carolina, Chapel Hill link
RetinaNet 2017/08 Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár Facebook AI Research link
YOLOv3 2018/4 Joseph Redmon, Ali Farhadi University of Washington, Allen Institute for AI link
CenterNet 2019/05 Xingyi Zhou, Dequan Wang, Philipp Krähenbühl UT Austin link
YOLOv4 2020/04 Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao Independent & Academia Sinica link
YOLOv5 2020/10 Ultralytics Team Ultralytics link
EfficientDet 2020/03 Mingxing Tan, Ruoming Pang, Quoc V. Le Google Research link
DETR 2020/05 Nicolas Carion, Francisco Massa, Gabriel Synnaeve, et al. Facebook AI Research link
Deformable DETR 2020/10 Xiaohang Zeng, Xizhou Zhu, Yue Cao, et al. Microsoft Research Asia link

Segmentation

論文名 発表時間 発表者 発表組織 URL
FCN 2014/11 Jonathan Long, Evan Shelhamer, Trevor Darrell UC Berkeley link
U-Net 2015/05 Olaf Ronneberger, Philipp Fischer, Thomas Brox University of Freiburg link
SegNet 2015/11 Vijay Badrinarayanan, Alex Kendall, Roberto Cipolla University of Cambridge link
DeepLab 2016/06 Liang-Chieh Chen, George Papandreou, Iasonas Kokkinos, Kevin Murphy, Alan L. Yuille Google DeepMind & University of Maryland link
PSPNet 2016/12 Hengshuang Zhao, Jianping Shi, Xiaojuan Qi, Xiaogang Wang, Jiaya Jia Chinese University of Hong Kong link
Mask R-CNN 2017/03 Kaiming He, Georgia Gkioxari, Piotr Dollár, Ross Girshick Facebook AI Research link
DeepLabv3 2017/09 Liang-Chieh Chen, George Papandreou, Florian Schroff, Hartwig Adam Google Research link
Semantic FPN 2018/02 Xiaoxiao Li, Ross Girshick, Kaiming He, Piotr Dollár Facebook AI Research link
DeepLabv3+ 2018/03 Liang-Chieh Chen, Yukun Zhu, George Papandreou, Florian Schroff, Hartwig Adam Google Research link
HRNet 2019/04 Jingdong Wang, Ke Sun, Tianheng Cheng, Borui Jiang, Chaorui Deng, et al. Microsoft Research Asia link
DETR 2020/05 Nicolas Carion, Francisco Massa, et al. Facebook AI Research link
ViT (Vision Transformer) 2020/06 Alexey Dosovitskiy, Lucas Beyer, et al. Google Research link
PointRend 2020/03 Alexander Kirillov, Yuxin Wu, Kaiming He, Ross Girshick Facebook AI Research link
Swin Transformer 2021/03 Ze Liu, Yutong Lin, Yue Cao, et al. Microsoft Research Asia link
SegFormer 2021/06 Enze Xie, Wenhai Wang, Zhiding Yu, Anima Anandkumar, Jose M. Alvarez, Ping Luo CUHK & NVIDIA Research link
Swin-UNet 2021/07 Hu Cao, Yue Cao, Zheng Zhang, Ming-Hsuan Yang, Ran He, Jian Yang Nanjing University of Science and Technology link
MaskFormer 2021/10 Bowen Cheng, Alex Schwing, Alexander Kirillov Facebook AI Research link
Segment Anything 2023/04 Alexander Kirillov, Eric Mintun, et al. Meta AI link

BEVDet

概要説明

マルチカメラの3D

既存技術より優れ

キー技術

  • Image-view Encoder

  • View Transformer

CaDDN

概要説明

Categorical Depth Distribution Network for Monocular 3D Object Detection
Cody Reading Ali Harakeh Julia Chae Steven L. Waslander
University of Toronto Robotics Institute

https://arxiv.org/pdf/2103.01100

bevformer

概要説明

DETR

概要説明

DETR (DEtection TRansformer) は、物体検出(object detection)タスクにおける新しいアプローチとして、2020年に Facebook AI(現 Meta AI)によって発表されたアルゴリズムです。
DETR は、従来の物体検出モデルとは異なり、トランスフォーマーベースのアーキテクチャを使用することで、検出と分類のプロセスを大幅に簡素化しています。
論文:https://arxiv.org/pdf/2005.12872

DETR の特徴

Transformer Architecture

自然言語処理で成果を挙げたTransformerを画像処理に応用しています。
入力画像をエンコーダーで特徴量に変換し、トランスフォーマーデコーダーが物体の位置(bbox)とClass labelを予測できます。

End-to-endのアプローチ

従来の物体検出では、アンカー生成や後処理(NMS: Non-Maximum Suppression)などの手作業のステップが必要でしたが、DETR ではこれらが不要となります。
これにより、シンプルで効率的な学習が可能になっています。

マルチタスク(物体検出と分類を同時に実行)

DETR は、画像中の物体の位置を検出し、それらを分類するプロセスを統一されたフレームワーク内で行います。

環境の準備

DETR を動かすには、Python と PyTorch の環境が必要です。以下の手順で準備を進めます。

Python 環境の作成

1
2
3
4
5
# 仮想環境の作成(例: conda)
conda create -n detr_env python=3.9 -y
conda activate detr_env
PyTorch のインストール
PyTorch を CUDA 対応でインストールします(GPU 使用の場合)。
1
2
3
4
5
6
コードをコピーする
# GPU 用 PyTorch (CUDA 11.7) のインストール
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

# CPU 用 PyTorch のインストール(GPU がない場合)
pip install torch torchvision torchaudio

DETRインストール

早速、Git clone を実行して、確認しましょう。

1
2
3
4
5
git clone https://github.com/facebookresearch/detr.git
cd detr

# 必要なライブラリをインストール
pip install -r requirements.txt

DETR を使用した推論

それでは、COCO データセットを使用した事前学習済みモデルで物体検出を行います。

detr_inference.py ファイルを作成して推論コードを準備します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

import torch
from transformers import DetrForObjectDetection, DetrImageProcessor
from PIL import Image
import requests

# 事前学習済みモデルとプロセッサのロード
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")

# 入力画像を用意
url = "https://images.unsplash.com/photo-1593642532973-d31b6557fa68"
image = Image.open(requests.get(url, stream=True).raw)

# 推論
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)

# 物体検出結果を取得
results = processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=[image.size])

# 検出結果を出力
for result in results:
for score, label, box in zip(result["scores"], result["labels"], result["boxes"]):
print(f"Label: {model.config.id2label[label.item()]}, Score: {score.item():.3f}, Box: {box.tolist()}")

保存して実行します。

1
python detr_inference.py

DETRのTraining

1
python -m torch.distributed.launch --nproc_per_node=1 --use_env main.py --coco_path /workspaces/bev-playground/dataset/coco