13.1.1 翻转裁减,改变颜色,结合多种图像增广方法进行图像增广

news2025/2/26 22:01:53

一.图像增广的好处

随机改变训练样本可以减少模型对某些属性的依赖,从而提高模型的泛化能力

裁剪图像可以减少模型对于对象出现位置的依赖

以不同的方式裁剪图像,使感兴趣的对象出现在不同的位置,减少模型对于对象出现位置的依赖

调整亮度、颜色等因素可以降低模型对颜色的敏感度。

二.代码实现:展示原图片

使用如下图片进行测试:
在这里插入图片描述

%matplotlib inline
import torch
import torchvision
from torch import nn
from d2l import torch as d2l
import time
# 不用opencv显示,而是用如下方式显示是因为,它可以显示在jupter网页上
d2l.set_figsize()
img = d2l.Image.open('../data/images/bird.jpg')
d2l.plt.imshow(img);

在这里插入图片描述

# 定义图像增广函数:aug接收图像增广的方法,scale是显示的比例
def apply(img, aug, num_rows=2, num_cols=4, scale=1.5):
    Y = [aug(img) for _ in range(num_rows * num_cols)]
    d2l.show_images(Y, num_rows, num_cols, scale=scale)

二.代码实现:对原图片翻转和裁减

2.1 水平翻转

apply(img, torchvision.transforms.RandomHorizontalFlip())

在这里插入图片描述

2.2 上下翻转

apply(img, torchvision.transforms.RandomVerticalFlip())

在这里插入图片描述

2.3 随机裁减,使目标物体以不同的比例出现在图像的不同位置,降低对目标位置的敏感

'''
    在我们使用的示例图像中,猫位于图像的中间,但并非所有图像都是这样。
    汇聚层可以降低卷积层对目标位置的敏感性。可以通过对图像进行随机裁剪,使物体以不同的比例出现在图像的不同位置。这也可以降低模型对目标位置的敏感性。
'''
# 随机裁剪一个面积为原始面积10%到100%的区域,该区域的宽高比从0.5〜2之间随机取值。然后,区域的宽度和高度都被缩放到200像素
shape_aug = torchvision.transforms.RandomResizedCrop(
    (200, 200), scale=(0.1, 1), ratio=(0.5, 2))
apply(img, shape_aug)

在这里插入图片描述

三.代码实现:改变颜色

3.1 改变亮度

‘’’
另一种增广方法是改变颜色。我们可以改变图像颜色的四个方面:亮度、对比度、饱和度和色调。在下面的
示例中,我们随机更改图像的亮度,随机值为原始图像的 50%(1 − 0.5)到150%(1 + 0.5)之间。
‘’’

apply(img, torchvision.transforms.ColorJitter(
    brightness=0.5, contrast=0, saturation=0, hue=0))

在这里插入图片描述

3.2 改变对比度

'''
    对比度为原始图像的 50%(1 − 0.5)到150%(1 + 0.5)之间。
'''
apply(img, torchvision.transforms.ColorJitter(
    brightness=0, contrast=0.5, saturation=0, hue=0))

在这里插入图片描述

3.3 改变饱和度

# 饱和度为原始图像的 50%(1 − 0.5)到150%(1 + 0.5)之间。
apply(img, torchvision.transforms.ColorJitter(
    brightness=0, contrast=0, saturation=0.5, hue=0))

在这里插入图片描述

3.4 改变色调

# 色调为原始图像的 50%(1 − 0.5)到150%(1 + 0.5)之间。
apply(img, torchvision.transforms.ColorJitter(
    brightness=0, contrast=0, saturation=0, hue=0.5))

在这里插入图片描述

3.5 随机更改图像的亮度(brightness)、对比度(contrast)、饱和度(saturation)和色调(hue)

# 我们还可以创建一个RandomColorJitter实例,并设置如何同时随机更改图像的亮度(brightness)、对比度(contrast)、饱和度(saturation)和色调(hue)。
color_aug = torchvision.transforms.ColorJitter(
brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5)
apply(img, color_aug)

在这里插入图片描述

四.代码实现:结合多种图像增广方法

augs = torchvision.transforms.Compose([
torchvision.transforms.RandomHorizontalFlip(), color_aug, shape_aug])
apply(img, augs)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/862768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业RFID识别技术,助力企业实现智能制造新高度!

RFID技术是一种无线通信技术,通过射频信号在读写器和射频标签之间进行数据交互,实现物体的自动识别和数据传输。随着科技的不断进步,RFID工业识别技术在智能制造领域扮演着越来越重要的角色。 RFID在智能制造中能解决什么问题? 物…

使用雅克比矩阵计算Lorenz的lyapunov exponent图谱

