DAY06:【pytorch】圖像增強

1、基本概念

數據增強,又稱數據增廣、數據擴增,是對訓練集進行變換,使訓練集更豐富,從而讓模型更具泛化能力

2、裁剪 — — Crop

2.1 transforms.CenterCrop

功能:從圖像中心裁剪圖片

  • size:所需裁剪圖片尺寸

2.2 transforms.RandomCrop

# transforms.RandomCrop(
#     size,
#     padding=None,
#     pad_if_needed=False,
#     fill=0,
#     padding_mode='constant',
# )

功能:從圖片中隨機裁剪出尺寸為 size 的圖片

  • size:所需裁剪圖片尺寸

  • padding:設置填充大小

    • 為 a 時,上下左右均填充 a 個像素
    • 為 (a, b) 時,上下填充 b 個像素,左右填充 a 個像素
    • 為 (a, b, c, d) 時,左、上、右、下分別填充 a,b,c,d 個像素
  • pad_if_need:若圖像小于設定的 size,則填充

  • padding_mode:填充模式,有4種模式

    1. constant:像素值由 fill 設定
    2. edge:像素值由圖像邊緣像素決定
    3. reflect:鏡像填充,最后一個像素不鏡像
    4. symmetric:鏡像填充,最后一個像素要鏡像
  • fill:為 constant時,設置填充的像素值

2.3 RandomResizedCrop

# transforms.RandomResizedCrop(
#     size,
#     scale=(0.08, 1.0),
#     ratio=(3/4, 3/4),
#     interpolation
# )

功能:隨機大小、長寬比裁剪圖片

  • size:所需裁剪圖片尺寸

  • scale:隨機裁剪面積比例,默認為(0.08, 1.0)

  • ratio:隨機長寬比,默認為(3/4, 4/3)

  • interpolation:插值方式,默認為PIL.Image.BILINEAR

    • PIL.Image.NEAREST:最近鄰近插值
    • PIL.Image,BILINEAR:雙線性插值
    • PIL.Image.BICUBIC:三次樣條插值
    • PIL.Image.LANCZOS:蘭索斯插值
    • PIL.Image.HAMMING:漢明碼插值
    • PIL.Image.BOX:盒插值

2.4 FiveCrop

# transforms.FiveCrop(
#     size
# )

2.5 TenCrop

# transforms.TenCrop(
#     size,
#     vertical_flip=False,
# )

功能:在圖像的上下左右以及中心裁剪出尺寸為 size 的圖片,TenCrop 對5張圖片進行水平或垂直鏡像獲得10張圖片

  • size:所需裁剪圖片的尺寸
  • vertical_flip:是否進行垂直鏡像

3、翻轉 — — Flip

3.1 RandomHorizontalFlip

# transforms.RandomHorizontalFlip(
#     p=0.5
# )

3.2 RandomVerticalFlip

# transforms.RandomVerticalFlip(
#     p=0.5
# )

功能:依概率水平(左右)或垂直(上下)翻轉圖片

  • p:翻轉概率,默認為0.5

3.3 RandomRotation

# transforms.RandomRotation(
#     degrees,
#     resample=False,
#     expand=False,
#     center=None
# )

功能:隨機翻轉圖片

  • degree:旋轉角度

    • 為 a 時,在 (-a, a) 之間選擇旋轉角度
    • 為 (a, b) 時,在 (a, b) 之間選擇旋轉角度
  • resample:重采樣方法

  • expand:是否擴大圖片,以保持原圖信息

  • center:旋轉點設置,默認為圖像中心

4、圖像變換

4.1 Pad

# transforms.Pad(
#     padding,
#     fill=0,
#     padding_mode='constant'
# )

功能:對圖片邊緣進行填充

  • padding:設置填充大小

    • 為 a 時,上下左右均填充 a 個像素
    • 為 (a, b) 時,上下填充 a 個像素,左右填充 b 個像素
    • 為 (a, b, c, d) 時,分別填充上、下、左、右的 a,b,c,d 個像素
  • padding_mode:填充模式

    • constant:常數填充
    • edge:邊緣填充,即邊緣像素會被重復
    • reflect:鏡像填充,即邊緣像素會被鏡像到對稱位置
    • symmetric:對稱填充,即邊緣像素會被鏡像到對稱位置,最后一個鏡像也會鏡像
  • fill:為 constant 時,設置填充像素值,(R, G, B) 或 (Gray)

4.2 ColorJitter

# transforms.ColorJitter(
#     brightness=0,
#     contrast=0,
#     saturation=0,
#     hue=0
# )

