与分类任务不同的是,目标检测任务的数据集有boxes位置的标注,而若进行上下翻转、裁剪等操作,坐标位置也就随之改变,需要在transform时对boxes坐标作出对应的转换。
import math
import random
import torch
from PIL import Image, ImageDraw
1、resize
def resize(img, boxes, size, max_size=1000): # 调整大小缩放
w, h = img.size # 输入img w h (480, 364)
if isinstance(size, int): # 按照短边长度,等比例缩放另一边
size_min = min(w, h) # 输入size=300
size_max = max(w, h) # 首先找到短边,缩放的边是364 h
sw = sh = float(size) / size_min # 计算出短边h缩放的比例,将长边w缩放到同等比例
if sw * size_max > max_size: # 放置缩放过大
sw = sh = float(max_size) / size_max # 缩放至最大程度
ow = int(w * sw + 0.5)
oh = int(h * sh + 0.5) # 向上取整
else: # 直接固定长度缩放
ow, oh = size # 输入size(300,300)
sw = float(ow) / w
sh &#