WinClip非官方复现代码学习笔记3

一、项目代码结构展示

       本篇及以后的学习笔记主要关注点在读懂代码上,因为笔者本身是对python语法不太熟悉,所以想通过对这个项目的精细学习来提升自己对于语法和项目结构的理解。

1. 整体项目结构

经过上一个笔记中的测试环节,现在的项目结构如下:

2. 下一级目录

二、代码命令行全文注释

从截图中可以看到,WinClip-master/datasets/_init_.py文件是按顺序出现的第一个python文件,所以我们的注释从这个文件开始。

import numpy as np
from torch.utils.data import DataLoader
from loguru import logger
from .dataset import CLIPDataset
from .mvtec import load_mvtec, mvtec_classes
from .visa import load_visa, visa_classes

# 数据归一化的均值和标准差
mean_train = [0.48145466, 0.4578275, 0.40821073]
std_train = [0.26862954, 0.26130258, 0.27577711]
# 将不同数据集的加载函数与其名称关联起来
load_function_dict = {
    'mvtec': load_mvtec,
    'visa': load_visa,
}
# 将不同数据集类别与其名称关联起来
dataset_classes = {
    'mvtec': mvtec_classes,
    'visa': visa_classes,
}
# 反归一化图像数据: 它接受一个归一化后的张量作为输入,首先将通道维度移动到最后,然后应用之前定义的均值和标准差进行反归一化,最后将结果转换为uint8类型的像素值
def denormalization(x):
    x = (((x.transpose(1, 2, 0) * std_train) + mean_train) * 255.).astype(np.uint8)
    return x
# 根据输入参数创建一个数据加载器
def get_dataloader_from_args(phase, **kwargs):

    dataset_inst = CLIPDataset(
        load_function=load_function_dict[kwargs['dataset']],  # 根据输入的数据集名称从load_function_dict中获取相应的加载函数
        category=kwargs['class_name'],
        phase=phase,
        k_shot=kwargs['k_shot'],  # 根据输入的类别、阶段(训练或测试)、k_shot值和实验索引创建一个CLIPDataset实例
        experiment_indx=kwargs['experiment_indx']  # 根据阶段是训练还是测试,以及指定的批量大小,创建一个DataLoader实例用于迭代数据集
    )

    if phase == 'train':
        data_loader = DataLoader(dataset_inst, batch_size=kwargs['batch_size'], shuffle=True,
                                  num_workers=0)
    else:
        data_loader = DataLoader(dataset_inst, batch_size=kwargs['batch_size'], shuffle=False,
                                 num_workers=0)

    #
    debug_str = f"===> datasets: {kwargs['dataset']}, class name/len: {kwargs['class_name']}/{len(dataset_inst)}, batch size: {kwargs['batch_size']}"
    logger.info(debug_str)

    return data_loader, dataset_inst

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值