搜尋
首頁科技週邊人工智慧如何只用兩個Python函數在幾分鐘內創建完整的電腦視覺應用程式

如何只用兩個Python函數在幾分鐘內創建完整的電腦視覺應用程式

譯者| 李睿

#審查| 重樓

這篇文章首先簡要介紹了電腦視覺應用程式的基本要求。接著,詳細介紹了Pipeless這個開源框架,它為嵌入式電腦視覺提供了無伺服器開發體驗。最後,提供了一個詳細的步驟指南,示範如何使用幾個Python函數和一個模型建立和運行一個簡單的物件偵測應用程式。

創建電腦視覺應用程式

描述「電腦視覺」的一種方式是將其定義為「利用攝影機和演算法技術進行圖像識別和處理的領域」。然而,這種簡單的定義可能無法完全滿足人們對這個概念的理解。因此,為了更深入地了解電腦視覺應用程式的建構過程,我們需要考慮每個子系統所需實現的功能。 電腦視覺應用程式的建構過程涉及多個關鍵步驟,包括影像擷取、影像處理、特徵提取、目標識別和決策制定。首先,透過攝影機或其他影像擷取設備取得影像資料。然後,利用演算法對影像進行處理,包括去噪、增強和分割等操作,以便進一步分析。在特徵提取階段,系統會辨識影像中的關鍵特徵,如

為了即時處理60 fps的視訊串流,需要在16毫秒內處理每一幀。這通常透過多執行緒和多處理進程實現。有時候,甚至需要在上一幀完成之前就開始處理下一幀,以確保能夠實現真正快速的幀處理。

對於人工智慧模型,現在幸好有許多優秀的開源模型可供使用,因此大多數情況下無需從零開始開發自己的模型,只需微調參數以滿足特定用例即可。這些模型在每一幀上運行推理,執行物件偵測、分割、姿態估計等任務。

•推理運行時間:推理運行時間負責載入模型,並在不同的可用設備(GPU或CPU)上高效運行。

為了確保模型在推理過程中能夠快速運行,採用GPU是不可或缺的。 GPU能夠處理比CPU更多數量級的平行操作,尤其是在處理大量數學運算時效果更為顯著。在處理幀時,需要考慮幀所在的記憶體位置,可以選擇儲存在GPU記憶體或CPU記憶體(RAM)中。然而,在這兩種不同的記憶體之間複製幀會導致運算速度變慢,尤其是當幀的大小較大時。這也意味著需要權衡記憶體的選擇以及資料傳輸的開銷,以實現更有效率的模型推理過程。

多媒體管道是一組元件,用於從資料來源中取得視訊串流,並將其分割成幀,然後將其作為模型的輸入。有時,這些部件還可以對視訊串流進行修改和重建,以便進行轉發。這些部件在處理視訊資料時發揮關鍵作用,確保視訊串流能夠被有效地傳輸和處理。

•視訊串流管理:開發人員可能希望應用程式能夠抵抗視訊串流的中斷、重新連接、動態新增和刪除視訊串流、同時處理多個視訊串流,等等。

所有這些系統都需要建立或合併到專案中,因此,需要維護程式碼。然而,面臨的問題是最終維護的大量代碼並非特定於應用程序,而是圍繞實際案例特定代碼的子系統。

Pipeless框架

為了避免從頭開始建立上述所有內容,可以代用Pipeless框架。這是一個用於電腦視覺的開源框架,允許提供一些特定於案例的功能,並且能夠處理其他事物。

Pipeless框架將應用程式的邏輯劃分為“階段”,其中的一個階段就像單一模型的微型應用程式。一個階段可以包括預處理、使用預處理的輸入運行推理,以及對模型輸出進行後處理以採取行動。然後,可以連結盡可能多的階段,以組成完整的應用程序,甚至使用多個模型。

為了提供每個階段的邏輯,只需新增一個特定於應用程式的程式碼函數,然後在需要時由Pipeless負責呼叫它。這就是為什麼可以將Pipeless視為框架的原因,它為嵌入式電腦視覺提供類似伺服器的開發體驗,並且提供了一些功能,不必擔心需要其他的子系統。

