視覺工具包torchvision重大更新:支持分割模型、檢測模型

2021-01-11 量子位

慄子 發自 凹非寺量子位 出品 | 公眾號 QbitAI

PyTorch宣布了視覺工具包torchvision的重大更新。

終於來到torchvision 0.3了。

這次,工具包裡增加了許多新模型:做語義分割的,做目標檢測的,做實例分割的……

也增加了許多數據集,比如ImageNet,CelebA,Caltech 101等等等等。

另外,torchvision還有了不少視覺專用的C++/Cuda算子。

消息一出,小夥伴們紛紛奔走相告。

現在,來仔細觀察一下,新的torchvision都有哪裡變強了。

哪些功能是新來的?

訓練/評估腳本

現在,reference/文件夾地下,提供了訓練和評估用的腳本,支持許多任務:

分類、語義分割、目標檢測、實例分割,以及人物關鍵點檢測。

這些腳本可以當做log:寫著某一個特定的模型要怎樣訓練,並且提供了基線。有了這份快速指引,便於順利展開研究。

torchvision算子

就像開頭提到的那樣,torchvision這次有了定製的C++/CUDA算子,計算機視覺專用。

有了這些算子,搭建目標檢測模型就更加輕鬆了:

· roi_pool (以及模塊版本RoIPool)· roi_align (以及模塊版本RoIAlign)· nms,給邊界框做非極大抑制 (Non-Maximum Suppression用的)· box_iou,用來計算兩組邊界框之間的交集· box_area, 用來計算一組邊界框的面積

等到下次更新,這些算子就會支持PyTorch腳本模式了。

至於這些算子怎麼用,官方給出了一些例子:

哪些模型是新來的?

既然,目標檢測、實例分割,以及人物關鍵點檢測模型的支持,全部是最新加入的。

那麼,就來看看增加了哪些模型吧:

分割模型

官方博客寫到,torchvision 0.3新加入了FCN和DeepLabV3分割模型,用了ResNet50和ResNet101骨架。

ResNet101有預訓練的權重可用,是在COCO train2017數據集的一個子集上訓練的,20個類別和Pascal VOC一致:

檢測模型

torchvision 0.3新包含了預訓練的Faster R-CNN、Mask R-CNN以及Keypoint R-CNN。

官方還提到,各種模型的實現都很快,尤其是訓練過程很快。

(團隊用了8個V100 GPU,帶有CUDA 10.0和CUDNN 7.4的那種。訓練中每個GPU的批尺寸是2,測試中的批尺寸是1。)

速度如下,都是毫秒級:

而且,只要寫幾行代碼,就可以直接加載、運行那些預訓練的檢測模型與分割模型了:

import torchvisionmodel = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)# set it to evaluation mode, as the model behaves differently# during training and during evaluationmodel.eval()image = PIL.Image.open('/path/to/an/image.jpg')image_tensor = torchvision.transforms.functional.to_tensor(image)# pass a list of (potentially different sized) tensors# to the model, in 0-1 range. The model will take care of# batching them together and normalizingoutput = model([image_tensor])# output is a list of dict, containing the postprocessed predictions

分類模型

新加入的分類模型有這些:

· GoogLeNet (Inception v1)· MobiliNet V2· ShuffleNet v2· ResNeXt-50 32x4d,以及ResNeXt-101 32x8d

哪些數據集是新來的?

先看人臉數據集,加入了這些:

Caltech101,Caltech256,以及CelebA

然後,ImageNet也加入了。

還有,Semantic Boundaries Dataset(語義邊界數據集) 。

以及,VisionDataset,作為各種數據集的基類 (base class) 。

快去用一下

如果你還有什麼疑問,可以觀察更詳細的發布說明。

如果你不知道怎麼用,可以服用Colab教程。

如果你已經準備好了,就開始用新的torchvision去做項目吧。

torchvision 0.3.0

https://pypi.org/project/torchvision/

Colab教程:

https://colab.research.google.com/github/pytorch/vision/blob/temp-tutorial/tutorials/torchvision_finetuning_instance_segmentation.ipynb

