PyTorch概述(一)---圖像變換和增強

TorchVision

  • torchvision 包由流行的數據集、模型架構以及用于計算機視覺的通用圖片轉換工具組成

TorchVision 包構成

  • 圖像變換和增強
  • TVTensors
  • 模型和預訓練的權重
  • 數據集
  • 工具
  • 操作
  • 圖像和視頻的編/解碼
  • 用于模型檢測的特征提取

圖像變換和增強

  • torchvision支持通用的計算機視覺變換;
  • 變換可用于數據增強、訓練和推理;
  • 用于圖片分類,探測,分割,視頻分類等;
  • 大部分變換接收PIL圖像和張量格式的輸入;
  • 基于性能的考慮推薦以張量的型式輸入;
  • 張量圖像的期望形狀為:(C,H,W);
  • 大部分變換支持批量的張量輸入;
  • 批量張量圖像的形狀為(N,C,H,W),N為批量數目;
  • V2變換接收任意數值作為前導維度(...,C,H,W),可以批量處理圖像或視頻;
  • CPU和CUDA張量都給與支持;

數據類型和期望的范圍

  • 張量圖像的值范圍被張量dtype隱式的定義;
  • 具有float類型的張量圖像的值范圍期望為【0,1】;
  • 具有integer類型的張量圖像的值范圍期望為【0,max_dtype】;
  • 典型的torch.uint8類型的圖像期望的值范圍為【0,255】;

V1 or V2?

  • 推薦使用V2;
  • V2更快,功能更為豐富;
  • V2的特點:
  • 可以變換圖像、邊界框、掩膜或者視頻;
  • 對圖像分類之外的任務提供支持:檢測、分割、視頻分類;
  • 支持更多的變換,比如:CutMix和MixUp;
  • 更快;
  • 支持任意的輸入結構(字典、列表,元組等);
  • 后續只對V2的進行功能更新;
  • 完全向后兼容V1;

考慮性能

  • 推薦使用V2:torchvision.transforms.v2
  • 使用張量輸入而不是PIL圖像;
  • 使用torch.uint8數據類型,尤其是對于resizing操作;
  • resize操作推薦使用bilinear或者bicubic;

典型的變換流水線

