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