人工智能通識實踐教程 課件 第8章 計算機視覺_第1頁
人工智能通識實踐教程 課件 第8章 計算機視覺_第2頁
人工智能通識實踐教程 課件 第8章 計算機視覺_第3頁
人工智能通識實踐教程 課件 第8章 計算機視覺_第4頁
人工智能通識實踐教程 課件 第8章 計算機視覺_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第8章計算機視覺實驗方法搭建實驗環境:在Anaconda中建立實驗環境,在VSCode中選擇配置搭建LeNet5卷積神經網絡,完成手寫體數字分類實驗方式1:加載預訓練模型,進行測試方式2:訓練模型,進行測試加載ResNet模型,基于Cifar10數據集,與LeNet5模型進行圖像分類識別效果對比實驗準備—創建編程環境下載Anaconda安裝Anaconda清華鏡像:/help/anaconda/實驗準備—創建編程環境配置環境變量Path

此電腦

屬性

高級系統設置

環境變量

在系統變量中選擇Path,進行編輯Anaconda安裝主目錄管理Anaconda環境和包的腳本conda.exepip.exe等實驗準備—創建編程環境創建計算機視覺實驗環境:使用AnacondaNavigator創建conda環境1234創建conda環境為conda環境安裝第三方庫右鍵單擊實驗準備—創建編程環境

打開終端(OpenTerminal)

在終端中,切換當前目錄為第三方庫所在文件夾執行安裝指令D:\AI_CV第三方庫pipinstall-rrequirements.txt--no-index--no-deps--find-links.\包名-版本號-Python版本-ABI標簽-平臺標簽.whl

實驗準備—VSCode配置

選擇工作文件夾。選擇Python解釋器實驗1:手寫體數字識別MINIST手寫體數字數據集:該數據集主要包含70,000張手寫數字圖像,其中60,000張用于訓練,10,000張用于測試實驗1:手寫體數字識別(1)數據集轉換

訓練集測試集灰度圖實驗1:手寫體數字識別(2)數據預處理

