数据集中的图片一般为长方形,当模型输入为正方形时直接将长方形图片resize为正方形会使得图片失真,采用letterbox(啥意思?邮箱盒子!)通过填充边界(通常是灰色填充)的方式来保持原始图片的长宽比例,同时又满足模型正方形输入的需要。这里以我做训练时使用的一张bdd100k中的图片为例直观感受一下即可。
import cv2
import matplotlib as plt
import numpy as np
img_size = 640 #yolov5默认输入图片尺寸640x640
augment = True #代码中会要用到的增量参数
path = path="/home/zw/zuosi/projects/yolov5-v4.0/diamond_20210119/images/train/20e2659a-2e3fb6de.jpg" #我选择的一张bdd100k的图片
先调用yolov5中的load_image函数加载图片。
def load_image(path):
img = cv2.imread(path) # BGR
assert img is not None, 'Image Not Found ' + path
h0, w0 = img.shape[:2] # orig hw
#5/10 py2:0, py3:0.2
#python3中数字的除法运算默认使用浮点数运算,如果notebook用的py2得强制转换一下
r = img_size / float(max(h0, w0)) # resize image to img_size
if r != 1: # always resize down, only resize up if training with augmentation
interp = cv2.INTER_AREA if r < 1 and not augment else cv2.INTER_LINEAR

本文介绍了如何在深度学习模型中使用letterbox技术,避免长方形图片在resize为正方形时的失真问题。通过实例展示了如何将BDD100k图片进行不失真的resize,并且填充灰色边界以适应模型的正方形输入。
最低0.47元/天 解锁文章
224

被折叠的 条评论
为什么被折叠?