from torchvision.transforms import v2
transforms=v2.Compose([v2.ToImage(),#Convert to tensor,only needed if you had a PIL imagev2.ToDtype(torch.uint8,scale=True),#optional,most input are already uint8 at this pointv2.RandomResizeCrop(size=(224,224),antialias=True),#Or Resize(antialias=True)v2.ToDtype(torch.float32,scale=True),#Normalize expects float inputv2.Normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225])])
  • 在num_workers>0的torch.utils.data.DataLoader的模塊作用下,上述代碼將給出典型訓練環境中的最好性能;
  • 變換對輸入步長、內存格式敏感;
  • 一些變換對于通道在前的圖像具有更快的性能;
  • 另一些對通道在后的圖像具有更快的性能;
  • 變換對于tensor的操作,將保持輸入的格式,但根據具體情況,這也不總是期望的;
  • 如果追求更快的性能,可能需要自己去嘗試;
  • 單個變換使用torch.compile()可幫助分解內存格式變量;
  • 類似于Resize和RandomResizedCrop的變換,傾向于通道最后的輸入,且torch.compile()沒有任何優勢;

變換類、函數和內核

  • 像Resize這樣的變化可以作為類來使用;
  • 同時對于torchvision.transforms.v2.functional中的resize()函數也可作為類來使用;
  • 以上兩種情況類似于torch.nn包,同時定義了類和功能等效的函數在torch.nn.functional中;
  • 函數的功能支持PIL圖像,純張量格式的輸入或者TVTensors;
  • resize(imgae_tensor)和resize(boxes)都是有效的;
  • 像RandomCrop這樣的隨機變換當每次被調用時會隨機采樣參數;
  • 但是他們的函數等效(crop())不做任何隨機采樣,因此具有稍有不同參數;
  • 當使用函數API時,get_params()變換類方法被用于執行參數采樣;
  • torchvision.transforms.v2.functional命名空間也包含稱為kernel的對象;
  • 這些是低級別的函數實現核心的功能用于特定的類型,比如:resize_bounding_boxes和resized_crop_mask;
  • 雖然沒有記錄,但他們是公開的;
  • 如果你要想獲得torchscipt support用于bounding box 或mask類型的話,kernel是十分有用的;

Torchscript 支持

  • 很多變換類和函數支持torchscript;
  • 對于組合變換,使用torch.nn.Sequential而不是Compose:
transforms=torch.nn.Sequential(CenterCrop(10),Normalize((0.485,0.456,0.406),(0.229,0.224,0.225)))
scripted_trtansforms=torch.jit.script(transforms)

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

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

相關文章

基于springboot+vue的車輛管理系統(前后端分離)

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

獲取淘寶商品詳情API、商品主圖、圖片搜索api

獲取淘寶詳情API的方式有以下幾種: 使用淘寶開放平臺提供的接口:淘寶開放平臺提供了多個API接口,讓開發者可以通過接口獲取商品詳情信息。你可以到淘寶開放平臺官網申請開發者賬號,并查看相關接口文檔,了解如何使用接…

C語言翻譯環境:預編譯+編譯+匯編+鏈接詳解

目錄 翻譯環境和運行環境 翻譯環境 預處理(預編譯) 編譯 詞法分析 語法分析 語義分析 匯編 鏈接 運行環境 ?翻譯環境和運行環境 在ANSI C的任何?種實現中,存在兩個不同的環境。 第1種是翻譯環境,在這個環境中源代碼被…

H橋逆變方式介紹(單極性)

H橋逆變電路實現的就是一個從DC——AC的過程 這個電路有兩個時序,Q6Q4是一個導通時序,Q5Q7是一個導通時序 左邊兩個是高頻20KHZ的、互補的sPWM波,右邊是低頻的50HZ的PWM波 三角波一般叫載波,正弦波叫調制波(單片機內…

Hbase和Clickhouse對比簡單總結

Hbase和Clickhouse是兩種不同的數據庫系統,它們各自適用于不同的場景。以下是兩者之間的對比: 數據模型: HBase 是一種基于列的存儲系統,它適合處理大規模的數據集,特別是那些需要快速隨機訪問的場景。ClickHouse 則是…

對“絕地求生“源碼調節

調整了一些界面和降低游戲難度 #include "c.h" using namespace std; ExMessage msg; struct ME {int x 100; int y 100; int life 1000; int knapsack[18]; int Maximum_ammunition_capacity 0;int Ammunition_capacity 0; int primary_weapon 0; int moveme…

springboot/ssm倉庫管理系統Java貨物出入庫管理系統wms系統web

springboot/ssm倉庫管理系統Java貨物出入庫管理系統wms系統web 基于springboot(可改ssm)vue項目 開發語言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服務器:tomcat 數據庫&#xff1a…

Vi/Vim 使用小竅門,如何消除搜索后的關鍵字高亮

Vim/Vi 基本上是 *nix 世界最受歡迎的編輯器了,不知道為什么,一直以來覺得和 Emacs 比起來,Vim 更加有親和力。用起來很舒服。 今天就記錄一個困擾了我很久的問題。 大家應該都知道,在 Vi 里面如果要搜索某個關鍵字,…

C語言開發教程

C語言開發教程 電子書下載 下載地址 第一章 導言 1.1 入門 1.2 變量與算術表達式 1.3 for語句 1.4 符號常量 1.5 字符輸入/輸出 1.6 數組 1.7 函數 1.8 參數--傳值調用 1.9 字符數組 1.10 外部變量與作用域 第二章 類型、運算符與表達式 2.1 變量名 2.2 數據類型及長度 2.3 常…

汽車會撞死人,應不應該限制汽車?

激進派表示事故率很低,損失相比汽車帶來的收益不值一提,不能限制汽車 保守派表示行人什么也沒有做錯,卻飛來橫禍,只要發生一起事故,可能對一個家庭就是滅頂之災,應該嚴格限制汽車 兩邊都有道理&#xff0c…

Python-pdfplumber讀取PDF內容

文章目錄 前言一、pdfplumber模塊1.1 pdfplumber的特點1.2 pdfplumber.PDF類1.3pdfplumber.Page類 二 pdfplumber的使用2.1 加載PDF2.2 pdfplumber.PDF 類2.3 pdfplumber.Page 類2.4 讀取PDF2.5 讀取PDF文檔信息2.6 查看總頁數2.7 查看總頁數讀取第一頁的寬度,頁高等…

263集成客服系統:提升電商平臺用戶體驗

{連接:無縫整合客服渠道} 在電子商務領域,客服是保持客戶滿意度和忠誠度的關鍵因素。263集成客服系統允許電商平臺無縫連接到各種客服通道,包括在線聊天、電子郵件和社交媒體等。這種無代碼開發方式不僅消除了傳統API開發的復雜性&#xff…

使用Java調用Cplex求解帶時間窗的車輛路徑問題

使用Java調用Cplex求解VRPTW問題 一、帶時間窗車輛路徑優化問題(Vehicle Routing Problem with Time Window,VRPTW)1.1 問題描述1.2 模型構建 二、使用Java調用Cplex求解VRPTW問題2.1 完整代碼2.2 求解結果 三、求解過程中踩的坑 一、帶時間窗…

DevOps:實現軟件開發與運維的協同革命

DevOps作為一種新型的軟件開發和運維模式,在當今信息技術領域引起了廣泛關注和應用。本文通過對DevOps的定義、原則、核心實踐以及優勢等方面進行探討,旨在深入剖析DevOps對軟件開發與運維的革命性影響,并從實踐角度探討其在現代軟件開發中的…

VsCode編譯wxWidgets的HelloWorld

wxWidgets 環境搭建 在wxWidgets 官網下載頁面點擊Download Windows Binaries選擇TDM-GCC 10.3和MinGW-w64 8.1下的頭文件和開發包進行下載。這兒我們會用兩種 gcc 編譯器進行對比,所以下載 2 個種編譯器對應的庫文件。正常只需根據自己安裝的編譯器下載對應的 1 種…

[每周一更]-(第88期):Nginx 之 proxy_pass使用詳解

proxy_pass 指令用于指定后端服務器的地址,可以采用以下不同的格式: 直接指定地址和端口: location / {proxy_pass http://backend_server:8080; }這將請求代理到 http://backend_server:8080。 使用變量: location / {set $ba…

petalinux_zynq7 驅動DAC以及ADC模塊之五:nodejs+vue3實現web網頁波形顯示

前文: petalinux_zynq7 C語言驅動DAC以及ADC模塊之一:建立IPhttps://blog.csdn.net/qq_27158179/article/details/136234296petalinux_zynq7 C語言驅動DAC以及ADC模塊之二:petalinuxhttps://blog.csdn.net/qq_27158179/article/details/1362…

flutter開發實戰-手勢Gesture與ListView滾動競技場的可滑動關閉組件

flutter開發實戰-手勢Gesture與ListView滾動競技場的可滑動關閉組件 最近看到了一個插件,實現一個可滑動關閉組件。滑動關閉組件即手指向下滑動,組件隨手指移動,當移動一定位置時候,手指抬起后組件滑出屏幕。 一、GestureDetect…

大保司保費貴,是否物有所值?

《大保司保費貴,是否物有所值》 這是羅師兄的原創文章 預計8-9分鐘讀完 作者:羅師兄 微信號:luoyun515 當我們想要買一份重疾險、儲蓄險等長期險時, 我們會發現,同樣的保障責任和保額, 不同保險公司的…

基于AdaBoost算法的情感分析研究-微博情感分析-文本分類

基于AdaBoost算法的情感分析研究 摘 要 隨著互聯網的快速發展,各類社交媒體平臺如微信、QQ等也與日俱增,而微博更是集成了傳統網站、論壇、博客等的優點,并加上了人與人之間的互動性、關系親密程度等多種智能算法,并以簡練的形式…