Overview

此專案為深度學習課程(DLP)作業,包含以下6個主題及技術

  1. Handcraft Neural Network
    • Backpropagation、Neural Network、numpy
  2. Iamge Classification
    • CNN、SCCNet
  3. Image Segmentation
    • UNet、ResNet
  4. Conditional Video Generation
    • VAE、Video Generation
  5. Image Inpainting
    • Transformer、MaskGIT
  6. Conditional Image Generation
    • Diffusion

Background

於大一暑假,修習”深度學習(DLP)”之作業

LAB

Handcraft Neural Network

在不使用Pytorch、Tensorflow等深度學習套件的情況下,使用Numpy刻出一個神經網路。神經網路的架構圖如下:
Neural Network
實作基於矩陣的backpropagation,實作梯度的傳播,優化參數,進行資料點的分類
結果如下:
Data Point Prediction

Iamge Classification

構造CNN,用來做基於腦電圖(EEG)的患者動作分類,使用Spatial Component-wise Convolutional Network(SCCNet),網路架構圖如下:
SCCNet
使用Pytorch實作,並且對於一般訓練及Fine-Tune等方式做分析

reference paper: SCCNet

Image Segmentation

只使用Pytorch來構造UNet以及ResNet34-Unet,用來做寵物圖片的前後景image segmentataion,如圖:
Image_segmentation
建構的網路架構如下:
UNet:
Unet
Res34-UNet (以ResNet做Encoder,UNet做Decoder):
Res34-UNet
另外也實作不同的Data Augmentation(包括UNet論文中使用的Elastic Transformation等等)

reference paper: UNetRes34-Unet

Conditional Video Generation

建構Conditional Varitional AutoEncoder (CVAE)模型,用來做圖片的生成
首先,推導出CVAE的objective function:
CVAE Math
接著,基於CNN建構出CVAE,模型架構如下:
CVAE
使用CVAE,以肢體骨架圖以及前一幀的影片內容生成影片的下一幀。也就是,在inferece時,可以使用單張frame跟任意數量的骨架圖片生成出一整段的影片
另外,也實作對於loss的adaptive adjustment,這裡實作對於KL Divergence的Annealing。

reference paper: Everybody Dance NowStochastic Video Generation with a Learned PriorCyclical Annealing Schedule

Image Inpainting

建構基於Transformer的Masked Generative Image Transformer(MaskGIT),可以對於部分有缺漏(被mask住)的圖片的inpainting,如圖:
Inpaint Result
建構的MaskGIT架構如圖:
MaskGIT
將圖片encode成一張小圖,並且做離散化的Tokenize,限制embedding的可能性,讓模型更容易去model embedding space。接著使用Transformer來做inpainting,把其中的mask token補成其他的token,再用Decoder還原回圖片。

reference paper: MaskGIT

Conditional Image Generation

使用Hugging Face API來建構Diffusion Model及其model pipeline,基於種類的Condition來生成幾何體,如圖:
Geometry

reference paper: DDPM

Ohter

本文僅簡單概述Project的部分成果,詳細的內容、分析詳見:
https://github.com/youzhe0305/NYCU-DLP
裡面有完整的程式碼及報告