【数据使用】3问视觉项目中的数据整理,这点小事你是不是都掌握好了?
大家好,歡迎來到我們的技術專欄《數據使用》,這一個專欄主要講解在深度學習技術中數據使用相關的內容。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 作者&編輯 | 言有三
今天要介紹的是一個小問題,那就是對于數據的整理。在大部分的時候,尤其進行學術研究時,我們所接觸到的數據,都是別人已經整理好的,經過驗證比較有效的數據,導致做項目的人其實缺失了1個非常重要的技能積累,那就是如何高有效、完備地整理好一個數據集。以計算機視覺方向為例,有三認為至少以下3點是需要考慮的,下面我們簡單來說一說。
1 數據檢查?
首先是數據檢查,我們獲取的數據來源是非常廣泛的,包括開源數據集(ImageNet等),從外包平臺(阿里眾包等)購買,或者通過爬蟲爬取,不同的方式采集回來的數據集的質量不同。
以爬蟲為例,采集回來的數據來源豐富,但是可能存在較多不符合要求的數據,甚至是壞數據,因此我們需要進行檢查篩選后才能用,至少有以下幾種圖片需要先過濾。
1.1 壞圖
有一些圖當我們用縮略圖的模式看時,顯示沒有什么問題,但是當你真的用程序去讀取的時候,會讀取失敗,打開后可能是這樣的,這些就是壞圖。
壞圖非常常見,一般都是數據傳輸過程中出現的問題,我們下載的開源數據集也有時候會出現這樣的情況,因此,在使用你的數據之前,一定要先檢查一下,圖是否是壞的!免得浪費更多時間。
1.2?尺寸異常圖
尺寸異常圖也是很常見的,這里我們不說特別大或者特別小的圖,而是聚焦于長寬比特別大的圖,因為這一類圖像也非常常見,比如下面的圖:
我們在做任務的時候,經常會做一些裁剪類的數據增強操作,長寬比過大的圖,容易造成目標變形或者缺失,因此我們最好是設定一個比例進行篩選。
1.3 動圖
git動圖也是很常見的,這一類圖一般內容都不符合我們深度學習項目的需求,很多都是卡通類圖像,比如下圖中就有幾張動圖,屬于要去除的對象。
最后,對檢查完的數據可以再做一些標準化操作,比如統一數據格式類型,統一命名方式。
2 數據去重
數據的去重是必要的操作,尤其是當我們獲取的數據來源于網絡爬蟲與視頻的時候,相同與相似數據出現的概率非常高。
2.1 相同數據與相似數據
相同的數據,可能區別僅僅在于命名的不同,如果查看文件的MD5,會發現是同樣的數據。相同的數據再多,也并不會增加數據集的豐富程度,不能以此來安慰苦于收集數據的自己。
相似數據則更加常見,因為圖片視頻數據在網上經過各種渠道的廣泛傳播,分辨率的差異、不同的數據壓縮方式、水印的添加等都會造成相似度很高的圖片。
另外,還有一種數據來源,就是從視頻中通過抽幀獲取的數據,相似度會非常高,而且模式比較復雜,比如下圖。
直接抽幀,獲得的圖片如下,其中有許多圖片相似度很高:
所以我們需要進行圖片數據的去重,下圖展示了去重后的效果。
2.2 去重方法
去重主要包含了兩個關鍵問題,一個是如何計算圖片的相似度,一個是如何進行遍歷。
(1) 相似度計算。圖像相似度的計算本來就是圖像檢索中的核心問題,關鍵在于圖片特征的提取,我們可以用傳統的圖像描述算子或者深度學習模型。
不過我們去重的時候可能對相似度的要求很高,目標是為了去除過于相似的圖片,所以可能用更加簡單的相似度計算方法就可以,比如直接計算圖像的平均像素差異。
(2) 遍歷。另外一個非常重要的技術,就是圖片遍歷。假如我們有100,000圖要進行去重,如果把所有的圖片都進行比較,需要100,000*100,000/2次比較,計算量非常大,復雜度是O(N^2),速度會很慢。
所以,我們必須借助一些技巧,來減少不必要的遍歷,比如基于文件的大小進行排序、基于圖像的尺寸進行排序、基于圖片的名字進行遍歷,把相似的圖盡可能先排序在一起。在計算相似度的時候,只考慮近鄰的一些樣本,即只搜索特定的深度,而不是進行窮舉。
如此來說,圖像去重并不是一個那么簡單的工作。
3 數據集劃分
當數據經過整理和去重后,就剩下最后的工作,數據集的劃分,這里有兩個重要的工作。
3.1 訓練集/驗證集/測試集
大家在書籍上或者機器學習的課程,會看到數據集會被劃分成3類,訓練集,驗證集,測試集,他們各自有不同的作用。
訓練集和驗證集的分布是一樣的,是對同一批數據進行劃分得來的。訓練集用于對參數進行學習,如卷積核的權重;而驗證集,則是用于對訓練的一些超參數調整,比如學習率/批處理大小等。我們評估模型的精度,是以驗證集的精度為準的,而不同的訓練參數會影響結果。
測試集,一般是指模型在真實的生產環境中處理的數據,這些數據的分布和訓練集、驗證集可能存在一定的差異。
雖然我們有時候不區分測試集和驗證集,但還是要明白,他們本質上是不同的。
3.2 不同難度數據集的劃分
這部分內容可能是大部分項目人員都沒有做的,但卻是非常重要的,因項目而異,沒有理論上的指導,依賴于項目經驗。
如果你做的項目多了,應該會發現,很多數據集都分了不同難度等級,比如下圖是人臉檢測數據集Widerface數據集上的結果,有3類數據集,easy set,medium set,hard set。
劃分的依據是EdgeBox方法的檢測率。檢測率越低的樣本表明越難,可能是尺度很小,遮擋嚴重,姿態很大,特征模糊等,如下圖中的各種人臉:
為什么一定要進行區分呢?因為對于很多的工程項目來說,我們不可能取得百分百的精度,一個能處理大部分場景的模型可能就足夠了,一些極端案例下失敗是可以接受的。
如果將不同難度的樣本混在一起,我們很難獲得模型的準確評估。難樣本過多,指標太低,導致模型無法上線,但其實該模型已經可以在業務上使用了。而過多的簡單樣本,也會導致我們對模型產生樂觀的估計。
下圖是PASCAL VOC數據集的標注案例,其中虛線框里的目標被標識為‘difficult’,這些目標是不會納入評測指標計算的,就是為了更好地評估模型的性能,盡管該標簽仍然被保留。
總結
我們這篇文章介紹了3個在深度學習項目中的數據處理問題,并不難,但你是否都掌握好了呢?
數據的使用是AI項目中的第一環,也是影響項目成敗至關重要的一環,如果你覺得自己相關的能力尚有欠缺,可以重點關注下我們的《深度學習之數據使用-理論實踐篇》課程。
深度學習之數據使用
該視頻課程內容包括數據的獲取,整理,標注,數據增強,詳情可以閱讀下面文章:
【視頻課】深度學習入門必修,子欲學算法,必先搞數據!
課程相關問題咨詢,請掃碼添加小助手微信:
轉載文章請后臺聯系
侵權必究
往期精選
【年終總結】2021年有三AI做了什么,2022年我們要做什么?
總結
以上是生活随笔為你收集整理的【数据使用】3问视觉项目中的数据整理,这点小事你是不是都掌握好了?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【视频课】8小时系统性地掌握深度学习视频
- 下一篇: 【视频课】零基础免费38课时深度学习+超