功能:調整亮度、對比度、飽和度和色相

  • brightness:亮度調整因子

    • 為 a 時,從 [max(0, 1-a), 1+a] 中隨機選擇
    • 為 (a, b) 時,從 [a, b] 中隨機選擇
  • constrast:對比度參數,同 brightness

  • saturation:飽和度參數,同 brightness

  • hue:色相參數

    • 為 a 時,從 [-a, a] 中隨機選擇,且 a 的取值范圍為 [0, 0.5]
    • 為 (a, b) 時,從 [a, b] 中隨機選擇,且 a、b 的取值范圍為 [0, 0.5]

4.3 GrayScale

# transforms.Grayscale(
#     num_output_channels=1
# )

4.4 RandomGradeCrop

# transforms.RandomGrayscale(
#     num_output_channels=1,
#     p=0.1
# )

功能:依概率將圖片轉換為灰度圖

  • num_outpuut_channels:輸出通道數,1表示灰度圖,3表示 RGB 彩色圖
  • p:概率,0.5表示將圖片轉換為灰度圖的概率為 50%

4.5 RandomAffine

# transforms.RandomAffine(
#     degrees,
#     translate=None,
#     scale=None,
#     shear=None,
#     resample=False,
#     fillcolor=0
# )

功能:對圖像進行仿射變換,仿射變換是二維的線性變換,由五種基本原子變換構成,分別是旋轉、平移、縮放、錯切、剪切

  • degrees:旋轉角度設置

  • translate:平移區間設置

    • 為 (a, b) 時,表示 x 軸和 y 軸的平移范圍均為 [-a, b]
    • 為 (a, b, c, d) 時,表示 x 軸平移范圍為 [-a, b],y 軸平移范圍為 [-c, d]
  • scale:縮放比例(以面積為單位)

  • fillcolor:填充色設置

4.6 RandomErasing

# transforms.RandomErasing(
#     p=0.5,
#     scale=(0.02, 0.33),
#     ratio=(0.3, 3.3),
#     value=0,
#     inplace=False
# )

功能:對圖像進行隨機遮擋

  • p:概率值,執行該操作的概率
  • scale:遮擋區域的面積
  • ratio:遮擋區域長寬比
  • value:設置遮擋區域的像素值,(R, G, B) 或 (Gray),默認為0

4.7 Lamdba

# transforms.Lambda(
#     lambda
# )

功能:用戶自定義 lamdba 方法

  • lambda:匿名函數,可以把函數作為參數傳遞給另一個函數

5、方法選擇

5.1 transforms.RandomChoice

# transforms.RandomChoice(
#     [transforms1, transforms2, transforms3]
# )

功能:從一系列 transforms 方法中隨機挑選一個

5.2 transforms.RandomApply

# transforms.RandomApply(
#     [transforms1, transforms2, transforms3],
#     p=0.5
# )

功能:依概率執行一組 transforms 操作

5.3 transforms.RandomOrder

# transforms.RandomOrder(
#     [transforms1, transforms2, transforms3]
# )

功能:對一組 transforms 操作打亂順序

6、自定義

# class Compose(object):
#     def __call__(self, img):
#         for t in self.transforms:
#             img = t(img)
#         return img

二要素:

  1. 僅接受一個參數,返回一個參數
  2. 注意上下游的輸出和輸入
# 通過繼承類,實現多參數傳入
# class YourTransform(object):
#     def __init__(self, ...):
#         ...#     def __call__(self, img):
#         ...
#         return img

示例 — — 椒鹽噪聲:

  1. 概念:椒鹽噪聲,又稱脈沖噪聲,是一種隨機出現的白點或者黑點,白點稱為鹽噪聲,黑點稱為椒噪聲。
  2. 產生原因:椒鹽噪聲的產生是由于光照不均勻導致的。光線經過物體時,某些部分會被吸收,而另一些部分會被反射,產生了椒噪聲和鹽噪聲。椒噪聲的大小與光照強度成正比,鹽噪聲的大小與物體表面粗糙度成正比。椒鹽噪聲的產生是隨機的,并不是均勻分布的。
  3. 解決方法:椒鹽噪聲的解決方法有兩種:一是采用白盒處理,即對圖像進行預處理,去除椒鹽噪聲;二是采用白盒處理,采用數據增強的方法,對圖像進行數據增強,增加椒鹽噪聲。
  4. 信噪比:信噪比(SNR)是指信號與噪聲的比值,即信噪比越高,則噪聲的影響越小,信號的影響越大。信噪比越高,圖像的質量越好。