赋个初值看看: 我们使用雅克比矩阵计算lyapunov exponent图谱看看: matlab代码如下: clear; %% ===========初始化输入============== yinit = [0.1,0.1,0.1]; orthmatrix = [1 0 0;0 1 0;0 0 1];y = zeros(12,1); y(1:3) = yinit; y(4:12) = orthmatrix;mod = zeros(3,1…

c++QT文件操作

1 介绍 QT的文件操作来源于其抽象基类QIODevice,中用于处理输入输出设备。提供了统一的接口来处理不同类型的数据源,如文件、套接字、缓冲区等。QIODevice 主要用于读取和写入数据,无论数据来自何种源头,都可以通过 QIODevice 统一…

用 oneAPI 实现 AI 欺诈检测:一款智能图像识别工具

简介 虚假图像和视频日益成为社交媒体、新闻报道以及在线内容中的一大隐患。在这个信息爆炸的时代,如何准确地识别和应对这些虚假内容已经成为一个迫切的问题。为了帮助用户更好地辨别虚假内容,我开发了一款基于 oneAPI、TensorFlow 和 Neural Compress…

一文了解新能源电机国内主流供应商

作为新能源汽车核心三电系统之一的“电机”就好比燃油车的发动机一样,是车辆核心部件,但似乎消费者没太大关注这方面。今天我们给大家聊聊这个核心部件! 一辆新能源汽车占生产成本最高的部件是动力电池,约占到30%左右&#xff0c…

ppt怎么压缩?试试这样压缩文件

当PPT文件体积过大时,打开的速度就会很慢,演示的时候刘程度也会受到影响,其次,现在很多平台对于上传的文件是有大小限制的,比如超过100M的文件就无法上传、发送等等,那么,怎么才能压缩PPT文件呢…

手撕HashMap源码

auth:虎 ,2023年5月8日—???完。 前言: 最初在面试的时候,在个人栏第一条写了一句话“手撕HashMap”源码作为亮点,以下是曾经的学习笔记,目前来说不是很完整,有机会下次面试时候再补全吧~ 1…

python numpy数组水平和垂直合并

1 水平Horizontal合并 Horizontal:水平向右拉长 利用np.hstack():原始数据size可以不一致 利用np.concatenate():原始数据size可以不一致 import numpy as np # 三个一维数组 array1 np.array([1, 2, 3]) array2 np.array([4, 5, 6]) array3 np.ar…

Koan自动重装和Cobbler_web

Koan是Cobbler的辅助工具,可以实现很多功能,使用koan配合Cobbler可以实现快速重装Linux系统: 1、安装koan: yum install -y epel-releaseyum install -y koan 安装截图: 2、在客户机上,用koan选择要重装的…

【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(高级用法)

对于Httpclient请求机制进行设置操作处理。 Body注解申明一个请求体模板,模板中可以带有参数,与方法中Param注解申明的参数相匹配,使用方法如下: interface LoginClient {void login( String user, String password); } ...client.login("denomin…

小红书投放流程是什么,达人选择注意事项!

很多人会发现有些笔记的内容并不是很出彩,但是偏偏就火了,自己想去模仿就平平无奇,其中包含了很多因素,有运气、也有选题和博主发文思路在里面,今天,来和大家分享下小红书投放流程是什么,达人选…

Python Selenium 设置带账号密码的socks5代理,启动浏览器

selenium添加带有账密的socks5代理 我们都知道在使用selenium开发爬虫的时候不可避免的会使用socks5高匿名代理。一般情况下我们使用方法如下(开发语言为python): from selenium import webdriver chrome_options webdriver.ChromeOptions() chrome_options.add_…

手动整理:腾讯云轻量应用服务器优缺点大全

腾讯云轻量应用服务器开箱即用、运维简单的轻量级云服务器,CPU内存带宽配置高并且特别合适,轻量2核2G3M带宽、2核2G4M、2核4G5M带宽、4核8G12M带宽,还有8核16G18M和16核32G28M配置可选,腾讯云服务器网分享腾讯云轻量应用服务器详细…

filebeat 采集k8s 中nginx deployment 日志

一、背景 在k8s集群中,已经部署了nginx应用,需要使用elk来收集日志。 注意:elk并没有放在k8s集群中,使用单独的服务器进行安装。不推荐elk放在k8s集群中! 其中filebeat,使用DaemonSet方式部署&#xff0…

【递归函数的几种常见题型】

递归函数的几种常见题型 目录 题型一:打印一个数的每一位 题型二:计算一个数的每位之和 题型三:计算n的k次方 题型一:打印一个数的每一位 1.1递归函数的实现 void print(int n) {if (n > 9)print(n / 10);printf("…

海外ASO优化之关于应用的营销1

应用程序市场存在一个悲惨的现实:再优秀的应用程序仍然可能会失败。这通常是因为没有人知道它们的存在。所以应用的营销是取得成功的关键。 1、选择正确的应用名称。 实用的应用程序的销售基础是以某种方式使用户的生活更轻松,所以我们需要设置一些功能…

浦东优秀解决方案!闪马智能加速赋能数字化转型

近日,由上海市浦东新区城市数字化转型应用促进中心和上海数字产业发展有限公司联合主办的2023年浦东新区“数转汇”品牌活动启动仪式暨上海数产“科技下午茶”活动举行。现场“2022年浦东新区数字化转型应用优秀解决方案”正式发布,凭借智慧交通一体化感…

深入解析搜好货API:开启智能化电商解决方案

随着电商行业的快速发展,人们对于个性化、智能化的购物体验的追求也越来越高。为了满足消费者的需求,搜好货API应运而生。 一、搜好货API的基本原理 搜好货API基于先进的数据挖掘和机器学习算法,通过收集和分析大量的商品信息和用户行为数据…

[保研/考研机试] KY3 约数的个数 清华大学复试上机题 C++实现

题目链接&#xff1a; KY3 约数的个数 https://www.nowcoder.com/share/jump/437195121691716950188 描述 输入n个整数,依次输出每个数的约数的个数 输入描述&#xff1a; 输入的第一行为N&#xff0c;即数组的个数(N<1000) 接下来的1行包括N个整数&#xff0c;其中每个…

golang拥有wireshark数据包解析能力

golang拥有wireshark数据包解析能力 1. 功能和实现 wireshark拥有世界上最全面的协议解析能力并且还在不断更新中&#xff0c;通过调研&#xff0c;没有办法找到与wireshark同水平的解析工具。 为了使得golang语言可以拥有wireshark一样强大的协议解析能力&#xff0c;库 gowir…