加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 狩獵開始了!
    • 放“碼”過來!
    • 后續(xù)步驟
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

用 AI 及OpenVINO? 尋找失落的侏羅紀(jì)

2023/01/06
919
閱讀需 12 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

文章作者:Robert Chesebrough, Raymond Lo, 和武卓博士

在世界各地,當(dāng)你走進(jìn)博物館,看到巨大的恐龍標(biāo)本展示,你有沒有想過古生物學(xué)家是如何發(fā)現(xiàn)它們的?

有趣的是,我們的一位好朋友兼同事,英特爾的技術(shù)布道師 Bob Chesebrough,在閑暇時(shí)間和他的兒子們一起出去尋找尚未被發(fā)現(xiàn)的恐龍化石。他向我們展示了如何做到這一點(diǎn),以及我們?nèi)绾问褂?AI 和 OpenVINO? 來明顯簡化這一過程。

Bob 向我們解釋說,古生物學(xué)家和考古學(xué)家必須首先找到這些地點(diǎn),其地質(zhì)歷史不僅揭示了化石的創(chuàng)造過程,而且還表明了發(fā)現(xiàn)化石的機(jī)會。傳統(tǒng)上,這是通過掃描航拍圖像來發(fā)現(xiàn)特定的地形紋理,或巖層的顏色和方向,然后構(gòu)建像這樣的“可能性地圖”來完成。

你可以在圖片中看到可能發(fā)現(xiàn)恐龍化石的所有位置。你可以想象的是,即使是由專家親自完成,繪制這樣一張地圖也需要花費(fèi)大量的時(shí)間和精力。但是,由于 Bob 已經(jīng)了解了 AI 的力量,他想知道是否可以開發(fā)一種能夠自動創(chuàng)建這些地圖的 AI 模型。他做到了!

在他的最初嘗試中,他發(fā)現(xiàn) AI 軟件運(yùn)行良好,但在野外創(chuàng)建地圖花費(fèi)了太長時(shí)間,而當(dāng)你在野外并依賴筆記本電腦電池時(shí),這是一個(gè)問題。然后,他想知道如果他使用無人機(jī)拍攝高分辨率航拍照片是否會有所幫助,但不幸的是,這也行不通,因?yàn)檫@仍然需要他回家上傳這些照片。

因此,他與我們(Raymond Lo 和武卓博士)以及英特爾的其他 AI 布道師一起提出了一個(gè)解決方案,使他能夠在幾分鐘內(nèi)(通常這需要幾個(gè)小時(shí))從任意組合的視頻中創(chuàng)建這樣的可能性地圖。

我們很高興向你展示我們做了什么以及如何使用OpenVINO?,但在我們繼續(xù)之前,請注意,雖然狩獵恐龍化石聽起來是一種有趣和令人興奮的愛好,但在美國和大多數(shù)其它地方,恐龍化石的實(shí)際采集受到嚴(yán)格監(jiān)管,如果不是完全禁止的話。因此,如果你親自嘗試,而且你確實(shí)發(fā)現(xiàn)了化石的話,我們強(qiáng)烈建議你拍照并向當(dāng)?shù)赜嘘P(guān)部門報(bào)告你的這一發(fā)現(xiàn)。

狩獵開始了!

現(xiàn)在讓我們開始吧!首先,我們將解釋尋找恐龍化石的不同階段,然后我們將深入了解具體的步驟是怎么做的。

具體的創(chuàng)建可能性地圖的步驟可以參考這里:

https://www.intel.com/content/www/us/en/developer/articles/technical/intel-ai-step-by-step-guide-for-hunting-dinosaurs.html#gs.cg9z4m

(如圖1所示),包括:

圖1. 創(chuàng)建恐龍化石可能性地圖的一般步驟

第一階段和第二階段:收集數(shù)據(jù)并對其進(jìn)行分類,包括獲取已知恐龍骨床(示例中為新墨西哥州)化石的實(shí)際發(fā)現(xiàn)的 GPS 坐標(biāo),并根據(jù)它們之間的接近程度對它們進(jìn)行聚類。我們使用 Intel??機(jī)器學(xué)習(xí)庫 Scikit learn 做到了這一點(diǎn)。

第三階段:標(biāo)記數(shù)據(jù)。我們將聚類的結(jié)果和 Intel? Deep Neural Network Library 應(yīng)用于標(biāo)記為“無化石”、“極有可能找到化石”或“可能找到化石”的相同位置的航拍圖像,并將這些圖像合并起來,得到該區(qū)域的化石可能性地圖。

第四階段和第五階段:訓(xùn)練數(shù)據(jù)并通過將標(biāo)記的航拍圖像轉(zhuǎn)換為張量來構(gòu)建模型,每個(gè)張量都具有與概率分?jǐn)?shù)或置信水平相對應(yīng)的類名(例如,0表示“絕對沒有化石”,1表示“有可能找到化石”,2表示“發(fā)現(xiàn)化石”),以使用 PyTorch 構(gòu)建殘差神經(jīng)網(wǎng)絡(luò)(ResNet)。

第六階段:最后,評分階段,通過使用前面步驟中準(zhǔn)備的模型,利用 OpenVINO??推理引擎分析航拍照片,創(chuàng)建其它地方的化石可能性地圖!

放“碼”過來!

實(shí)現(xiàn)上述過程的代碼由一系列 Jupyter Notebook 提供:

https://github.com/IntelSoftware/Jurassic/blob/main/09_Dino_bone_find_OpenVINO.ipynb

