預測圖像旋轉角度就能實現自監督?
Unsupervised Representation Learning by Predicting Image Rotations(2018)
概述
「對圖像做各種幾何上的變換,試圖讓模型辨識並從中學習」是Self-Supervised Learning研究中主要的手段。本次選讀的論文使用了非常簡單的概念—圖像旋轉。文中有提到,人類基本上都是以頭上腳下這樣的視角來認知世界,因此,如果我們看到一樣角度跟正常認知不一樣的圖片時,大致上也能判斷出來(當然,必須撇除掉那些有對稱性,無法看出角度偏差的物體,ex.球體)利用這一點,作者打算訓練出能像人類一樣能夠看出旋轉差異的模型,藉此讓使模型理解物件的本質。並且該研究的結果在當時也是大幅拉近了Self-Supervised和Supervised之間的差距。
研究方法
該模型所要預測的,並不是旋轉角度的數值,而是把這個問題離散化。整個資料集會有K種旋轉角度(ex. 0°、180°)並各自劃分為一個類別,因此共會有K個類別。所以,整個模型其實就是在處理分類問題,自然loss function也是使用Categorical Cross Entropy。至於分類那幾種旋轉角度,會訓練出最好的模型呢?這裡先說結論,使用 0°、90°、180°、270° 四種的效果是最佳的,原因可以先想想看,本文後續會提到作者對此的看法。
另外,概述中也有提到,之所以用旋轉角度的分類作為Pretext Task,正是因為在直覺上來說,只有當模型確實對物件的特徵有所認知,才能辦法做好角度的分類。為了證明該論述是正確的,論文中還作了以下的實驗。
-
將模型的各層Activation視覺化
作者將以AlexNet為基礎所訓練好的自監督與監督式模型中某一層convolution layer經過activation後的feature maps取樣作加總,並根據maps和原圖的比例放大後即產生了下圖。可以看出自監督模型在辨識旋轉的任務中,學習到了關注圖像中重要的資訊(ex. 頭部、眼睛等等)這點其實就跟監督式學習如出一轍。
-
將第一層filter視覺化
可以看出Self-Supervised的filter有豐富的多樣性,能夠配合下游的各種任務。
最後統整一下,首先此方法計算量與收斂速度跟supervised差不多,而且還能平行計算。另外,圖像的前處理簡單,只需要轉置跟翻轉即可實現。如果前處理複雜,可能留下不相干的資訊被模型學習到。
實驗結果
首先,該研究使用CIFAR10資料集做為測試,並且把這個旋轉辨識的模型稱為RotNet(詳細模型參數設定請參閱原文)以下是對於該模型成果的一些分析與討論。
-
模型深度與特徵學習間的關係
這裡訓練出三種不同深度(3, 4, 5個卷積block,每個block又各有3層卷積)的RotNet,並對每個網路分別截斷不同的位置後,再加上fully connected layers產生最終的輸出來預測CIFAR10。簡單來說,就是為了衡量各層feature maps的品質,使用了層數不同的網路做測試。可以從結果的表格發現,僅使用兩個convolution block做預測的模型表現較佳。作者假設此現象是因為太深層的convolution就會太專注於旋轉角度分類的高階特徵,不利於適用後續其他任務。另外,越多層convolution的網路表現也比較好,可能是因為深度增加讓前面幾層convoution比較不需要處理旋轉分類的問題,能關注到更多低階的特徵,自然能適用的任務更加全面。
-
旋轉角度數量與特徵學習間的關係
為了進行測試,作者使用了多種旋轉角度和數量做自監督學習。結果發現使用四種角度的表現最好,而僅用兩種的表現最差。作者推測兩個角度資訊太少,不足以讓模型充分學習。而八個角度一方面較為不易分辨,另一方面多餘的角度(45°、135°…)在旋轉的執行上會造成 visual artifacts,產生了某些可能被AI辨識出但對後續應用無益的特徵或痕跡。另外,僅有 90°、270° 的表現比 0°、180° 差則被歸因為 0° 的圖片才是正常圖像辨識中的模式,因此沒有 0° 作為學習的資料會使模型表現較差。
-
和supervised與其他self-supervised的比較
根據前段的結果,選擇僅使用訓練好的兩個convolution block提取圖像特徵,後續則分成兩種策略做網路結構。
1.self_supervised卷積後直接加上三層fully connected layers
2.self_supervised卷積加上一個新的卷積block後再加上一層fully connected layers
結果當然是,先屌贏之前的自監督,並且沒有fine-tuned的模型跟監督式的準確度僅差距 1.64%(92.80% vs 91.16%)fine-tuned後,模型的準確度更是向上提升些許。
-
物件分類與旋轉辨識的關聯性
可以從下圖圖(a)中看到,紅線是supervised base line,其中object recognition的準確度跟rotate任務的準確度呈正相關,而且rotate訓練次數越多,後續的圖像分類問題收斂速度也越快。另一方面,使用不同數量級的訓練資料做測試,圖(b)中可發現在CIFAR10上,當訓練資料量小於1000時,semi-supervised的策略能夠贏過supervised下相同結構之模型。
結語
這篇論文的方法算是非常簡單的,沒有甚麼數學上的問題,純粹就是提出一個方法,而且效果也很不錯。在SSL的研究還沒那麼蓬勃發展的時期,這篇論文算是大幅推進了該領域。不過之後如果介紹近2020~2021年間SSL有名的論文,可能重新回來看這篇,會有種「研究走的真他媽快」的感覺。總之,這是我第一篇紀錄並介紹論文的文章,挑了相對簡單的,可能是因為我就爛.jpg,只看得懂簡單的論文。
回到目錄
預測圖像旋轉角度就能實現自監督?
Unsupervised Representation Learning by Predicting Image Rotations(2018)
概述
「對圖像做各種幾何上的變換,試圖讓模型辨識並從中學習」是Self-Supervised Learning研究中主要的手段。本次選讀的論文使用了非常簡單的概念—圖像旋轉。文中有提到,人類基本上都是以頭上腳下這樣的視角來認知世界,因此,如果我們看到一樣角度跟正常認知不一樣的圖片時,大致上也能判斷出來(當然,必須撇除掉那些有對稱性,無法看出角度偏差的物體,ex.球體)利用這一點,作者打算訓練出能像人類一樣能夠看出旋轉差異的模型,藉此讓使模型理解物件的本質。並且該研究的結果在當時也是大幅拉近了Self-Supervised和Supervised之間的差距。
研究方法
該模型所要預測的,並不是旋轉角度的數值,而是把這個問題離散化。整個資料集會有K種旋轉角度(ex. 0°、180°)並各自劃分為一個類別,因此共會有K個類別。所以,整個模型其實就是在處理分類問題,自然loss function也是使用Categorical Cross Entropy。至於分類那幾種旋轉角度,會訓練出最好的模型呢?這裡先說結論,使用 0°、90°、180°、270° 四種的效果是最佳的,原因可以先想想看,本文後續會提到作者對此的看法。
另外,概述中也有提到,之所以用旋轉角度的分類作為Pretext Task,正是因為在直覺上來說,只有當模型確實對物件的特徵有所認知,才能辦法做好角度的分類。為了證明該論述是正確的,論文中還作了以下的實驗。
將模型的各層Activation視覺化
作者將以AlexNet為基礎所訓練好的自監督與監督式模型中某一層convolution layer經過activation後的feature maps取樣作加總,並根據maps和原圖的比例放大後即產生了下圖。可以看出自監督模型在辨識旋轉的任務中,學習到了關注圖像中重要的資訊(ex. 頭部、眼睛等等)這點其實就跟監督式學習如出一轍。
將第一層filter視覺化
可以看出Self-Supervised的filter有豐富的多樣性,能夠配合下游的各種任務。
最後統整一下,首先此方法計算量與收斂速度跟supervised差不多,而且還能平行計算。另外,圖像的前處理簡單,只需要轉置跟翻轉即可實現。如果前處理複雜,可能留下不相干的資訊被模型學習到。
實驗結果
首先,該研究使用CIFAR10資料集做為測試,並且把這個旋轉辨識的模型稱為RotNet(詳細模型參數設定請參閱原文)以下是對於該模型成果的一些分析與討論。
模型深度與特徵學習間的關係
這裡訓練出三種不同深度(3, 4, 5個卷積block,每個block又各有3層卷積)的RotNet,並對每個網路分別截斷不同的位置後,再加上fully connected layers產生最終的輸出來預測CIFAR10。簡單來說,就是為了衡量各層feature maps的品質,使用了層數不同的網路做測試。可以從結果的表格發現,僅使用兩個convolution block做預測的模型表現較佳。作者假設此現象是因為太深層的convolution就會太專注於旋轉角度分類的高階特徵,不利於適用後續其他任務。另外,越多層convolution的網路表現也比較好,可能是因為深度增加讓前面幾層convoution比較不需要處理旋轉分類的問題,能關注到更多低階的特徵,自然能適用的任務更加全面。
旋轉角度數量與特徵學習間的關係
為了進行測試,作者使用了多種旋轉角度和數量做自監督學習。結果發現使用四種角度的表現最好,而僅用兩種的表現最差。作者推測兩個角度資訊太少,不足以讓模型充分學習。而八個角度一方面較為不易分辨,另一方面多餘的角度(45°、135°…)在旋轉的執行上會造成 visual artifacts,產生了某些可能被AI辨識出但對後續應用無益的特徵或痕跡。另外,僅有 90°、270° 的表現比 0°、180° 差則被歸因為 0° 的圖片才是正常圖像辨識中的模式,因此沒有 0° 作為學習的資料會使模型表現較差。
和supervised與其他self-supervised的比較
根據前段的結果,選擇僅使用訓練好的兩個convolution block提取圖像特徵,後續則分成兩種策略做網路結構。
1.self_supervised卷積後直接加上三層fully connected layers
2.self_supervised卷積加上一個新的卷積block後再加上一層fully connected layers
結果當然是,先屌贏之前的自監督,並且沒有fine-tuned的模型跟監督式的準確度僅差距 1.64%(92.80% vs 91.16%)fine-tuned後,模型的準確度更是向上提升些許。
物件分類與旋轉辨識的關聯性
可以從下圖圖(a)中看到,紅線是supervised base line,其中object recognition的準確度跟rotate任務的準確度呈正相關,而且rotate訓練次數越多,後續的圖像分類問題收斂速度也越快。另一方面,使用不同數量級的訓練資料做測試,圖(b)中可發現在CIFAR10上,當訓練資料量小於1000時,semi-supervised的策略能夠贏過supervised下相同結構之模型。
結語
這篇論文的方法算是非常簡單的,沒有甚麼數學上的問題,純粹就是提出一個方法,而且效果也很不錯。在SSL的研究還沒那麼蓬勃發展的時期,這篇論文算是大幅推進了該領域。不過之後如果介紹近2020~2021年間SSL有名的論文,可能重新回來看這篇,會有種「研究走的真他媽快」的感覺。總之,這是我第一篇紀錄並介紹論文的文章,挑了相對簡單的,可能是因為我就爛.jpg,只看得懂簡單的論文。
回到目錄