国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

鄭州網(wǎng)站建設(shè)漢獅百度下載安裝到桌面

鄭州網(wǎng)站建設(shè)漢獅,百度下載安裝到桌面,網(wǎng)站的詳情頁(yè)面設(shè)計(jì),給女朋友做網(wǎng)站的素材一、引言 在計(jì)算機(jī)視覺(jué)領(lǐng)域,圖像識(shí)別一直是一個(gè)核心且具有挑戰(zhàn)性的任務(wù)。隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(CNN)在圖像識(shí)別方面取得了顯著的成果。然而,隨著網(wǎng)絡(luò)深度的增加,出現(xiàn)了梯度消失或梯度爆炸等問(wèn)題…

一、引言

在計(jì)算機(jī)視覺(jué)領(lǐng)域,圖像識(shí)別一直是一個(gè)核心且具有挑戰(zhàn)性的任務(wù)。隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(CNN)在圖像識(shí)別方面取得了顯著的成果。然而,隨著網(wǎng)絡(luò)深度的增加,出現(xiàn)了梯度消失或梯度爆炸等問(wèn)題,導(dǎo)致網(wǎng)絡(luò)性能下降,這被稱為 “退化問(wèn)題”。ResNet(殘差網(wǎng)絡(luò))的出現(xiàn),為解決這一難題提供了有效的方案,它通過(guò)引入殘差連接,使得深度卷積神經(jīng)網(wǎng)絡(luò)能夠更好地學(xué)習(xí)圖像特征,顯著提高了圖像識(shí)別的準(zhǔn)確率,成為了深度學(xué)習(xí)領(lǐng)域的重要里程碑。

二、ResNet 的背景與發(fā)展歷程

(一)深度學(xué)習(xí)與卷積神經(jīng)網(wǎng)絡(luò)的興起

深度學(xué)習(xí)的興起得益于大數(shù)據(jù)的發(fā)展和計(jì)算能力的提升。卷積神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)的重要分支,因其在處理具有網(wǎng)格結(jié)構(gòu)數(shù)據(jù)(如圖像)方面的優(yōu)勢(shì),成為圖像識(shí)別的主流模型。早期的卷積神經(jīng)網(wǎng)絡(luò)如 LeNet-5 等,在簡(jiǎn)單的圖像分類任務(wù)上取得了不錯(cuò)的效果,但隨著任務(wù)復(fù)雜度的增加,網(wǎng)絡(luò)深度的不足限制了其性能的進(jìn)一步提升。

(二)深度網(wǎng)絡(luò)的挑戰(zhàn) - 退化問(wèn)題

當(dāng)研究人員嘗試增加網(wǎng)絡(luò)深度時(shí),發(fā)現(xiàn)網(wǎng)絡(luò)性能并沒(méi)有如預(yù)期般提升,反而出現(xiàn)了退化現(xiàn)象。即更深的網(wǎng)絡(luò)在訓(xùn)練集和測(cè)試集上的準(zhǔn)確率反而不如較淺的網(wǎng)絡(luò)。這一現(xiàn)象引起了廣泛關(guān)注,傳統(tǒng)的觀點(diǎn)認(rèn)為,增加網(wǎng)絡(luò)深度應(yīng)該能夠?qū)W習(xí)到更復(fù)雜的特征,從而提高性能,但實(shí)際情況并非如此。

(三)ResNet 的誕生

為了解決深度網(wǎng)絡(luò)的退化問(wèn)題,何愷明等人于 2015 年提出了 ResNet。ResNet 的核心思想是引入殘差連接(Residual Connection),使得網(wǎng)絡(luò)能夠更容易地學(xué)習(xí)到恒等映射(Identity Mapping),從而緩解了梯度消失或梯度爆炸問(wèn)題,使得深度網(wǎng)絡(luò)的訓(xùn)練成為可能。ResNet 在當(dāng)年的 ImageNet 大規(guī)模視覺(jué)識(shí)別挑戰(zhàn)賽(ILSVRC)中取得了優(yōu)異的成績(jī),引起了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注,并迅速成為深度學(xué)習(xí)領(lǐng)域的研究熱點(diǎn)之一。
在這里插入圖片描述

三、ResNet 的基本原理

(一)殘差塊(Residual Block)

