PyTorch 視覺工具包 torchvision 重大更新:支持分割模型、檢測模型,還有許多數據集

2021-02-19 AI有道

重磅乾貨,第一時間送達

本文轉載自量子位,禁二次轉載


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

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

終於來到torchvision 0.3了。

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

也增加了許多數據集,比如ImageNetCelebACaltech 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腳本模式了。

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

1import torch
2import torchvision
3
4
5boxes = torch.rand(10, 4) * 100
6
7boxes[:, 2:] += boxes[:, :2]
8
9image = torch.rand(1, 3, 200, 200)
10
11
12pooled_regions = torchvision.ops.roi_align(image, [boxes], output_size=(3, 3))
13
14print(pooled_regions.shape)
15
16
17
18
19print(torchvision.ops.box_iou(boxes, boxes).shape)
20

哪些模型是新來的?

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

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

分割模型

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

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

檢測模型

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

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

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

速度如下,都是毫秒級

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

1import torchvision
2
3model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)
4
5
6model.eval()
7
8image = PIL.Image.open('/path/to/an/image.jpg')
9image_tensor = torchvision.transforms.functional.to_tensor(image)
10
11
12
13
14output = model([image_tensor])
15

分類模型

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

· 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

作者系網易新聞·網易號「各有態度」籤約作者

覺得這篇文章有幫助?請轉發給更多人

關注 AI有道 加星標,獲取最新 AI 乾貨

最新 AI 乾貨,我在看❤️

