一个目标实时检测的模型
This commit is contained in:
0
utils/__init__.py
Normal file
0
utils/__init__.py
Normal file
33
utils/data_augmentation.py
Normal file
33
utils/data_augmentation.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import numpy as np
|
||||
import cv2
|
||||
|
||||
def get_random_patch(image, patch_size):
|
||||
h, w = image.shape[1:3]
|
||||
x = np.random.randint(0, w - patch_size)
|
||||
y = np.random.randint(0, h - patch_size)
|
||||
return image[:, y:y+patch_size, x:x+patch_size]
|
||||
|
||||
def get_random_homography(max_rotation=30, max_translation=20):
|
||||
theta = np.random.uniform(-max_rotation, max_rotation) * np.pi / 180.0
|
||||
tx = np.random.uniform(-max_translation, max_translation)
|
||||
ty = np.random.uniform(-max_translation, max_translation)
|
||||
cos_theta = np.cos(theta)
|
||||
sin_theta = np.sin(theta)
|
||||
H = np.array([
|
||||
[cos_theta, -sin_theta, tx],
|
||||
[sin_theta, cos_theta, ty],
|
||||
[0, 0, 1]
|
||||
])
|
||||
return H
|
||||
|
||||
def apply_homography_to_image(image, H, output_size):
|
||||
warped = np.zeros_like(image)
|
||||
for c in range(image.shape[0]):
|
||||
warped[c] = cv2.warpPerspective(image[c], H, output_size, flags=cv2.INTER_NEAREST)
|
||||
return warped
|
||||
|
||||
def generate_training_pair(image, patch_size):
|
||||
patch = get_random_patch(image, patch_size)
|
||||
H = get_random_homography()
|
||||
warped_patch = apply_homography_to_image(patch, H, (patch_size, patch_size))
|
||||
return patch, warped_patch, H
|
||||
Reference in New Issue
Block a user