首页 > 其他分享 >11

11

时间:2023-07-16 21:22:39浏览次数:36  
标签:11 self haze path imgs import size

import os
import glob
import h5py
import random
from PIL import Image
from matplotlib import pyplot as plt

import torch.utils.data as data
from torch.utils.data import DataLoader
import torchvision.transforms as tfs
from torchvision.transforms import functional as FF

from Utils.metrics import *
from Utils.option import *


class train_Dataset(data.Dataset):
    def __init__(self, path, mode='train', size=opt.crop_size, **kwargs):
        super(train_Dataset,self).__init__()
        self.size=size
        self.mode=mode
        self.format=format
        self.haze_imgs_dir = os.path.join(path, 'low')  # haze_img dir path
        self.haze_imgs_list = os.listdir(self.haze_imgs_dir)  # haze_img name list
        self.haze_imgs = [os.path.join(self.haze_imgs_dir, img) for img in self.haze_imgs_list]  # haze_img path list
        self.clear_dir = os.path.join(path, 'high')  # clean_img dir path
        self.mask = False
        if 'restored_mask' in kwargs:
            self.restored_mask = kwargs['restored_mask'].long()
            self.mask = True

        self.length = len(self.haze_imgs_list)
    def __getitem__(self, index):
        haze = Image.open(self.haze_imgs[index])
        if isinstance(self.size, int):
            while haze.size[0]<self.size or haze.size[1]<self.size :
                index = random.randint(0,self.length)
                haze = Image.open(self.haze_imgs[index])
        haze_name = self.haze_imgs[index].split('/')[-1]
        id = haze_name.split('_')[0]
        clear_name = id
        clear = Image.open(os.path.join(self.clear_dir, clear_name))
        clear = tfs.CenterCrop(haze.size[::-1])(clear)

        if not isinstance(self.size,str):
            i,j,h,w=tfs.RandomCrop.get_params(haze,output_size=(self.size,self.size))
            haze = FF.crop(haze,i,j,h,w)
            clear = FF.crop(clear,i,j,h,w)
        rand_hor = random.randint(0, 1)
        rand_rot = random.randint(0, 3)
        haze =self.augData_haze(haze.convert("RGB"), rand_hor, rand_rot)
        clear = self.augData_clear(clear.convert("RGB"), rand_hor, rand_rot)
        mask_flag = self.restored_mask[index] if self.mask else -1

        return haze, clear, index, mask_flag

    def augData_haze(self, haze, rand_hor, rand_rot):
        haze=tfs.RandomHorizontalFlip(rand_hor)(haze)
        if rand_rot:
            haze=FF.rotate(haze,90*rand_rot)
        haze=tfs.ToTensor()(haze)
        # haze=tfs.Normalize(mean=[0.64, 0.6, 0.58],std=[0.14,0.15, 0.152])(haze)
        return haze

    def augData_clear(self, clear, rand_hor, rand_rot):
        clear=tfs.RandomHorizontalFlip(rand_hor)(clear)
        if rand_rot:
            clear=FF.rotate(clear,90*rand_rot)
        clear=tfs.ToTensor()(clear)
        return clear

    def __len__(self):
        return self.length


class test_Dataset(data.Dataset):
    def __init__(self, path, mode='test'):
        super(test_Dataset,self).__init__()
        self.mode=mode
        self.format=format
        self.haze_imgs_dir = os.path.join(path, 'low')  # haze_img dir path
        self.haze_imgs_list = os.listdir(self.haze_imgs_dir)  # haze_img name list
        self.haze_imgs = [os.path.join(self.haze_imgs_dir, img) for img in self.haze_imgs_list]  # haze_img path list
        self.clear_dir = os.path.join(path, 'high')  # clean_img dir path

        self.length = len(self.haze_imgs_list)
    def __getitem__(self, index):
        haze = Image.open(self.haze_imgs[index])
        haze_name = self.haze_imgs[index].split('/')[-1]
        id = haze_name.split('_')[0]
        clear_name = id
        clear = Image.open(os.path.join(self.clear_dir, clear_name))
        clear = tfs.CenterCrop(haze.size[::-1])(clear)

        haze = self.augData_haze(haze.convert("RGB"))
        clear = self.augData_clear(clear.convert("RGB"))
        return haze, clear, haze_name

    def augData_haze(self, haze):
        haze=tfs.ToTensor()(haze)
        # haze=tfs.Normalize(mean=[0.64, 0.6, 0.58],std=[0.14,0.15, 0.152])(haze)
        return haze

    def augData_clear(self, clear):
        clear=tfs.ToTensor()(clear)
        return clear

    def __len__(self):
        return self.length

 

