国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深度學(xué)習(xí)基礎(chǔ)知識 最近鄰插值法、雙線性插值法、雙三次插值算法

這篇具有很好參考價值的文章主要介紹了深度學(xué)習(xí)基礎(chǔ)知識 最近鄰插值法、雙線性插值法、雙三次插值算法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0、pytorch函數(shù)實現(xiàn)方法:

import torch.nn.functional as F
image_arr=(np.random.rand(3,2,2)).astype(np.float32)
# print(image_arr)

image_tensor=torch.tensor(image_arr.copy(),dtype=torch.float32).unsqueeze(0)
# print(image_tensor)

# 使用pytorch的函數(shù)方法實現(xiàn)
result=F.interpolate(image_tensor,size=(3,3),mode="bilinear",align_corners=False)

插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法

1、最近鄰插值法

最鄰近插值:將每個目標像素找到距離它最近的原圖像素點,然后將該像素的值直接賦值給目標像素

  • 優(yōu)點:實現(xiàn)簡單,計算速度快
  • 缺點:插值結(jié)果缺乏連續(xù)性,可能會產(chǎn)生鋸齒狀的邊緣,對于圖像質(zhì)量影響較大,因此當(dāng)處理精度要求較高的圖像時,通常會采用更加精細的插值算法,例如:雙線性插值、三次插值。
    插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法
  • 代碼示例:
    插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法
    插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法
import numpy as np
from PIL import Image


def nearest_neighbor_interpolation(image,scale_factor):
    """
        image:輸入圖像數(shù)組
        scale_factor:圖像縮放因子
    
    """

    # 得到輸入圖像的高與寬
    height,width=image.shape[:2]
    # 計算輸出圖像的高與寬
    out_height=int(height * scale_factor)
    out_width=int(width * scale_factor)

    # 創(chuàng)建愛你輸出圖像
    output_imaage=np.zeros((out_height,out_width,3),dtype=np.uint8)
    print(output_imaage.shape)

    # 遍歷輸出的每個像素,分別計算其在圖像中最近鄰的像素坐標,并將其像素值賦給當(dāng)前像素
    for out_y in range(out_height):
        for out_x in range(out_width):
            # 計算當(dāng)前像素在輸入圖像中的坐標
            input_x=int(round(out_x / scale_factor))
            input_y=int(round(out_y / scale_factor))
            # 判斷計算出來的輸入像素坐標是否越界,如果越界則賦值為邊界像素
            input_x=min(input_x,width - 1)
            input_y=min(input_y,height - 1)
            # 將輸入圖像的像素值賦值給輸出圖像的對應(yīng)位置上的像素值
            output_imaage[out_y,out_x]=image[input_y,input_x]
    
    return output_imaage




# 讀取原始圖像
input_image=Image.open("./test_image.PNG").convert("RGB")
print(input_image)

image_array=np.array(input_image)
print(image_array.shape)


output_imaage=nearest_neighbor_interpolation(image_array,5.0)


out_image_pil=Image.fromarray(output_imaage.astype("uint8"))
print(out_image_pil)

out_image_pil.save("./result.jpg")   # 保存數(shù)據(jù)圖像

結(jié)果:
插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法

  • 使用場景:
    雖然最近鄰插值算法會導(dǎo)致處理后的圖像出現(xiàn)鋸齒失真,但最進行圖像分割模型訓(xùn)練時,為了避免引入其他像素值的干擾,必須采用最近鄰插值算法。
    插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法

2、雙線性插值

每個像素是一個正方形,紅點是像素的中心
每個像素的高和寬都是1, 面積為1

插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法

雙線性插值算法,包含兩種模式:角對齊模式與邊對齊模式

插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法

計算過程:
插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法
代碼實現(xiàn):
插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法
插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法

import torch
import numpy as np
import torch.nn.functional as F


