閱讀《A2-RL: Aesthetics Aware Reinforcement Learning for Image Cropping Debang》

閱讀《A2-RL: Aesthetics Aware Reinforcement Learning for Image Cropping Debang》

一: 文章的主要任務

本文介紹的是如何用強化學習的方法對圖片做美學剪裁
如下圖,Input是一張風景圖,初始化是整張圖片,然後經過多個action後,我們得到了最後的裁剪方案作爲輸出。
Selection_067.png

二: 相關的工作

對於圖片的裁剪,主要有兩個大方向:

1. 基於Attention-based: 這個的目的是在原圖中尋找關鍵區域。比如說在圖片上尋找信息量最大的區域等等
2. 基於Aethetics-based: 即基於美學,這一方面是想在原圖中尋找最讓人感覺舒服的區域,這也是本文的目的。
3. 其他還有基於Change-based, 即比較原圖和裁剪後的圖,根據比較結果決定要去除哪些無關要緊的區域,保留一些質量較高的區域

對於前人的工作,主要有如下缺點:

1. 首先,大部分弱監督的裁剪方法都是依賴於滑動窗口機制(Sliding window mechanism)
2. 滑動窗口的機制有一些缺陷:即要求我們要固定長寬比
3. 大部分滑動窗口的方法會產生上萬個備選窗口,這使得程序很耗時

三: 本文的主要想法

針對上述缺點,文章提出了基於Reinforcement Learning的解決方案:

1. 首先,把我們的問題看作一個決策鏈問題,這個過程就需要我們定義好State space 和 action space
2. 提出本文的算法框架(A2-RL)
3. 設計出一個reward函數使之能有益於我們對圖片進行美學裁剪

四: State and Action

  1. 對於當前狀態,我們可以表示成:
    st={o0,o1,...,ot1,ot}

    其中ot 表示agent當前所觀察到環境,即當前裁剪的圖片
  2. 對於{o0,o1,...,ot1} 表示過去的記憶,即前t-1次迭代過程的剪裁圖片,本文用網絡LSTM來處理這些記憶
    這裏需要注意,雖然我們的狀態是當前所觀察到的環境加上過去的回憶,但是訓練的時候只需要輸入但前所觀察到的環境就可以的,我們的LSTM會提供我們之前的記憶信息
    Selection_071.png

如上圖所示,我們把Agent觀察到的場景,即裁剪的結果,先進行卷積操作,最後輸出一個向量(即Local Feature),而Global Feature 是原圖進行卷積的結果,把Local Feature 和 Global Feature 合併起來就是我們是ot

Action

Selection_069.png

Action 很簡單,就只有14個動作

五: Reward Function

  1. reward的計算方法就是: 當前最新裁剪的圖片的美學分數與上一次迭代結果的差值,再用信號函數把差值限制在[-1,1]內
    sign(saes(It+1)saes(It))
  2. 此外,還要加一個附加的reward設定0.001(t+1) , 目的是想使我們的迭代步數儘可能的小
    rt=sign(saes(It+1)saes(It))0.001(t+1)
  3. 爲了不讓我們的Agent往極端的方向上一去不復返,我們還要設計另一個附加的reward。記ar 表示裁剪窗口的長寬比,nr 表示一個懲罰,最終,reward function 可以寫成:
    rt(st,at)={rt+nr,if ar<0.2 or ar>2rt, othewise
  4. 最後,就是saes 如何計算了。本文用一個預先訓練好的網絡VFN來獲得一張圖片的美學分數。這個網絡的結果在這:https://arxiv.org/pdf/1702.00503.pdf

六: 算法框架

最後,總體框架如下:
Selection_070.png

如上圖,我們先把剪裁的圖片進行5層的卷積,然後經過一個全連接層輸出一個向量作爲Local Feature,併合並上對原圖的卷積的結果最爲RL算法的輸入ot 。其中即時的回報通過把Local Feature 放入預先訓練好的網絡VFN來獲得。因爲本文的算法採用的是Actor-Critic框架,所以輸出分爲兩個部分,一個是由Actor輸出的action,另一個是由critic輸出的對該action的評價。

七: 算法細節

本文的算法是基於asynchronous advantage actor-critic(A3C),相比於原始的算法,本文針對實際問題做了一些改善。
1. 去掉同步機制,即本文的實驗並沒有隨機生成多個隨機場景做訓練。但是在訓練的時候輸入是用mini-batch的形式作爲輸入的,同樣起到了同步訓練的結果。
2. 使用優勢函數以及加入了熵, policy gradient 公式如下

θlogπ(at|st;θ)(RtV(st;θv))+βθH(π(st;θ))

相比於原始的policy gradient:
θlogπθ(s,a)(Qπθ(s,a)Vπθ(s))

我們發現,本文對算法的變動主要是用reward來表示你的Q function,不過這是很常規的操作,其次是加入了一個熵項,從下面的算法更能直接看出差別
![Selection_073.png
](https://upload-images.jianshu.io/upload_images/13326502-05e771edd3b0efc2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Selection_073.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章