技术标签: Pytorch学习
根据自己的数据创建自己的Dataset,例如:
class RMBDataset(Dataset):
def __init__(self, data_dir, transform=None):
"""
rmb面额分类任务的Dataset
:param data_dir: str, 数据集所在路径
:param transform: torch.transform,数据预处理
"""
self.label_name = {
"1": 0, "100": 1}
self.data_info = self.get_img_info(data_dir) # data_info存储所有图片路径和标签,在DataLoader中通过index读取样本
self.transform = transform
def __getitem__(self, index):
path_img, label = self.data_info[index]
img = Image.open(path_img).convert('RGB') # 0~255
if self.transform is not None:
img = self.transform(img) # 在这里做transform,转为tensor等等
return img, label
def __len__(self):
return len(self.data_info)
@staticmethod #静态设置,可以不实例化 直接调用
def get_img_info(data_dir):
data_info = list()
for root, dirs, _ in os.walk(data_dir):
# 遍历类别
for sub_dir in dirs:
img_names = os.listdir(os.path.join(root, sub_dir))
img_names = list(filter(lambda x: x.endswith('.jpg'), img_names))
# 遍历图片
for i in range(len(img_names)):
img_name = img_names[i]
path_img = os.path.join(root, sub_dir, img_name)
label = rmb_label[sub_dir]
data_info.append((path_img, int(label)))
return data_info
裁剪,旋转,对比度,亮度,填充等等
transforms.CenterCrop() #中心旋转
transforms.RandomCrop(size, padding=None, pad_if_needed=False,
fill=0, padding_mode='constant') #随机裁剪
transforms.RandomRotation(degrees, resample=False, expand=False,
center=None) #旋转
transforms.ColorJitter(brightness=0, contrast=0, saturation=0,
hue=0) #调整亮度、对比度、饱和度和色相
transforms.RandomAffine(degrees, translate=None, scale=None, shear=None,
resample=False, fillcolor=0) #仿射变换
class AddPepperNoise(object):
"""增加椒盐噪声
Args:
snr (float): Signal Noise Rate
p (float): 概率值,依概率执行该操作
"""
def __init__(self, snr, p=0.9):
assert isinstance(snr, float) or (isinstance(p, float))
self.snr = snr
self.p = p
def __call__(self, img):
"""
Args:
img (PIL Image): PIL Image
Returns:
PIL Image: PIL image.
"""
if random.uniform(0, 1) < self.p:
img_ = np.array(img).copy()
h, w, c = img_.shape
signal_pct = self.snr
noise_pct = (1 - self.snr)
mask = np.random.choice((0, 1, 2), size=(h, w, 1), p=[signal_pct, noise_pct/2., noise_pct/2.])
mask = np.repeat(mask, c, axis=2)
img_[mask == 1] = 255 # 盐噪声
img_[mask == 2] = 0 # 椒噪声
return Image.fromarray(img_.astype('uint8')).convert('RGB')
else:
return img
不知道是不是升级到AndroidX 还是电脑配置的问题,昨天还是好好的有代码提示功能,今天早上一打开AS ,竟然没有代码提示了。一番百度后发现网上的方法有以下几种:1、去掉file--Power Save Mode,这是AndroidStudio的省电模式,打钩选择之后确实没有任何提示的。可是我的AS 没有打勾啊,确定这不能解决我的问题,有网友反映,能解决他们的问题。2、有人说...
随机森林就是用随机的方式建立一个森林,森林里面有很多的决策树,并且每棵树之间是没有关联的。得到一个森林后,当有一个新的样本输入,森林中的每一棵决策树会分别进行一下判断,进行类别归类(针对分类算法),最后比较一下被判定哪一类最多,就预测该样本为哪一类。 随机森林算法有两个主要环节:决策树的生长和投票过程。随机森林有什么优缺点。R语言如何实现。
在大学时, 自己是学计算机专业的,而且还和老师一起做过一年半的项目。 有时候是不是有这样的想法,做一个自己的网站、但一直未付诸行动。推荐一个免费小说,视频,还有岛国电影下载地址:https://www.lanzous.com/i64d1ed2009年时, 终于付诸行动了,花了三个月,现学现卖, 熬夜通宵用PHP做了一个小网站,但后续就再没有坚持下去。直到从电信行业转行互联...
&amp;#32; == 普通的英文半角空格&amp;#160; == &amp;nbsp; == &amp;#xA0; == no-break space (普通的英文半角空格但不换行)&amp;#12288; == 中文全角空格 (一个中文宽度)&amp;#8194; == &amp;ensp; == en空格 (半个中文宽度)&amp;#8195; == &amp;emsp; == em空格...
有关命令执行的知识windows 或 linux 下:command1 && command2 先执行 command1,如果为真,再执行 command2command1 | command2 只执行 command2command1 & command2 先执行 command2 后执行 command1command1 || command2 先执行 command1,如果为假,再执行 command2命令执行漏洞(| || & && 称为
1:parseInt(string) 这个函数的功能是从string的开头开始解析,返回一个整数,说起来比较笼统,parseInt("1234blue"); //returns 12342:parseFloat():使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,parseFloat()没有基模式。parseFloat("1234blu
具体代码如下:#include <iostream>using namespace std;class Base{ //基类Basepublic: int fn1(){return 0;}; int fn2(){return 0;};};class Derived:private Base{ //派生类Derived;public: int fn1(){return Base::fn1();}//返回Base类中函数fn1,以调用fn1; int fn2(){ret
基于prefix bloomfilter的过滤思想和get_range接口数据的特点,在导师的指导下,提出如下的简单方案,对get_range接口的范围查找过程进行优化,使得能够根据prefix进行过滤,减少无效的磁盘IO。
《数据结构》实验二: 线性表实验一..实验目的 巩固线性表的数据结构,学会线性表的应用。1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作。2.学习运用线性表的知识来解决实际问题。3.进一步巩固程序调试方法。4.进一步巩固模板程序设计。
由于最近在学习pyqt5的相关知识,在网上找了几篇教程看,于是就写了这篇学习笔记。本文只是一些案例的代码以及演示,详细的讲解请看原文。原文链接:https://zetcode.com/gui/pyqt5/中文翻译:http://www.360doc.com/content/19/1022/14/12906439_868371487.shtml文章目录1、Signals & slots2、重构事件处理器3、事件对象4、事件发送5、信号发送1、Signals & slotsQLCD.
为什么80%的码农都做不了架构师?>>> ...