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

基于Pytorch深度學習的腦腫瘤分類識別(文末送書)

這篇具有很好參考價值的文章主要介紹了基于Pytorch深度學習的腦腫瘤分類識別(文末送書)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

???♂? 個人主頁:@艾派森的個人主頁

???作者簡介:Python學習者
?? 希望大家多多支持,我們一起進步!??
如果文章對你有幫助的話,
歡迎評論 ??點贊???? 收藏 ??加關注+


目錄

實驗背景

實驗目的

實驗環(huán)境

實驗過程

1.加載數(shù)據(jù)

2.訓練模型

3.模型評估

源代碼

文末福利


?文章來源地址http://www.zghlxwxcb.cn/news/detail-530390.html

實驗背景

????????腦腫瘤是一種嚴重的疾病,對患者的生命和健康造成了威脅。在腦腫瘤的治療過程中,準確地識別和分類不同類型的腦腫瘤對于制定個性化的治療方案和預測患者的病情發(fā)展非常重要。

????????傳統(tǒng)的腦腫瘤分類方法通常依賴于醫(yī)學專家對影像學圖像的視覺解讀和分析,但這種方法受限于主觀性、經(jīng)驗依賴性和人力成本較高等問題。隨著深度學習技術(shù)的快速發(fā)展,特別是在計算機視覺領域的應用,基于深度學習的腦腫瘤圖片識別分類成為了一種有潛力的解決方案。深度學習模型,尤其是卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,簡稱CNN),具備從大規(guī)模數(shù)據(jù)中自動學習特征和進行高度抽象的能力。這使得它們在圖像分類和分割任務中具有出色的表現(xiàn)。通過使用深度學習方法,可以將醫(yī)學影像圖像作為輸入,訓練一個分類器來自動識別和分類不同類型的腦腫瘤,從而為醫(yī)生提供輔助診斷和治療決策的依據(jù)?;谏疃葘W習的腦腫瘤圖片識別分類實驗具有重要的研究意義和應用前景。通過該實驗,可以評估深度學習模型在腦腫瘤分類任務中的準確性、魯棒性和可解釋性。同時,還可以探索不同深度學習架構(gòu)、數(shù)據(jù)增強技術(shù)和遷移學習方法對腦腫瘤分類性能的影響。這些研究成果有望為腦腫瘤的早期檢測、治療規(guī)劃和病情預測提供有力的支持,提高醫(yī)療診斷的精確性和效率,最終改善患者的治療結(jié)果和生存率。

實驗目的

????????本實驗旨在利用深度學習方法,特別是卷積神經(jīng)網(wǎng)絡(CNN),進行腦腫瘤圖片的識別和分類,以實現(xiàn)以下目標:

1.提高腦腫瘤識別的準確性:通過訓練深度學習模型,使其能夠準確地識別不同類型的腦腫瘤,包括惡性和良性腫瘤。通過提高準確性,可以輔助醫(yī)生進行更精確的診斷和制定個性化的治療方案。

2.探索深度學習模型的魯棒性:在面對不同的腦腫瘤圖像數(shù)據(jù)集時,評估深度學習模型的魯棒性和泛化能力。通過研究模型的魯棒性,可以提高在實際應用中的可靠性,并應對不同來源、不同質(zhì)量和不同噪聲水平的腦腫瘤圖像數(shù)據(jù)。

3.比較不同深度學習架構(gòu)的性能:嘗試使用不同的深度學習架構(gòu),如常見的卷積神經(jīng)網(wǎng)絡(CNN)模型和一些最新的架構(gòu),比較它們在腦腫瘤分類任務上的性能和效果。通過對比不同模型的表現(xiàn),可以確定最適合該任務的模型架構(gòu),為后續(xù)的研究和應用提供參考。

4.評估深度學習模型在臨床實踐中的應用價值:將深度學習模型應用到真實世界的腦腫瘤影像數(shù)據(jù)中,并與傳統(tǒng)的醫(yī)學影像診斷方法進行對比。通過評估深度學習模型在臨床實踐中的準確性和效率,可以為醫(yī)生提供輔助診斷的工具,并改善腦腫瘤患者的治療結(jié)果和預后。

實驗環(huán)境

Python3.9

Jupyter notebook

實驗過程

1.加載數(shù)據(jù)

首先導入本次實驗用到的第三方庫

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

定義數(shù)據(jù)集的路徑?

?基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

