在世界各地,當你走進博物館,看到巨大的恐龍標本展示,你有沒有想過古生物學家是如何發現它們的?
有趣的是,我們的一位好朋友兼同事,英特爾的技術布道師 Bob Chesebrough,在閑暇時間和他的兒子們一起出去尋找尚未被發現的恐龍化石。他向我們展示了如何做到這一點,以及我們如何使用 AI 和 OpenVINO 來明顯簡化這一過程。
Bob 向我們解釋說,古生物學家和考古學家必須首先找到這些地點,其地質歷史不僅揭示了化石的創造過程,而且還表明了發現化石的機會。傳統上,這是通過掃描航拍圖像來發現特定的地形紋理,或巖層的顏色和方向,然后構建像這樣的“可能性地圖”來完成(如圖1所示)。
圖1. 恐龍化石可能性地圖示例
你可以在圖片中看到可能發現恐龍化石的所有位置。你可以想象的是,即使是由專家親自完成,繪制這樣一張地圖也需要花費大量的時間和精力。但是,由于 Bob 已經了解了 AI 的力量,他想知道是否可以開發一種能夠自動創建這些地圖的 AI 模型。他做到了!
在他的最初嘗試中,他發現 AI 軟件運行良好,但在野外創建地圖花費了太長時間,而當你在野外并依賴筆記本電腦電池時,這是一個問題。然后,他想知道如果他使用無人機拍攝高分辨率航拍照片是否會有所幫助,但不幸的是,這也行不通,因為這仍然需要他回家上傳這些照片。
因此,他與我們(Raymond Lo 和武卓博士)以及英特爾的其他 AI 布道師一起提出了一個解決方案,使他能夠在幾分鐘內(通常這需要幾個小時)從任意組合的視頻中創建這樣的可能性地圖。
我們很高興向你展示我們做了什么以及如何使用OpenVINO,但在我們繼續之前,請注意,雖然狩獵恐龍化石聽起來是一種有趣和令人興奮的愛好,但在美國和大多數其它地方,恐龍化石的實際采集受到嚴格監管,如果不是完全禁止的話。因此,如果你親自嘗試,而且你確實發現了化石的話,我們強烈建議你拍照并向當地有關部門報告你的這一發現。
狩獵開始了!
現在讓我們開始吧!首先,我們將解釋尋找恐龍化石的不同階段,然后我們將深入了解具體的步驟是怎么做的。
具體的創建可能性地圖的步驟可以參考這里:
https://www.intel.com/content/www/us/en/developer/articles/technical/intel-ai-step-by-step-guide-for-hunting-dinosaurs.html#gs.cg9z4m
(如圖2所示),包括:
圖2. 創建恐龍化石可能性地圖的一般步驟
第一階段和第二階段:收集數據并對其進行分類,包括獲取已知恐龍骨床(示例中為新墨西哥州)化石的實際發現的 GPS 坐標,并根據它們之間的接近程度對它們進行聚類。我們使用 Intel機器學習庫 Scikit learn 做到了這一點。
第三階段:標記數據。我們將聚類的結果和 Intel Deep Neural Network Library 應用于標記為“無化石”、“極有可能找到化石”或“可能找到化石”的相同位置的航拍圖像,并將這些圖像合并起來,得到該區域的化石可能性地圖。
第四階段和第五階段:訓練數據并通過將標記的航拍圖像轉換為張量來構建模型,每個張量都具有與概率分數或置信水平相對應的類名(例如,0表示“絕對沒有化石”,1表示“有可能找到化石”,2表示“發現化石”),以使用 PyTorch 構建殘差神經網絡(ResNet)。
第六階段:最后,評分階段,通過使用前面步驟中準備的模型,利用 OpenVINO推理引擎分析航拍照片,創建其它地方的化石可能性地圖!
放“碼”過來!
實現上述過程的代碼由一系列 Jupyter Notebook 提供:
https://github.com/IntelSoftware/Jurassic/blob/main/09_Dino_bone_find_OpenVINO.ipynb
這里,我們描述了最重要的部分,如圖3所示,將 PyTorch 模型轉換為 OpenVINO中間表示(IR)格式并分析圖像。
圖3. PyTorch 模型轉換為 OpenVINO IR 格式
加載OpenVINO推理引擎只需要一條指令:
from openvino.runtime import Core
向右滑動查看完整代碼
加載所有必要的庫后,Notebook 定義了先前以 PyTorch 格式訓練得到的化石尋找模型的路徑,并定義了兩個新模型的位置,以創建一個以 ONNX 格式,另一個以 OpenVINOIR 格式的模型,原因我們稍后將解釋。
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 stored model_path = Path(BASE_MODEL_NAME).with_suffix(“.pt”) onnx_path = model_path.with_suffix(“.onnx”) ir_path = model_path.with_suffix(“.xml”)
向右滑動查看完整代碼
生成 ONNX 模型后,再使用 OpenVINO模型優化器(MO)構建命令,將其轉換為 FP16 精度的OpenVINOIR 格式:
# Construct the command for Model Optimizer mo_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 模型對測試圖像運行推理(此處未顯示)后,在同一圖像上重復該過程,但使用 OpenVINO IR 格式模型,因為在 OpenVINO推理引擎上執行兩個模型顯示了如何在 CPU 或 GPU 設備上可互換地運行模型推理。
# Load the network in Inference Engine core = 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 layers output_layer_ir = compiled_model_ir.output(0) # Run inference on the input image res_ir = compiled_model_ir([x_test2])[output_layer_ir]
向右滑動查看完整代碼
上面的前幾行代碼加載OpenVINO推理引擎,將OpenVINOIR 模型傳遞給它,然后提取其輸入和輸出層。最后一行代碼是在先前使用 ONNX 模型分析的同一圖像(“x_test2”)上實際運行推理引擎的代碼。
接下來,程序打印出模型推理的結果;即該圖像所屬的類(0、1或2),然后繼續使用 PyTorch 模型重復該過程。
代碼的最后部分做了兩件事:
1)它運行 OpenVINO和 PyTorch 模型,對幾百張圖像進行分類,并對所使用的三種模型的性能進行近似比較。
2)它將所有這些圖像合并到一張地圖中,如圖1所示,并通過將 PyTorch 結果與 OpenVINO 結果進行比較得出結論,以驗證準確性沒有損失。為了簡潔起見,這里我們只包含一段不言自明的片段:
if “GPU” in core.available_devices: num_images = 2000 compiled_model_onnx_gpu = core.compile_model(model=model_onnx, device_name=”GPU”) #warm up compiled_model_onnx_gpu([input_image])
向右滑動查看完整代碼
使用 OpenVINO的好處不僅在于我們可以獲得加速,還在于能夠根據你選擇的硬件優化模型,并充分利用你手邊可用的硬件!
后續步驟
整個的步驟就是這樣!現在你是一個現代尋寶者,能夠使用 OpenVINO為你的尋找侏羅紀之旅創建和更新可能性地圖。
這是一個很好的例子,說明 OpenVINO如何讓每個人無論做什么都能更容易地使用人工智能。
你可以輕松地將此方法用于任何需要從航拍照片中檢測某些區域的情況,例如防火、可再生能源發電等關鍵領域,甚至其它星球上的生命!
審核編輯 :李倩
-
AI
+關注
關注
87文章
30728瀏覽量
268886 -
模型
+關注
關注
1文章
3226瀏覽量
48807 -
pytorch
+關注
關注
2文章
807瀏覽量
13200
原文標題:用 AI 及OpenVINO? 尋找失落的侏羅紀 | 開發者實戰
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論