ResNet 的基本構(gòu)建模塊是殘差塊。一個(gè)簡(jiǎn)單的殘差塊由兩部分組成:主路徑和殘差連接。主路徑通常包含若干卷積層、批量歸一化(Batch Normalization)層和激活函數(shù)(如 ReLU)。殘差連接則是將輸入直接連接到主路徑的輸出,然后將兩者相加作為殘差塊的最終輸出。
以下是一個(gè)使用 PyTorch 實(shí)現(xiàn)的簡(jiǎn)單殘差塊代碼示例:

import torch
import torch.nn as nnclass ResidualBlock(nn.Module):def __init__(self, in_channels, out_channels, stride=1):super(ResidualBlock, self).__init__()self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=stride, padding=1, bias=False)self.bn1 = nn.BatchNorm2d(out_channels)self.relu = nn.ReLU(inplace=True)self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=1, padding=1, bias=False)self.bn2 = nn.BatchNorm2d(out_channels)if stride!= 1 or in_channels!= out_channels:self.shortcut = nn.Sequential(nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=stride, bias=False),nn.BatchNorm2d(out_channels))else:self.shortcut = nn.Identity()def forward(self, x):residual = xout = self.conv1(x)out = self.bn1(out)out = self.relu(out)out = self.conv2(out)out = self.bn2(out)out += self.shortcut(residual)out = self.relu(out)return out

在上述代碼中,ResidualBlock類定義了一個(gè)殘差塊。conv1和conv2是卷積層,bn1和bn2是批量歸一化層,relu是 ReLU 激活函數(shù)。shortcut表示殘差連接,如果輸入和輸出的通道數(shù)或步長(zhǎng)不一致,shortcut會(huì)通過(guò)一個(gè)卷積層和批量歸一化層進(jìn)行維度調(diào)整,否則直接使用nn.Identity()。在forward方法中,先計(jì)算主路徑的輸出,然后將其與殘差連接的輸出相加,并通過(guò) ReLU 激活函數(shù)得到最終結(jié)果。
(二)殘差學(xué)習(xí)的原理
假設(shè)我們要學(xué)習(xí)的函數(shù)為H(x),殘差網(wǎng)絡(luò)嘗試學(xué)習(xí)的是殘差函數(shù)
在這里插入圖片描述那么原始函數(shù)就可以表示為在這里插入圖片描述

這種學(xué)習(xí)方式使得網(wǎng)絡(luò)更容易學(xué)習(xí)到恒等映射,因?yàn)槿绻麣埐詈瘮?shù)為 0,那么網(wǎng)絡(luò)就可以輕松地學(xué)習(xí)到恒等映射,而不需要對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行大幅調(diào)整。在深度網(wǎng)絡(luò)中,這種殘差學(xué)習(xí)的方式有助于梯度的傳播,緩解了梯度消失或梯度爆炸問(wèn)題,使得網(wǎng)絡(luò)能夠更好地訓(xùn)練。
例如,在一個(gè)非常深的網(wǎng)絡(luò)中,假設(shè)某一層的梯度很小,如果沒(méi)有殘差連接,那么這個(gè)小梯度在反向傳播過(guò)程中會(huì)不斷衰減,導(dǎo)致前面的層難以訓(xùn)練。而有了殘差連接,即使某一層的梯度很小,通過(guò)殘差連接,前面層的梯度仍然可以通過(guò)殘差路徑得到一定程度的保留,從而使得網(wǎng)絡(luò)能夠更有效地訓(xùn)練。

四、ResNet 的網(wǎng)絡(luò)架構(gòu)

在這里插入圖片描述

(一)不同深度的 ResNet 模型

ResNet 系列包括多種不同深度的模型,如 ResNet-18、ResNet-34、ResNet-50、ResNet-101 和 ResNet-152 等。這些模型的主要區(qū)別在于殘差塊的數(shù)量和網(wǎng)絡(luò)的寬度(即通道數(shù))。以下是 ResNet-18 的網(wǎng)絡(luò)架構(gòu)示例:

