Facebook技術分享:如何在PyTorch中訓練圖像分類模型

2021-01-11 騰訊網

圖像分類是計算機視覺的最重要應用之一。它的應用範圍包括從自動駕駛汽車中的物體分類到醫療行業中的血細胞識別,從製造業中的缺陷項目到建立可以對戴口罩的人進行分類的系統。在所有這些行業中,圖像分類都以一種或另一種方式使用。他們是如何做到的呢?他們使用哪個框架?

你必須已閱讀很多有關不同深度學習框架(包括TensorFlow,PyTorch,Keras等)之間差異的信息。TensorFlow和PyTorch無疑是業內最受歡迎的框架。下面我們將講解如何在PyTorch中訓練圖像分類模型。

PyTorch概述

PyTorch在深度學習社區中越來越受歡迎,並且被深度學習從業者廣泛使用,PyTorch是一個提供Tensor計算的Python軟體包。此外,張量是多維數組,就像NumPy的ndarray一樣,它們也可以在GPU上運行。

PyTorch的一個獨特功能是它使用動態計算圖。所述PyTorch的Autograd包從張量構建計算圖和自動計算梯度。而不是具有特定功能的預定義圖形。

PyTorch為我們提供了一個框架,可以隨時隨地構建計算圖,甚至在運行時更改它們。特別是,對於我們不知道創建神經網絡需要多少內存的情況,這很有用。你可以使用PyTorch應對各種深度學習挑戰。以下是一些挑戰:

圖像(檢測,分類等)

文字(分類,生成等)

強化學習

MNIST數據集

在開始之前,讓我們了解數據集。在本文中,我們將解決流行的MNIST問題。這是一個數字識別任務,其中我們必須將手寫數字的圖像分類為0到9這10個類別之一。

在MNIST數據集中,我們具有從各種掃描的文檔中獲取的數字圖像,其尺寸規格化並居中。隨後,每個圖像都是28 x 28像素的正方形(總計784像素)。數據集的標準拆分用於評估和比較模型,其中60,000張圖像用於訓練模型,而單獨的10,000張圖像集用於測試模型。

現在,我們也了解了數據集。因此,讓我們在PyTorch和TensorFlow中使用CNN構建圖像分類模型。我們將從在PyTorch中實現開始。我們將在google colab中實現這些模型,該模型提供免費的GPU以運行這些深度學習模型。

在PyTorch中實現CNN

讓我們首先導入所有庫:

我們還要在Google colab上檢查PyTorch的版本:

因此,我正在使用1.5.1版本的PyTorch。如果您使用任何其他版本,則可能會收到一些警告或錯誤,因此您可以更新到此版本的PyTorch。我們將對圖像執行一些轉換,例如對像素值進行歸一化,因此,讓我們也定義這些轉換:

現在,讓我們加載MNIST數據集的訓練和測試集:

接下來,我定義了訓練和測試加載器,這將幫助我們分批加載訓練和測試集。我將批量大小定義為64:

首先讓我們看一下訓練集的摘要:

因此,在每個批次中,我們有64個圖像,每個圖像的大小為28,28,並且對於每個圖像,我們都有一個相應的標籤。讓我們可視化訓練圖像並查看其外觀:

它是數字0的圖像。類似地,讓我們可視化測試集圖像:

在測試集中,我們還有一批64號。現在讓我們定義架構

定義模型架構

我們將在這裡使用CNN模型。因此,讓我們定義並訓練該模型:

我們還定義優化器和損失函數,然後我們將看一下該模型的摘要:

因此,我們有2個卷積層,這將有助於從圖像中提取特徵。這些卷積層的要素傳遞到完全連接的層,該層將圖像分類為各自的類別。現在我們的模型架構已經準備好,讓我們訓練這個模型十個時期:

可以看到訓練隨著時代的增加而減少。這意味著我們的模型是從訓練集中學習的模式。讓我們在測試集上檢查該模型的性能:

因此,我們總共測試了10000張圖片,並且該模型在預測測試圖片的標籤方面的準確率約為96%。這是ni 可以在PyTorch中構建卷積神經網絡的方法.