def bilinear_interpolation(image,out_height,out_width,corner_align=False):
    # 獲取輸入圖像的高與寬
    height,width=image.shape[:2]
    # 創(chuàng)建輸出圖像
    output_image=np.zeros((out_height,out_width,image.shape[-1]),dtype=np.float32)
    # print(output_image)

    # 計算x,y軸的縮放因子
    scale_x_corner=float(width - 1) / (out_width - 1)     # (3-1) / (5-1) = 0.5
    scale_y_corner=float(height - 1) / (out_height - 1)   # (3-1) / (5-1) = 0.5



    scale_x=float(width) / out_width    # 3 / 5 = 0.6
    scale_y=float(height) / out_height

    # 遍歷輸出圖像的每個像素,分別計算其在輸入圖像中最近的四個像素的坐標,然后按照加權(quán)計算當(dāng)前像素的像素值
    for out_y in range(out_height):
        for out_x in range(out_width):
            if corner_align == True:
                # 計算當(dāng)前像素在輸入像素中的位置
                x = out_x * scale_x_corner   # 1 * 0.5 = 0.5
                y = out_y * scale_y_corner   # 1 * 0.5 = 0.5

            else:
                x=(out_x + 0.5) * scale_x - 0.5
                y=(out_y + 0.5) * scale_y - 0.5
                x=np.clip(x,0,width - 1)
                y=np.clip(y,0,height-1)


            # 計算當(dāng)前像素在輸入圖像中最近鄰的四個像素的坐標
            x0,y0=int(x),int(y)
            x1,y1=x0 + 1,y0 + 1

            # 對原圖像邊緣進行特殊處理
            if x0 == width - 1:
                x0 = width - 2
                x1 = width - 1 
            if y0 == height - 1:
                y0 = height - 2
                y1 = height - 1

            
            xd = x - x0
            yd = y - y0
            p00=image[y0,x0]
            p01=image[y0,x1]
            p10=image[y1,x0]
            p11=image[y1,x1]
            x0y=p01 * xd + (1 - xd) * p00
            x1y=p11 * xd + (1 - xd) * p10

            output_image[out_y,out_x] = x1y * yd + (1 - yd) * x0y
    return output_image



image_arr=(np.random.rand(2,3,3)).astype(np.float32)
# print(image_arr)

image_tensor=torch.tensor(image_arr.copy(),dtype=torch.float32).unsqueeze(0)
# print(image_tensor)

# 使用pytorch的函數(shù)方法實現(xiàn)
result=F.interpolate(image_tensor,size=(4,4),mode="bilinear",align_corners=False)  # align_corners:True:角點對齊;False:為邊對齊
print(result.shape)
image_pytorch_result=result.squeeze(0)
print(image_pytorch_result.shape)
imge_torch2numpy=image_pytorch_result.numpy().transpose(1,2,0)
print(imge_torch2numpy.shape)
print(imge_torch2numpy)
print("\n","*"*40,"\n")

image_arr_=image_arr.transpose(1,2,0)  # 轉(zhuǎn)成 H,W,C

# 自己代碼實現(xiàn)的版本
image_result=bilinear_interpolation(image_arr_,4,4,corner_align=False)  # align_corners:True:角點對齊;False:為邊對齊
print(image_result)
print(image_result.shape)

輸出結(jié)果:

torch.Size([1, 2, 4, 4])
torch.Size([2, 4, 4])
(4, 4, 2)
[[[0.01729881 0.46345708]
  [0.6254483  0.23894069]
  [0.9647001  0.25322512]
  [0.92197037 0.5015489 ]]

 [[0.23900598 0.34148777]
  [0.39870048 0.45681208]
  [0.47503293 0.50936383]
  [0.44255918 0.48162583]]

 [[0.42145333 0.25761825]
  [0.26364937 0.51880765]
  [0.14657585 0.64366746]
  [0.10925723 0.59057784]]

 [[0.50382507 0.23980509]
  [0.265312   0.40426224]
  [0.08881453 0.6113682 ]
  [0.03316517 0.7920877 ]]]

 **************************************** 

