李衛(wèi)
摘 要:近年來,計算機視覺技術在海洋水產養(yǎng)殖領域中不斷發(fā)展并且使用率也越來越高,這其中魚類圖片的檢索在魚類種群研究和魚類行為分析中發(fā)揮了不可或缺的作用,隨著在海洋水產養(yǎng)殖領域中計算機視覺技術的不斷發(fā)展,魚類成像在魚類資源和行為分析任務中發(fā)揮了重要任務。開發(fā)本系統(tǒng)的目的便是為了幫助用戶更好,更簡便地使用各類識別算法,并且可以對識別結果進行對比。
關鍵詞:計算機視覺技術;紅鰭東方鲀識別;計數系統(tǒng)的研究
1 研究內容
面向生產的紅鰭東方鲀識別與計數系統(tǒng)是參考現有系統(tǒng)改進而來,但迫于時間壓力和精力有限,系統(tǒng)設計中只嵌入了YOLO與MCNN兩種識別算法,目前有選擇圖片,上傳圖片,添加參數,顯示結果等功能。
服務器與瀏覽器的通信方式中包含多種方式,通常我們會使用HTTP網絡請求的方式來進行數據的管理,通過Restful的方式實現一個和多個請求。通過自己制定請求規(guī)則來解決前后端數據的一致性的問題。
在系統(tǒng)的研發(fā)時,通過之前軟件工程的思想,將整個軟件開發(fā)流程中可行性研究,需求分析,軟件設計,編碼實現到最終的功能測試,每個環(huán)節(jié)都作了充分的了解與調研,獲得極為有價值的經驗。并且學會了調試等諸多開發(fā)技巧,如斷點、輸出等功能。
2 開發(fā)工具介紹
2.1? Eclipse
Eclipse的插件機制是輕型軟件組件化架構。,Eclipse使用插件來提供所有的附加功能,例如支持Java以外的其他語言。目前已有的但還未安裝到Eclipse中的插件已經能夠支持C/C++(CDT)、Perl、Ruby,Python、telnet和數據庫開發(fā)。插件架構能夠支持將任意的擴展加入到 現有環(huán)境中現有的插件已經可以滿足本系統(tǒng)的開發(fā)。
2.2? Pycharm
Pycharm不僅是一款python集成開發(fā)環(huán)境同時也支持前端開發(fā),作為一款集成開發(fā)環(huán)境其具有的功能也十分全面。Pycharm作為本系統(tǒng)的開發(fā)軟件,省去了安裝python插件的步驟,只需要安裝框架后便可以進行開發(fā)。
3 相關算法介紹
近幾年來,目標檢測算法取得了很大的突破。比較流行的算法可以分為兩類,一類是基于Region Proposal的R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它們是two-stage的,需要先使用啟發(fā)式方法(selective search)或者CNN網絡(RPN)產生Region Proposal,然后再在Region Proposal上做分類與回歸。而另一類是Yolo,SSD這類one-stage算法,其僅僅使用一個CNN網絡直接預測不同目標的類別與位置。第一類方法是準確度高一些,但是速度慢,而第二類算法是速度快,但是準確性要低一些。本文首先介紹的是Yolo1算法,其全稱是You Only Look Once: Unified, Real-Time Object Detection,You Only Look Once說的是只需要一次CNN運算,Unified指的是這是一個統(tǒng)一的框架,提供end-to-end的預測,而Real-Time體現是Yolo算法速度快,可以達到實時。Yolo-v1的性能是差于后來的SSD算法的,但是Yolo后來也繼續(xù)進行改進,產生了Yolo9000算法,和Yolov3。
公共場合中通過攝像機實現人數計數具有重要的研究價值。比如: 候車大廳中人群計數的結果,可優(yōu)化公共交通的調度。公共場合中采用攝像機實現人群計數在智能安防領域具有重要價值。因此, 人群計數(Crowd Counting)或者人群密度估計(Crowd Density Estimation)是計算機視覺和智能視頻監(jiān)控領域的重要研究內容。人群計數的通常的方法大致可以分為三種:
3.1 行人檢測 : 這種方法比較直接,在人群較稀疏的場景中,通過檢測視頻中的每一個行人,進而得到人群計數的結果,一般是用基于外觀和運動特征的boosting,貝葉斯模型為基礎的分割,或集成的自頂向下和自底向上的處理,這種方法在人群擁擠情況下不大奏效,需要運用到基于部件模型(如DPM)的檢測器來克服人群擁擠遮擋的問題。
3.2 視覺特征軌跡聚類:對于視頻監(jiān)控,一般用KLT跟蹤器和聚類的方法,通過軌跡聚類得到的數目來估計人數。
3.3 基于特征的回歸: 建立圖像特征和圖像人數的回歸模型, 通過測量圖像特征從而估計場景中的人數。由于擁擠情況下采用直接法容易受到遮擋等難點問題的影響,而間接法從人群的整體特征出發(fā),具有大規(guī)模人群計數的能力。
當前階段人群計數的主要問題有以下幾點:
在大多數現有的工作中,前景分割是必不可少的,但前景分割是項艱巨任務;人群的密度和分布會有顯著變化,需要一種有效的特征來針對圖像中人群規(guī)模可能有顯著變化的情況。
基于以上問題,《Single-Image Crowd Counting via Multi-Column Convolutional Neural Network》這篇文章的作者提出了一個基于CNN的新框架用于任意單幅圖像上的人群計數。MCNN包含了三列具有不同濾波器大小的卷積神經網絡。所做貢獻如下:
3.4 多列架構的原因是:三列對應于不同大小的感受野(大,中,?。?,使每個列卷積神經網絡的功能對由于透視或不同的圖像分辨率造成的人/頭大小變化是自適應的。
3.5 用一個1*1濾波器的卷積層代替了完全連接的層,因此模型的輸入圖像可以是任意大小的,避免了失真。網絡的直接輸出是一個人群密度估計圖,從中可以得到的整體計數。
3.6 收集了一個新的數據集用于人群計數方法的評價。比現有的數據集包含更復雜的情況,能更好地測試方法性能。
4 主體架構設計與實現
在開始正式編程之前首先要完成系統(tǒng)的主體架構設計,這樣編程才會更有目的性,達到的效果才會更加準確,由于現有的兩種算法Yolo與MCNN使用了python語言,因此后端編程使用了flask框架,前端則使用了jQuery框架,他們共有的特點就是簡潔,輕量,既可以很好地完成系統(tǒng)設計,又不會有太多冗雜的功能。
總結
該系統(tǒng)的開發(fā)宗旨是將多種識別算法集成在一個系統(tǒng)當中,有些類似于Eclipse的“萬物皆插件”的宗旨,本系統(tǒng)主要分為選擇圖片,上傳圖片,生產參數列表,原始圖像顯示和識別結果顯示這五大模塊,實現對圖像的識別與結果輸出。
(克拉瑪依職業(yè)技術學院信息工程系,新疆 克拉瑪依 834000)