标签:11,self,haze,path,imgs,import,size
From: https://www.cnblogs.com/yyhappy/p/17558596.html

相关文章

  • cm311-1a-yst机顶盒刷Armbian问题汇总
    一.刷入底包我因为没有买免拆机的刷机神器,只能使用拆机短接触点的方法,其中重要的注意事项:1.使用两头都是usbA口的数据线,可以自己制作,尽量短,减少干扰.2.插机顶盒的usb口必须是靠近网口端那个,插电脑的端口,最好是usb3.0或以上,供电会好一些3.使用刷机工具软件......
  • CVE-2019-11043(PHP远程代码执行漏洞)复现
    一、漏洞介绍1、相关背景在web早期,页面都是以静态页面为主(如:HTML),没有动态页面的说法,所有还没有动态语言(如:PHP、JSP等)后来Ngnix为支持PHP语言就将有出现php页面的请求给PHP相关程序来进行处理,然后将处理后的结果反馈给用户。而解决PHP的相关程序就是cgi协议,有了cgi协议以后......
  • p1104 生日
    这道题目让我学会了sort函数()最后可以添加一个bool类型的cmp函数作为比较条件,其他就比较简单了#include<iostream>#include<algorithm>usingnamespacestd;structmember{stringname;intyear;intmonth;intday;intnum;}oi[105];intn;bo......
  • win11 Copilot开启使用
    1.升级更新Windows预览版234932.更新Edge版本1153.安装ViVeToolv0.3.3地址:https://github.com/thebookisclosed/ViVe/releases/tag/v0.3.3 教程:https://blog.csdn.net/qq_36693723/article/details/131583470......
  • Python 潮流周刊第 11 期(2023-07-15)
    查看全文:Python潮流周刊#11:如何使用Golang运行Python代码?......
  • mysql 数据库 1130 error
    mysql-uroot-p接下来输入刚刚创建的密码  成功进入之后需要输入以下命令usemysql;  //切换数据库updateusersethost='%'whereuser='root';  输入完成之后 selectHost,Userfromuser;查看以下修改结果 +-----------+---------------+|Host|User......
  • 20090211_擲筊的方式 (基礎篇)
    要問神明事情有分菩薩佛祖...需要三杯(EX:觀世音菩薩,地藏王菩薩、阿彌陀佛等等。)神..只需要一杯(EX:關聖帝君,媽祖娘娘,土地公,王母娘娘等等。) 首先要先把自己的基本資料先報上,姓名,出生的(國or農曆)年月日(時辰),住家地址..先詢問是否可以問關於XXX的事情,可否同意給個方向......
  • 解密Prompt系列11. 小模型也能COT-先天不足后天来补
    前两章我们分别介绍了COT的多种使用方法以及COT的影响因素。这一章更多面向应用,既现实场景中考虑成本和推理延时,大家还是希望能用6B的模型就不用100B的大模型。但是在思维链基础和进阶玩法中反复提到不论是few-shot还是zero-shot的思维链能力似乎都是100B左右的大模型才有的涌现能......
  • 110.Object.defineProperty介绍
    110.Object.defineProperty介绍?Object.defineProperty函数一共有三个参数,第一个参数是需要定义属性的对象,第二个参数是需要定义的属性,第三个是该属性描述符。一个属性的描述符有四个属性,分别是value属性的值,writable属性是否可写,enumerable属性是否可枚举,configurable......
  • 比Wi-Fi快100倍!Li-Fi无线传输标准802.11bb正式发布:带宽高达224GB/s
    大家对Wi-Fi可以说耳熟能详,最新标准已经演进到802.11be,即Wi-Fi7,理论速率可达30Gbps。现在,更强的来了。IEEE今日正式签署802.11bb无线传输标准,即Li-Fi,基于光波的无线传输。Li-Fi支持者认为,光比射频更可靠,由此也使得Li-Fi比Wi-Fi和5G都要更快、更安全,Li-Fi的发布,也有助于和Wi-F......