當前位置:
首頁 > 科技 > 資源 | 用PyTorch搞定GluonCV預訓練模型,這個計算機視覺庫真的很好用

資源 | 用PyTorch搞定GluonCV預訓練模型,這個計算機視覺庫真的很好用


機器之心編輯


參與:思源





今年上半年,DMLC 團隊發布了簡單易用的計算機視覺工具箱 GluonCV,它繼承了 MXNet 動態圖介面 Gluon 的優良傳統,並能使用簡單易用的 API 快速構建複雜的深度神經網路。這一工具非常好用,因此很多研究者希望在 PyTorch 等其它框架上調用它。Amazon AI 的應用科學家張航博士將 GluonCV 轉換為了 PyTorch 版工具,從而能直接在 PyTorch 上調用圖像分類和語義分割等各種預訓練模型。




項目地址:https://github.com/zhanghang1989/gluoncv-torch



張航博士是 DMLC 團隊成員,在 GluonCV 的 Contributors 中可以看到他的貢獻量很高,因此他完成的 GluonCV-Torch 庫是非常值得嘗試的一項工具。在本文中,我們不僅會簡要介紹 GluonCV-Torch 及它的使用,同時還會簡單地試用這些預訓練模型,包括 DeepLabV3 語義分割模型。







GluonCV-Torch 簡介



目前 GluonCV 已經包含非常多的預訓練模型與 CV 工具,包括 50 多種圖像分類模型、SSD 和 Yolo-v3 等目標檢測模型、FCN 和 DeepLab-v3 等語義分割模型,除此之外還有實例分割、生成對抗網路和行人再識別等模型。而目前 GluonCV-Torch 主要提供了圖像分類與語義分割兩部分的預訓練模型,其中分類模型都是在 ImageNet 實現的預訓練,而語義分割模型分別在 Pascal VOC 和 ADE20K 實現預訓練。







安裝 GluonCV-Torch 的安裝方法非常簡單,只要我們預先安裝了 PyTorch 就行了:



pip install gluoncv-torch



如果在 PyTorch 中載入 GluonCV,我們可以簡單地導入 gluoncvth 模塊,並從該模塊調用比 torchvision 中更好的預訓練模型:



import

 gluoncvth 

as

 gcv

model = gcv.models.resnet50(pretrained=

True

)



對於圖像分類方面的預訓練模型,GluonCV-Torch 以便捷的介面提供了準確率非常高的預訓練模型。如下所示為不同預訓練模型的效果:






對於語義分割模型,GluonCV-Torch 主要支持預訓練的 FCN、PSPNet 和 DeepLab-V3,其中 DeepLab-V3 是非常常用的開源模型,它在語義分割任務上有非常好的效果。如下展示了這三種模型在 Pascal VOC 數據集中的預訓練效果,其中 Pascal VOC 包含 20 種類別的圖像:







以下展示了三種語義分割模型在 ADE20K 數據集的效果,其中 ADE20K 為 MIT 發布的場景解析數據集,該數據集包含多種情景,包括人物、背景和物體等。






GluonCV-Torch 使用




在該項目中,張航展示了一個簡單的使用示例,其調用了在 ADE20K 數據集上預訓練的 DeepLabV3 語義分割模型。



import

 torch

import

 gluoncvth

# Get the model


model = gluoncvth.models.get_deeplab_resnet101_ade(pretrained=

True

)
model.eval()

# Prepare the image


url = 

"https://github.com/zhanghang1989/image-data/blob/master/encoding/"

 + 
    

"segmentation/ade20k/ADE_val_00001142.jpg?raw=true"


filename = 

"example.jpg"


img = gluoncvth.utils.load_image(
    gluoncvth.utils.download(url, filename)).unsqueeze(

0

)

# Make prediction


output = model.evaluate(img)
predict = torch.max(output, 

1

)[

1

].cpu().numpy() + 

1

# Get color pallete for visualization


mask = gluoncvth.utils.get_mask_pallete(predict, 

"ade20k"

)
mask.save(

"output.png"

)



運行上面的代碼會自動從 AWS 雲儲存上下載 200 多兆的預訓練模型,國內的下載可能會比較慢,我們可以使用其它工具下載並解壓到對應文件夾。機器之心在 PyTorch 0.4.1 的環境下可以安裝 GluonCV-Torch,並成功運行,我們在 CPU 上推斷一張圖片的時間約為 70 多秒,在 GPU(K80)上的推斷時間為 10 多秒。




如果我們要推斷其它的圖像或使用其它預訓練模型,可以直接修改 load_image 的圖像路徑和 gluoncvth.models 就可以了。




API Reference




以上只是兩個簡單的示例,更多的模型和用法還需要根據實際情況修改。以下展示了目前 GluonCV-Torch 的主要模型 API:




ResNet






  • gluoncvth.models.resnet18(pretrained=True)



  • gluoncvth.models.resnet34(pretrained=True)



  • gluoncvth.models.resnet50(pretrained=True)



  • gluoncvth.models.resnet101(pretrained=True)



  • gluoncvth.models.resnet152(pretrained=True)




FCN






  • gluoncvth.models.get_fcn_resnet101_voc(pretrained=True)



  • gluoncvth.models.get_fcn_resnet101_ade(pretrained=True)




PSPNet






  • gluoncvth.models.get_psp_resnet101_voc(pretrained=True)



  • gluoncvth.models.get_psp_resnet101_ade(pretrained=True)




DeepLabV3






  • gluoncvth.models.get_deeplab_resnet101_voc(pretrained=True)



  • gluoncvth.models.get_deeplab_resnet101_ade(pretrained=True)






本文為機器之心編輯,

轉載請聯繫本公眾號獲得授權



?------------------------------------------------


加入機器之心(全職記者 / 實習生):hr@jiqizhixin.com


投稿或尋求報道:

content

@jiqizhixin.com


廣告 & 商務合作:bd@jiqizhixin.com

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

資源 | 來自獨秀同學的深度網路數學筆記,還不快收藏?
對抗樣本攻防戰,清華大學TSAIL團隊再獲CAAD攻防賽第一

TAG:機器之心 |