class AddPepperNoise(object):"""增加椒鹽噪聲Args:snr (float): Signal Noise Ratep (float): 概率值,依概率執行該操作"""def __init__(self, snr, p=0.9):assert isinstance(snr, float) or (isinstance(p, float))self.snr = snrself.p = pdef __call__(self, img):"""Args:img (PIL Image): PIL ImageReturns:PIL Image: PIL image."""if random.uniform(0, 1) < self.p:img_ = np.array(img).copy()h, w, c = img_.shapesignal_pct = self.snrnoise_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

微語錄:自己有了光芒才配得上自己追逐的星星。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77454.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77454.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77454.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 禁止 讀 某個 表

mysql 禁止 讀 某個 表 mysql禁用某張表,禁用MySQL表的操作 https://shuyeidc.com/wp/89479.html MySQL嚴格禁止讀取表如何避免數據泄露 https://www.kdun.cn/ask/394700.html select host,user from mysql.user; FLUSH PRIVILEGES; 1. MySQL嚴格禁止讀取表如何避免數據泄露…

機器學習 從入門到精通 day_03

1. KNN算法-分類 1.1 樣本距離判斷 明可夫斯基距離&#xff1a;歐式距離&#xff0c;明可夫斯基距離的特殊情況&#xff1b;曼哈頓距離&#xff0c;明可夫斯基距離的特殊情況。 兩個樣本的距離公式可以通過如下公式進行計算&#xff0c;又稱為歐式距離。 &#xff08;…

LeetCode 熱題 100_零錢兌換(85_322_中等_C++)(動態規劃)

LeetCode 熱題 100_零錢兌換&#xff08;85_322&#xff09; 題目描述&#xff1a;輸入輸出樣例&#xff1a;題解&#xff1a;解題思路&#xff1a;思路一&#xff08;動態規劃&#xff09;&#xff1a; 代碼實現代碼實現&#xff08;思路一&#xff08;動態規劃&#xff09;&a…

游戲盾IP可以被破解嗎

游戲盾IP&#xff08;如上海云盾SDK、騰訊云游戲盾&#xff09;是專為游戲行業設計的高防服務&#xff0c;旨在抵御DDoS攻擊、CC攻擊等威脅。其安全性取決于??技術架構、防護能力??以及??運維策略??。雖然理論上沒有絕對“無法破解”的系統&#xff0c;但游戲盾IP在合理…

SpringBoot實戰1

SpringBoot實戰1 一、開發環境&#xff0c;環境搭建-----創建項目 通過傳統的Maven工程進行創建SpringBoot項目 &#xff08;1&#xff09;導入SpringBoot項目開發所需要的依賴 一個父依賴&#xff1a;&#xff08;工件ID為&#xff1a;spring-boot-starter-parent&#xf…

【軟考-高級】【信息系統項目管理師】【論文基礎】進度管理過程輸入輸出及工具技術的使用方法

定義 項目進度管理是為了保證項目按時完成&#xff0c;對項目中所需的各個過程進行管理的過程&#xff0c;包括規劃進度、定義活動、活動優先級排序、活動持續時間、制定進度計劃和控制進度。 管理基礎 制定進度計劃的一般步驟 選擇進度計劃方法&#xff08;如關鍵路徑法&a…

【Linux】之【Get】 chroot 環境下安裝deb包時 .postinst:行 9: 201 段錯誤 (核心已轉儲)ldconfig

背景 如題&#xff0c;在postinst文件中直接執行了ldconfig命令&#xff0c; chroot 環境下出錯&#xff0c;安裝失敗 分析 chroot 環境下不能用 ldconfig 和 systemctl 但是&#xff1a;如果環境是 chroot&#xff0c;系統有可能沒完整掛載 /proc、/dev、系統路徑&#xff…

【論文精讀與實現】EDC2-RAG:基于動態聚類的文檔壓縮方法提升檢索增強生成RAG性能

?? 向所有學習者致敬! “學習不是裝滿一桶水,而是點燃一把火。” —— 葉芝 我的博客主頁: https://lizheng.blog.csdn.net ?? 歡迎點擊加入AI人工智能社區! ?? 讓我們一起努力,共創AI未來! ?? 1. 論文核心思想 這篇由清華大學團隊提出的EDC-RAG框架,針對當前…

OSPF接口的網絡類型和不規則區域

