首頁  >  文章  >  科技週邊  >  準備圖像AI專案資料集的七個步驟

準備圖像AI專案資料集的七個步驟

WBOY
WBOY轉載
2023-09-26 23:45:04959瀏覽

譯者| 陳峻

#重樓| 審校

不知你是否注意到,資料集可能是機器學習專案中最容易被忽略的部分。在大多數人看來,資料集不過是一些快速拼湊、或已下載的預製圖像的集合。而實際上,資料集是任何基於影像的人工智慧(AI)專案的基石。對於任何旨在實現高準確性的機器學習專案來說,創建和管理一個平衡且結構合理的資料集,都是至關重要的。

不過,建立一個資料集並不像收集幾百張圖片那麼簡單。我們在嘗試啟動某個AI專案時,很可能會遇到各種隱患。下面,我將和您討論可用來建立自己的資料集的七個典型步驟,以便您深入了解資料集大小的重要性、可能出現的資料遺漏、以及將資料集轉換為資料庫等要素。

注意:這些步驟將主要適用於,那些針對包含了影像資料集的物件偵測和分類項目。而諸如 NLP 或圖形項目等其他項目類型,則需要採用不同的方法。

步驟 1#:圖片大小

通常情況下,神經網路只能處理特定尺寸的影像,超過閾值的影像會被強制縮小。這意味著在使用資料集之前,我們需要選擇適合的神經網絡,並相應地調整圖像的尺寸

#如您所知,如果將圖像尺寸縮小,可能會導致精確度大幅下降,甚至使影像上的小物體消失,對整個辨識過程造成損害。如下所示,您需要在監視器拍攝的影像中偵測出車牌號碼,而車牌只佔整個影像的一小部分。因此,當神經網路對影像進行縮小處理時,車牌號碼可能會變得非常小,無法被辨識到

準備圖像AI專案資料集的七個步驟

#如下圖所示,如果能夠了解網路可使用的圖像尺寸,將有助於您裁剪出適當的資料集圖像。

準備圖像AI專案資料集的七個步驟

雖然大多數神經網路可處理的圖像尺寸都比較小,但是諸如 Yolo v5x6之類的最新神經網絡,則能夠處理更大解析度的影像。例如,Yolo v5xs6就能夠處理寬達 1280 像素的圖像。

步驟 2:了解的環境

為了確保資料集能夠準確反映神經網路在運行過程中所需識別的真實影像,我們在收集資料集時需要注意以下因素:

  1. 相機的類型,是智慧型手機鏡頭,還是安全攝影機
  2. 圖片的大小
  3. 相機的位置,是在室內,還是室外
  4. 天氣條件,如光照、雨、霧、雪等。

在清楚地了解了神經網路待處理的真實影像後,我們就能夠建立一個資料集,來準確地反映那些感興趣的對象、及其所處的環境。

收集Google上的普通圖片可能被認為是組成大型資料集最簡單、最快捷的方法。然而,這種方法實際上很難達到較高的精確度要求。如下圖所示,與真實相機拍攝的影像相比,Google或照片資料庫中的影像通常經過「美顏」處理

準備圖像AI專案資料集的七個步驟

#而一個過於「漂亮」的資料集,很可能會導致較高的測試準確率。這意味著,神經網路將僅能在測試資料(從資料集中純化的影像集合)上良好運行,但在真實條件下運作不佳,並導致準確率低。 步驟

3#格式與

#### ################我們需要注意的另一個重要面向是:圖片的格式。在開始專案之前,請檢查您選擇的框架能夠支援哪些格式,而您的圖片是否能夠符合此類要求。雖然目前的框架已能夠支援多種圖片格式,但是對於###### .jfif######等格式仍存在問題。 ############

註解資料可以用來詳細說明邊界框、檔案名稱、以及可以採用的不同結構。通常,不同的神經網路和框架,需要不同的註釋方法。有些需要包含邊界框位置的絕對座標,有些則需要相對座標;有些要求每個圖像都附帶一個單獨的、包含了註釋的.txt 文件,而另一些僅需要一個包含了所有註釋的文件。可見,即使您的資料集擁有良好的圖像,如果您的框架無法處理註釋的話,也將無濟於事。

步驟 4#:訓練與驗證子集

為了訓練的目的,通常將資料集分成兩個子集:

  1. #訓練子集 #- 它是一組圖像。神經網路將會在這組影像上進行訓練。其佔比為圖像總數的 70% #至 80%。
  2. 驗證子集- #是用來檢查神經網路在訓練過程中學習效果的較小圖像集。其佔比為圖像總數的 20% 30% #之間。

準備圖像AI專案資料集的七個步驟

通常,神經網路會使用從訓練子集中提取到的物體特徵,來“學習”物體的外觀。也就是說,在一個訓練週期結束(歷時,epoch)後,神經網路會查看驗證子集的數據,並嘗試猜測它能夠 「看 #」到那些物體。無論是正確的、還是錯誤的猜測,其結構都能夠讓神經網路進一步深入學習。

雖然這種方法已被廣泛使用,並被證明能夠取得良好的效果,但我們更傾向於採用一種不同的方法,將數據集合分割為以下子集:

  1. 訓練子集## - 佔總影像總數的 70%
  2. #驗證子集 - 佔總影像總數的 20%
  3. #測試資料集 - 約圖像總數的10%

準備圖像AI專案資料集的七個步驟

由於測試子集包含了神經網路從未見過的資料集中的圖像,因此開發人員可以透過該子集來測試模型,以了解其手動運行的效果,以及在處理哪些圖像時會遇到困難。換句話說,該子集將有助於在專案啟動前,找出神經網路可能犯錯的地方,進而避免在專案啟動之後,進行過多的重新訓練 步驟