?計算該圖像數(shù)據(jù)集的均值和STD

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

創(chuàng)建數(shù)據(jù)加載器,為訓練和驗證數(shù)據(jù)集組合轉(zhuǎn)換
基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

使用采樣器在訓練和驗證之間分割數(shù)據(jù)?

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

配置數(shù)據(jù)集定義加載器?

?基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

?將數(shù)據(jù)進行展示基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

2.訓練模型

訓練模型配置,初始化模型

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

開始訓練模型?

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

3.模型評估

繪制訓練和驗證損失

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

?繪制驗證精度圖基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

源代碼

import numpy as np
from pathlib import Path
import random
import torch
import torchvision
from torchvision import transforms
import tqdm
data_dir = Path("./brain_tumor_dataset")
list(data_dir.iterdir())
# 計算該圖像數(shù)據(jù)集的均值和STD
def calculate_dataset_mean(dataloader): 
    images, labels = next(iter(dataloader))
    return images.mean([0,2,3])
def calculate_dataset_std(dataloader):
    images, labels = next(iter(dataloader))
    return images.std([0,2,3])

raw_dataset_transforms = transforms.Compose([
        transforms.Resize(255), 
        transforms.CenterCrop(225), 
        transforms.ToTensor()
    ])
raw_dataset = torchvision.datasets.ImageFolder(root = str(data_dir), transform=raw_dataset_transforms)
raw_dataloader = torch.utils.data.DataLoader(raw_dataset, batch_size=len(raw_dataset))
print(f"mean = {calculate_dataset_mean(raw_dataloader)} and std = {calculate_dataset_std(raw_dataloader)}")
'''
創(chuàng)建數(shù)據(jù)加載器
為訓練和驗證數(shù)據(jù)集組合轉(zhuǎn)換
創(chuàng)建應用了適當轉(zhuǎn)換的數(shù)據(jù)集
使用數(shù)據(jù)集創(chuàng)建數(shù)據(jù)加載程序
'''
# 數(shù)據(jù)集配置
CLASSES = ["no","yes"]
NUMBER_OF_CLASSES = len(CLASSES)
SHUFFLE = True
VALIDATION_SIZE = 0.2
RESIZE = 64
# 為訓練和驗證數(shù)據(jù)集組合圖像轉(zhuǎn)換
normalize = transforms.Normalize(
        mean=calculate_dataset_mean(raw_dataloader),
        std=calculate_dataset_std(raw_dataloader),
    )
training_transform = transforms.Compose([
        transforms.RandomRotation(30),
        transforms.Resize(RESIZE),
        transforms.CenterCrop(RESIZE),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        normalize,
] )
validation_transform = transforms.Compose(
    [transforms.Resize(RESIZE),
     transforms.CenterCrop(RESIZE),         
     transforms.ToTensor(),
     normalize,
    ])

# 創(chuàng)建數(shù)據(jù)集并應用相關轉(zhuǎn)換
training_dataset = torchvision.datasets.ImageFolder(
    root = str(data_dir),
    transform = training_transform,
)
validation_dataset = torchvision.datasets.ImageFolder(
    root = str(data_dir),
    transform = validation_transform
)
# 檢查數(shù)據(jù)集規(guī)范化
# 歸一化后,均值應接近0,std應接近1
normalized_dataloader = torch.utils.data.DataLoader(
    validation_dataset, 
    batch_size=len(validation_dataset),
    )
print(f"mean = {calculate_dataset_mean(normalized_dataloader)}",
      f"std = {calculate_dataset_std(normalized_dataloader)}")
# 使用采樣器在訓練和驗證之間分割數(shù)據(jù)
split = int(np.floor(len(training_dataset) * VALIDATION_SIZE))
indices = list(range(len(training_dataset)))
if SHUFFLE:
    random.shuffle(indices)

validation_indices, training_indices = indices[: split], indices[split :]

training_sampler = torch.utils.data.sampler.SubsetRandomSampler(training_indices)
validation_sampler = torch.utils.data.sampler.SubsetRandomSampler(validation_indices)
# 數(shù)據(jù)加載器配置
BATCH_SIZE = 4
NUMBER_OF_WORKERS = 2
PIN_MEMORY = False
# 創(chuàng)建數(shù)據(jù)加載器
training_dataloader = torch.utils.data.DataLoader(
    training_dataset, 
    batch_size=BATCH_SIZE, 
    sampler=training_sampler,
    num_workers=NUMBER_OF_WORKERS, 
    pin_memory=PIN_MEMORY,
    )

