如何將pytorch檢測(cè)模型通過(guò)docker部署到服務(wù)器

向AI轉(zhuǎn)型的程序員都關(guān)注了這個(gè)號(hào)??????
人工智能大數(shù)據(jù)與深度學(xué)習(xí) ?公眾號(hào):datayx
本文記錄下如何使用docker部署pytorch文本檢測(cè)模型到服務(wù)器,
。鏡像文件也上傳到docker hub了,可以一步步運(yùn)行起來(lái),不過(guò)需要先安裝好docker。docker的安裝可參考官方文檔。https://docs.docker.com/docker-for-windows/install/
docker制作深度學(xué)習(xí)鏡像(以windows環(huán)境下為例)

搭建服務(wù)端API
為了便于測(cè)試,可以先使用Flask搭建一個(gè)簡(jiǎn)易版本文本檢測(cè)服務(wù)器,服務(wù)端創(chuàng)建接口部分代碼如下:


其中主要的是detection函數(shù),接收的圖像為numpy array格式,通道為BGR;輸出為檢測(cè)的文本框,shape為(#boxes, 8),8代表四個(gè)點(diǎn)的橫縱坐標(biāo),從左上角開(kāi)始順時(shí)針排序。
PAGE是一個(gè)簡(jiǎn)單的網(wǎng)頁(yè),創(chuàng)建表單??稍跒g覽器中進(jìn)行驗(yàn)證,也可以通過(guò)腳本驗(yàn)證,后面詳述。
創(chuàng)建鏡像
需要先編寫(xiě)Dockerfile文件:

gaolijun/pytorch:1.2-cuda10.0-cudnn7-cv-flask-py3.6?是另一個(gè)自定義創(chuàng)建的鏡像,安裝的Python版本為3.6,pytorch版本為1.2,cuda版本為10.0;并且已經(jīng)安裝好了opencv和flask,以及其他一些常用庫(kù),比如numpy等等,該鏡像做了許多精簡(jiǎn),保證了搭建pytorch和flask服務(wù)所需的功能,文件并不很大。為了省事兒,直接在這上面搭建幾層。
設(shè)置docker開(kāi)放的端口為5000,后面可以在運(yùn)行的主機(jī)上進(jìn)行映射。
然后將需要的文本拷貝進(jìn)去,其中detection_api提供上面的detection函數(shù),可以看成黑盒子,輸入是圖像,輸出為該圖像上檢測(cè)得到的所有文本框。
安裝額外的依賴包:Shapely和pyclipper,這在?gaolijun/pytorch:1.2-cuda10.0-cudnn7-cv-flask-py3.6?中沒(méi)有安裝,so...
在容器中運(yùn)行鏡像的時(shí)候就運(yùn)行檢測(cè)api腳本。
寫(xiě)好了Dockerfile,在DockerFile所在目錄運(yùn)行:
docker build -t detector:v1.0 .
鏡像名稱為detector,給個(gè)標(biāo)簽:v1.0,便于跟蹤管理。
拉取鏡像
我已經(jīng)將創(chuàng)建的鏡像上傳到docker hub了,可以拉取下來(lái):
docker pull laygin/detector
然后查看下全部的鏡像:

運(yùn)行docker
docker run -p 3223:5000 -d --name detector detector:v1.0
-p: 主機(jī)端口到docker容器端口的映射。所以,只要愿意,主機(jī)上可以運(yùn)行多個(gè)docker容器,指定不同的端口即可。
-d: docker容器在后臺(tái)運(yùn)行
--name: docker 容器名稱
后面跟上創(chuàng)建的鏡像,即在容器detector中運(yùn)行的鏡像detector:v1.0
或許需要?
docker container ls?來(lái)查看它或許還需要?
docker stop detector?來(lái)停止它或許也需要?
docker rm detector?來(lái)移除它,。。。。。如果沒(méi)有停掉而想直接移除或許還不行,那就加上?--force/-f?強(qiáng)制操作吧
驗(yàn)證
文本檢測(cè)服務(wù)已經(jīng)運(yùn)行起來(lái)了,要怎樣才知道有沒(méi)有運(yùn)行成功呢?這里通過(guò)兩種方式來(lái)驗(yàn)證一下。
1. 瀏覽器
提供了簡(jiǎn)易的web page,直接在瀏覽器中輸入serverIP:3223/detector,其中serverIP為運(yùn)行docker的服務(wù)器IP地址。

點(diǎn)擊Browse選擇圖像,然后點(diǎn)擊detect進(jìn)行檢測(cè),得到如下結(jié)果:

2. python腳本
通過(guò)腳本驗(yàn)證是最常用的方式了,這里寫(xiě)了一個(gè)簡(jiǎn)單的demo腳本


結(jié)果如圖所示:

原文地址:https://zhuanlan.zhihu.com/p/159191983
閱讀過(guò)本文的人還看了以下文章:
TensorFlow 2.0深度學(xué)習(xí)案例實(shí)戰(zhàn)
基于40萬(wàn)表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測(cè)
《基于深度學(xué)習(xí)的自然語(yǔ)言處理》中/英PDF
Deep Learning 中文版初版-周志華團(tuán)隊(duì)
【全套視頻課】最全的目標(biāo)檢測(cè)算法系列講解,通俗易懂!
《美團(tuán)機(jī)器學(xué)習(xí)實(shí)踐》_美團(tuán)算法團(tuán)隊(duì).pdf
《深度學(xué)習(xí)入門(mén):基于Python的理論與實(shí)現(xiàn)》高清中文PDF+源碼
python就業(yè)班學(xué)習(xí)視頻,從入門(mén)到實(shí)戰(zhàn)項(xiàng)目
2019最新《PyTorch自然語(yǔ)言處理》英、中文版PDF+源碼
《21個(gè)項(xiàng)目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實(shí)踐詳解》完整版PDF+附書(shū)代碼
《深度學(xué)習(xí)之pytorch》pdf+附書(shū)源碼
PyTorch深度學(xué)習(xí)快速實(shí)戰(zhàn)入門(mén)《pytorch-handbook》
【下載】豆瓣評(píng)分8.1,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》
《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼
汽車(chē)行業(yè)完整知識(shí)圖譜項(xiàng)目實(shí)戰(zhàn)視頻(全23課)
李沐大神開(kāi)源《動(dòng)手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材
筆記、代碼清晰易懂!李航《統(tǒng)計(jì)學(xué)習(xí)方法》最新資源全套!
《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼
將機(jī)器學(xué)習(xí)模型部署為REST API
FashionAI服裝屬性標(biāo)簽圖像識(shí)別Top1-5方案分享
重要開(kāi)源!CNN-RNN-CTC 實(shí)現(xiàn)手寫(xiě)漢字識(shí)別
同樣是機(jī)器學(xué)習(xí)算法工程師,你的面試為什么過(guò)不了?
前海征信大數(shù)據(jù)算法:風(fēng)險(xiǎn)概率預(yù)測(cè)
【Keras】完整實(shí)現(xiàn)‘交通標(biāo)志’分類(lèi)、‘票據(jù)’分類(lèi)兩個(gè)項(xiàng)目,讓你掌握深度學(xué)習(xí)圖像分類(lèi)
VGG16遷移學(xué)習(xí),實(shí)現(xiàn)醫(yī)學(xué)圖像識(shí)別分類(lèi)工程項(xiàng)目
特征工程(二) :文本數(shù)據(jù)的展開(kāi)、過(guò)濾和分塊
如何利用全新的決策樹(shù)集成級(jí)聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?
Machine Learning Yearning 中文翻譯稿
全球AI挑戰(zhàn)-場(chǎng)景分類(lèi)的比賽源碼(多模型融合)
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在線識(shí)別手寫(xiě)中文網(wǎng)站
中科院Kaggle全球文本匹配競(jìng)賽華人第1名團(tuán)隊(duì)-深度學(xué)習(xí)與特征工程
不斷更新資源
深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、python
?搜索公眾號(hào)添加:?datayx??
機(jī)大數(shù)據(jù)技術(shù)與機(jī)器學(xué)習(xí)工程
?搜索公眾號(hào)添加:?datanlp
長(zhǎng)按圖片,識(shí)別二維碼