5

:資料遺漏

準備圖像AI專案資料集的七個步驟

如果您使用來訓練機器學習演算法的資料中,恰好包含了您試圖預測的信息,那麼就可能發生資料外洩。如下圖所示,從影像辨識的角度來看,當訓練子集和驗證子集的相同物件的照片非常相似時,就會發生資料外洩。顯然,數據遺漏對於神經網路的品質來說是極為不利的。

本質上來說,模型在訓練資料集中看到了一幅圖像後,會先提取其特徵,然後進入驗證資料集,進而發現看到的完全相同(或非常相似)的圖像。因此,與其說模型在真實學習,不如說它只是在記憶各種資訊。有時,這會導致驗證資料集上的準確率,高得離譜(例如,可高達

98%),但是在生產實際中的準確率卻非常低。 目前最常用的一種資料集分割方法是:將資料隨機打亂,然後選取前 70%

的圖片放入訓練子集,剩下的

準備圖像AI專案資料集的七個步驟 30%

###則放入驗證子集。這種方法就容易導致資料遺漏的產生。如下圖所示,我們的當務之急是從資料集中刪除所有「重複」的照片,並檢查兩個子集中是否有類似的照片。 #####################

對此,我們可以使用簡單的腳本來自動執行重複刪除。當然,您可以調整重複閾值,例如:只刪除完全重複的圖片、或相似度高達到 90% 的圖片等。總的說來,只要刪除的重複內容越多,神經網路的生產精度就會越高。

步驟 6#:大型資料集資料庫

如果您的資料集相當大,例如:超過 10 圖片、以及具有數十個物件類別與子類別的話,我們建議您建立一個簡單的資料庫,來儲存資料集資訊。這背後的原因其實非常簡單:對於大型資料集而言,我們很難追蹤所有的資料。因此,如果不對資料進行某種結構化的處理,我們將無法對其進行準確分析。

透過資料庫,您可以快速地診斷資料集,進而發現諸如:特定類別的圖片數量過少,會導致神經網路難以辨識出物件;類別之間的圖片分佈不夠均勻;特定類別中的Google圖片數量過多,導致該類別的準確率得分過低等情況。

透過簡單的資料庫,我們可以包含以下資訊:

  1. 檔案名稱
  2. 檔案路徑
  3. #註解資料
  4. 類別資料
  5. 資料來源(源自生產環境、還是Google等)

準備圖像AI專案資料集的七個步驟

##物件類型、名稱等物件相關資訊

#資料庫是收集資料集、統計資料不可或缺的工具。它能夠幫助我們快速、輕鬆地查看資料集的平衡程度,以及每個類別中高品質影像的數量(從神經網路的角度來看)。透過類似下面直觀呈現的數據,我們可以更快地進行分析,並將其與識別結果進行比較,從而找出準確率低的根本原因

需要重新寫作的內容是:一個值得注意的問題是,準確率低的原因可能是因為圖片數量較少或某一類別中Google照片的比例較高。透過建立這樣的資料庫,可以大幅減少生產、測試和模型再訓練的時間

# 7

## :資料集

準備圖像AI專案資料集的七個步驟增強

作為一種用於增加影像數量的技術,資料增強是對資料進行簡單或複雜轉換的過程,例如透過翻轉或樣式轉化,我們可以提高資料的有效性。而據此獲得的有效資料集,則無需經歷過多的訓練。如下圖所示,此類資料轉換既可以是簡單到僅將影像旋轉 90 #度,也可以複雜到在影像中添加太陽耀斑、以模仿背光照片或鏡頭耀斑。

  1. 通常,這類增強轉換都是自動執行的。例如,我們可以準備一個專門用於資料增強的 Python
  2. 庫。目前,資料增強有兩種:訓練前增強##- 在訓練過程開始之前,對資料進行擴增,並將其新增至訓練子集中。當然,只有在資料集被劃分為訓練子集和驗證子集之後,我們才能進行此類增加,以避免前文提到的資料遺漏。

訓練內增強的-

# 採用類似###### PyTorch######的框架內建影像變換技術。 #####################值得注意的是,資料集的大小增加十倍,並不會讓神經網路的效率提高十倍。事實上,這反而可能會使網路的效能比以前更差。因此,我們應只使用與生產環境相關的增強功能。例如,對於被安裝在建築物內的攝影機,在其正常運作的情況下,是不會出現雨淋的。因此我們完全沒有必要在影像中加入針對「雨景」的增強。 ############

#儘管對於那些希望將AI應用到業務中的人來說,資料集是最不令人興奮的部分。但不可否認的是,資料集是任何影像辨識項目中的重要部分。而且在大多數影像辨識專案中,資料集的管理和整理,往往會花費團隊大量的時間。最後,讓我們小結一下,該如何透過適當地處置資料集,以便從AI專案中獲得最佳結果:

  1. 裁剪或調整影像的大小,以滿足神經網路的要求
  2. 根據天氣和照明條件,擷取真實影像
  3. 根據神經網路的要求,建立註解
  4. #避免使用所有的圖像來訓練網路。而需留一部分用於測試
  5. 刪除驗證資料集中的重複影像,以避免資料遺漏
  6. 建立資料庫,以快速診斷資料集
  7. #盡量少用資料增強,來增加影像數量

#譯者介紹

#陳峻(Julian Chen),51CTO社群編輯,具有十多年的IT專案實施經驗,善於對內部和外部資源與風險實施管控,專注於傳播網路與資訊安全知識與經驗。

原文標題:7 Steps To Prepare A Dataset For An Image-Based AI Project#,作者:Oleg Kokorin

以上是準備圖像AI專案資料集的七個步驟的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除