最近接到老闆安排的項目,將之前自己訓練好的用於識別一個水下目標的SSD300算法增加一個簡單的界面。
項目的主要目的是爲了利用SSD300實現單目視覺定位,整個算法的基本流程是,採集攝像頭的圖片,傳遞給訓練好的SSD300網絡進行識別,處理結果獲得目標物在圖片中的位置座標(兩個座標點),之後進行基於先驗值的深度估計,最後3D重建。實現單目視覺定位。
之前的算法,沒有界面,就一個opencv下的圖像窗口顯示,老闆嫌棄它太磕磣,非要我加一個簡單的界面(毛病多!)。
Python編界面有好幾個庫,但由於實驗室沒有人用過Python做界面,整個過程全是自己一個人瞎搗鼓,研究了好久才確定用pyqt做界面會很快,同時QtDesigner也可以和c++的通用,搭建起來快速方便。
最終定位精度在2cm以內
先來看一下最終的效果
界面看起來比較粗糙,但整體結果相比之前那種還可以吧!
這裏具體的實現過程以後有時間在補充,主要是要記錄一個重點!!!!!!!
- 不要把SSD網絡塞到Qt的線程中去,肯定行不通的,我覺得這種神經網絡的計算肯定是調用了大量的線程對計算速度進行優化處理,再把這個塞進線程裏明顯不合適。
我的解決辦法是:窗口初始化中建立SSD模型並進行相應的初始化,直接將預測處理的函數加到槽函數中,建立條件死循環重複刷新圖片及預測結果。 - SSD網絡運行時耗費大量計算資源,在計算速度慢的機器上時經常“窗口無響應”
我的解決辦法是:在槽函數中不斷調用QApplication.processEvents()(用於窗口的刷新響應),尤其是非常耗時的預測階段,一定要調用。
好!時間太晚了,有時間再詳細記錄一下整個項目的搭建過程。
這裏給出源碼下載,需要的可以下載
由於本人等級不高,代碼權值文件放一起上傳不了,這裏就分開上傳了,順便賺點積分,方便以後下載東西。哈哈哈!!!不要罵我喲!我只是窮
代碼:
https://download.csdn.net/download/ttz_csdn/10639112
權值文件:
https://download.csdn.net/download/ttz_csdn/10639705
權值文件下載好後放在weights文件夾下。