---
# System prepended metadata

title: Paper - CVPR (Unity-RL)

---

# Paper - CVPR (Unity-RL)


## Introduction 

* Optical flow as a mid-level representation for ***sim-to-real transfer*** on reinforcement learning
	* physical property? (a good good generalization property? proved by the speed experiments)
	    * Previous methods mostly focus on semantic segmentation, depth maps, surface normals, or edges.
	    * These mid-level represenations only capture static feature instead of motion features
		* good transfer property as we can simulate the object motion 
* We are the first paper investigating on the optical flow factorization?
    * Optical flow can be factorized into two different components
	* obj + ego >>>>>> all
		* this means we need
		* can we obtain the ego motion of the robot by camera calibration? if so, this means that we find a new way to improve the representation of optical flow. (practical deployment)
			* 可以實際 deploy 上機器人?????
* Generalization capability of the motion?
* We ablatively investigate on the representation of temporal information 
	* Optical flow or stack frame?
	* Synergism of optical flow with the other mid-level representations

## Experiment Spec
* https://hackmd.io/@Hsiao/r1zW622Zt
* 

## Background
### Optical flow estimation

### Mid-level representations

### (Optional) Sim-to-real transfer

## Factorization of Optical Flow 
* Simulator ?
* Depth / Camera Intrisic / Extrinsic -> Ego motion

## Experiment Results
### Experimental Setups
* Optical flow
* Segmentation 
* Depth
* Simulation environments
* Evaluation metrics

### Flow Exps
![](https://i.imgur.com/Xg2p5Rw.png)

* 補 Object Flow
* 補 seed 
* 跑新的環境

- 從最好到最壞分別為 ego+obj、all、ego
- ego+obj 優於 all 應該是因為 agent 能直接得知自己移動造成的 flow（ego）和人相對於自己的 flow（obj），而不需要從 all 中學到將兩者分離
- all 仍表現得不錯，或許是 agent 能學出類似 all == ego + obj 這樣的分解；另外也有可能真正重要的是不考慮 agent 自身位移，單純看物體本身的移動
- 單只有 ego 是表現最差的，推測可能是由於缺少物體本身移動而造成的 flow 資訊



### Depth Exps
![](https://i.imgur.com/Rfj3Gv7.png)

由實驗的結果可觀察到：

- 當 depth stack 數為 1 時，RL agent 是完全練不起來的。而隨著 stack 數量增加，agent 的表現也逐漸成長，代表若只有當下環境深度的資訊對於 agent 的學習並沒有幫助，還是需要仰賴物體移動的資訊才能讓 agent 對於環境的狀況更加了解
- single channel (grayscale) 的深度圖比起 multi channel 的深度圖對於 agent 更有幫助
- 使用 stack 超過一張的深度圖訓練時，代表 agent 可以獲得一些物體移動的資訊，但結果並不像使用 optical flow 訓練來得有效率，因為 agent 只能藉由 frame 與 frame 之間的關係來推斷物體的移動資訊，而 flow 是直接給予了 agent 環境中各物體的 motion 值，由此可知越清楚的 motion 資訊對於 agent 越有幫助，因此證明了 flow 是對於 agent 較有幫助的 representation

### Segmentation

![](https://i.imgur.com/wEvQckg.png =500x)

* 單純bin_seg會練不起來，原因是agent會不知道路的邊界在哪，因此segmentation的邊界分割還是有其重要性在
* 加入raw image之後就可以train起來，但效果不如單純用segmentation，可見要再結合raw image對agent來說還是比較麻煩的

### Observation with black background
observation 除了人之外皆為黑色，包含object flow, instance flow, binary segmentation

![](https://i.imgur.com/7FnUeS8.png =500x)

- 當只有stack 1 時，agent 皆練不起來，發現agent 失敗原因為經常走到道路外，代表如果agent 在observation 無法得到道路的資訊，沒辦法主動學到邊界訊息。
- 把raw image 也加入observation 後，reward 都可以超過0，其中instance flow 的表現最好。
- instance flow 表現較object flow 好，因為object flow 把自身移動消除，所以少了移動資訊後表現會更差。
- 將object flow stack 3 後表現超過binary segmentation stack 4（皆有加入raw image），表示把flow stack 多張後，agent 可以學到更多的資訊。

### Generalization Capability
* 比成功率: flow vs depth

#### all_s1 v.s. ego_s1 + obj_s1
![](https://i.imgur.com/ggOEGc3.png =360x)



### Temporal Information
timestep (t, t+1) flow v.s. stacked (t, t+1)

* Optical flow
* Stacked segmentation?
* Depth
 