[[[0.01729881 0.46345708]
  [0.6254483  0.23894069]
  [0.9647001  0.25322512]
  [0.92197037 0.5015489 ]]

 [[0.23900598 0.34148777]
  [0.39870048 0.45681208]
  [0.47503293 0.50936383]
  [0.44255918 0.4816258 ]]

 [[0.42145333 0.25761825]
  [0.26364937 0.51880765]
  [0.14657584 0.64366746]
  [0.10925723 0.59057784]]

 [[0.50382507 0.23980509]
  [0.265312   0.40426219]
  [0.08881453 0.6113682 ]
  [0.03316517 0.7920877 ]]]
(4, 4, 2)

4、雙三次插值算法

插值法求深度,深度學(xué)習(xí),最近鄰插值算法,雙線性插值算法,雙三次插值算法文章來源地址http://www.zghlxwxcb.cn/news/detail-768365.html

到了這里,關(guān)于深度學(xué)習(xí)基礎(chǔ)知識 最近鄰插值法、雙線性插值法、雙三次插值算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 深度學(xué)習(xí)torch基礎(chǔ)知識

    detach是截斷反向傳播的梯度流 將某個node變成不需要梯度的Varibale。因此當(dāng)反向傳播經(jīng)過這個node時,梯度就不會從這個node往前面?zhèn)鞑ァ?拼接:將多個維度參數(shù)相同的張量連接成一個張量 torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0) module即表示你定義的模型,devic

    2024年02月13日
    瀏覽(21)
  • 深度學(xué)習(xí)基礎(chǔ)知識神經(jīng)網(wǎng)絡(luò)

    深度學(xué)習(xí)基礎(chǔ)知識神經(jīng)網(wǎng)絡(luò)

    1. 感知機 感知機(Perceptron)是 Frank Rosenblatt 在1957年提出的概念,其結(jié)構(gòu)與MP模型類似,一般被視為最簡單的人工神經(jīng)網(wǎng)絡(luò),也作為二元線性分類器被廣泛使用。通常情況下指單層的人工神經(jīng)網(wǎng)絡(luò),以區(qū)別于多層感知機(Multilayer Perceptron)。盡管感知機結(jié)構(gòu)簡單,但能夠?qū)W習(xí)

    2024年02月03日
    瀏覽(26)
  • 深度學(xué)習(xí)基礎(chǔ)知識-感知機+神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)

    深度學(xué)習(xí)基礎(chǔ)知識-感知機+神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)

    參考書籍:(找不到資源可以后臺私信我) 《深度學(xué)習(xí)入門:基于Python的理論與實現(xiàn) (齋藤康毅)》 《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition (Aurelien Geron [Géron, Aurélien])》 機器學(xué)習(xí)和深度學(xué)習(xí)的區(qū)別: Perceptron(感知機) 感知機就是一種接收多種輸入信

    2023年04月26日
    瀏覽(20)
  • 深度學(xué)習(xí)基礎(chǔ)知識-pytorch數(shù)據(jù)基本操作

    深度學(xué)習(xí)基礎(chǔ)知識-pytorch數(shù)據(jù)基本操作

    1.1.1 數(shù)據(jù)結(jié)構(gòu) 機器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的主要數(shù)據(jù)結(jié)構(gòu),例如 ? ? ? ? ? ? ? ? 0維:叫標量,代表一個類別,如1.0 ? ? ? ? ? ? ? ? 1維:代表一個特征向量。如 ?[1.0,2,7,3.4] ? ? ? ? ? ? ? ? 2維:就是矩陣,一個樣本-特征矩陣,如: [[1.0,2,7,3.4?] ? ? ? ? ? ? ?? ? ?

    2024年02月11日
    瀏覽(26)
  • 深度學(xué)習(xí)基礎(chǔ)知識(三)-線性代數(shù)的實現(xiàn)

    1.標量使用 標量由只有一個元素的張量表示,標量可以做最簡單的計算。 結(jié)果: 2.向量使用 向量:將標量值組成的列表就是向量 結(jié)果: 訪問張量的長度 只有一個軸的張量,形狀只有一個元素 創(chuàng)建一個二維矩陣5行4列,然后將矩陣做轉(zhuǎn)置,軸對稱的一個轉(zhuǎn)置 結(jié)果:其實就是把

    2024年02月10日
    瀏覽(27)
  • 深度學(xué)習(xí)TensorFlow2基礎(chǔ)知識學(xué)習(xí)前半部分

    深度學(xué)習(xí)TensorFlow2基礎(chǔ)知識學(xué)習(xí)前半部分

    目錄 測試TensorFlow是否支持GPU: 自動求導(dǎo): ?數(shù)據(jù)預(yù)處理 之 統(tǒng)一數(shù)組維度 ?定義變量和常量 ?訓(xùn)練模型的時候設(shè)備變量的設(shè)置 生成隨機數(shù)據(jù) 交叉熵損失CE和均方誤差函數(shù)MSE? 全連接Dense層 維度變換reshape 增加或減小維度 數(shù)組合并 廣播機制: 簡單范數(shù)運算 ?矩陣轉(zhuǎn)置 框架本

    2024年02月04日
    瀏覽(45)
  • 現(xiàn)代C++中的從頭開始深度學(xué)習(xí)【1/8】:基礎(chǔ)知識

    ????????提及機器學(xué)習(xí)框架與研究和工業(yè)的相關(guān)性。現(xiàn)在很少有項目不使用Google TensorFlow或Meta PyTorch,在于它們的可擴展性和靈活性。 也就是說,花時間從頭開始編碼機器學(xué)習(xí)算法似乎違反直覺,即沒有任何基本框架。然而,事實并非如此。自己對算法進行編碼可以清晰而

    2024年02月13日
    瀏覽(22)
  • 計算機視覺基礎(chǔ)知識(十二)--神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)

    計算機視覺基礎(chǔ)知識(十二)--神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)

    一種機器學(xué)習(xí)的算法 一般有輸入層--隱藏層--輸出層 隱藏層數(shù)量多于兩個的稱為深度神經(jīng)網(wǎng)絡(luò); 輸入的是特征向量; 特征向量代表的是變化的方向; 或者說是最能代表這個事物的特征方向; 權(quán)重是特征值,有正有負,加強或抑制; 權(quán)重的絕對值大小,代表輸入信號對神經(jīng)元的影響大小

    2024年02月21日
    瀏覽(27)
  • 數(shù)學(xué)建模學(xué)習(xí)筆記(一):插值法

    本文主要內(nèi)容是分享博主在學(xué)習(xí)MATLAB插值與擬合過程中的一些筆記與見解,并記錄使用代碼實現(xiàn)的過程 一維插值問題可描述為:已知函數(shù)在 x 0 , x 1 , … , x n x_0,x_1,…,x_n x 0 ? , x 1 ? , … , x n ? 處的值 y 0 , y 1 , … , y n y_0,y_1,…,y_n y 0 ? , y 1 ? , … , y n ? ,求簡單函數(shù) p (

    2024年02月06日
    瀏覽(49)
  • 【知識存儲】用于深度學(xué)習(xí)研究的 ☆ 概率論和數(shù)理統(tǒng)計☆ 基礎(chǔ)理論知識,用時查閱,靈活運用,很基礎(chǔ)很重要

    隨機事件和概率 1.事件的關(guān)系與運算 (1) 子事件: A ? B A subset B A ? B ,若 A A A 發(fā)生,則 B B B 發(fā)生。 (2) 相等事件: A = B A = B A = B ,即 A ? B A subset B A ? B ,且 B ? A B subset A B ? A 。 (3) 和事件: A ? B Abigcup B A ? B (或 A + B A + B A + B ), A A A 與 B B B 中至少有一個發(fā)生

    2024年02月16日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包