也實作了YOLO-darknet與tensorflow 的 C# wrapper
那就來測試一下運算效能吧!
寫了一個簡單的Windows Forms
可以載入影片檔並執行Alturos.Yolo(YOLO-darknet)或是EmguTF(tensorflow)
進行影像辨識運算
並透過EmguCV把結果繪製在影像上
主要考量運算速度
透過觀察相同影片的處理速度-FPS來評判效能
由於手邊有三張不同的顯卡
雖然安裝在不同的測試主機上,但CPU以及Memory的影響其實有限
還是能看出不同顯卡的執行運算效能
第一台主機:(比較舊款)
CPU:i7-4770S、Mem:32GB、GPU:RTX 2070
第二台主機:
CPU:i7-7700、Mem:16GB、GPU:RTX 2080
第三台主機:(也測試CPU)
CPU:E5-2640x2、Mem:64GB、GPU:GTX 1080Ti x2
CPU、GPU採用yolo model(darknet)的運算效能(測試影片解析度1280x720):
E5-2640算是蠻高規的CPU了,處理這類的運算還是力有未逮
而GTX 1080Ti與RTX 2070的比較蠻特別的
在YOLOv2與YOLOv2-Tiny的model下,RTX 2070的效能表現較好
但在YOLOv3與YOLOv3-Tiny卻是GTX 1080Ti表現較好
而RTX 2080不論採用哪一個model,效能皆是最好的
而網路上一般實測,皆提到GTX 1080ti與RTX 2080相當
但這邊YOLO Model測試出來的數據
RTX 2080比GTX 1080Ti要好上20~30%以上
而YOLO-darknet相比tensorflow提供的model
tensorflow的運算量相當吃重
而且發現在載入tensorflow時,第一張影像的辨識運算會delay一小段時間
而這個過程會把顯卡記憶體與power吃得相當大
(後來tensorflow有加入延遲載入memory的機制)
YOLO-darknet在載入的瞬間與過程,Power的使用率相當平穩,皆在100W上下
記憶體也不會全吃滿
tensorflow在執行時,第一張影像處理時會delay一些時間
此時記憶體會全部載入,power也會瞬間飆高
由於我的第一台主機的power瓦數不足(僅500瓦)
因此在執行tensorflow的model時主機幾乎都會crash
所以RTX 2070在tensorflow model效能紀錄僅有兩筆資料:
雖然RTX 2070只測試了兩個SSD Model,但效能比較還算蠻明顯的
RTX 2070 < GTX 1080Ti < RTX 2080
唯一有一組model是由GTX 1080Ti獲勝:mask_rcnn_inception_v2
但因為這組model能提供mask資訊,處理結果如下:
需要比較大量的CPU運算
可以看到表格中,RTX 2080的欄位 CPU也吃了相當重達到45%
而GTX 1080Ti那組 CPU僅吃到12%
因此這部分應該是在CPU上的巨大差距造成 (E5-2620x2 >>> i7-7700)
但整體而言 RTX 2080的運算效能還是比GTX 1080Ti好上20%以上
目前把tensorflow所提供常用的model zoo抓下來測試
測試下來,執行效率最好的當然是SSD(Single Shot MultiBox Detector)系列
但就算是手邊效能最好的RTX 2080,僅能提供12~14 FPS
而曾經非常火紅的FAST_RCNN系列
僅有fast_rcnn_inception_v2能達到11~12 FPS左右
因此相比於YOLO-darknet所能達到的30~40 FPS 以上的效能
完全就是可real time進行影像辨識的效率,差距甚大呢!!
而目前EmguTF也持續在更新tensorflow的版本
未來等到最新版本釋出後再來測試看看
而這次測試每個model辨識出來的結果也都進行了收集和儲存
下一篇將整理這些辨識結果提供給大家參考
沒有留言:
張貼留言