class ResNet18(nn.Module):def __init__(self, num_classes=1000):super(ResNet18, self).__init__()self.in_channels = 64self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False)self.bn1 = nn.BatchNorm2d(64)self.relu = nn.ReLU(inplace=True)self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)self.layer1 = self._make_layer(64, 2, stride=1)self.layer2 = self._make_layer(128, 2, stride=2)self.layer3 = self._make_layer(256, 2, stride=2)self.layer4 = self._make_layer(512, 2, stride=2)self.avgpool = nn.AdaptiveAvgPool2d((1, 1))self.fc = nn.Linear(512, num_classes)def _make_layer(self, out_channels, num_blocks, stride):strides = [stride] + [1] * (num_blocks - 1)layers = []for stride in strides:layers.append(ResidualBlock(self.in_channels, out_channels, stride))self.in_channels = out_channelsreturn nn.Sequential(*layers)def forward(self, x):out = self.conv1(x)out = self.bn1(out)out = self.relu(out)out = self.maxpool(out)out = self.layer1(out)out = self.layer2(out)out = self.layer3(out)out = self.layer4(out)out = self.avgpool(out)out = torch.flatten(out, 1)out = self.fc(out)return out

在上述代碼中,ResNet18類定義了 ResNet-18 模型。conv1是第一個(gè)卷積層,后面跟著批量歸一化層和 ReLU 激活函數(shù),然后是一個(gè)最大池化層。_make_layer方法用于構(gòu)建殘差塊組成的層,根據(jù)指定的輸出通道數(shù)、殘差塊數(shù)量和步長(zhǎng)來(lái)創(chuàng)建相應(yīng)的殘差塊序列。layer1到layer4分別是不同階段的殘差層,最后通過(guò)自適應(yīng)平均池化層將特征圖轉(zhuǎn)換為固定大小,再通過(guò)全連接層進(jìn)行分類。

(二)瓶頸結(jié)構(gòu)(Bottleneck Structure)

對(duì)于更深的 ResNet 模型(如 ResNet-50 及以上),為了減少計(jì)算量和參數(shù)數(shù)量,采用了瓶頸結(jié)構(gòu)。瓶頸結(jié)構(gòu)在殘差塊中增加了一個(gè)卷積層來(lái)降低通道數(shù),然后通過(guò)11卷積層進(jìn)行特征提取,最后再通過(guò)一個(gè)33卷積層恢復(fù)通道數(shù)。以下是一個(gè)使用瓶頸結(jié)構(gòu)的殘差塊代碼示例:

class BottleneckBlock(nn.Module):expansion = 4def __init__(self, in_channels, out_channels, stride=1):super(BottleneckBlock, self).__init__()self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=1, bias=False)self.bn1 = nn.BatchNorm2d(out_channels)self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=stride, padding=1, bias=False)self.bn2 = nn.BatchNorm2d(out_channels)self.conv3 = nn.Conv2d(out_channels, out_channels * self.expansion, kernel_size=1, bias=False)self.bn3 = nn.BatchNorm2d(out_channels * self.expansion)if stride!= 1 or in_channels!= out_channels * self.expansion:self.shortcut = nn.Sequential(nn.Conv2d(in_channels, out_channels * self.expansion, kernel_size=1, stride=stride, bias=False),nn.BatchNorm2d(out_channels * self.expansion))else:self.shortcut = nn.Identity()self.relu = nn.ReLU(inplace=True)def forward(self, x):residual = xout = self.conv1(x)out = self.bn1(out)out = self.relu(out)out = self.conv2(out)out = self.bn2(out)out = self.relu(out)out = self.conv3(out)out = self.bn3(out)out += self.shortcut(residual)out = self.relu(out)return out

在BottleneckBlock類中,expansion表示通道擴(kuò)展倍數(shù),這里設(shè)置為 4。conv1用于降低通道數(shù),conv2進(jìn)行主要的特征提取,conv3恢復(fù)通道數(shù)。通過(guò)這種方式,在不損失太多性能的前提下,大大減少了計(jì)算量和參數(shù)數(shù)量,使得更深的網(wǎng)絡(luò)能夠在實(shí)際應(yīng)用中得以訓(xùn)練和使用。

五、ResNet 在圖像識(shí)別中的應(yīng)用

(一)ImageNet 數(shù)據(jù)集上的表現(xiàn)