詳細的發布說明:

https://github.com/pytorch/vision/releases

相關焦點

  • Unity Perception工具 | 使用合成數據訓練出強大的物體檢測ML模型
    如今,這些問題,尤其是對象檢測,有了一個全新的解決方案:藉助軟體生成大量的合成數據集。合成數據的出現降低了大量搜集帶標籤數據集的難度,可輔助機器學習模型的訓練。  本文屬於「使用Unity生成合成數據」系列第三篇。在第一篇中,我們討論了在為計算機視覺訓練機器學習模型時,搜集大量帶標籤圖像會面臨的。最近,我們又展示了如何使用Unity的認知訓練工具來。
  • 一行代碼即可調用18款主流模型!PyTorch Hub輕鬆解決論文可復現性
    很多論文選擇隨文附上代碼和訓練模型,在一定程度上對使用者起到了幫助作用,但成效並不明顯。復現過程中,仍有大量工作需要論文讀者自己摸索。PyTorch Hub是什麼?近日,Facebook新推出了一個深度學習工具包:PyTorch Hub,這是一個簡單的API和工作流,提供基本的構建模塊從而可以改善機器學習研究的可重現性。
  • 兩行代碼統計模型參數量與FLOPs,這個PyTorch小工具值得一試
    機器之心報導參與:思源你的模型到底有多少參數,每秒的浮點運算到底有多少,這些你都知道嗎?近日,GitHub 開源了一個小工具,它可以統計 PyTorch 模型的參數量與每秒浮點運算數(FLOPs)。有了這兩種信息,模型大小控制也就更合理了。其實模型的參數量好算,但浮點運算數並不好確定,我們一般也就根據參數量直接估計計算量了。
  • 輕鬆學Pytorch –Mask-RCNN圖像實例分割
    Pytorch中使用Mask-RCNN實現實例分割,是基於torchvision的預訓練模型庫,首先需要下載預訓練模型,並檢查是否可以支持GPU推理,相關的代碼如下:model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)model.eval
  • 60分鐘入門深度學習工具PyTorch
    你已知道autograd包,nn包依賴autograd包來定義模型並求導.一個nn.Module包含各個層和一個forward(input)方法,該方法返回output.例如,我們來看一下下面這個分類數字圖像的網絡.
  • PyTorch模型訓練特徵圖可視化(TensorboardX)
    這裡就要用到 torchvision.utils.make_grid( )函數,把輸入的特徵圖做一個歸一化,把參數normalize設置為True即可,它能幫我們把數據的輸入範圍調整至[0, 1]之間def make_grid(tensor, nrow=8, padding=2,
  • 資源| Python上的圖模型與概率建模工具包:pomegranate
    pomegranate 的模塊化本質意味著大家現在可以把缺失值支持和其他功能結合起來用。例如,你可以輕鬆添加多線程以加快模型速度,或者使用不完整的數據集進行 out-of-core 學習,或用不完整的數據和標籤進行半監督學習。複製該 GitHub repo 或者運行 pip install pomegranate 即可安裝 pomegranate。
  • 如何在PyTorch和TensorFlow中訓練圖像分類模型
    介紹圖像分類是計算機視覺的最重要應用之一。它的應用範圍包括從自動駕駛汽車中的物體分類到醫療行業中的血細胞識別,從製造業中的缺陷物品識別到建立可以對戴口罩與否的人進行分類的系統。在所有這些行業中,圖像分類都以一種或另一種方式使用。他們是如何做到的呢?他們使用哪個框架?
  • PyTorch最新:支持分布式模型並行、Java程序、移動端等多項新功能
    本次更新是最後一個支持 Python2 的版本,同時增加了對分布式模型並行、移動端、Java 程序等方面的支持。支持分布式模型並行訓練1.4 版最大的亮點在於對分布式模型並行訓練增加了支持。官方表示,隨著 RoBERTa 等萬億級別參數的大型模型出現,人們越來越需要模型並行訓練了。因此本次版本會提供一個分布式 RPC(Romote Procedure Call)框架。這一框架可以遠程運行函數,在不複製真實數據的情況下查詢遠程對象。
  • 紐勱科技詳解視覺感知:視覺模型上線是一個閉環迭代過程
    雷鋒網旗下會員組織「AI投研邦」「大咖Live」第50講,紐勱科技計算機視覺研發總監成二康帶來關於《自動駕駛系統研發:詳解視覺感知模塊》的主題分享,圍繞自動駕駛的視覺感知、基於深度學習的目標檢測和圖像分割任務、紐勱科技如何以數據助力自動駕駛感知模塊研發三方面進行了介紹。
  • 從R-CNN到YOLO,一文帶你了解目標檢測模型(附論文下載)
    它是將CNN用於對象檢測的起源,能夠基於豐富的特徵層次結構進行目標精確檢測和語義分割來源。如何確定這些邊界框的大小和位置呢?R-CNN網絡是這樣做的:在圖像中提出了多個邊框,並判斷其中的任何一個是否對應著一個具體對象。
  • PyTorch中使用DistributedDataParallel進行多GPU分布式模型訓練
    在數據並行化中,模型訓練作業是在數據上進行分割的。作業中的每個GPU接收到自己獨立的數據批處理切片。每個GPU使用這些數據來獨立計算梯度更新。例如,如果你要使用兩個GPU和32的批處理大小,一個GPU將處理前16條記錄的向前和向後傳播,第二個處理後16條記錄的向後和向前傳播。這些梯度更新然後在gpu之間同步,一起平均,最後應用到模型。
  • PyTorch更新!谷歌幫助開發,正式支持TensorBoard | 5大開源項目
    下面,我們一個個來看~Pytorch大更新與2018年12月正式發布的Pytorch1.0相比,這次發布的1.1版本提高了性能,並增加了新的模型理解和可視化工具,來提高可用性,還提供了新的API。現在,Pytorch使用一個簡單的「from torch.utils.TensorBoard import SummaryWriter」命令來支持TensorBoard。其他的更新還有:Jit編譯器:改進了Just-in-time(JIT)編譯。
  • 谷歌開源語義圖像分割模型:該領域當前最優模型
    剛剛,谷歌開源了語義圖像分割模型 DeepLab-v3+,DeepLab-v3+結合了空間金字塔池化模塊和編碼器-解碼器結構的優勢,是自三年前的 DeepLab 以來的最新、性能最優的版本。分配這些語義標籤的時候需要精準定位目標的輪廓,因此相比其他的視覺實體識別任務(如圖像級分類或邊界框級檢測等),該任務需要更高的定位準確率。今天,谷歌開源了其最新、性能最優的語義圖像分割模型 DeepLab-v3+ [1],該模型使用 TensorFlow 實現。
  • 使用PyTorch實現鳥類音頻檢測卷積網絡模型
    以及為什麼鳥類的聲音檢測對我們環境的未來如此重要介紹你聽說過自動語音識別,你聽說過音樂標籤和生成,但是你聽說過鳥的聲音檢測嗎?大約在一年前,在我高二的時候,我第一次聽到這種音頻深度學習的用例。事實上,鳥音頻檢測是我做深度學習和計算機科學的第一個項目。我參與了一個研究項目,在北阿拉斯加的郊區用純粹的聲音來探測鳥類的存在。
  • 大數據分析使用torchlayers構建PyTorch模型
    torchlayers的目的是做Keras為TensorFlow做的事情,提供更高級別的模型構建API以及一些方便的默認值和附加組件,這些組件和附加組件可用於製作PyTorch神經網絡。通過在線搜索判斷,PyTorch繼續受到廣泛關注,並且更重要的是,它的採用率不斷提高。
  • 計算機視覺:圖像檢測和圖像分割有什麼區別?
    字幕組雙語原文:計算機視覺:圖像檢測和圖像分割有什麼區別?英語原文:What is the difference between Object Detection and Image Segmentation?翻譯:雷鋒字幕組(明明知道)人工智慧中的圖像處理人工智慧對於圖像處理有不同的任務。