![工程的博客](http://www.eheci.com/www/blog-legacy-assets/static/d9f82ccf7d7b9de38fc301ef5820047a/6b349/CategoryIcon-Engineering-1.png)
使用數據湖屋實現計算機視覺應用
2021年12月17日 在工程的博客
正如博客中所探討的,計算機視覺應用程序改變零售和製造業務的潛力解決看不見的質量,操作和安全挑戰與萊克豪斯啟用計算機視覺,這一點怎麼說都不為過。也就是說,許多技術挑戰阻礙了組織實現這一潛力。在我們關於計算機視覺應用程序開發和實現的多部分技術係列的第一部分介紹中,我們將更深入地探討這些挑戰,並探索用於數據攝取、模型訓練和模型部署的基本模式。
圖像數據的獨特性質意味著我們需要仔細考慮如何管理這些信息資產,而訓練有素的模型與一線應用程序的集成意味著我們需要考慮一些非傳統的部署路徑。對於每一個計算機視覺挑戰,都沒有一個通用的解決方案,但許多公司已經開發出了許多技術和技術,這些公司率先使用計算機視覺係統來解決現實世界的業務問題。正如本文所探討的,通過利用這些,我們可以更快地從演示轉向操作化。
數據攝取
大多數計算機視覺應用開發的第一步(在設計和規劃之後)是圖像數據的積累。圖像文件由啟用攝像頭的設備捕獲並傳輸到中央存儲庫,在那裏它們準備在模型訓練練習中使用。
值得注意的是,許多流行格式(如PNG和JPEG)都支持嵌入式元數據。基本元數據,如圖像高度和寬度,支持將像素值轉換為二維表示。還可以嵌入其他元數據,例如Exchange Information File Format (Exif)元數據,以提供有關攝像頭、其配置以及潛在位置的其他詳細信息(假設設備配備了GPS傳感器)。
在構建圖像庫時,元數據和圖像統計數據在數據科學家篩選通常圍繞計算機視覺應用程序積累的數千甚至數百萬張圖像時很有用,它們在Lakehouse存儲中被處理。利用常見的開源庫,例如枕頭,元數據和統計信息都可以提取並持久化到可查詢的表中Lakehouse環境更容易訪問。構成圖像的二進製數據也可以與存儲環境中原始文件的路徑信息一起持久化到這些表中。
![傳入圖像文件的典型計算機圖像數據處理工作流。](http://www.eheci.com/www/wp-content/uploads/2021/12/com-vis-blog-img-1.png)
模型訓練
單個圖像文件的大小,加上訓練一個健壯模型所需的大量圖像文件,意味著我們需要仔細考慮在模型訓練期間如何處理它們。由於個人計算機的內存限製,數據科學練習中常用的技術(例如將模型輸入收集到pandas數據框架)通常不適用於企業規模。Spark™dataframe將數據卷分布在配置為計算集群的多個計算機節點上,大多數計算機視覺庫無法訪問,因此需要另一種解決該問題的解決方案。
為了克服第一個模型訓練的挑戰,Petastorm,一種專門為高級深度學習模型類型的大規模訓練而構建的數據緩存技術,可以使用。Petastorm允許從Lakehouse檢索大量數據,並將其放置在一個臨時的基於存儲的緩存中。利用Tensorflow和PyTorch(這兩個最受歡迎的深度神經網絡開發庫,通常用於計算機視覺應用程序)的模型,可以在迭代更大的Petastorm數據集時,從緩存中批量讀取小數據子集。
![Lakehouse數據持久化到臨時Petastorm緩存,通常用於計算機視覺用例。](http://www.eheci.com/www/wp-content/uploads/2021/12/com-vis-blog-img-2.png)
在數據量可控的情況下,下一個挑戰是加速模型訓練本身。機器學習模型通過迭代學習。這意味著訓練將由對輸入數據集的一係列重複傳遞組成。隨著每一次傳遞,模型學習各種特征的優化權重,從而獲得更好的預測精度。
模型的學習算法由一組稱為超參數的參數控製。這些超參數的值通常很難僅基於領域知識來設置,因此發現最優超參數配置的典型模式是訓練多個模型來確定哪個性能最好。這個過程被稱為超參數調優,意味著迭代之上的迭代。
及時完成如此多迭代的技巧是將超參數調優運行分布在集群的計算節點上,以便以並行方式執行。利用Hyperopt,這些運行可以在波中進行,在波之間Hyperopt軟件可以評估哪些超參數值會導致哪些結果,然後智能地設置下一波的超參數值。在重複波動之後,軟件收斂於超參數值的最優集的速度比執行值的詳盡評估要快得多。
![利用Hyperopt和Horovod分別為計算機視覺任務分配超參數調優和模型訓練](http://www.eheci.com/www/wp-content/uploads/2021/12/com-vis-blog-img-3.png)
一旦確定了最佳超參數值,Horovod可用於在整個集群中分發最終模型的訓練。Horovod使用輸入訓練數據的非重疊子集在集群的每個計算節點上協調模型的獨立訓練。從這些並行運行中學習到的權重會隨著對完整輸入集的每次傳遞而得到鞏固,並且模型會根據它們的集體學習進行重新平衡。最終的結果是一個優化的模型,使用集群的集體計算能力訓練。
模型部署
使用計算機視覺模型,目標通常是將模型預測帶入人類操作員通常執行視覺檢查的空間。雖然在某些情況下,在後台對圖像進行集中評分可能是有意義的,但更典型的情況是,本地(邊緣)設備將負責捕獲圖像並調用訓練過的模型以實時生成評分輸出。根據模型的複雜性、本地設備的容量以及對延遲和/或網絡中斷的容忍度,邊緣部署通常采取兩種形式之一。
在微服務部署中,模型以網絡可訪問服務的形式呈現。該服務可以托管在一個集中的位置,也可以托管在多個位置,這些位置與一些邊緣設備更緊密地結合在一起。然後,設備上運行的應用程序被配置為將圖像發送到服務以接收所需的分數。這種方法的優點是為應用程序開發人員提供了更大的模型托管靈活性,並可以訪問比邊緣設備上通常可用的更多的服務資源。它的缺點是需要額外的基礎設施,並且存在一些網絡延遲和/或影響應用程序中斷的風險。
![由MLflow促成的邊緣部署路徑,通常用於計算機視覺任務。](http://www.eheci.com/www/wp-content/uploads/2021/12/com-vis-blog-img-4.png)
通過邊緣部署,先前訓練過的模型將直接發送到本地設備。這消除了模型交付後對網絡的擔憂,但設備上有限的硬件資源可能會產生限製。此外,許多邊緣設備使用的處理器與訓練模型的係統有很大不同。這可能會帶來軟件兼容性挑戰,在將資源提交到這樣的部署之前,可能需要仔細研究這個問題。
在任何一種情況下,我們都可以利用MLflow,一個模型管理存儲庫,以幫助我們打包和交付模型。
通過數據庫將這些信息整合在一起
為了演示如何解決這些不同的挑戰,我們開發了一係列筆記本電腦,利用從a中捕獲的數據PiCamera裝備樹莓派設備.由該設備拍攝的圖像已傳輸到雲存儲環境,以便這些圖像攝取、模型訓練和部署模式可以使用Databricks ML運行時進行演示,該運行時預先配置了上述所有功能。要了解演示背後的細節,請參閱以下筆記本:
相關的帖子
![工程的博客](http://www.eheci.com/www/blog-legacy-assets/static/d9f82ccf7d7b9de38fc301ef5820047a/6b349/CategoryIcon-Engineering-1.png)