Pipeless的另一個重要特性是,可以透過CLI或REST API動態地新增、刪除和更新視訊串流,從而實現視訊串流處理的自動化。甚至可以指定重新啟動策略,指示何時應該重新啟動視訊串流的處理,是否應該在出現錯誤後重新啟動,等等。

最後,部署Pipeless框架,只需要在任何設備上安裝它並與程式碼函數一起運行,無論是在雲端運算虛擬機器或容器化模式中,還是直接在Nvidia Jetson、Raspberry等邊緣設備中。

建立物件偵測應用程式

以下深入了解如何使用Pipeless框架建立一個簡單的物件偵測應用程式。

第一就是安裝。安裝腳本,使其安裝非常簡單:

Curl https://raw.githubusercontent.com/pipeless-ai/pipeless/main/install.sh | bash

現在,必須建立一個專案。 Pipeless專案是一個包含階段的目錄。每個階段都在子目錄下,在每個子目錄中,建立包含hooks(特定的程式碼函數)的檔案。為每個階段資料夾提供的名稱是稍後要為視訊串流運行該階段時,必須向Pipeless框指示的階段名稱。

pipeless init my-project --template emptycd my-project

在這裡,空模板告訴CLI只建立目錄,如果不提供任何模板,CLI將提示幾個問題以互動式建立階段。

如上所述,現在需要為專案新增一個階段。採用下面的命令從GitHub下載一個階段範例:

wget -O - https://github.com/pipeless-ai/pipeless/archive/main.tar.gz | tar -xz --strip=2 "pipeless-main/examples/onnx-yolo"


#這將建立一個階段目錄onnx-yolo,其中包含應用程式函數。

然後,檢查每個階段檔案的內容,也就是應用程式hooks。

這裡有一個pre-process.py文件,它定義了一個接受一個框架和一個場景的函數(hooks)。此函數執行一些操作來準備接收RGB幀的輸入數據,以便與模型期望的格式相符。資料被加入到frame_data[' interence_input ']中,這是Pipeless將傳遞給模型的資料。

def hook(frame_data, context):frame = frame_data["original"].view()yolo_input_shape = (640, 640, 3) # h,w,cframe = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)frame = resize_rgb_frame(frame, yolo_input_shape)frame = cv2.normalize(frame, None, 0.0, 1.0, cv2.NORM_MINMAX)frame = np.transpose(frame, axes=(2,0,1)) # Convert to c,h,winference_inputs = frame.astype("float32")frame_data['inference_input'] = inference_inputs... (some other auxiliar functions that we call from the hook function)

還有process.json文件,它指示要使用的Pipeless推理運行時間(在本例中為ONNX運行時間),在哪裡可以找到它應該載入的模型,以及它的一些可選參數,例如要使用的execution_provider,即CPU、CUDA、TensortRT等。

{ "runtime": "onnx","model_uri": "https://pipeless-public.s3.eu-west-3.amazonaws.com/yolov8n.onnx","inference_params": { "execution_provider": "tensorrt" }}

最後,post-process.py檔案定義了一個類似pre-process.py中的函式。這次,它接受Pipeless儲存在frame_data["inference_output"]中的推理輸出,並執行將該輸出解析為邊界框的操作。稍後,它在框架上繪製邊界框,最後將修改後的框架指派給frame_data['modified']。這樣,Pipeless將轉送提供的視訊串流,但帶有修改後的幀,其中包括邊界框。

def hook(frame_data, _):frame = frame_data['original']model_output = frame_data['inference_output']yolo_input_shape = (640, 640, 3) # h,w,cboxes, scores, class_ids =  parse_yolo_output(model_output, frame.shape, yolo_input_shape)class_labels = [yolo_classes[id] for id in class_ids]for i in range(len(boxes)):draw_bbox(frame, boxes[i], class_labels[i], scores[i])frame_data['modified'] = frame... (some other auxiliar functions that we call from the hook function)