validation_dataloader = torch.utils.data.DataLoader(
    training_dataset, 
    batch_size=BATCH_SIZE, 
    sampler=validation_sampler,
    num_workers=NUMBER_OF_WORKERS, 
    pin_memory=PIN_MEMORY,
    )
import matplotlib.pyplot as plt
%matplotlib inline

# 展示圖片
for images, labels in training_dataloader:
    fig = plt.figure(figsize = (14, 7))
    for i in range(BATCH_SIZE):
        ax = fig.add_subplot(2, 4, i + 1, xticks = [], yticks = [])
        ax.set_xlabel(f"cancer = {CLASSES[labels[i]]}")
        image = images[i][0, :, :]
        plt.imshow(image)
    break
# 訓練模型配置
MODEL_NAME = "resnet18"
WEIGHTS = "DEFAULT"
LEARNING_RATE = 0.0001
MOMENTUM = 0.9
NUMBER_OF_EPOCHS = 10
MODEL_SAVE_PATH = "model.pt"

# 初始化模型
model = torchvision.models.get_model(MODEL_NAME, weights=WEIGHTS)
model.fc = torch.nn.Linear(512, 2)
# 選擇一個損失函數(shù)和一個優(yōu)化函數(shù)
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=LEARNING_RATE, momentum=MOMENTUM)
# 開始訓練模型
# 存儲訓練過程狀態(tài)的地方
training_loss_history = []
validation_loss_history = []
validation_accuracy_history = []

# 訓練和驗證循環(huán)
for epoch in range(NUMBER_OF_EPOCHS):
    
    model.train()
    training_step_loss = []
    print(f"Epoch {epoch + 1}/{NUMBER_OF_EPOCHS}")
    for data in tqdm.tqdm(training_dataloader, desc="training"):
        features, labels = data
        optimizer.zero_grad()
        outputs = model(features)
        training_loss = criterion(outputs, labels)
        training_loss.backward()
        optimizer.step()
        training_step_loss.append(training_loss.item())
            
    training_epoch_loss = sum(training_step_loss)/len(training_step_loss)
    training_loss_history.append(training_epoch_loss)
    
    model.eval()
    validation_step_loss = []
    correct_predictions = 0 
    for data in tqdm.tqdm(validation_dataloader, desc="validating"):

        features, labels = data
        outputs = model(features)
        correct_predictions += torch.sum(torch.argmax(outputs, axis=1)==labels)
        validation_loss = criterion(outputs, labels)
        validation_step_loss.append(validation_loss.item())

    validation_epoch_loss = sum(validation_step_loss)/len(validation_step_loss)
    validation_loss_history.append(validation_epoch_loss)
    validation_epoch_accuracy = correct_predictions / (len(validation_dataloader) * BATCH_SIZE)
    print(f"Training Loss: {training_epoch_loss:.4f},"
          f"Validation Loss: {validation_epoch_loss:.4f}," 
          f"Validation Acc: {validation_epoch_accuracy:.4f}")
    
    # 保存模型
    if epoch==0 or validation_epoch_accuracy > max(validation_accuracy_history):
        print("Validation loss improved, saving checkpoint.")
        torch.save({
                'epoch': epoch,
                'model_state_dict': model.state_dict(),
                'optimizer_state_dict': optimizer.state_dict(),
                'loss': validation_epoch_loss,
                }, MODEL_SAVE_PATH)
        print("Checkpoint saved")
    validation_accuracy_history.append(validation_epoch_accuracy)
print('Finished Training')
# 繪制訓練和驗證損失
plt.plot(training_loss_history, label='training_loss')
plt.plot(validation_loss_history,label='validation_loss')
plt.legend()
plt.show
# 繪制驗證精度圖
plt.plot(validation_accuracy_history, label='validation accuracy')
plt.legend()
plt.show

文末福利

《人工智能與ChatGPT免費包郵送出3本!

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

內(nèi)容簡介:

????????人們相信人工智能可以為這個時代的技術(shù)帶來突破,而ChatGPT則使這種希望成為現(xiàn)實?,F(xiàn)在,許多人都渴望了解與ChatGPT相關的一切,包括技術(shù)的歷史和背景,其神奇的功能以及如何使用它。雖然ChatGPT的使用方法很簡單,但它具有無限的潛力。如果不去親身體驗,很難體會到它的強大之處。本書盡可能全面地介紹了與ChatGPT相關的內(nèi)容,特別是許多應用示例,可以給讀者帶來啟發(fā)。

