yolov4图像预处理--图像缩放并加上灰度条

本文介绍了一种图像数据增强的方法,通过随机缩放原始图像至416x416,并在裁剪后添加灰度条,以提升模型训练的多样性。作者使用PIL库操作图像,演示了如何实现随机宽度和高度变化,以及灰度背景的添加过程。
部署运行你感兴趣的模型镜像

对图像进行随机缩放,然后paste到416*416的灰度图上,达到数据增强的目的。
参考代码:https://github.com/bubbliiiing/yolov4-keras

"""
time: 2022/04/14
author: cong
theme: 对图像进行长和宽的扭曲达到缩放的目的并且多余部分加上灰度条。
"""
from PIL import Image
import numpy as np


def rand(a=0, b=1):
    return np.random.rand() * (b - a) + a


w = 416
h = 416
jitter = 0.3
new_ar = w / h * rand(1 - jitter, 1 + jitter) / rand(1 - jitter, 1 + jitter)
print('new_ar:', new_ar)
scale = rand(.25, 2)
print('scale:', scale)
image = Image.open('img.png')
# 随机缩放
if new_ar < 1:
    nh = int(scale * h)
    nw = int(nh * new_ar)
    print('nw:', nw, 'nh:', nh)
else:
    nw = int(scale * w)
    nh = int(nw / new_ar)
    print('nw:', nw, 'nh:', nh)
image = image.resize((nw, nh), Image.BICUBIC)
image.show()
image.save('random_scale.jpg')
# ------------------------------------------#
#   将图像多余的部分加上灰条
# ------------------------------------------#
dx = int(rand(0, w - nw))
dy = int(rand(0, h - nh))
print('dx:', dx, 'dy:', dy)
new_image = Image.new('RGB', (w, h), (128, 128, 128))
new_image.paste(image, (dx, dy)) # 把image粘到new_image上,起始位置相对于new_image的位置(dx,dy)
new_image.show()
new_image.save('random_scale_gray.jpg')

img.png原图如下所示:
原图

random_scale.jpg如下图所示:
图像随机缩放
random_scale_gray.jpg加上灰度条之后的图像,如下所示:
加上灰度条

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值