理解如何處理計算機視覺和深度學習中的圖像數(shù)據(jù)
共 3263字,需瀏覽 7分鐘
·
2024-07-17 10:05
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
作者:Bikram Baruah
編譯:ronghuaiyang
包括了適用于傳統(tǒng)圖像的數(shù)據(jù)處理和深度學習的數(shù)據(jù)處理。
介紹:
在過去幾年從事多個計算機視覺和深度學習項目之后,我在這個博客中收集了關于如何處理圖像數(shù)據(jù)的想法。對數(shù)據(jù)進行預處理基本上要比直接將其輸入深度學習模型更好。有時,甚至可能不需要深度學習模型,經(jīng)過一些處理后一個簡單的分類器可能就足夠了。
最大化信號并最小化圖像中的噪聲使得手頭的問題更容易處理。在構(gòu)建計算機視覺系統(tǒng)時,應考慮使用濾波器來增強特征并使圖像對光照、顏色變化等更加穩(wěn)健。
考慮到這一點,讓我們探索一些可以幫助解決經(jīng)典計算機視覺或基于圖像的深度學習問題的方法。相關的代碼倉庫:https://github.com/bikramb98/image_processing。
1. 先簡單再深入:
在應用最新和最好的深度學習解決問題之前,請嘗試經(jīng)典的計算機視覺技術。特別是在數(shù)據(jù)可能稀缺的情況下,就像許多現(xiàn)實世界的問題一樣。
檢查計算圖像像素的統(tǒng)計值(例如均值、峰度、標準差)是否會導致不同類別的統(tǒng)計值不同。然后可以在這些值上訓練一個簡單的分類器,例如 SVM、KNN,以在不同的類之間進行分類。
2. 增加圖像信噪比:
在將它們輸入深度學習模型之前,檢查預處理技術是否增強了圖像的主要特征并提高了信噪比。這將有助于模型獲得更好的準確性。
-
使用閾值處理等技術、腐蝕和膨脹等噪聲消除技術、高斯模糊(平滑邊緣)和中值模糊(消除椒鹽噪聲)等模糊技術。 -
對于不同的問題,不同的運算可能在不同的順序下有用。 -
通常的做法是多次使用特定運算符,如果可以增強特征,那就在幾個步驟之后再次應用。
找到濾波器、閾值等不同kernel大小的最佳組合(其組合可能達到數(shù)百萬!),可以產(chǎn)生產(chǎn)生最佳效果的圖像,可以通過構(gòu)建交互式滑塊來幫助找到這些值的理想范圍。
3. 直方圖均衡
增強圖像特征的另一種方法是使用直方圖均衡化。直方圖均衡化提高了圖像的對比度。直方圖均衡化的目的是使出現(xiàn)頻率最高的像素值均勻分布。
讓我們看看下面的例子。
可以看出,上圖的對比度非常低。在這種情況下,重要的是要提高對比度,使圖像的特征更清晰可見。OpenCV 提供了兩種這樣做的技術 —— 直方圖均衡化和對比度受限自適應直方圖均衡化 (CLAHE)。
應用直方圖均衡化,圖像的對比度確實有所提高。但是,它也會增加圖像中的噪點,如下圖中間所示。
這就是CLAHE 的用武之地。使用這種方法,圖像被分成 m x n 網(wǎng)格,然后將直方圖均衡應用于每個網(wǎng)格??梢允褂媒换ナ交瑝K找到理想的對比度閾值和網(wǎng)格大小,如下所示。
4. 圖像的顏色空間變換:
將圖像轉(zhuǎn)換到不同的顏色空間,例如 HSV,通??梢蕴峁└玫男畔矸指钅繕耍糜谀繕烁櫟惹闆r。通常,RGB 顏色空間對陰影、光照的輕微變化(影響目標的顏色)不穩(wěn)健。對于使用經(jīng)典計算機視覺進行目標跟蹤等任務,由于上述原因,在稍有不同的環(huán)境中使用時,RGB 空間中經(jīng)過調(diào)試的mask通常會失敗。此外,一旦將圖像轉(zhuǎn)換為不同的空間(例如 HSV),分離通道通常有助于分割感興趣的區(qū)域并消除噪聲。如下圖所示,一旦將圖像轉(zhuǎn)換為 HSV 空間并拆分通道,就可以更輕松地去除陰影并分割網(wǎng)球。
5. 歸一化圖像:
如果將圖像輸入深度學習模型,則必須使用批歸一化等技術對圖像進行歸一化,這將有助于標準化網(wǎng)絡的輸入。這將有助于網(wǎng)絡學習得更快、更穩(wěn)定。批量歸一化有時也會減少泛化誤差。
6. 進行有意義的增強:
在增強圖像時,確保應用的增強技術保留圖像的類別并且類似于現(xiàn)實世界中遇到的數(shù)據(jù)。例如,對狗的圖像應用裁剪增強可能會導致增強后的圖像不像狗。在某些目標使用旋轉(zhuǎn)和翻轉(zhuǎn)進行增強的情況下也是如此。在增強時更改圖像屬性(例如顏色)時要非常小心。此外,請確保擴充數(shù)據(jù)不會更改圖像的標簽。
始終檢查增強圖像是否有意義并反映現(xiàn)實世界。
7. 訓練集和驗證集的數(shù)據(jù)泄露:
確保相同的圖像(比如原始圖像和增強圖像)不在訓練集和驗證集中同時出現(xiàn)是很重要的。這通常發(fā)生在訓練驗證集拆分之前就執(zhí)行數(shù)據(jù)增強。忽略這一點可能會導致給出錯誤的模型指標,因為它會在訓練期間從非常相似的圖像中學習,這些圖像也存在于驗證集中。
8. 在測試集合驗證集上需要包括所有類別:
確保測試集和驗證集包含所有標簽樣本。這樣模型指標反映的才是模型的真實表現(xiàn)。
以其中一個標簽的樣本數(shù)量明顯較少的情況為例。執(zhí)行隨機訓練集測試集拆分可能會導致更少標簽的類根本不會出現(xiàn)在驗證/測試集中。當訓練好的模型被測試時,它不會在那個特定的類上被測試,模型指標也不會反映其性能的真實表現(xiàn)。
9. 后處理完整性檢查:
模型訓練好之后,執(zhí)行一些完整性檢查也很重要:
-
確保在多類分類器的情況下所有類的輸出總和為 1。 確保在測試或部署模型時也應用訓練期間應用于圖像的預處理。
下載1:OpenCV-Contrib擴展模塊中文版教程
在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。
下載2:Python視覺實戰(zhàn)項目52講
在「小白學視覺」公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。
下載3:OpenCV實戰(zhàn)項目20講
在「小白學視覺」公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~