????????希望讀者通過這本書了解ChatGPT后,在自己的工作中也能充分利用它。本書適合希望了解和使用ChatGPT的人閱讀。

編輯推薦:

ChatGPT的背景:從大語言模型到GPT

ChatGPT的技術(shù):從Transformer模型到RLHF

ChatGPT的使用:從對話到OpanAI API

ChatGPT的應用:從編程到統(tǒng)計分析

ChatGPT的案例:從寫專利到出試卷

  • 抽獎方式:評論區(qū)隨機抽取3位小伙伴免費送出!
  • 參與方式:關注博主、點贊、收藏、評論區(qū)評論“人生苦短,拒絕內(nèi)卷!”(切記要點贊+收藏,否則抽獎無效,每個人最多評論三次!
  • 活動截止時間:2023-07-10?20:00:00
  • 京東購買鏈接:https://item.jd.com/14049920.html

?名單公布時間:2023-07-10?21:00:00??

基于Pytorch深度學習的腦腫瘤分類識別(文末送書),深度學習,python,數(shù)據(jù)挖掘,深度學習,人工智能

?

到了這里,關于基于Pytorch深度學習的腦腫瘤分類識別(文末送書)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • [論文筆記] Swin UNETR 論文筆記: MRI 圖像腦腫瘤語義分割

    [論文筆記] Swin UNETR 論文筆記: MRI 圖像腦腫瘤語義分割

    Author: Sijin Yu [1] Ali Hatamizadeh, Vishwesh Nath, Yucheng Tang, Dong Yang, Holger R. Roth, and Daguang Xu. Swin UNETR: Swin Transformers for Semantic Segmentation of Brain Tumors in MRI Images . MICCAI, 2022. ??開源代碼鏈接 腦腫瘤的語義分割是一項基本的醫(yī)學影像分析任務, 涉及多種 MRI 成像模態(tài), 可協(xié)助臨床醫(yī)生診斷病

    2024年04月14日
    瀏覽(101)
  • 論文閱讀筆記——SMU-Net:面向缺失模態(tài)腦腫瘤分割的樣式匹配U-Net

    論文閱讀筆記——SMU-Net:面向缺失模態(tài)腦腫瘤分割的樣式匹配U-Net

    論文地址:https://arxiv.org/abs/2204.02961v1 腦膠質(zhì)瘤:https://baike.baidu.com/item/%E8%84%91%E8%83%B6%E8%B4%A8%E7%98%A4/7242862 互信息:https://zhuanlan.zhihu.com/p/240676850 Gram矩陣:https://zhuanlan.zhihu.com/p/187345192 背景: 絕大多數(shù)腦腫瘤都可以通過磁共振成像進行唯一的鑒別。 多模態(tài)MRI的好處: 每一種模態(tài)

    2024年01月25日
    瀏覽(93)
  • PyTorch 深度學習實戰(zhàn) | 基于 ResNet 的花卉圖片分類

    PyTorch 深度學習實戰(zhàn) | 基于 ResNet 的花卉圖片分類

    “工欲善其事,必先利其器”。如果直接使用 Python 完成模型的構(gòu)建、導出等工作,勢必會耗費相當多的時間,而且大部分工作都是深度學習中共同擁有的部分,即重復工作。所以本案例為了快速實現(xiàn)效果,就直接使用將這些共有部分整理成框架的 TensorFlow 和 Keras 來完成開發(fā)

    2023年04月09日
    瀏覽(89)
  • 基于PyTorch深度學習遙感影像地物分類與目標檢測、分割及遙感影像問題深度學習優(yōu)化

    基于PyTorch深度學習遙感影像地物分類與目標檢測、分割及遙感影像問題深度學習優(yōu)化

    我國高分辨率對地觀測系統(tǒng)重大專項已全面啟動,高空間、高光譜、高時間分辨率和寬地面覆蓋于一體的全球天空地一體化立體對地觀測網(wǎng)逐步形成,將成為保障國家安全的基礎性和戰(zhàn)略性資源。未來10年全球每天獲取的觀測數(shù)據(jù)將超過10PB,遙感大數(shù)據(jù)時代已然來臨。隨著小

    2024年02月11日
    瀏覽(32)
  • PyTorch深度學習實戰(zhàn) | 基于線性回歸、決策樹和SVM進行鳶尾花分類

    PyTorch深度學習實戰(zhàn) | 基于線性回歸、決策樹和SVM進行鳶尾花分類

    鳶尾花數(shù)據(jù)集是機器學習領域非常經(jīng)典的一個分類任務數(shù)據(jù)集。它的英文名稱為Iris Data Set,使用sklearn庫可以直接下載并導入該數(shù)據(jù)集。數(shù)據(jù)集總共包含150行數(shù)據(jù),每一行數(shù)據(jù)由4個特征值及一個標簽組成。標簽為三種不同類別的鳶尾花,分別為:Iris Setosa,Iris Versicolour,Iri

    2023年04月10日
    瀏覽(30)
  • 深度學習pytorch實戰(zhàn)五:基于ResNet34遷移學習的方法圖像分類篇自建花數(shù)據(jù)集圖像分類(5類)超詳細代碼

    深度學習pytorch實戰(zhàn)五:基于ResNet34遷移學習的方法圖像分類篇自建花數(shù)據(jù)集圖像分類(5類)超詳細代碼

    1.數(shù)據(jù)集簡介 2.模型相關知識 3.split_data.py——訓練集與測試集劃分 4.model.py——定義ResNet34網(wǎng)絡模型 5.train.py——加載數(shù)據(jù)集并訓練,訓練集計算損失值loss,測試集計算accuracy,保存訓練好的網(wǎng)絡參數(shù) 6.predict.py——利用訓練好的網(wǎng)絡參數(shù)后,用自己找的圖像進行分類測試 1.自建

    2024年02月09日
    瀏覽(95)
  • PyTorch深度學習實戰(zhàn)——貓狗分類

    我們已經(jīng)學習了如何構(gòu)建卷積神經(jīng)網(wǎng)絡,并且在 Fashion-MNIST 數(shù)據(jù)集上執(zhí)行圖像分類。在本節(jié)中,我們使用更復雜數(shù)據(jù)集訓練卷積神經(jīng)網(wǎng)絡,對包含貓或狗的圖像進行分類。同時,我們還將了解當用于訓練的圖像數(shù)量變化時,模型的準確率如何變化。 貓狗分類是一個常見的計算

    2024年02月10日
    瀏覽(23)
  • 33- PyTorch實現(xiàn)分類和線性回歸 (PyTorch系列) (深度學習)

    33- PyTorch實現(xiàn)分類和線性回歸 (PyTorch系列) (深度學習)

    知識要點 ?pytorch 最常見的創(chuàng)建模型 的方式, 子類 讀取數(shù)據(jù): data = pd.read_csv (\\\'./dataset/credit-a.csv\\\', header=None) 數(shù)據(jù)轉(zhuǎn)換為tensor: X = torch .from_numpy(X.values).type(torch.FloatTensor) 創(chuàng)建簡單模型: 定義損失函數(shù): loss_fn = nn.BCELoss () 定義優(yōu)化器: opt = torch.optim.SGD (model.parameters(), lr=0.00001) 把梯度

    2024年02月06日
    瀏覽(22)
  • Pytorch目標分類深度學習自定義數(shù)據(jù)集訓練

    Pytorch目標分類深度學習自定義數(shù)據(jù)集訓練

    目錄 一,Pytorch簡介; 二,環(huán)境配置; 三,自定義數(shù)據(jù)集; 四,模型訓練; 五,模型驗證; ????????PyTorch是一個開源的Python機器學習庫,基于Torch,用于自然語言處理等應用程序。PyTorch 基于 Python:?PyTorch 以 Python 為中心或“pythonic”,旨在深度集成 Python 代碼,而不是

    2024年02月07日
    瀏覽(20)
  • 【圖像分類】【深度學習】ViT算法Pytorch代碼講解

    【圖像分類】【深度學習】ViT算法Pytorch代碼講解

    ViT是由谷歌公司的Dosovitskiy, Alexey等人在《 An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale【ICLR2021】》【論文地址】一文中提出的模型,提出了一種基于transformer結(jié)構(gòu)的模型,摒棄傳統(tǒng)的CNN結(jié)構(gòu),直接將Transformer應用到圖像塊序列上一樣可以達到非常好的性能。 論文

    2024年02月08日
    瀏覽(53)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包