圖像預處理transform=transforms.Compose([transforms.Resize((32,32)),#調整尺寸為32x32transforms.ToTensor(),#將圖像轉換為張量(1,高度,寬度)transforms.Normalize((0.1307,),(0.3081,))#標準化])

img=Image.open("./data/mnist/mnist_test/3/112.png")input_tensor=transform(img)#進行數據預處理input_batch=input_tensor.unsqueeze(0)#(1,1,高度,寬度)fromtorchvisionimporttransformsfromPILimportImage實驗1:手寫體數字識別(3)搭建LeNet5模型張量(batch_size,channels,height,width)(1,1,32,32)6個5×5(1,6,28,28)2×2(1,6,14,14)16個5×5(1,16,10,10)2×2(1,16,5,5)(400,)fromtorchimportnnimporttorch.nn.functionalasFclassMyLeNet5(nn.Module):def__init__(self):#定義網絡的層次結構

super().__init__()

self.conv1=nn.Conv2d(in_channels=1,out_channels=6,kernel_size=5)

self.maxpool1=nn.MaxPool2d(kernel_size=2,stride=2)

self.conv2=nn.Conv2d(in_channels=6,out_channels=16,kernel_size=5)

self.maxpool2=nn.MaxPool2d(kernel_size=2,stride=2)

self.fc1=nn.Linear(16*5*5,120)

self.fc2=nn.Linear(120,84)

self.fc3=nn.Linear(84,10)defforward(self,x):#定義前向傳播過程,描述各層之間的連接關系

x=self.conv1(x)

x=F.relu(x)#ReLu激活函數計算

x=self.maxpool1(x)

x=self.conv2(x)x=F.relu(x)#ReLu激活函數計算

x=self.maxpool2(x)

x=x.view(-1,16*5*5)#將數據轉換為全連接層所需的二維結構

x=F.relu(self.fc1(x))#ReLu激活函數計算

x=F.relu(self.fc2(x))#ReLu激活函數計算

x=self.fc3(x)

returnnn.functional.log_softmax(x,dim=1)#Softmax激活函數多分類結果實驗1:手寫體數字識別(4)加載預訓練模型,進行預測model=MyLeNet5()model.load_state_dict(torch.load('./save_model/best_mnist_model.pth'))model.eval()#把模型轉為測試模式fromPILimportImageimg=Image.open("./data/mnist/mnist_test/3/112.png")plt.figure(figsize=(2,2))#控制顯示比例為2x2英寸plt.imshow(img,cmap="gray")實驗1:手寫體數字識別(4)加載預訓練模型,進行預測#數據預處理(需與訓練時一致)transform=transforms.Compose([transforms.Resize((32,32)),#調整尺寸為32x32transforms.ToTensor(),#將圖像轉換為張量(1,高度,寬度)transforms.Normalize((0.1307,),(0.3081,))#標準化])input_tensor=transform(img)input_batch=input_tensor.unsqueeze(0)實驗1:手寫體數字識別(4)加載預訓練模型,進行預測output=model(input_batch)print(output)tensor([[-1.6325e+01,-7.5702e+00,-6.7908e+00,-4.1183e-03,-1.3112e+01,-6.4574e+00,-1.0354e+01,-7.0975e+00,-1.1709e+01,-1.0357e+01]],grad_fn=<LogSoftmaxBackward0>)

predict=output.argmax(dim=1)print("預測類別:",predict.item())預測類別:3實驗1:手寫體數字識別(5)使用測試集評估模型卷積層:局部感知,特征提取,每個卷積產生一個特征圖,隨著網絡深度增加,后續卷積層提取更高級的特征池化層:降低特征圖尺寸,保留特征圖最顯著特征,提升特征的抽象程度全連接層:整合所有特征,進行更高層次的抽象,最終實現決策練習

在D盤建立文件夾,拷貝如下文件至文件夾數據集(C:/AI通識課/MNIST)源代碼(學習通上機作業附件源代碼.zip解壓縮)

啟動VSCode,打開文件夾選擇AnacondaAI_CV編程環境

運行test.py,查看識別結果(注意圖像路徑表達正確)

更換test.py中加載的數字圖像,檢測識別結果圖像分類拓展練習任務:根據給出的代碼框架,搭建LeNet5網絡模型,使用Cifar10數據集進行預測;加載預訓練ResNet模型,進行預測效果對比。32×32像素RGB圖像實驗報告1、記錄實驗過程及實驗結果(實驗結果截圖展示)。2、思考并回答以下問題。問題1:對于MNIST數據集的數據預處理過程中,哪些步驟對模型的訓練效果影響最大?問題2:對卷積神經網絡(CNN)及LeNet5模型的認識。(1)LeNet模型中各層(卷積層、池化層、全連接層)的功能分別是什么?(2)每層計算后的維度如何計算?問題3:應用場景。(1)手寫體數字識別技術在實際應用中有哪些重要的場景?(2)LeNet網絡可以應用在哪些場景?【任務1】數據準備。細胞分割實驗基于BroadBioimageBenchmarkCollection(BBBC)數據集進行訓練和測試。BBBC是一個廣泛使用的生物圖像數據集,支持生物醫學圖像分析算法的開發和評估。該數據集由美國麻省理工學院的BroadInstitute創建,包含多種類型的生物圖像數據,主要用于細胞圖像分析、細胞分割、特征提取和分類等任務。【任務2】數據預處理。讀取數據集中醫學樣本的圖像和掩碼信息,將它們轉換為灰度圖像,并保存為PNG格式步驟1:準備讀取文件步驟2:讀取和轉換原始圖像步驟3:讀取和轉換掩碼文件【任務3】U-Net網絡搭建。U-Net具有U形結構,主體包含編碼器和解碼器兩個部分。U-Net網絡(1)編碼器(下采樣路徑)。編碼器由一系列卷積層和池化層構成,負責逐步提取圖像的特征并降低其空間維度。每個卷積層通常使用兩個3×3的卷積核,后接ReLU激活函數,隨后通過2×2的最大池化層進行下采樣。通過這一過程,網絡逐漸減少特征圖的空間維度,同時增加特征通道的數量,從而提取出更高級的特征。在編碼器的最后,U-Net包含一個瓶頸層,進一步增強特征提取能力。(2)解碼器(上采樣路徑)。解碼器則通過上采樣操作逐步恢復特征圖的空間分辨率。每個上采樣后通常接有卷積層,以進一步處理上采樣后的特征。在上采樣過程中,U-Net采用跳躍連接將編碼器中對應層的特征圖與解碼器中的特征圖進行拼接。這一設計使高分辨率的特征得以保留,從而有效改善分割的準確性。(3)輸出層。最后,U-Net通過一個1×1的卷積層將特征圖映射到所需的數字類別上,通常使用Softmax或Sigmoid激活函數進行像素級分類。【任務4】訓練模型。(1)配置訓練所需的各種參數,如學習率、批量大小和損失函數等。(2)檢測當前可用的設備(GPU或CPU),將創建的U-Net模型遷移至目標設備上運行。(3)使用metadata.zip中training.txt、validation.txt文件指定的圖像和標簽數據,加載訓練和驗證數據集。(4)定義優化器和損失函數,在每個epochs中執行訓練過程,計算訓練損失,并在損失改善時保存模型權重。(5)記錄訓練歷史并輸出訓練所需的時間。【任務5】推理

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論