相關焦點

  • 視覺工具包torchvision重大更新:支持分割模型、檢測模型,還有許多數據集
    慄子 發自 凹非寺量子位 出品 | 公眾號 QbitAIPyTorch宣布了視覺工具包torchvision
  • TorchVision0.3來了!支持多種目標檢測、語義與實例分割模型等
    torchvision的重大更新。這次,工具包裡增加了許多新模型:做語義分割的,做目標檢測的,做實例分割的……現在,來仔細觀察一下,新的torchvision都有哪裡變強了。哪些功能是新來的?訓練/評估腳本現在,reference/文件夾地下,提供了訓練和評估用的腳本,支持許多任務:分類、語義分割、目標檢測、實例分割,以及人物關鍵點檢測。這些腳本可以當做log:寫著某一個特定的模型要怎樣訓練,並且提供了基線。
  • 【小白學PyTorch】5.torchvision預訓練模型與數據集全覽
    文章目錄:1 torchvision.datssets2 torchvision.models模型比較本文建議複製代碼去跑跑看,增加一下手感。如果有些數據需要科學上網,公眾號回復【torchvision】獲取代碼和數據。
  • 小白學PyTorch | 5 torchvision預訓練模型與數據集全覽
    文章目錄:1 torchvision.datssets2 torchvision.models模型比較本文建議複製代碼去跑跑看,增加一下手感。公眾號回復【torchvision】獲取代碼和數據。翻譯過來就是:torchvision包由流行的數據集、模型體系結構和通用的計算機視覺圖像轉換組成。
  • 【pytorch】常用圖像處理與數據增強方法合集(torchvision.transforms)
    這個基本上每個數據集都會用到。參數不用給參數。標準化torchvision.transforms.Normalize(mean, std, inplace=False)描述用均值和標準差標準化數據,將數據映射到區間[-1, 1],能加快模型的收斂速度,一般加到
  • 輕鬆學 Pytorch:行人檢測 Mask-RCNN 模型訓練與使用
    大家好,這個是輕鬆學Pytorch的第20篇的文章分享,主要是給大家分享一下,如何使用數據集基於Mask-RCNN訓練一個行人檢測與實例分割網絡。這個例子是來自Pytorch官方的教程,我這裡是根據我自己的實踐重新整理跟解讀了一下,分享給大家。前面一篇已經詳細分享了關於模型本身,格式化輸入與輸出的結果。
  • 在C++平臺上部署PyTorch模型流程+踩坑實錄
    >>加入極市CV技術交流群,走在計算機視覺的最前沿最近因為工作需要,要把pytorch的模型部署到c++平臺上,基本過程主要參照官網的教學示例,期間發現了不少坑,特此記錄。libtorch不依賴於python,python訓練的模型,需要轉換為script model才能由libtorch加載,並進行推理。
  • 輕鬆學Pytorch – 行人檢測Mask-RCNN模型訓練與使用
    大家好,這個是輕鬆學Pytorch的第20篇的文章分享,主要是給大家分享一下,如何使用數據集基於Mask-RCNN訓練一個行人檢測與實例分割網絡。這個例子是來自Pytorch官方的教程,我這裡是根據我自己的實踐重新整理跟解讀了一下,分享給大家。前面一篇已經詳細分享了關於模型本身,格式化輸入與輸出的結果。
  • 如何使用TensorRT對訓練好的PyTorch模型進行加速?
    但是TensorRT坑爹的地方在於,有些模型操作是不支持的、又或者就算支持但是支持並不完善,對於這些難題,要麼自己寫插件,要麼就只能等待官方的更新了。現在我們訓練深度學習模型主流的框架有tensorflow,pytorch,mxnet,caffe等。
  • 常見模型加載運行與轉換
    ,形式上類似於字典,key為數據集名稱,value為數據集即np數組1. test = np.load(「0.npz」)  2. :1)模型網絡結構和參數分別加載import torchimport torchvision.models as models# pretrained為True表示使用預訓練的模型,意思是將模型在之前數據集上訓練的參數作為當前模型的初始參數,在模型二次調優上常常使用,但在推理流程中一般不使用,這裡就沒有使用net = models.resnet34
  • 京東開源PyTorch人臉識別工具包FaceX-Zoo:覆蓋最強模型,支持訓練跑分
    但是人臉識別模型的實際部署和深入研究都需要相應的公眾支持。例如生產級人臉表示網絡需要模塊化的訓練機制,以配合不同 SOTA 骨幹網絡、訓練監督主題再到現實世界人臉識別需求。至於性能分析和比較,基於多個基準的大量模型也需要一個標準和自動化的評估工具。此外,人們希望能夠出現一種以整體流水線形式部署的人臉識別公共基礎。
  • Pytorch筆記:03 torch.nn模型定義
    但是,考慮到語義分割跑起來會有些許費勁,不適合於閱讀理解(藉口)。所以以波士頓房價數據為例來了解torch.nn中的模型定義模塊。」波士頓房價數據集一覽如果我沒記錯的話,Kaggle(數據科學競賽平臺)上應該有一個波士頓房價預測的實戰比賽。所以當我看到此數據集的時候百感交集,倒不是因為參加過Kaggle的比賽
  • 60分鐘入門深度學習工具-PyTorch
    net.zero_grad()out.backward(torch.randn(1, 10))torch.nn 只支持小批量輸入,整個torch.nn包都只支持小批量樣本,而不支持單個樣本如果你有單個樣本,只需使用input.unsqueeze(0)來添加其它的維數.
  • 【他山之石】pytorch計算模型FLOPs和Params
    為此,我們特別搜集整理了一些實用的代碼連結,數據集,軟體,編程技巧等,開闢「他山之石」專欄,助你乘風破浪,一路奮勇向前,敬請關注。地址:https://www.zhihu.com/people/zhuang-ming-xi-31-16網絡框架模型計算量影響到模型的推斷時間,模型的參數量對設備內存有要求,為了進行模型比較給大家介紹兩種計算FLOPs和Params實用的小工具:01https://github.com
  • 一份超全的PyTorch資源列表(GitHub 2.2K Stars)
    該部分項目涉及語音識別、多說話人語音處理、機器翻譯、共指消解、情感分類、詞嵌入/表徵、語音生成、文本語音轉換、視覺問答等任務,其中有一些是具體論文的 PyTorch 復現,此外還包括一些任務更廣泛的庫、工具集、框架。
  • 一個maskrcnn的目標檢測和實例分割的小例子
    關於如何利用遷移學習來訓練自己的數據集,這裡也給出兩個超讚的教程:教程一:TORCHVISION 目標檢測網絡微調教程二:手把手教你訓練自己的Mask R-CNN圖像實例分割模型(PyTorch官方教程)教程三:TorchVision之MaskRCNN訓練(推薦)看完以上三個教程,基本上利用Pytorch中的Torchvision.model
  • PyTorch模型訓練特徵圖可視化(TensorboardX)
    0、前言本文所有代碼解讀均基於PyTorch 1.0,Python3;本文為原創文章,初次完成於2019.03,最後更新於2019.09;最近復現的一篇論文一直都難以work,上了特徵圖可視化後一下子就找到了問題所在,所以今天想梳理一下PyTorch裡面的特徵圖可視化。
  • 如何利用DeepLab V3進行圖像語義分割
    圖像分割最近成為了一個熱度很高的話題。涉及到分割的各種實例在不同領域裡層出不窮:機器視覺、醫療成像、物體檢測、識別任務、交通控制系統、視頻監控等等。這些智能系統背後的關鍵是捕捉形成圖像的不同組成部分,從而教會計算機視覺模型掌握更多的洞察力,更好地理解場景和上下文。
  • 微軟發布視覺模型ResNet-50
    微軟在2月3日公開了其視覺模型ResNet-50,該模型是微軟必應的多媒體組創建的一個大型預訓練視覺模型,利用搜尋引擎的網絡尺度圖像數據建立,以便為其圖像搜索和視覺搜索提供動力
  • onnx實現對pytorch模型推理加速
    2.torch.load:使用pickle unpickle工具將pickle的對象文件反序列化為內存。如果不這樣做,將會產生不一致的推斷結果#在保存用於推理或恢復訓練的通用檢查點時,必須保存模型的state_dictPytorch模型轉onnx舉例模型是調用resnet50訓練的4分類模型,訓練過程調用gpu,則轉換過程如下:1 如果保存的是整個模型import torchdevice = torch.device