- 深入理解計算機視覺:在邊緣端構建高效的目標檢測應用
- 張晨然
- 1389字
- 2023-12-13 15:56:59
1.4 目標檢測標注的解析和統(tǒng)計
在日常工程中,我們一般使用PASCAL VOC的標注方法,為每張圖片搭配一個與其同名的標注文件,標注文件格式選擇較為簡單的XML格式。
? 1.4.1 XML文件的格式
XML(eXtensible Markup Language,可擴展標記語言)是一種數(shù)據(jù)表示格式,可以描述非常復雜的數(shù)據(jù)結(jié)構,常用于傳輸和存儲數(shù)據(jù)。XML有兩個特點:一是純文本,默認使用UTF-8編碼;二是可嵌套,適合表示結(jié)構化數(shù)據(jù)。
XML格式使用特殊標記包裹一個標注體。如果某個標注體名稱用*表示,那么標注體的開頭用<*>表示,標注體的結(jié)尾用</*>表示。XML格式標注體名稱及其所存儲的標記信息含義如表1-5所示。
表1-5 XML格式標注體名稱及其所存儲的標記信息含義

續(xù)表

從結(jié)構上看,這些標注體組合成一個可嵌套的結(jié)構化數(shù)據(jù),如圖1-21所示。

圖1-21 XML格式示意圖
以PASCAL VOC2012數(shù)據(jù)集為例,提取數(shù)據(jù)集Annotations文件夾下名為“2008_000008.xml”的XML文件,它對應著Images文件夾下的文件名為“2008_000008.jpg”的圖片文件。查看該XML文件,可見該XML文件有41行,主要由folder、filename、source、size、segmented、object(第一個)、object(第二個)7個字段組成。其中,第一個object字段位于第15~27行,存儲了圖片中的第一個物體——馬(分類名稱為horse)的分類和位置信息,第二個object字段位于第28~40行,存儲了圖片中的第二個物體——人(分類名稱為person)的分類和位置信息。圖片和標注的可視化信息如圖1-22所示。

圖1-22 圖片和標注的可視化信息
? 1.4.2 XML文件解析和數(shù)據(jù)均衡性統(tǒng)計
XML格式的標注文件需要使用XML工具進行讀取。作者一般習慣于將XML標注信息寫入CSV文件,以便后期使用Excel打開。Python環(huán)境下讀寫CSV文件的工具是pandas,需要通過以下命令安裝pandas工具包。

以PASCAL VOC2012數(shù)據(jù)集為例,它的標注文件存儲在Annotations文件夾中。我們設置標注文件夾路徑anno_path,用來存儲標注文件所在的目錄。


設計一個函數(shù),將其命名為xmldir_to_csv,它接收存儲了標注文件夾路徑的列表變量(列表變量名為anno_path),xmldir_to_csv函數(shù)將遍歷其列表變量的全部以xml結(jié)尾的文件,使用xml.etree.ElementTree.parse函數(shù)對每個以xml結(jié)尾的文件進行解析。對于某個XML文件(對應代碼中的xml_file),依次解析xml_file內(nèi)部包含的多個object標注體,尋找object標注體內(nèi)部的filename、size、name、bndbox等信息。每找到一個object標注體,就在xml_list空列表中加入一個標注信息。顯然,xml_list列表中元素的數(shù)量等于數(shù)據(jù)集中object標注體的總數(shù)。將xml_list標注體列表轉(zhuǎn)化為pandas的DataFrame對象,將這個對象命名為xml_df,將xml_df進行返回輸出。代碼如下。

將所有存儲了標注信息的XML文件轉(zhuǎn)為DataFrame以后,就可以將標注文件夾路徑anno_path輸入xmldir_to_csv函數(shù),獲取整個數(shù)據(jù)集全部標注的矩形框信息,并存儲在xml_df中。使用xml_df對象的to_csv方法,就可以在磁盤中寫入以逗號為分隔符的CSV格式的文件,文件名為P07_voc2012_labels.csv。該文件可以使用Excel打開,以便手工查看。代碼如下。

將全部矩形框標注信息存儲為pandas的DataFrame格式還有一個好處,就是可以使用DataFrame的強大功能進行統(tǒng)計和導出,方便檢查數(shù)據(jù)的均衡性問題。我們可以提取所有的標注對象名稱,將其存儲在P07_voc2012_all_names.txt文件中,同時統(tǒng)計每個對象矩形框的出現(xiàn)次數(shù),將其存儲在P07_voc2012_labels_CNT.csv中。代碼如下。

這樣,磁盤就有一個存儲了全部矩形框的CSV文件,一個搜集了全部矩形框所屬分類的txt文件,以及一個統(tǒng)計了各個分類有多少個矩形框?qū)嵗腃SV文件,如圖1-23所示。
矩形框的統(tǒng)計非常重要,我們可以查看各個分類的矩形框數(shù)量是否均衡。對于不均衡的數(shù)據(jù),開發(fā)者需要進行額外處理,如數(shù)據(jù)增強或在損失函數(shù)中添加權重等。因為數(shù)據(jù)占比較高的分類將在損失函數(shù)中占據(jù)較大的比例,所以在進行損失函數(shù)優(yōu)化時,會導致神經(jīng)網(wǎng)絡對數(shù)據(jù)量較大的分類給予較多的照顧,影響神經(jīng)網(wǎng)絡的泛化能力。

圖1-23 對數(shù)據(jù)集中的所有矩形框進行分類統(tǒng)計的結(jié)果
- 大學計算機基礎(Windows 7+Office 2010)
- Dreamweaver CS5完全實用手冊
- Word-Excel 2003辦公應用實戰(zhàn)從入門到精通
- 計算機系統(tǒng)開創(chuàng)性經(jīng)典文獻選讀與解析
- 計算機信息處理案例教程(Windows 7+Office 2010)
- 現(xiàn)代計算機組成與體系結(jié)構
- Java Web云應用開發(fā)
- 計算機科學概論
- 視覺鏈:互聯(lián)網(wǎng)產(chǎn)品的視覺設計理念與規(guī)范
- 區(qū)塊鏈2.0(第2版)
- 搞定系統(tǒng)設計:面試敲開大廠的門
- 智慧機場建設概論
- 語義解析:自然語言生成SQL與知識圖譜問答實戰(zhàn)
- 計算機應用技術基礎
- 信息系統(tǒng)學報(第8輯)