目標檢測資料預處理 尺寸變換

2021-10-07 05:15:22 字數 3980 閱讀 4330

目錄

1. 比例縮放

2. 使用letterbox

目標檢測訓練中,我們的資料集尺寸大部分時侯都是不符合網路輸入的,需要對尺寸進行修改,下面我介紹兩種常用尺寸變換方法:

這種方法就是簡單的對尺寸進行比例縮放,一般使用cv2.resize()對進行縮放,然後計算長寬縮放比例,再通過比例來縮放標註的目標框尺寸。具體**如下:

def read_and_resize_picture(img_path, img_boxes):

""":function:讀取,並縮放尺寸到指定尺寸,同時修改目標框尺寸

:param img_path: 單張路徑

:param img_boxes: 對應目標框[[xmin,ymin,xmax,ymax],...,[xmin,ymin,xmax,ymax]]

:return:(已經讀取啦),修改的目標框

"""img = cv2.imread(img_path,flags=1)

height, width = img.shape[0:2]

if height == 416 and width == 416:

return img, img_boxes

else:

h_s = height / 416.

w_s = width / 416.

# box = img_boxes

# 將原圖resize成300,300

img_resize = cv2.resize(img, dsize=(416, 416), interpolation=cv2.inter_linear)

img_boxes[:, 0:3:2] = img_boxes[:, 0:3:2] / w_s

img_boxes[:, 1:4:2] = img_boxes[:, 1:4:2] / h_s

return img_resize, img_boxes

這種方法修改尺寸方便,但是會改變特徵

import numpy as np

import cv2

import math

def cv2_letterbox_image(image, expected_size, box):

"""function:使用letterbox填充並修改尺寸

:param image: 原圖

:param expected_size: 想要修改後的尺寸

:param box: 原圖目標框

:return: 修改後的,目標框

"""ih, iw = image.shape[0:2]

ew, eh = expected_size

scale = min(eh / ih, ew / iw)

nh = int(ih * scale)

nw = int(iw * scale)

for i in range(4):

box[i] = box[i] * scale

image = cv2.resize(image, (nw, nh), interpolation=cv2.inter_cubic)

top = (eh - nh) // 2

box[1] = box[1] + top

box[3] = box[3] + top

bottom = eh - nh - top

left = (ew - nw) // 2

box[0] = box[0] + left

box[2] = box[2] + left

right = ew - nw - left

new_img = cv2.copymakeborder(image, top, bottom, left, right, cv2.border_constant)

return new_img, box

def cv2_deletterbox_image(image, current_size, box):

"""function:去除影象灰邊,並還原目標框尺寸

:param image: 原圖

:param current_size: 當前尺寸(網路輸入尺寸)

:param box: 網路輸入尺寸下的目標框

:return: 匹配原圖的目標框

資料預處理06 資料變換和資料離散化

光滑 去掉資料中的雜訊,包括分箱 回歸和聚類。屬性構造 特徵構造 可以由給定的屬性構造新的屬性並新增到屬性集中。聚集 把資料進行彙總或聚集。例如 可以聚集日銷售資料,計算月和年銷售量。規範化 把屬性資料按比例縮放,使之落入指定區間。離散化 數值屬性 例如 年齡 的原始值用區間標籤或者概念標籤替換。這...

資料探勘 資料預處理之資料整合與變換

在資料預處理的過程當中往往需要將多個資料集合中的資料整合到乙個資料倉儲中,即 需要對資料庫進行整合。與此同時,為了更好地對資料倉儲中的資料進行挖掘,對資料倉儲中的資料進行變換也在所難免。本文主要針對資料整合以及資料變化兩個問題展開論述。資料整合在將多個資料庫集成為乙個資料庫過程中存在需要著重解決三個...

目標檢測 yoolov4資料前處理

1.資料增強 基於影象的深度學習演算法,通常需要資料增強,比較常規的就是翻轉,旋轉,影象裁剪 在目標檢測中,對進行變換,還會涉及到框的變化,尤其時對影象進行resize成相同大小時,需要對框進行相應的縮放 1.1讀取影象 讀取框 目標位置 image image.open line 0 box np...