版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大数据采集与预处理技术*
*项目一表情图像数据采集和预处理序号软件配置要求1Python3运行计算机内存8G以上2Pytorch最新版本3Pycharm+Requets+Lxml最新版本一、项目目标:1、完成表情图像数据采集环境安装配置,掌握爬虫必备知识;2、完成表情图像数据爬虫采集程序设计和数据采集;3、完成表情图像数据预处理。二、环境要求:任务三表情图像数据预处理一、任务目标1、掌握常见的图像处理Python依赖库的使用技能;2、完成表情图像数据的旋转、剪切、拉伸等预处理操作;3、完成表情图像数据的Tensor化,编写批量预处理程序。二、知识准备1、Pytorch简介PyTorch是一个基于Python的科学计算软件包,它使用图形处理单元GPU的强大功能。也是为提供最大灵活性和速度而构建的首选深度学习研究平台之一。两个最高级的功能:
具有强大的GPU加速支持的张量计算;
包含自动求导系统的深度神经网络。2、Pytorch常用工具包1)torch:类似NumPy的张量库,强GPU支持; 2)torch.autograd:基于tape的自动区别库,支持torch之中的所有可区分张量运行; 3)torch.nn:与autograd深度整合的神经网络库; 4)torch.optim:与torch.nn一起使用的优化包,包含SGD、RMSProp、LBFGS、Adam等标准优化方式;5)torch.multiprocessing:python多进程并发,进程之间torchTensors的内存共享; 6)torch.utils:数据载入器,具有训练器和其他便利功能; 7)torch.legacy(.nn/.optim):处于向后兼容性考虑,从Torch移植来的legacy代码。安装方法,在集成环境中搜索torchvision选择默认版本安装即可,在命令行使用如下命令:pipinstalltorchvision2、Pytorch常用工具包#检查环境是否正常importtorchimporttorchvisionprint(torch.__version__)#输出PyTorch的版本print(torchvision.__version__)#输出torchvision的版本img=Image.open('bg2017121301.jpg')plt.imshow(np.array(img)) #后续代码中图像显示代码和此处相同,不再一一介绍3、Pytorch常见操作示例示例1:图片裁剪importmatplotlib.pyplotaspltimportnumpyasnpimporttorchvision.transformsasTfromPILimportImageimg=Image.open('bg2017121301.jpg')transform=T.CenterCrop(160)result=transform(img)plt.imshow(np.array(img))关键函数解析Pytorch函数输入的图像可以是PIL或tensor类型,部分函数只接受PIL或只接受tensor。因此在进行处理之前可以使用ToPILImage()和ToTensor进行类型转换。transforms.CenterCrop(size)函数作用:将给定的PIL.Image进行中心裁剪,得到给定的size,size可以是tuple(H,W),也可以是一个Int,在这种情况下,裁剪出来的图片的形状是正方形。size(sequenceorint):裁剪后的尺寸大小,输入为一个int型,输出(size,size)图像;输入为长度1的sequence时,输出(size[0],size[0]);输入为(h,w),输出为(h,w)。示例2:改变图像色彩饱和度transform=T.ColorJitter(brightness=0.3,contrast=0.3,saturation=0.3,hue=0.4)result=transform(img)plt.imshow(np.array(result))关键函数解析transforms.ColorJitter(brightness=0,contrast=0,saturation=0,hue=0)随机改变亮度、对比度、饱和度、色相,其中前3项调整范围为[max(0,1-value),1+value]或给定[min,max],最后1项为[-value,value]或给定[min,max]。brightness(浮点型元组float(min,max)):[max(0,1-brightness),1+brightness]或[min,max]随机选择的非负数。contrast(float(min,max)):[max(0,1-contrast),1+contrast]或[min,max]随机选择的非负数。saturation(float(min,max)):[max(0,1-saturation),1+saturation]或[min,max]随机选择的非负数。hue(浮点型元组float(min,max)):[-hue,hue]或[min,max]随机选择,且0<=hue<=0.5或-0.5<=min<=max<=0.5。示例3:将图像进行5部分裁剪transform=T.FiveCrop(112)results=transform(img)forresultinresults:plt.figure()plt.imshow(np.array(result))关键函数解析transforms.FiveCrop(size)
分别裁剪图像的四个角和中心。size(sequenceorint):裁剪的尺寸大小,输入为一个int型,输出(size,size)图像;输入为长度1的sequence时,输出(size[0],size[0]);输入为(h,w),输出为(h,w)。示例4:图像灰度处理和边界填充transform=T.Grayscale(num_output_channels=1)result=transform(img)plt.imshow(np.array(result),cmap='gray’)transform=T.Pad(padding=(2,4,6,8),fill=(255,255,255),padding_mode='constant')result=transform(img)plt.imshow(np.array(result))关键函数解析transforms.Grayscale(num_output_channels=1)将图像转换为灰度图像。如果是torch.Tensor类型则大小为[…,3,H,W]。num_output_channels(int)-(1or3):输出图像通道数,当”3“时则三通道R=G=B。transforms.Pad(padding,fill=0,padding_mode=‘constant’)将图片所有的边界填充上padding像素值。如果是torch.Tensor类型则大小为[…,H,W]。padding(intorsequence):填充大小,依次左、上、右、下;fill(numberorstrortuple):表示填充的颜色;padding_mode(str):填充模式分为constant,edge,reflect,symmetric模式。其中constant:填充常数;edge:把边界像素值复制到填充区域;reflect:原始[1,2,3,4],不重复边界;symmetric:重复边界[2,1,1,2,3,4,4,3]。示例5:图像随机仿射变换transform=T.RandomAffine(degrees=20,translate=None,scale=None,shear=0.3,resample=False,fillcolor=0)result=transform(img)plt.imshow(np.array(result))关键函数解析transforms.RandomAffine(degrees,translate=None,scale=None,shear=None,interpolation=<InterpolationMode.NEAREST:‘nearest’>,fill=0,fillcolor=None,resample=None)图像随机仿射变换,保持图像中心不变。如果是torch.Tensor类型则大小为[…,H,W]。degrees(sequenceornumber):旋转角度,输入为(min,max);translate(tuple,optional):水平、垂直平移。以(a,b)为例,水平方向上-img_width*a<dx<img_width*a,垂直方向上-img_high*b<dy<img_high*b。scale(tuple,optional):缩放因子区间。shear(sequenceornumber,optional):一个数的情况和一个长度为2的tuple时,对X轴也就是宽上加上一个(-shear,+shear)或(shear[0],shear[1])的随机数;长度为4的tuple时,X轴加上**(shear[0],shear[1])**的随机数,Y轴加上**(shear[2],shear[3])**的随机数。interpolation(InterpolationMode):插值方法,最近邻或双线性插值。fill:变换后图像外的像素点填充值,默认为0,一个数则表示填充的灰度值,如果是长度为3的tuple类型则分别对应R,G,B。Fillcolor、resample:v0.10.0后移除,使用fill、interpolation即可。示例6:随机选择预处理和随机顺序选择处理操作transforms=[T.CenterCrop(160),T.Pad(padding=(2,4,6,8),fill=(255,255,255),padding_mode='constant')]transform=T.RandomApply(transforms,p=0.5)result=transform(img)plt.imshow(np.array(result))transforms=([T.CenterCrop(160),T.Pad(padding=(2,4,6,8),fill=(255,255,255),padding_mode='constant')])transform=T.RandomOrder(transforms)result=transform(img)关键函数解析transforms.RandomApply(transforms,p=0.5)按照给定的概率,随机应用一系列的图像变换函数。transforms(sequenceortorch.nn.Module):用列表存储一系列的图像变换函数,p(float):进行图像变换的概率。示例7:随机裁剪transform=T.RandomCrop((100,200),padding=None,pad_if_needed=False,fill=0,padding_mode='constant')result=transform(img)result=transform(img)plt.imshow(np.array(result)) 关键函数解析transforms.RandomCrop(size,padding=None,pad_if_needed=False,fill=0,padding_mode=‘constant’)随机位置裁剪图像,如果是torch.Tensor类型则大小为[…,H,W]。size(sequenceorint):裁剪后的尺寸大小,输入为一个int型,输出(size,size)图像;输入为(h,w),输出为(h,w)。padding(intorsequence):边界填充大小,为一个int型时,每个边界填充int值;长度为4的sequence时,左、上、右、下边界填充大小。pad_if_needed(boolean):如果图像小于所需的尺寸,它就会填充,以避免引发异常。fill:变换后图像外的像素点填充值,默认为0,一个数则表示填充的灰度值,如果是长度为3的tuple类型则分别对应R,G,B。padding_mode(str):填充模式分为:constant、edge、reflect、symmetric模式。constant是填充常数,edge是把边界的像素值复制到填充区域;reflect是原始[1,2,3,4];symmetric是重复边界。示例8:随机灰度、左右翻转、垂直翻转图像transform=T.RandomGrayscale(p=0.8)result=transform(img)plt.imshow(np.array(result))transform=T.RandomHorizontalFlip(p=0.6)result=transform(img)plt.imshow(np.array(result))transform=T.RandomVerticalFlip(p=0.9)result=transform(img)plt.imshow(np.array(result))关键函数解析transforms.RandomGraycale(p=0.1)按照给定的概率,随机将图片转化为灰度图像。如果是torch.Tensor类型则大小为[…,3,H,W]。transforms.RandomHorizontalFlip(p=0.5)按照给定的概率,随机水平翻转图像。如果是torch.Tensor类型则大小为[…,H,W]。transforms.RandomVerticalFlip(p=0.5)按照给定的概率,随机垂直翻转图像。如果是torch.Tensor类型则大小为[…,H,W]。示例9:随机旋转图像transform=T.RandomRotation(degrees=20,resample=False,expand=False,center=None,fill=0)result=transform(img)plt.imshow(np.array(result))关键函数解析torchvision.transforms.RandomRotation(degrees,interpolation=<InterpolationMode.NEAREST:‘nearest’>,expand=False,center=None,fill=0,resample=None)根据degress旋转图像,如果是torch.Tensor类型则大小为[…,H,W]。
degrees(sequenceornumber):旋转角度,输入为(min,max)或(-degree,+degree);interpolation(interpolationMode):插值方法:最近邻或双线性插值。expand(bool,optional):旋转后是否修改图像大小,True则修改大小保证可以容纳图像;False则维持原大小,对图像进行适当的舍弃。center(sequence,optional):旋转的中心(x,y),左上角为坐标原点。默认为图像中心。fill(sequenceornumber):变换后图像外的像素点填充值,默认为0,如果是一个数则表示填充的灰度值,如果是长度为3的tuple类型则分别对应R,G,B。resample(int,optional):v0.10.0后会移除,使用interpolation即可。示例10:高斯模糊、随机颜色transform=T.GaussianBlur(kernel_size=(5,9),sigma=(0.1,5))result=transform(img)plt.imshow(np.array(result))transform=T.RandomInvert(p=0.8)result=transform(img)plt.imshow(np.array(result))关键函数解析transforms.GaussianBlur(kernel_size,sigma=(0.1,2.0))使用高斯滤波器进行图像模糊,高斯滤波器的参数随机。如果是torch.Tensor类型则大小为[…,C,H,W]。kernel_size(intorsequence):高斯滤波器的大小。sigma(floatortupleofpython:float(min,max)):在(min,max)随机数作为标准差。transforms.RandomInvert(p=0.5)以给定的概率随机地插入给定图像的颜色。如果是torch.Tensor类型则大小为[…,1or3,H,W]。p(float):图像转换的概率示例11:随机色彩分离、过度曝光transform=T.RandomPosterize(bits=2,p=0.6)result=transform(img)plt.imshow(np.array(result))transform=T.RandomSolarize(threshold=192.0)result=transform(img)plt.imshow(np.array(result))关键函数解析transforms.RandomPosterize(bits,p=0.5)通过减少每个颜色通道的比特数,以给定的概率随机地对图像进行处理。如果图像是torchTensor,它应该是torch.uint8类型的大小为[…,1or3,H,W],如果img是PIL图像,预计它的模式是"L"或“RGB”。bits(int):每个通道保留的比特数。p(float):修该通道比特数的概率,默认0.5。transforms.RandomSolarize(threshold,p=0.5)通过反转所有高于阈值的像素值,以给定的概率随机地对图像过度曝光。如果图像是torchTensor,它的大小为[…,1or3,H,W],如果img是PIL图像,预计它的模式是"L"或“RGB”。threshold(float):阈值,所有大于等于阈值的像素点进行反转。p(float):发生反转的概率,默认为0.5。示例12:随机锐度调整、随机增大对比transform=T.RandomAdjustSharpness(sharpness_factor=2,p=1)result=transform(img)plt.imshow(np.array(result))transform=T.RandomAutocontrast(p=1)result=transform(img)plt.imshow(np.array(result))关键函数解析transforms.RandomAdjustSharpness(sharpness_factor,p=0.5)以给定的概率随机调整图像的锐度。如果图像torchTensor,它的大小为[…,1or3,H,W]。sharpness_factor(float):调整锐度的程度。可以是任何非负数。0给出一个模糊的图像,1给出原始图像,而2将清晰度提高2倍。p(float):调整锐度的概率,默认为0.5。transforms.RandomAutocontrast(p=0.5)以一个给定的概率随机地对给定图像的像素进行最大化对比度操作。如果图像是torchTensor,它的大小为[…,1or3,H,W]。p(float):调整对比度的概率,默认为0.5。示例13:随机直方图修正、图像归一化transform=T.RandomEqualize(p=1)result=transform(img)plt.imshow(np.array(result))transform=T.RandomAutocontrast(p=1)img_tensorf=T.ToTensor()result=img_tensorf(img)transform=T.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])result=transform(result)关键函数解析transforms.RandomEqualize(p=0.5)以给定的概率随机对图像进行直方图均衡化。如果图像是torchTensor,它的大小为[…,1or3,H,W]。transforms.Normalize(mean,std,inplace=False)使用均值和标准差对torch.tensor图像进行归一化。这个图像变换不支持PILmean(sequence):(mean[1],mean[2],…,mean[n])分别表示n个通道的均值。std(sequence):(std[1],std[2],…,std[n])分别表示n个通道的标准差。inplace(bool,optional):是否原地操作。谢谢!大数据采集与预处理技术*
*项目一表情图像数据采集和预处理序号软件配置要求1Python3运行计算机内存8G以上2Pytorch最新版本3Pycharm+Requets+Lxml最新版本一、项目目标:1、完成表情图像数据采集环境安装配置,掌握爬虫必备知识;2、完成表情图像数据爬虫采集程序设计和数据采集;3、完成表情图像数据预处理。二、环境要求:任务三表情图像数据预处理一、任务目标1、掌握常见的预处理操作;2、完成表情图像数据的旋转、剪切、拉伸等预处理操作;3、完成表情图像数据的Tensor化,编写批量预处理程序。二、任务内容1、表情图像剪裁、饱和度增强、仿射变换、水平或垂直翻转、旋转;2、图像增强、模糊、颜色变换3、图像Tensor化操作任务三表情图像数据预处理一、图像筛选对于分类模型需要把图片分为不同的类别,任务一中通过公开数据集和爬虫采集了一部分人脸图像,我们可以根据需要分为Anger、Contempt、Disgust、Fear、Happy、Neutral、Sad、Surprised文件夹,把对应的表情图像分放到不同文件夹中,如果采集的图像不属于以上几类表情,可以不作为训练数据(删除不需要的图像)。任务三表情图像数据预处理二、图像统一化对表情图像进行统一化可以使用Python代码实现,实际上利用PyTorch图像处理接口来处理该类任务是非常常见的处理操作,通常包括统一图像大小、统一图像颜色编码,对于传统机器视觉模型还需要统一图像位深度。一般图像数据集数据庞大,需要提前准备好数据。假设所有数据存储在images文件夹,images文件夹下有Anger、Contempt、Disgust、Fear.、Happy、Neutral、Sad、Surprised文件夹,这8个文件夹下放置了各类表情图像,样式如右图:2.1读取图像并统一大小、tensor化importosimporttorchvision.transformsastransforms#导入python图像处理库,如果没有可以使用pipinstallPillow安装fromPILimportImagefile_dir='images'#原图片所在文件夹features_dir='features' #特征图要保存到的文件夹#读取图像所在目录的图像文件夹img_dirs=os.listdir(file_dir)#遍历每个图像文件夹fordirinimg_dirs:#生成图像所在目标img_dir=os.path.join(file_dir,dir)out_path=os.path.join(features_dir,dir)#如果文件夹没有创建则创建2.1读取图像#如果文件夹没有创建则创建ifos.path.exists(out_path)isFalse:os.makedirs(out_path)#找到每个图像文件夹下的所有图像img_names=os.listdir(img_dir)#遍历读取每张图像名称forimg_nameinimg_names:#生成每个图像的路径
img_file=os.path.join(img_dir,img_name)#读取图像
img=Image.open(img_file)#大小统一化处理转换器
transform1=transforms.Resize(256)#对图像进行大小统一化2.1读取图像#对图像进行大小统一化
resize_img=transform1(img)transform2=transforms.Compose([transforms.ToTensor(),#将图像转换为Tensor])#将Tensor转换为PIL图像image=transforms.ToPILImage()(resize_img.squeeze(0))#生成保存文件路径和文件格式
img_name=f'image_{i}.jpg'img_path=os.path.join(out_path,img_name)#保存图像为JPG格式image.save(img_path)2.2图像增强预处理
任务二中采集了人像数据,但是数据仍然不够丰富,在图像模型训练时,数据集的稀缺很容易令模型出现过拟合,泛化能力差等问题。因此,在输入给深度模型使用之前还需要对数据预处理,对有限的图像数据集进行图像增强处理以扩展图像训练集,常见的包括翻转、旋转、尺寸缩放、灰度化、高斯模糊、剪裁、仿射变换、锐化等操作。#导入依赖库如前述页示例,读者自行参考查阅trans1=[#色彩饱和度增强 transforms.ColorJitter(brightness=0.3,contrast=0.3,saturation=0.3,hue=0.4),
#随机仿射变换 transforms.RandomAffine(degrees=20,translate=None,scale=None,shear=0.3)]trans2=[#随机水平翻转
transforms.RandomHorizontalFlip(1),#随机垂直翻转
transforms.RandomVerticalFlip(1),
#随机旋转
transforms.RandomRotation((0,360))]trans3=[#随机进行颜色转换
transforms.RandomInvert(1),#随机进行直方图均衡化
transforms.RandomEqualize(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 18311.2-2001纤维光学互连器件和无源器件 基本试验和测量程序 第3-2部分检查和测量 单模纤维光学器件偏振依赖性》(2026年)深度解析
- 深度解析(2026)《GBT 18247.4-2000主要花卉产品等级 第4部分花卉种子》(2026年)深度解析
- 南通大学《自由搏击》2025-2026学年第一学期期末试卷
- 湖南三一工业职业技术学院《遗传与分子生物学实验》2025-2026学年第一学期期末试卷
- 鼻饲管流食课件
- 鼻腔鼻窦癌课件
- 大学物理:科研教育就业指南
- 2025年石狮市第六实验小学公开招聘编外合同教师备考题库及一套完整答案详解
- 成都市新都区部分单位2025年12月公开招聘编外(聘用)人员的备考题库(二)及1套完整答案详解
- 2025年剑川县人民医院公开招聘编外医疗卫生专业技术人员16人的备考题库及参考答案详解1套
- 百师联盟2025届高三10月一轮复习联考英语试卷(含答案详解)
- 管理经济学:理论与案例 毛蕴诗第2版 每章习题答案
- 品牌视觉形象设计智慧树知到期末考试答案章节答案2024年武昌理工学院
- (高清版)WST 415-2024 无室间质量评价时的临床检验质量评价
- 趣识古文字智慧树知到期末考试答案章节答案2024年吉林师范大学
- 国开(河北)2024年《中外政治思想史》形成性考核1-4答案
- 二年级乘除法口算题计算练习大全2000题(可直接打印)
- MOOC 微型计算机原理与接口技术-南京邮电大学 中国大学慕课答案
- 公有云技术及应用高职全套教学课件
- 有限空间安全检查档案(含检查记录、台账)全套
- 产品质量回顾分析课件
评论
0/150
提交评论