一、前言
1.1 開發需求
這篇文章講解:采用華為云最新推出的 Flexus 云服務器 X 實例部署 YOLOv3 算法,完成圖像分析、目標檢測。
隨著計算機視覺技術的飛速發展,深度學習模型如 YOLOv3 在圖像識別和目標檢測領域展現出了卓越的性能。為了滿足日益增長的數據處理需求,本項目利用華為云最新推出的 Flexus 云服務器 X 實例的強大計算能力,部署 YOLOv3 算法以實現高效的圖像分析與指定目標檢測功能。通過將先進的算法與高性能云計算資源相結合,不僅能夠處理大規模圖像數據集,還能夠保證實時性和準確性,這對于智能監控、自動駕駛等應用場景至關重要。
考慮到實際應用中對于靈活性和服務化的需求,在服務器上開發了一套后端程序,該程序提供了 HTTP 接口,允許外部客戶端通過簡單的 API 調用來上傳圖片。服務器端接收到請求后,將自動執行目標檢測流程,并將分析結果反饋給客戶端。這種方式極大地簡化了客戶端的應用開發流程,使得無需深入了解復雜的圖像處理細節即可享受到高效的目標檢測服務。此架構不僅增強了系統的可訪問性,也為未來的擴展和維護提供了便利。
1.2 Flexus 云服務器介紹
華為云 Flexus 云服務器 X 實例是由國家科技進步獎獲得者、華為公司 Fellow 及華為云首席架構師顧炯炯牽頭研發的一款創新性云服務器。該實例基于華為的擎天 QingTian 架構、瑤光云腦和盤古大模型等核心技術,是業界首款應用驅動的柔性算力云服務器,適用于高科技、零售、金融、游戲等多個行業的通用工作負載場景,如網絡應用、數據庫、虛擬桌面、分析索引、微服務及持續集成/持續部署(CI/CD)等。
傳統的云服務器通常只提供固定的 CPU 和內存規格,無法精準匹配用戶的實際資源需求,導致資源利用效率低下。相比之下,華為云 FlexusX 實例提供了更為靈活的算力配置,支持超過 100 種不同的 CPU 與內存配比,最高可達到 3:1 的比例,從而更好地適應各種業務應用的需求。
Flexus X 實例不僅在性能方面表現出色,還內置了智能應用調優算法,結合華為技術專家多年積累的經驗,在基礎模式下,其 GeekBench 單核及多核跑分可達業界同規格獨享型實例的 1.6 倍。在性能模式下,FlexusX 實例的性能超過了同類 C 系/G 系/R 系及 S 系旗艦型云主機的標準。
Flexus X 實例還配備了 X-Turbo 加速技術和大模型底層智能調度技術,為關鍵業務應用提供加速功能。例如,在 FlexusX 實例上部署的 MySQL、Redis 和 Nginx 等應用,其性能最高可達業界同規格獨享型實例的 6 倍(MySQL 性能),長期運行時也能保持 2 倍的性能優勢。
Flexus X 實例在定價策略上定位于經濟型級別,但其性能表現卻超越了旗艦級云主機。通過動態業務畫像規格優化等技術,用戶在將業務從本地服務器或其他云服務提供商遷移到 FlexusX 實例時,可以節省高達 30%的算力成本,從而實現業務的全面提速和效能提升,享受到云基礎設施的顯著改進體驗。
1.3 YOLOv3 目標檢測算法
YOLO(YouOnly Look Once)算法是一種用于實時物體檢測的深度學習框架,它改變了傳統目標檢測方法中逐步細化的過程,通過一次性地對整個圖像進行預測來直接生成邊界框和類別概率,從而顯著提高了檢測速度。與傳統的基于區域提議(如 R-CNN 系列算法)的方法不同,YOLO 將目標檢測視為一個回歸問題,直接從輸入圖像到邊界框坐標和類別標簽進行映射,這使得 YOLO 能夠在保持較高檢測精度的同時,實現極快的檢測速度。
YOLO 的核心優勢在于其獨特的檢測方式。它將輸入圖像分割成固定大小的網格,并且每個網格負責預測出現在該網格內的對象。每個網格單元會生成一組邊界框及其對應的置信度分數,其中置信度表示該邊界框內存在某個特定類別的對象的概率。這種方法確保了模型可以同時處理多個對象,并且能夠有效地檢測小尺寸的對象,這是許多其他檢測框架所難以做到的。
隨著時間的發展,YOLO 經歷了多個版本的迭代,從最初的 YOLOv1 到后來的 YOLOv2、YOLOv3 以及更先進的 YOLOv4 和 YOLOv5 等版本。每一個新版本都在前一版本的基礎上進行了改進,提高了檢測精度和速度。例如,YOLOv3 引入了多尺度特征融合,可以在不同的尺度上進行檢測,從而提升了小物體的檢測效果;而 YOLOv4 則進一步優化了網絡結構,采用了更強大的骨干網絡,并結合了一系列最新的改進技術,如 Mish 激活函數、SPP 模塊等,使得其在速度和精度之間達到了更好的平衡。
YOLO 算法因其高效的速度和良好的檢測性能,在自動駕駛、安防監控、無人機影像分析等多個領域得到了廣泛的應用。它的設計理念強調實時性和實用性,使其成為構建實時視覺系統的理想選擇。
1.4 客戶端開發思路
客戶端應用程序采用 Qt 框架開發,為用戶提供一個直觀且高效的界面,以便實時采集攝像頭圖像并調用服務器上部署的 YOLO 算法完成圖像的目標分類檢測。Qt 是一個跨平臺的應用程序開發框架,以其豐富的圖形用戶界面組件和強大的網絡通信功能著稱,非常適合用于開發此類需要圖形展示與網絡交互的應用程序。
客戶端的主要功能包括實時視頻流的捕獲與顯示。通過集成 Qt 的多媒體模塊,客戶端可以輕松地與各種類型的攝像頭進行連接,捕捉實時視頻流,并在界面上呈現給用戶。用戶可以通過簡單的操作啟動或停止視頻捕獲,調整攝像頭參數,如分辨率和幀率,以適應不同的使用場景。
在視頻流捕獲的基礎上,客戶端還實現了與服務器的無縫對接。當客戶端捕獲到視頻幀后,會將其發送至預先配置好的服務器地址。服務器端運行著之前部署的 YOLO 目標檢測算法,接收到來自客戶端的圖像數據后,將對其進行處理,識別出圖像中的各類目標,并計算出相應的邊界框和類別標簽。處理完成后,服務器會將包含檢測結果的數據包回傳給客戶端。
客戶端接收到檢測結果后,會在視頻畫面上疊加相應的邊界框和標簽信息,直觀地顯示出識別出的目標類型及其位置。這一過程幾乎是在實時進行的,使得用戶能夠立即看到目標檢測的效果。這樣的功能對于監控應用特別有用,可以幫助用戶迅速識別出視頻流中的關鍵信息。
客戶端提供附加功能,比如保存帶有檢測結果的圖像、記錄視頻片段,以及根據用戶的偏好設置自定義的檢測閾值或目標類別過濾等。通過這樣的設計,客戶端不僅能夠滿足基本的目標檢測需求,還能根據具體的應用場景進行靈活的定制,提高用戶體驗和系統的實用性。
1.5 客戶端運行效果
Qt 制作的界面,運行目標檢測的結果:
二、服務器選購
2.1 登錄官網
鏈接:https://www.huaweicloud.com/
在官網首頁的輪播圖里可以看到,有 Flexus 云服務器的宣傳。這是華為云匠心打造的下一代躍級產品,面向中低負載場景,性能倍增、體驗躍級的服務器。
2.2 選購服務器
在產品頁面,也可以看到 Flexus 云服務的選項,點擊進去選購服務器。
鏈接:https://www.huaweicloud.com/product/flexus.html
在選購頁面可以看到服務器推廣器件,1 年 36 塊錢。每個月的流量是 100G,對于一些訪問量不高的服務器或者測試用是非常合適的。
當前我要選擇的服務器是:Flexus 云服務器 X 實例,點擊 Flexus 系列產品,選擇 X 實例。Flexus 云服務器 X 實例符合:柔性算力,六倍性能,旗艦體驗,覆蓋高科技、零售、金融、游戲等行業大多數通用工作負載場景。
2.3 選擇服務器區域
針對時延敏感型業務請選擇靠近您業務的區域,以降低網絡時延,提高訪問速度;針對和存量云產品有內網互通需求的業務,請選擇和存量產品相同的區域。
2.4 選擇服務器規格
2.5 選擇系統鏡像
我這選擇 ubuntu 系統,用來搭建服務器。這個根據自己的情況選擇,自己適合那一種就選擇哪一種。
2.6 選擇存儲盤
我選擇 150G 大小。
2.7 配置密碼
設置好服務器的名字(如果你有多個服務器,為了自己好區別)和系統的登錄密碼。
2.8 配置云備份
云備份這個不買。有需要自己可以購買。
2.9 確認配置
2.10 立即購買
購買成功。
創建成功之后,郵箱會收到提示的。
2.10 后臺控制臺
鏈接:https://console.huaweicloud.com/ecm
在控制臺可以看到服務器的詳情。
三、服務器登錄
3.1 查看服務器的詳情
點擊服務器的名稱,可以進去到詳情頁面。
3.2 遠程登錄
填入設置好的密碼。
登錄成功。
3.9 采用 FinalShell 登錄
自帶的在瀏覽器里運行,每次需要打開瀏覽器,文件也不方便上傳下載。
所以,這里開發階段,我采用的FinalShell 登錄到服務器。
新建 SSH 連接,輸入連接信息。
登錄成功。
接下來就可以進行開發了。
四、部署 YOLOv3 算法
4.1 YOLO 算法介紹
YOLO 算法官網介紹:https://pjreddie.com/darknet/yolo/
You only look once (YOLO) is a state-of-the-art, real-time object detection system. On a Pascal Titan X it processes images at 30 FPS and has a mAP of 57.9% on COCO test-dev.
You Only Look Once (YOLO) 是最先進的實時目標檢測系統。在Pascal Titan X 上,它以30 FPS 處理圖像,并且在COCO 測試開發上的mAP 為57.9%。
Comparison to Other DetectorsYOLOv3 is extremely fast and accurate. In mAP measured at .5 IOU YOLOv3 is on par with Focal Loss but about 4x faster. Moreover, you can easily tradeoff between speed and accuracy simply by changing the size of the model, no retraining required!
與其他探測器的比較 YOLOv3 非常快速且準確。在mAP 中,測量結果為0.5 IOU YOLOv3 與Focal Loss 相當,但速度快約4 倍。此外,只需更改模型的大小即可輕松在速度和準確性之間進行權衡,無需重新訓練!
4.2 快速部署算法模型
(1)安裝 darknet
root@flexusx-1a58:~# mkdir yolov3root@flexusx-1a58:~# cd yolov3/root@flexusx-1a58:~# git clonehttps://github.com/pjreddie/darknetroot@flexusx-1a58:~# cd darknetroot@flexusx-1a58:~# make
注意,如果 clone 失敗,多測幾次就行了。
下載完成:
編譯過程中:
編譯完成:
(2)下載權重文件
root@flexusx-1a58:~# wgethttps://pjreddie.com/media/files/yolov3.weights
yolov3.weights是YOLOv3 網絡訓練得到的權重文件,存儲了神經網絡中每個層次的權重和偏置信息。
在 cfg/目錄下已經包含了 yolov3 對應的配置文件。
下載過程:
(3)運行 detector
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
檢測分類:
root@flexusx-1a58:~/yolov3/darknet# ./darknet detect cfg/yolov3.cfg yolov3.weights data/horses.jpg
識別結果:
識別的結果可以直接打開。
五、總結
華為云正在舉行其年度 828B2B 企業節活動,期間提供了包括 FlexusX 實例在內的多種產品的優惠。對于那些對計算性能有較高要求,并且需要自行部署 MySQL、Redis、Nginx 等服務的用戶來說,這次促銷是一個很好的機會,建議有興趣的朋友可以前往查看相關的優惠信息。
官網直達:https://activity.huaweicloud.com/828_promotion/index.html
審核編輯 黃宇
-
云服務器
+關注
關注
0文章
790瀏覽量
13755 -
華為云
+關注
關注
3文章
2761瀏覽量
18090
發布評論請先 登錄
評論