---
tags: Knock Knock! Deep Learning
---
Day 23 / DL x CV / CV 總結與發展
===
又到了總結篇。CV 其實個人涉略比起 NLP 少很多,但希望看完這個子系列還是能對 deep learning 在 CV 的應用有大致的概念。下一個子系列會短一些,介紹概念非常有趣跟有彈性,但實作起來相當困難的 reinforcement learning。
同樣的,我們總結一下,接著介紹一些 CV tasks 和發展方向。
## 總結
2009 年釋出的 ImageNet 和後來 deep learning 在 CV 領域的興起息息相關。一時之間,大家都在努力加大、加深自己的 model,發現比起傳統方法,訓練在 big data 上的 CNN 效率跟成績更勝以往。
Convolutional + activation + pooling 的疊疊樂成為標配,這樣的架構也成功訓練在許多不同的應用任務上。甚至在 NLP task 都能用 CNN 抽取文字結構的特徵,同樣的 RNN 和 BERT 也能大力協助和文字相關的 CV task 或 video 等等任務。
2014 年,效果驚人的 GAN 提出後,在整個學術界蔚為風潮了好幾年,上百種不同的 GAN model 被提出,許多任務從圖像生成、風格轉換、甚至語言生成都有了新樣貌。
CV 的觸角理所當然的伸進了自駕車領域。自駕車中的幾個關鍵技術有了 deep learning 的加入,發展的可能性又更多了一些,而投入自駕車技術也成為鑽研 CV 領域的人熱門的選擇。
接下來就來看一下 CV 還有哪些有趣的 task,以及未來發展的難題。
## CV Tasks
CV 領域的相關任務族繁不及備載,提供簡單的概覽:
- **Recognition**
- Object Detection
- Object Classification
- Face Identification
- Handwritten Digits Recognition
- Pose Estimation:姿勢預測
- Optical Character Recognition (OCR):把圖片中的字轉成文字
- **Segmentation**
- Semantic Segmentation
- Instance Segmentation
- **Image Generation / Image-to-Image Translation**
- Image Synthesis:生成不存在的圖
- Style Transfer
- Colorization:上色
- Super Resolution:將圖片轉換成更清晰的圖
- Image Reconstruction:將不完整的圖片補足
- **Vision with Natural Language**
- Image Captioning:為圖片加註解
- Text-to-Image:根據文字生成圖像
- **Video**
- Video Prediction:預測 video 接下來長怎樣
- Optical Flow:找出相鄰圖片中物體的移動軌跡
- Visual Object Tracking:找出相鄰圖片中相同的物體
- **3D**
- Scene Reconstruction:從一組圖像建出環境的 3D model
- 3D Object Detection:找出 3D bounding box
- **And many others**
還有非常多任務,很多都包含在上面這些任務底下。
## CV 發展
那 CV 接下來的發展,還有哪些難題呢?
### Fairness Research in CV
和 NLP 領域一樣,只要有 data,就會有 bias 的問題。

*—— 不同膚色女性的人臉辨識錯誤率。顯然在 training data 中,黑人女性較少出現。[1]*

*—— 這跟把擔擔麵預測成 spaghetti 一樣讓人憤怒啊![1]*
如何有意識的讓 data 更平衡更透明,一直是各個領域正在持續努力的課題。有興趣可以參考 [1] 提供的更多例子。
### 3D Deep Learning
3D 圖像是很多應用領域的基礎,從機器人、自駕車,到 AR、醫療領域,就算現在 CV 在 2D image 有不錯的進展,在 3D 的世界卻會遇到新的難題。在 2D 世界漸漸被拓荒成功以後,近幾年 3D 的課題相對越來越火熱。
3D deep learning 會有哪些不同的難題呢?
1. 豐富的 representation:圖像一般就是一張寬 x 高的矩陣圖。但 3D 結構可以有很多種表示:multi-view(一組各個角度的物體圖)、point cloud(一堆點)、volumetric(一堆小方塊組成)等等。太精準的表示法有時候不好處理進 model,而簡便的表示法又可能會太粗略不精準。
2. 更複雜的 CNN:整個 CNN 需要上升一個維度,複雜度也提升了許多,硬體資源也更需要被考量。
3. 許多任務也多了一個維度要考量:3D 圖像生成、3D reconstruction 等等,多一個維度難度可能就好幾級跳。
3D 世界的 CV 還存在非常多可能性,對 2D 世界感到太小兒科想挑戰自己的話,那 3D 世界應該可以滿足你。[2] 有介紹一些 3D deep learning 的研究成果,可以參考入門。
### Video Understanding
另一個也算是多一個維度的任務就是 video,不過多的是時間維度,挑戰性也不亞於 3D deep learning,且娛樂性極高。
很多任務都是 2D 圖像的延伸,例如自駕車 object detection 變成 real-time、需要更多張連續圖片做的動作分析、video captioning 等等。雖然說可以從 2D 圖像任務的 model 延伸到 video 可以比較有頭緒,但多了時間維度,整個 input 的 feature extraction 方式可以完全不同,也增加了許多挑戰性。
另一個難題是一般 image dataset 已經很巨大,而 video dataset 資料量又更巨大了。如何節省資源訓練出高效的 model 也是 video 中特別重要的問題。
[3] 有簡單介紹一些 model,也可以當作參考。
## 參考資料
1. [CS231n Lecture Slides: Fairness Accountability Transparency and Ethics in AI](http://cs231n.stanford.edu/slides/2020/lecture_14.pdf)
2. [CS231n Guest Lecture Slides: 3D Deep Learning](http://cs231n.stanford.edu/slides/2020/lecture_16_Hao.pdf)
3. [CS231n Lecture Slides: Learning on Videos](http://cs231n.stanford.edu/slides/2020/section_8_video.pdf)