ResNet 在 ImageNet 數(shù)據(jù)集上取得了非常出色的成績(jī)。ImageNet 是一個(gè)大規(guī)模的圖像數(shù)據(jù)集,包含了數(shù)百萬(wàn)張圖像和上千個(gè)類別,是圖像識(shí)別領(lǐng)域的重要基準(zhǔn)數(shù)據(jù)集。ResNet-18、ResNet-34 等較淺的模型在 ImageNet 上的準(zhǔn)確率已經(jīng)超過(guò)了很多傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)模型,而 ResNet-50、ResNet-101 和 ResNet-152 等更深的模型則進(jìn)一步提高了準(zhǔn)確率,在圖像分類任務(wù)上達(dá)到了當(dāng)時(shí)的先進(jìn)水平。
以下是使用 ResNet-50 在 ImageNet 數(shù)據(jù)集上進(jìn)行訓(xùn)練和測(cè)試的示例代碼(使用 PyTorch 和 torchvision 庫(kù)):

import torch
import torchvision
import torchvision.transforms as transforms
import torch.nn as nn
import torch.optim as optim# 數(shù)據(jù)預(yù)處理
transform_train = transforms.Compose([transforms.RandomResizedCrop(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])transform_test = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])# 加載訓(xùn)練集和測(cè)試集
trainset = torchvision.datasets.ImageNet(root='./data', split='train', transform=transform_train)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=128, shuffle=True, num_workers=4)testset = torchvision.datasets.ImageNet(root='./data', split='val', transform=transform_test)
testloader = torch.utils.data.DataLoader(testset, batch_size=128, shuffle=False, num_workers=4)# 定義ResNet-50模型
net = torchvision.models.resnet50(pretrained=False)
num_classes = 1000
net.fc = nn.Linear(net.fc.in_features, num_classes)# 定義損失函數(shù)和優(yōu)化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.01, momentum=0.9)# 訓(xùn)練模型
def train(epoch):net.train()running_loss = 0.0for i, data in enumerate(trainloader, 0):inputs, labels = dataoptimizer.zero_grad()outputs = net(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()running_loss += loss.item()if i % 100 == 99:print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 100))running_loss = 0.0# 測(cè)試模型
def test():net.eval()correct = 0total = 0with torch.no_grad():for data in testloader:images, labels = dataoutputs = net(images)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print('Accuracy of the network on the test images: %d %%' % (100 * correct / total))# 訓(xùn)練和測(cè)試循環(huán)
for epoch in range(10):train(epoch)test()

在上述代碼中,首先定義了數(shù)據(jù)預(yù)處理的轉(zhuǎn)換操作,包括隨機(jī)裁剪、隨機(jī)水平翻轉(zhuǎn)、轉(zhuǎn)換為張量以及標(biāo)準(zhǔn)化等。然后加載 ImageNet 數(shù)據(jù)集的訓(xùn)練集和測(cè)試集,并使用torchvision.models.resnet50創(chuàng)建 ResNet-50 模型,將最后一層全連接層修改為適應(yīng) ImageNet 的類別數(shù)。接著定義了損失函數(shù)(交叉熵?fù)p失)和優(yōu)化器(隨機(jī)梯度下降),并實(shí)現(xiàn)了訓(xùn)練和測(cè)試函數(shù)。在訓(xùn)練過(guò)程中,對(duì)每個(gè)批次的數(shù)據(jù)進(jìn)行前向傳播、計(jì)算損失、反向傳播和參數(shù)更新。在測(cè)試過(guò)程中,計(jì)算模型在測(cè)試集上的準(zhǔn)確率。

(二)其他圖像識(shí)別任務(wù)中的應(yīng)用

除了在 ImageNet 數(shù)據(jù)集上的圖像分類任務(wù),ResNet 還被廣泛應(yīng)用于其他圖像識(shí)別任務(wù),如目標(biāo)檢測(cè)、圖像分割、人臉識(shí)別等。
目標(biāo)檢測(cè):在目標(biāo)檢測(cè)任務(wù)中,ResNet 常作為骨干網(wǎng)絡(luò)(Backbone Network)用于提取圖像的特征。例如,在 Faster R-CNN、Mask R-CNN 等目標(biāo)檢測(cè)模型中,ResNet 可以提供豐富的語(yǔ)義特征,幫助模型準(zhǔn)確地檢測(cè)和定位圖像中的目標(biāo)。以下是使用 ResNet-50 作為骨干網(wǎng)絡(luò)的 Faster R-CNN 模型的示例代碼(使用 PyTorch 和 torchvision 庫(kù)):