相關焦點

  • 如何在PyTorch和TensorFlow中訓練圖像分類模型
    介紹圖像分類是計算機視覺的最重要應用之一。它的應用範圍包括從自動駕駛汽車中的物體分類到醫療行業中的血細胞識別,從製造業中的缺陷物品識別到建立可以對戴口罩與否的人進行分類的系統。在所有這些行業中,圖像分類都以一種或另一種方式使用。他們是如何做到的呢?他們使用哪個框架?
  • 如何用PyTorch訓練圖像分類器
    /medium.com/@chrisfotache/how-to-train-an-image-classifier-in-pytorch-and-use-it-to-perform-basic-inference-on-single-images-99465a1e9bf5如果你剛剛開始使用PyTorch並想學習如何進行基本的圖像分類,那麼你可以參考本教程。
  • 手把手教你用PyTorch實現圖像分類器(第一部分)
    最後一個項目是用PyTorch創建一個102種不同類型的花的圖像分類器。在做這個final project的時候,很多同學都遇到了類似的問題和挑戰。當我接近完成的時候,我決定與大家分享一些在未來對他人有益的建議和見解。通過3篇短文,介紹如何實現圖像分類器的概念基礎——這是一種能夠理解圖像內容的算法。
  • Facebook 發布 Detectron2:基於 PyTorch 的新一代目標檢測工具
    雷鋒網 AI 開發者按:Detectron 是 FAIR 在 2018 年初公開的目標檢測平臺,包含了大量業內最具代表性的目標檢測、圖像分割、關鍵點檢測算法,該框架主要基於 python 和 caffe2 實現,開源項目已獲得了超 2.2w 的星標數。
  • 深度學習新應用:在PyTorch中用單個2D圖像創建3D模型
    選自Medium作者:Phúc Lê機器之心編譯參與:李詩萌、王淑婷深度學習在諸多 2D 圖像任務中表現出色,毋庸置疑。但如何將它應用於 3D 圖像問題中呢?文本通過探索,將深度學習擴展到了單個 2D 圖像的 3D 重建任務中,並成功實現了這一應用。
  • 速度、準確率與泛化性能媲美SOTA CNN,Facebook開源高效圖像...
    最近,Facebook 研究人員提出一項新技術——數據高效圖像 Transformer (DeiT),該方法所需的數據量和計算資源更少,且能產生高性能的圖像分類模型。Transformer 是自然語言處理領域的主流方法,在多項任務中實現了 SOTA 結果。
  • PyTorch中使用DistributedDataParallel進行多GPU分布式模型訓練
    分布式訓練是使用多個GPU和/或多個機器訓練深度學習模型的技術。 分布式訓練作業使您能夠克服單GPU內存瓶頸,通過同時利用多個GPU來開發更大,功能更強大的模型。這篇文章是使用torch.nn.parallel.DistributedDataParallel API在純PyTorch中進行分布式訓練的簡介。
  • 輕鬆學Pytorch-使用ResNet50實現圖像分類
    Hello大家好,這篇文章給大家詳細介紹一下pytorch中最重要的組件torchvision,它包含了常見的數據集、模型架構與預訓練模型權重文件、常見圖像變換、計算機視覺任務訓練。可以是說是pytorch中非常有用的模型遷移學習神器。本文將會介紹如何使用torchvison的預訓練模型ResNet50實現圖像分類。
  • Facebook 開源 3D 深度學習函數庫 PyTorch3D
    新酷產品第一時間免費試玩,還有眾多優質達人分享獨到生活經驗,快來新浪眾測,體驗各領域最前沿、最有趣、最好玩的產品吧~!下載客戶端還能獲得專享福利哦!不過即便有豐富深度學習技術積累的Facebook,在面對3D的深度學習問題時依然會被困擾。Facebook表示,之所以深度學習技術較少用於3D場景,是因為缺乏足夠的工具和資源來支撐神經網絡與3D數據結合使用的複雜性,這種場景要求更多的內存與更高的算力,不像2D圖像可以使用張量表示,而且許多傳統圖形運算符不可微分,因此3D深度學習技術的研究受到了限制。
  • 雲計算學習:用PyTorch實現一個簡單的分類器
    主要流程分為以下三個部分:1,自定義生成一個訓練集,具體為在二維平面上的一些點,分為兩類;2,構建一個淺層神經網絡,實現對特徵的擬合,主要是明白在 pytorch 中網絡結構如何搭建;3,完成訓練和測試部分的工作,熟悉 pytorch 如何對網絡進行訓練和測試。1.
  • 基於PyTorch的CV模型框架,北大學生出品TorchCV
    機器之心整理參與:張倩、澤南在機器學習帶來的所有顛覆性技術中,計算機視覺領域吸引了業內人士和學術界最大的關注。剛剛推出 1.3 正式版的 PyTorch 風頭正勁,人們已經圍繞這一深度學習框架開發出了越來越多的工具。最近,一個名為 TorchCV 的計算機視覺模型框架站上了 GitHub 趨勢榜。
  • 二分類、多分類、回歸任務,一個項目get競賽必備模型
    機器之心報導機器之心編輯部數據挖掘類比賽必備模型,四種實現方法,你值得擁有。數據科學競賽是學習各類算法、深入理解數據科學、提升和挑戰自己的絕佳機會,而這些競賽中有一些常用的模型。近日,有開發者在 GitHub 上開源了一個包含數據挖掘類比賽常用模型的項目,主要涵蓋二分類、多分類以及回歸任務。項目代碼全部使用 Python 實現。
  • PyTorch實現TPU版本CNN模型
    隨著深度學習模型在各種應用中的成功實施,現在是時候獲得不僅準確而且速度更快的結果。為了得到更準確的結果,數據的大小是非常重要的,但是當這個大小影響到機器學習模型的訓練時間時,這一直是一個值得關注的問題。為了克服訓練時間的問題,我們使用TPU運行時環境來加速訓練。為此,PyTorch一直在通過提供最先進的硬體加速器來支持機器學習的實現。
  • 分享一個PyTorch醫學圖像分割開源庫
    分享一位52CV粉絲Ellis開發的基於PyTorch的專注於醫學圖像分割的開源庫,其支持模型豐富,方便易用。其可算為torchio的一個實例,作者將其綜合起來,包含眾多經典算法,實用性比較強。地址在這裡:https://github.com/MontaEllis/Pytorch-Medical-Segmentation該庫特點:支持2D和3D醫學圖像分割,可以修改hparam.py文件來確定是2D分割還是3D分割以及是否可以進行多分類
  • 保護隱私快速訓練,Facebook開源Opacus,用差分隱私訓練PyTorch
    那麼,如何方便地使用差分隱私來訓練機器學習模型呢?近日,Facebook 開源了 Opacus 庫,支持以這種方式訓練 PyTorch 模型。近日,Facebook 開源了一個新型庫 Opacus,它支持使用差分隱私來訓練 PyTorch 模型,擴展性優於目前的 SOTA 方法。
  • 基於PyTorch圖像特徵工程的深度學習圖像增強
    我們還將實現這些圖像增強技術,以使用PyTorch構建圖像分類模型。目錄為什麼需要圖像增強?不同的圖像增強技術選擇正確的增強技術的基本準則案例研究:使用圖像增強解決圖像分類問題為什麼需要圖像增強?深度學習模型通常需要大量的數據來進行訓練。通常,數據越多,模型的性能越好。但是獲取海量數據面臨著自身的挑戰。不是每個人都有大公司的雄厚財力。
  • PyTorch更新!谷歌幫助開發,正式支持TensorBoard | 5大開源項目
    同時,他們也分享了Facebook在自家程序中應用AI的情況,以及對AI研究的展望。分布式訓練:改進了常見模型(如CNN)的性能,增加了對多設備模塊的支持,包括在仍使用分布式數據並行(DDP)的情況下跨GPU分割模型的能力,以及對並非所有參數都用於每次迭代的模塊的支持(如控制流,如自適應SoftMax等)。
  • 一行代碼即可調用18款主流模型!PyTorch Hub輕鬆解決論文可復現性
    很多論文選擇隨文附上代碼和訓練模型,在一定程度上對使用者起到了幫助作用,但成效並不明顯。復現過程中,仍有大量工作需要論文讀者自己摸索。PyTorch Hub是什麼?近日,Facebook新推出了一個深度學習工具包:PyTorch Hub,這是一個簡單的API和工作流,提供基本的構建模塊從而可以改善機器學習研究的可重現性。
  • Pytorch-Transformers 1.0 發布,支持六個預訓練框架,含 27 個預...
    哪些支持PyTorch-Transformers(此前叫做pytorch-pretrained-bert)是面向自然語言處理,當前性能最高的預訓練模型開源庫。27個預訓練模型項目中提供了27個預訓練模型,下面是這些模型的完整列表,以及每個模型的簡短介紹。
  • 使用PyTorch 檢測眼部疾病
    深度學習是當今普遍存在的一種學習方式,它被廣泛應用於從圖像分類到語音識別的各個領域。在這篇文章中,我將向你展示如何構建一個簡單的神經網絡,用PyTorch從視網膜光學相干斷層掃描圖像中檢測不同的眼部疾病。 數據集 OCT 是一種成像技術,用於捕捉活體患者視網膜的高解析度橫截面。