鍵.png)
GraphQL API滲透測試指南
從說明里面能到到,它主要是服務(wù)于Online以及Enterprise,其實(shí)就是server、portal那一套??湛谡f無憑證,我們直接從接口文檔里面看功能。
上圖中跟我們有關(guān)的是arcgis.learn(深度學(xué)習(xí))模塊,其余的部分在本文中不會(huì)提到。如果想學(xué)習(xí)的話,可以參考官網(wǎng)的教程以及示例筆記本(notebook),里面很詳細(xì)的。
其中最重要的是需要看Sample Notebooks,里面講的很全很詳細(xì)(墻裂推薦)。這個(gè)部分,可以根據(jù)自己需求選擇性的去看某一部分。
那咱們主要是深度學(xué)習(xí),就看上圖中的第三部分就好了(友情提示,第三部分很多示例筆記本)。隨便點(diǎn)一個(gè)深度學(xué)習(xí)相關(guān)的,比如說之前公眾號(hào)中寫過的《利用深度學(xué)習(xí)檢測路面損壞情況》:
還有很多機(jī)器學(xué)習(xí)相關(guān)、空間分析相關(guān)的,大家可以自己深入看一下,但是要深入看的的話需要Python基礎(chǔ)以及ArcGIS相關(guān)基礎(chǔ)。
在深度學(xué)習(xí)工作流中,老三步:樣本制作?->?模型訓(xùn)練?->?推理。其中使用ArcGIS API for Python的是模型訓(xùn)練環(huán)節(jié),其實(shí)推理階段倒不是不能使用API去做,只是你需要一個(gè)Image Server,當(dāng)然如果有多個(gè)的話,還是很推薦你使用集群去做推理的。
讓我們來看一下arcgis.learn模塊的東西:
可能會(huì)有人問,樣本轉(zhuǎn)換工具是干啥的?如果你之前沒有接觸過編程,(敲黑板)那得特意留意一下我下面講的內(nèi)容:
首先,我們使用ArcGIS Pro導(dǎo)出樣本之后,是這個(gè)樣子的:
然后,這個(gè)文件夾里面存儲(chǔ)著很多圖片,是沒辦法直接使用的,因?yàn)樗麄兪谴鎯?chǔ)在計(jì)算機(jī)磁盤空間中的。因此,要使用這些圖片、標(biāo)簽等等,就需要做轉(zhuǎn)化,將樣本文件從磁盤空間中加載到計(jì)算機(jī)內(nèi)存中。這個(gè)時(shí)候就需要用到樣本轉(zhuǎn)換工具,在Pro中工具(下圖中的訓(xùn)練深度學(xué)習(xí)模型工具)內(nèi)部其實(shí)也封裝了這個(gè)過程。
通過使用API會(huì)讓你看到更多工具內(nèi)部看不到的過程,可能第一次會(huì)有所疑惑,用多了就懂了。
關(guān)于模型那塊是干嘛的就不用我說啦吧,但是其實(shí)你發(fā)現(xiàn),ArcGIS API for Python的模型比ArcGIS?Pro中的要多很多。所以強(qiáng)烈推薦你們使用API做訓(xùn)練,因?yàn)橛懈嗄P?,而且不管是ArcGIS Pro訓(xùn)練深度學(xué)習(xí)模型工具中有沒有的模型,都可以使用Pro去做推理。唯一一個(gè)需要注意的是API與Pro的版本對(duì)應(yīng)關(guān)系,所以建議你們使用最新版本Pro。
另外,API是完全開源的,有興趣的話可以去github上查看更多源碼。
好了,看完上面之后下面可以愉快的coding了。真的很簡單,你們信我。而且簡單的同時(shí)你可以訓(xùn)練出世界頂級(jí)模型(這句話可不是我說的,是fastai作者說的)。因?yàn)閍rcgis.learn模塊內(nèi)部其實(shí)封裝的是fastai框架,這個(gè)框架的作者在kaggle上很出名的,感興趣的可以查一下。
不說那么多其他的,那就,來吧,展示:
首先打開notebook,沒有用過的可以參考我之前的文章:《為什么選擇在Jupyter Notebook中編寫代碼》,然后導(dǎo)包:
from arcgis.learn import prepare_data,UnetClassifier
其中prepare_data是樣本轉(zhuǎn)換工具,UnetClassifer是模型,在本場景中使用的是像素分類,小麥提取。你可以按照自己需求去導(dǎo)入模型,代碼上差異并不是很大。
另外不同場景的模型在之前的文章中有總結(jié)過:《ArcGIS API for Python:深度學(xué)習(xí)模塊概覽》,不熟悉的可以點(diǎn)擊查看。
然后使用prepare_data
將樣本加載到內(nèi)存中:
# path是樣本文件夾路徑
path = r'E:\deeplearning\data\dongxiaomai\xiaomai_samplearea_tra30'
data = prepare_data(path,batch_size=16,val_split_pct=0.2)
data
prepare_data方法有幾個(gè)參數(shù)需要注意一下:
path:樣本文件夾,必填。
chip_size:樣本切片大小。
val_split_pct:驗(yàn)證集劃分比重。
bach_size:批大小。
除了一個(gè)path是必填的之外,其余的都可以根據(jù)實(shí)際情況選填。除了上面幾個(gè)參數(shù)之外,接口文檔中還有更詳細(xì)的說明:
一定要學(xué)會(huì)從接口文檔中查看參數(shù)信息
在加載完數(shù)據(jù)值后,還可以查看一下我們的樣本數(shù)據(jù)大概都是啥樣的:
data.show_batch()
上圖中紅色半透明部分是我標(biāo)注的樣本,在data.show_batch方法里,會(huì)將樣本疊在原始影像上,從而很方便的查看一個(gè)batch中的數(shù)據(jù)是啥樣的。你可以多運(yùn)行幾次這行代碼看看。
數(shù)據(jù)加載完成后,便可以實(shí)例化我們的模型:
model = UnetClassifier(data)
這一步就很簡單了,直接模型括號(hào)里面填上上一部中加載的樣本對(duì)象。然后使用model.lr_find()函數(shù)查找學(xué)習(xí)率:
lr = model.lr_find()
lr
這一步是固定寫法,就是查找最合適的學(xué)習(xí)率。學(xué)習(xí)率查找完成后,便可以訓(xùn)練模型了:
model.fit(200,lr)
訓(xùn)練模型中有幾個(gè)參數(shù)注意一下:
在接口文檔中,此部分要找到對(duì)應(yīng)的模型下面,查接口參數(shù):
訓(xùn)練完成之后,可以查看一下?lián)p失曲線:
model.plot_losses()
固定寫法,不需要改動(dòng)。
還可以使用model.show_results方法查看當(dāng)前模型在驗(yàn)證集上的表現(xiàn)情況:
model.show_results()
左邊為真實(shí)標(biāo)簽,右邊為當(dāng)前模型推理所得。這種方法可以很直觀的看到模型的表現(xiàn)如何。另外除了此種方法之外,還有其他精度指標(biāo)可查看:
model.mIOU()
因?yàn)槭菆D像分割,所以比較在意mIOU,其他的模型視情況選擇精度指標(biāo)查看。接口文檔中都可以查到,比如說本文中用到的mIOU指標(biāo),在接口文檔中查看:
如果說,你對(duì)模型滿意的話,便可以使用model.save方法保存模型了:
model.save(r'E:\deeplearning\model\dongxiaomai\unet_batchsize16_chipsize224_acc86')
固定寫法,替換掉文件夾路徑即可。到文件夾中查看如下:
然后便可以使用ArcGIS Pro進(jìn)行推理了。推理階段在此處就不講了。
肯定有人看完上面,覺得還不是很清晰,不會(huì)咋辦。那你來打我,其實(shí)改動(dòng)的地方很少的,我們來看一下去掉每一行運(yùn)行結(jié)果后的完整代碼:
其中小部分都是固定寫法,大部分都是固定格式,小部分需要根據(jù)模型不同更改寫法。
這么短幾行代碼,你去寫一個(gè)月,還不會(huì),那你來打我。會(huì)不會(huì)python影響的已經(jīng)不大了,折騰吧。不得不吹一下,把深度學(xué)習(xí)封裝成如此簡潔易用,確實(shí)很厲害。
文章轉(zhuǎn)自微信公眾號(hào)@數(shù)讀城事
GraphQL API滲透測試指南
Python + BaiduTransAPI :快速檢索千篇英文文獻(xiàn)(附源碼)
掌握ChatGPT API集成的方便指南
node.js + express + docker + mysql + jwt 實(shí)現(xiàn)用戶管理restful api
nodejs + mongodb 編寫 restful 風(fēng)格博客 api
表格插件wpDataTables-將 WordPress 表與 Google Sheets API 連接
手把手教你用Python和Flask創(chuàng)建REST API
使用 Django 和 Django REST 框架構(gòu)建 RESTful API:實(shí)現(xiàn) CRUD 操作
ASP.NET Web API快速入門介紹
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)