網絡類型(數據鏈路層所使用的協議所構建的二層網絡類型) 1、MA --- 多點接入網絡 BMA --- 支持廣播的多點接入網絡 NBMA --- 不支持廣播的多點接入網絡 2、P2P --- 點到點網絡 以太網 --- 以太網最主要的特點是需要基于MAC地址進行物理尋址&#xff0c;主要是因為以太網接口所連…

HTTP代理:內容分發戰場上的「隱形指揮官」

目錄 一、技術本質&#xff1a;流量博弈中的「規則改寫者」 二、戰略價值&#xff1a;內容分發的「四維升級」 三、實戰案例&#xff1a;代理技術的「降維打擊」 四、未來進化&#xff1a;代理技術的「認知升級」 五、結語&#xff1a;代理技術的「戰略覺醒」 在數字內容爆…

(2)網絡學習之堡壘機

堡壘機和防火墻的區別&#xff1a; 1.功能定位 防火墻主要負責抵御外部攻擊&#xff0c;就像一道堅固的城墻&#xff0c;防止黑客進入內部網絡。堡壘機則專注于內部管理&#xff0c;監控和記錄運維人員的操作行為&#xff0c;確保內部網絡的安全。 2.部署位置與作用范圍 防…

minio命令行客戶端mc常見用法

安裝minio命令行客戶端mc https://min-io.cn/docs/minio/linux/reference/minio-mc-admin.html # Windows安裝minio命令行客戶端 choco install minio-client -y# Linux安裝mc客戶端 wget -c -P /usr/local/bin/ https://dl.min.io/client/mc/release/linux-amd64/mc # 賦予可…

idea調整控制臺日志顯示長度

概述 在調試時&#xff0c;idea控制臺顯示的日志有長度顯示&#xff0c;當顯示的日志太長時&#xff0c;后生成的日志會覆蓋掉之前生成的日志內容。想要調整長度就可以按以下方式進行設置。 設置方法 Settings -> Editor -> General -> Console -> Override con…

oracle em修復之路

很早以前寫的文章&#xff0c;再草稿中存放太久了&#xff0c;今天開始整理20年來工作體會&#xff0c;以后陸續發出&#xff0c;希望給大家提供小小的幫助。 去年做的項目使用的oracle數據庫&#xff0c;最近要看一下&#xff0c;啟動機器進入系統&#xff0c;出現無法加載數…

QT中怎么隱藏或顯示最大化、最小化、關閉按鈕

文章目錄 方法一&#xff1a;通過代碼動態設置1、隱藏最大化按鈕2、隱藏最小化按鈕3、隱藏關閉按鈕方法 1&#xff1a;移除 WindowCloseButtonHint方法 2&#xff1a;使用 Qt::CustomizeWindowHint 并手動控制按鈕 4、同時隱藏最大化和最小化按鈕5、同時隱藏最大化和關閉按鈕6、…

性能比拼: Redis vs Memcached

本內容是對知名性能評測博主 Anton Putra Redis vs Memcached Performance Benchmark 內容的翻譯與整理, 有適當刪減, 相關指標和結論以原作為準 在本視頻中&#xff0c;我們將對比 Redis 和 Memcached。我會介紹一些功能上的不同&#xff0c;但主要關注 性能。 首先&#xf…

P1331 洛谷 海戰

題目描述 思路 這個題需要讀懂題意&#xff0c;即“什么樣的形式表示兩只船相撞&#xff1f;” ----> 上下相鄰或左右相鄰 如果圖是不和法的&#xff0c;一定存在如下結構&#xff1a; # # . # 或 # # # . 或 # . # # 或 . # # #即四個格子里有三個#&#xff0c;一個"…

傳統項目純前端實現導出excel之xlsx.bundle.js

傳統項目純前端實現導出excel之xlsx.js 自從vue問世后&#xff0c;使得前端開發更加簡潔從容&#xff0c;極大的豐富組件樣式和頁面渲染效果&#xff0c;使得前端功能的可擴展性得到極大地加強。雖然vue的使用對于前后端分離的項目對于功能實現與擴展有了質的飛躍&#xff0c;但…

2025.04.10-拼多多春招筆試第四題

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍OJ 04. 優惠券最優分配問題 問題描述 LYA是一家電商平臺的運營經理,負責促銷活動的策劃。現在平臺上有 n n n

基于 Spring Boot 瑞吉外賣系統開發(三)

基于 Spring Boot 瑞吉外賣系統開發&#xff08;三&#xff09; 分類列表 靜態頁面 實現功能所需要的接口 定義Mapper接口 Mapper public interface CategoryMapper extends BaseMapper<Category> {}定義Service接口 public interface CategoryService extends ISe…