訂閱
糾錯(cuò)
加入自媒體

如何使用Python和OpenCV實(shí)現(xiàn)對(duì)象檢測(cè)任務(wù)的數(shù)據(jù)擴(kuò)充過程?

數(shù)據(jù)擴(kuò)充是一種增加數(shù)據(jù)集多樣性的技術(shù),無需收集更多的真實(shí)數(shù)據(jù),但仍然有助于提高模型的準(zhǔn)確性和防止模型過度擬合。在這篇文章中,你將學(xué)習(xí)使用Python和OpenCV實(shí)現(xiàn)最流行和最有效的對(duì)象檢測(cè)任務(wù)的數(shù)據(jù)擴(kuò)充過程。

介紹的數(shù)據(jù)擴(kuò)充方法包括:隨機(jī)剪裁CutoutColorJitter添加噪聲過濾首先,讓我們導(dǎo)入幾個(gè)庫并準(zhǔn)備一些必要的子例程。import os
import cv2
import numpy as np
import random
def file_lines_to_list(path):
   '''
   ### Convert Lines in TXT File to List ###
   path: path to file
   '''
   with open(path) as f:
       content = f.readlines()
   content = [(x.strip()).split() for x in content]
   return content
def get_file_name(path):
   '''
   ### Get Filename of Filepath ###
   path: path to file
   '''
   basename = os.path.basename(path)
   onlyname = os.path.splitext(basename)[0]
   return onlyname
def write_anno_to_txt(boxes, filepath):
   '''
   ### Write Annotation to TXT File ###
   boxes: format [[obj x1 y1 x2 y2],...]
   filepath: path/to/file.txt
   '''
   txt_file = open(filepath, "w")
   for box in boxes:
       print(box[0], int(box[1]), int(box[2]), int(box[3]), int(box[4]), file=txt_file)
   txt_file.close()

下圖在本文中用作示例圖像。

隨機(jī)剪裁隨機(jī)剪裁:隨機(jī)選擇一個(gè)區(qū)域并將其裁剪出來,形成一個(gè)新的數(shù)據(jù)樣本,被裁剪的區(qū)域應(yīng)與原始圖像具有相同的寬高比,以保持對(duì)象的形狀。

在上圖中,左邊的圖像是帶有真實(shí)邊界框的原始圖像(紅色部分),右邊的圖像是通過裁剪橙色框中的區(qū)域創(chuàng)建的新樣本。在新樣本的標(biāo)注中,去除所有與左側(cè)圖像中橙色框不重疊的對(duì)象,并將橙色框邊界上的對(duì)象的坐標(biāo)進(jìn)行細(xì)化,使之與新樣本相匹配。對(duì)原始圖像進(jìn)行隨機(jī)裁剪的輸出是新的裁剪后的圖像及其注釋。def randomcrop(img, gt_boxes, scale=0.5):
   '''
   ### Random Crop ###
   img: image
   gt_boxes: format [[obj x1 y1 x2 y2],...]
   scale: percentage of cropped area
   '''
   
   # Crop image
   height, width = int(img.shape[0]*scale), int(img.shape[1]*scale)
   x = random.randint(0, img.shape[1] - int(width))
   y = random.randint(0, img.shape[0] - int(height))
   cropped = img[y:y+height, x:x+width]
   resized = cv2.resize(cropped, (img.shape[1], img.shape[0]))

1  2  3  下一頁>  
聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)