日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

对VOC目标检测数据进行增强

發布時間:2024/9/19 103 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对VOC目标检测数据进行增强 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VOCDateAugment

目的:對VOC數據集的對象檢測的數據進行數據增強。
本人編寫了一個腳本,在沒使用腳本前請前去除沒有打標簽的圖片或多余的標簽文件。并請確保標簽文件和圖片命名一樣。
如果好用請給我一顆?,謝謝!!!

代碼地址:https://github.com/Mygithub-Yao/tools-VOC

visualiztion模塊

這個模塊是腳本,主要功能是通過圖片和其label文件,生成帶bboxs的圖片。效果如下圖片

ImgParser模塊

里面有class ImgParser類,類提供了5個圖片數據增強的功能,分別是:加噪音(高斯),反轉,旋轉,平移,光度隨機調節。

def addNoise_Img(self, img=None): def filp_img(self, img=None, filp=1): def rotate_Img(self, img=None, angle=5, scale=1.): def shift_Img(self,x,y,img=None): def changeLight_Img(self, img=None):

功能展示:

if __name__ == '__main__':I = ImgParser()I.setImg(r'.\TestDate\Images\000004.jpg')img5, _ =I.rotate_Img()img = [I.addNoise_Img()/255,I.changeLight_Img(),I.filp_img(),I.shift_Img(50,50),img5]pic = ['noise', 'changeLight', 'filp', 'shift','rotate']plt.figure(figsize=(8,6))for i in range(5):plt.subplot(2, 3, i + 1)plt.imshow(img[i])plt.title(pic[i])plt.show()#存儲,不要映射回去[0,1]# cv2.imwrite(r'.\TestDate\Images\000004_noise.jpg',I.addNoise_Img())

LabelParser模塊

此功能模塊主要是對標簽進行處理的,里面包含一個class LabelParser的類,并且提供一下功能:

#從xml文件中提取bounding box信息, 格式為[[ name,x_min, y_min, x_max, y_max]] def getObject(self,XMLpath =None):#對label文件中的所有目標對象進行反轉,默認存儲在原文件 def reverse_Object(self,filp=0,save_path=None):#根據仿射變換矩陣來對對象標簽進行轉換,默認保存路徑為原文件,也可以指定新的路徑 def rotate_Object(self, rot_mat,w,h,c,save_path =None, folder_name=None):#復制當前XML文件到指定的新目錄下 def copyXML(self, save_path, newname):#刪除標簽文件里的對應對象,默認寫回到原文件,如果指定新的保存路徑,信息將保存到新的文件中 def deleteObject(self, ObjectName, save_path=None):#更改當前xml文件的對象名,默認寫回原文件,也可以通過NewPath指定新的保存路徑 def change_ObjectName(self, oldName, newName, save_path=None):#返回標簽圖片的寬,高,通道 def getImg_size(self):#文件默認存儲路徑為原文件,可以通過NewPath指定新的保存路徑 def changeImg_size(self, newsize, save_path=None):#設置要解析的標簽文件 def setXML(self,path):

一個小示例:

if __name__ == '__main__': #加載paser = LabelParser(r'.\TestDate\label\000004.xml')#改變圖片大小paser.changeImg_size([1222,1250],r'.\TestDate\label')#獲取圖片sizeprint(paser.getImg_size())#改變對象名,默認寫回加載文件,也可以指定新的路徑。paser.change_ObjectName('car', 'bigcar',save_path='.\TestDate\label')#刪除指定Object#paser.deleteObject('star')#獲得對象數據print(paser.getObject())#對label里面的框做鏡像反轉,并指定新保存路徑paser.reverse_Object(filp=0, save_path='.\TestDate\label')

DataAugmentVOC模塊

此模塊提供簡易的批處理數據增強,通過新建類DataAugmentVOC來提供批量VOC數據集的數據增強。

提供以下功能:

#圖片反轉,默認水平反轉 def filp(self,filp=1):#對VOC數據集的數據進行旋轉,生成新的旋轉圖片和新的label文件 def rotate(self,angle=5, scale=1.):#對VOC數據集的所有圖片調節亮度,并復制一份label文件,r指定亮化值 def changeLight(self,r=None):#對VOC數據集的所有圖片添加高斯噪音,并復制一份label文件 def addNoise(self):

小示例:

if __name__ == '__main__':start = time.time()V = DataAugmentVOC(rootpath=r'.\TestDate\VOC')V.addNoise()V.changeLight()V.rotate(angle=15)V.filp(filp=1)end =time.time()print("total of {}".format(end-start))

生成結果保存在新文件夾:

結果圖片:(部分)

總結

以上是生活随笔為你收集整理的对VOC目标检测数据进行增强的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。