這里,我們描述了最重要的部分,如圖2所示,將 PyTorch 模型轉(zhuǎn)換為 OpenVINO? 中間表示(IR)格式并分析圖像。

圖2. PyTorch 模型轉(zhuǎn)換為 OpenVINO? ?IR 格式

加載?OpenVINO??推理引擎只需要一條指令:

from openvino.runtime import Core

加載所有必要的庫后,Notebook 定義了先前以 PyTorch 格式訓(xùn)練得到的化石尋找模型的路徑,并定義了兩個(gè)新模型的位置,以創(chuàng)建一個(gè)以 ONNX 格式,另一個(gè)以 OpenVINO??IR 格式的模型,原因我們稍后將解釋。

DIRECTORY_NAME = “models”
BASE_MODEL_NAME = DIRECTORY_NAME + f”/bc_resnet18_simple_NOIPEX_6Epochs_StateDict_gold”
# Paths where PyTorch, ONNX and OpenVINO IR models will be storedmodel_path = Path(BASE_MODEL_NAME).with_suffix(“.pt”)onnx_path = model_path.with_suffix(“.onnx”)ir_path = model_path.with_suffix(“.xml”)

生成 ONNX 模型后,再使用 OpenVINO??模型優(yōu)化器(MO)構(gòu)建命令,將其轉(zhuǎn)換為 FP16 精度的OpenVINO??IR 格式:

# Construct the command for Model Optimizermo_command = f”””mo ? ? ?--input_model “{onnx_path}” ? ? ?--input_shape “[1,3, {IMAGE_HEIGHT}, {IMAGE_WIDTH}]” ? ? ?--data_type FP16 ? ? ?--output_dir “{model_path.parent}” ? ? ?“”” ? ? ?mo_command = “ “.join(mo_command.split())

在使用 ONNX 模型對測試圖像運(yùn)行推理(此處未顯示)后,在同一圖像上重復(fù)該過程,但使用 OpenVINO? IR 格式模型,因?yàn)樵?OpenVINO??推理引擎上執(zhí)行兩個(gè)模型顯示了如何在 CPU 或 GPU 設(shè)備上可互換地運(yùn)行模型推理。

# Load the network in Inference Enginecore = Core()model_ir = core.read_model(model=ir_path)compiled_model_ir = core.compile_model(model=model_ir, device_name=”CPU”)
# Get input and output layersoutput_layer_ir = compiled_model_ir.output(0)
# Run inference on the input imageres_ir = compiled_model_ir([x_test2])[output_layer_ir]

上面的前幾行代碼加載OpenVINO?推理引擎,將OpenVINO??IR 模型傳遞給它,然后提取其輸入和輸出層。最后一行代碼是在先前使用 ONNX 模型分析的同一圖像(“x_test2”)上實(shí)際運(yùn)行推理引擎的代碼。

接下來,程序打印出模型推理的結(jié)果;即該圖像所屬的類(0、1或2),然后繼續(xù)使用 PyTorch 模型重復(fù)該過程。

代碼的最后部分做了兩件事:

1)它運(yùn)行 OpenVINO??和 PyTorch 模型,對幾百張圖像進(jìn)行分類,并對所使用的三種模型的性能進(jìn)行近似比較。

2)它將所有這些圖像合并到一張地圖中,如圖1所示,并通過將 PyTorch 結(jié)果與 OpenVINO? 結(jié)果進(jìn)行比較得出結(jié)論,以驗(yàn)證準(zhǔn)確性沒有損失。為了簡潔起見,這里我們只包含一段不言自明的片段:

if “GPU” in core.available_devices: ?num_images = 2000
compiled_model_onnx_gpu = core.compile_model(model=model_onnx, device_name=”GPU”)#warm upcompiled_model_onnx_gpu([input_image])

使用 OpenVINO??的好處不僅在于我們可以獲得加速,還在于能夠根據(jù)你選擇的硬件優(yōu)化模型,并充分利用你手邊可用的硬件!

后續(xù)步驟

整個(gè)的步驟就是這樣!現(xiàn)在你是一個(gè)現(xiàn)代尋寶者,能夠使用 OpenVINO??為你的尋找侏羅紀(jì)之旅創(chuàng)建和更新可能性地圖。

這是一個(gè)很好的例子,說明 OpenVINO??如何讓每個(gè)人無論做什么都能更容易地使用人工智能。

你可以輕松地將此方法用于任何需要從航拍照片中檢測某些區(qū)域的情況,例如防火、可再生能源發(fā)電等關(guān)鍵領(lǐng)域,甚至其它星球上的生命!

英特爾

英特爾

英特爾在云計(jì)算、數(shù)據(jù)中心、物聯(lián)網(wǎng)和電腦解決方案方面的創(chuàng)新,為我們所生活的智能互連的數(shù)字世界提供支持。

英特爾在云計(jì)算、數(shù)據(jù)中心、物聯(lián)網(wǎng)和電腦解決方案方面的創(chuàng)新,為我們所生活的智能互連的數(shù)字世界提供支持。收起

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

英特爾致力于加快智能設(shè)備的開發(fā)和部署,通過智能多層系統(tǒng)和端到端分析,在智能駕駛、智能零售、智能安防、智能制造等領(lǐng)域,推動企業(yè)業(yè)務(wù)轉(zhuǎn)型,改善人們的生活和工作方式,英特爾驅(qū)動物聯(lián)網(wǎng)變革。