YOLOv3代码阅读笔记之datasets.py(第五篇)

对YOLOv3进行阅读,因为本人是小白,可能理解不到位的地方,请见谅。源码fork自eriklindernoren/PyTorch-YOLOv3,如需下载,请移步github,自行搜索。
本文讲解datasets.py

#本文件的主要作用pad_to_square把图像调整为方形,resize调整图像大小,random_resize随机调整图像大小
#ImageFolder读取data/samples下的所有图像,调整为方形,调整大小,生成张量,为detect.py提供输入
#


import glob #python的glob模块可以对文件夹下所有文件进行遍历,并保存为一个list列表二
import random
import os
import sys
import numpy as np
from PIL import Image
import torch
import torch.nn.functional as F

from utils.augmentations import horisontal_flip#镜像
from torch.utils.data import Dataset
import torchvision.transforms as transforms


def pad_to_square(img, pad_value):#图片调整为方形,调用F.pad实现,在ImageFolder和ListDataset被引用
    c, h, w = img.shape
    dim_diff = np.abs(h - w)
    # (upper / left) padding and (lower / right) padding
    pad1, pad2 = dim_diff // 2, dim_diff - dim_diff // 2
    # Determine padding
    pad = (0, 0, pad1, pad2) if h <= w else (pad1, pad2, 0, 0)
    # Add padding
    img = F.pad(img, pad, "constant", value=pad_value)

    return img, pad#返回调整后的img 和pad(0,0,pad1,pad2)


def resize(image, size):#调整图像大小,在ImageFolder和ListDataset被引用
    image = F.interpolate(image.unsqueeze(0), size=size, mode="nearest").squeeze(0)
    return image

#多尺度训练时使用,没有被引用
def random_resize(images, min_size=288, max_size=448):#图像大小随机调整为(288,320,352,384,416)之一,多尺度训练。
    new_size = random.sample(list(range(min_size, max_size + 1, 32)), 1)[0]
    images = F.interpolate(images, size=new_size, mode="nearest
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值