import torchvision
from torchvision.models.detection import FasterRCNN
from torchvision.models.detection.rpn import AnchorGenerator# 加載ResNet-50作為骨干網(wǎng)絡(luò)
backbone = torchvision.models.resnet50(pretrained=True)
backbone = nn.Sequential(*list(backbone.children())[:-2])# 定義錨點(diǎn)生成器
anchor_generator = AnchorGenerator(sizes=((32, 64, 128, 256, 512),), aspect_ratios=((0.5, 1.0, 2.0),))# 創(chuàng)建Faster R-CNN模型
roi_pooler = torchvision.ops.MultiScaleRoIAlign(featmap_names=['0'], output_size=7, sampling_ratio=2)
model = FasterRCNN(backbone, num_classes=2, rpn_anchor_generator=anchor_generator, box_roi_pool=roi_pooler)# 定義損失函數(shù)和優(yōu)化器
params = [p for p in model.parameters() if p.requires_grad]
optimizer = torch.optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005)
lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=3, gamma=0.1)
http://m.aloenet.com.cn/news/41793.html

相關(guān)文章:

  • 天津河?xùn)|區(qū)網(wǎng)站建設(shè)持續(xù)優(yōu)化完善防控措施
  • 今日河南新聞聯(lián)播上海整站seo
  • 專門(mén)做簡(jiǎn)歷的網(wǎng)站有哪些長(zhǎng)沙關(guān)鍵詞優(yōu)化方法
  • 檢察院加強(qiáng)網(wǎng)站建設(shè)長(zhǎng)沙優(yōu)化網(wǎng)站推廣
  • 在線做heatmap的網(wǎng)站谷歌推廣怎么操作
  • 深夜免費(fèi)軟件app下載seo營(yíng)銷(xiāo)的概念
  • 一般網(wǎng)站用什么軟件做怎么注冊(cè)一個(gè)自己的網(wǎng)站
  • 軟件公司網(wǎng)站系統(tǒng)集成建設(shè)營(yíng)銷(xiāo)推廣的特點(diǎn)
  • wordpress寄出郵箱地址小學(xué)生班級(jí)優(yōu)化大師
  • 外貿(mào)平臺(tái)免費(fèi)網(wǎng)站網(wǎng)站優(yōu)化推廣平臺(tái)
  • 學(xué)做網(wǎng)站設(shè)計(jì)需要多少錢(qián)網(wǎng)頁(yè)制作教程步驟
  • 網(wǎng)站建設(shè)整個(gè)過(guò)程個(gè)人介紹網(wǎng)頁(yè)制作
  • 做外貿(mào)在哪個(gè)網(wǎng)站北京百度推廣電話號(hào)碼
  • 上海阿里巴巴做網(wǎng)站免費(fèi)的短視頻app大全下載
  • 商業(yè)網(wǎng)站改版需要多久愛(ài)站網(wǎng)綜合查詢
  • 無(wú)錫工廠網(wǎng)站建設(shè)南寧百度關(guān)鍵詞推廣
  • 松江營(yíng)銷(xiāo)型網(wǎng)站建設(shè)b站是哪個(gè)網(wǎng)站
  • ui設(shè)計(jì)做兼職的網(wǎng)站如何寫(xiě)市場(chǎng)調(diào)研報(bào)告
  • 女裝網(wǎng)站建設(shè)規(guī)劃網(wǎng)站怎樣被百度收錄
  • 怎么做網(wǎng)站的后臺(tái)管理系統(tǒng)手機(jī)360優(yōu)化大師官網(wǎng)
  • 微網(wǎng)站后臺(tái)怎么注冊(cè)互聯(lián)網(wǎng)推廣平臺(tái)有哪些公司
  • 辦公室現(xiàn)代簡(jiǎn)約裝修效果圖武漢seo服務(wù)
  • 金山石化網(wǎng)站建設(shè)襄陽(yáng)seo優(yōu)化排名
  • 做網(wǎng)站建設(shè)的上市公司有哪些百度競(jìng)價(jià)是seo還是sem
  • lamp網(wǎng)站開(kāi)發(fā) pdf企業(yè)網(wǎng)站建設(shè)需求分析
  • 做便民工具網(wǎng)站怎么樣百度問(wèn)答兼職怎么做
  • 網(wǎng)站怎么防采集如何推廣普通話
  • 長(zhǎng)子營(yíng)網(wǎng)站建設(shè)產(chǎn)品優(yōu)化是什么意思
  • 做3d模型的叫什么牛的網(wǎng)站磁力鏈搜索引擎入口
  • 黃色風(fēng)格網(wǎng)站模板商城小程序