最後一步是啟動Pipeless並提供一個視訊串流。要啟動Pipeless,只需在my-project目錄下運行以下命令:

pipeless start --stages-dir .

一旦運行,將提供來自網路攝影機(v4l2)的視訊串流,並直接在螢幕上顯示輸出。需要注意的是,必須提供視訊串流按順序執行的階段清單。在這個例子中,它只是onnx-yolo階段:

pipeless add stream --input-uri "v4l2" --output-uri "screen" --frame-path "onnx-yolo"

#結論

創建電腦視覺應用程式是一項複雜的任務,因為有許多因素和必須圍繞它實現的子系統。使用像Pipeless這樣的框架,啟動和運行只需要幾分鐘,可以專注於為特定用例編寫程式碼。此外,Pipeless的「階段」是高度可重複使用的,易於維護,因此維護將會很容易,可以非常快速地迭代。

如果希望參與Pipeless的開發,可以透過它的GitHub儲存庫來實現。

原文標題:Create a Complete Computer Vision App in Minutes With Just Two Python Functions,作者:Miguel Angel Cabrera

#連結:https://www.php.cn/link/e26dbb5b1843bf566ea7ec757f3325c4

以上是如何只用兩個Python函數在幾分鐘內創建完整的電腦視覺應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
及時工程中的思想圖是什麼及時工程中的思想圖是什麼Apr 13, 2025 am 11:53 AM

介紹 在迅速的工程中,“思想圖”是指使用圖理論來構建和指導AI的推理過程的新方法。與通常涉及線性S的傳統方法不同

優化您的組織與Genai代理商的電子郵件營銷優化您的組織與Genai代理商的電子郵件營銷Apr 13, 2025 am 11:44 AM

介紹 恭喜!您經營一家成功的業務。通過您的網頁,社交媒體活動,網絡研討會,會議,免費資源和其他來源,您每天收集5000個電子郵件ID。下一個明顯的步驟是

Apache Pinot實時應用程序性能監視Apache Pinot實時應用程序性能監視Apr 13, 2025 am 11:40 AM

介紹 在當今快節奏的軟件開發環境中,確保最佳應用程序性能至關重要。監視實時指標,例如響應時間,錯誤率和資源利用率可以幫助MAIN

Chatgpt擊中了10億用戶? Openai首席執行官說:'短短幾週內翻了一番Chatgpt擊中了10億用戶? Openai首席執行官說:'短短幾週內翻了一番Apr 13, 2025 am 11:23 AM

“您有幾個用戶?”他扮演。 阿爾特曼回答說:“我認為我們上次說的是每週5億個活躍者,而且它正在迅速增長。” “你告訴我,就像在短短幾週內翻了一番,”安德森繼續說道。 “我說那個私人

pixtral -12b:Mistral AI'第一個多模型模型 - 分析Vidhyapixtral -12b:Mistral AI'第一個多模型模型 - 分析VidhyaApr 13, 2025 am 11:20 AM

介紹 Mistral發布了其第一個多模式模型,即Pixtral-12b-2409。該模型建立在Mistral的120億參數Nemo 12B之上。是什麼設置了該模型?現在可以拍攝圖像和Tex

生成AI應用的代理框架 - 分析Vidhya生成AI應用的代理框架 - 分析VidhyaApr 13, 2025 am 11:13 AM

想像一下,擁有一個由AI驅動的助手,不僅可以響應您的查詢,還可以自主收集信息,執行任務甚至處理多種類型的數據(TEXT,圖像和代碼)。聽起來有未來派?在這個a

生成AI在金融部門的應用生成AI在金融部門的應用Apr 13, 2025 am 11:12 AM

介紹 金融業是任何國家發展的基石,因為它通過促進有效的交易和信貸可用性來推動經濟增長。交易的便利和信貸

在線學習和被動攻擊算法指南在線學習和被動攻擊算法指南Apr 13, 2025 am 11:09 AM

介紹 數據是從社交媒體,金融交易和電子商務平台等來源的前所未有的速度生成的。處理這種連續的信息流是一個挑戰,但它提供了

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器