青島旅游網(wǎng)站建設怎么制作一個網(wǎng)站5個網(wǎng)頁
人員著裝識別系統(tǒng)通過yolo網(wǎng)絡模型識別算法,人員著裝識別系統(tǒng)算法通過現(xiàn)場安裝的攝像頭識別工廠人員及工地人員是否按要求穿戴著裝,實時監(jiān)測人員的著裝情況,并進行相關(guān)預警。目標檢測架構(gòu)分為兩種,一種是two-stage,一種是one-stage,區(qū)別就在于 two-stage 有region proposal過程,類似于一種海選過程,網(wǎng)絡會根據(jù)候選區(qū)域生成位置和類別,而one-stage直接從圖片生成位置和類別。今天提到的 YOLO就是一種 one-stage方法。YOLO是You Only Look Once的縮寫,意思是神經(jīng)網(wǎng)絡只需要看一次圖片,就能輸出結(jié)果。
首先先介紹一下滑動窗口技術(shù),這對我們理解Yolo算法是有幫助的。采用滑動窗口的目標檢測算法思路非常簡單,它將檢測問題轉(zhuǎn)化為了圖像分類問題。其基本原理就是采用不同大小和比例(寬高比)的窗口在整張圖片上以一定的步長進行滑動,然后對這些窗口對應的區(qū)域做圖像分類,這樣就可以實現(xiàn)對整張圖片的檢測了,如下圖3所示,如DPM就是采用這種思路。但是這個方法有致命的缺點,就是你并不知道要檢測的目標大小是什么規(guī)模,所以你要設置不同大小和比例的窗口去滑動,而且還要選取合適的步長。但是這樣會產(chǎn)生很多的子區(qū)域,并且都要經(jīng)過分類器去做預測,這需要很大的計算量,所以你的分類器不能太復雜,因為要保證速度。解決思路之一就是減少要分類的子區(qū)域,這就是R-CNN的一個改進策略,其采用了selective search方法來找到最有可能包含目標的子區(qū)域(Region Proposal),其實可以看成采用啟發(fā)式方法過濾掉很多子區(qū)域,這會提升效率。
在進行模型訓練時,我們需要構(gòu)造訓練樣本和設計損失函數(shù),才能利用梯度下降對網(wǎng)絡進行訓練。將一幅圖片輸入到y(tǒng)olo模型中,對應的輸出是一個7x7x30張量,構(gòu)建標簽label時對于原圖像中的每一個網(wǎng)格grid都需要構(gòu)建一個30維的向量。Yolo先使用ImageNet數(shù)據(jù)集對前20層卷積網(wǎng)絡進行預訓練,然后使用完整的網(wǎng)絡,在PASCAL VOC數(shù)據(jù)集上進行對象識別和定位的訓練。Yolo的最后一層采用線性激活函數(shù),其它層都是Leaky ReLU。訓練中采用了drop out和數(shù)據(jù)增強(data augmentation)來防止過擬合。
?
?
Adapter接口定義了如下方法:
public abstract void registerDataSetObserver (DataSetObserver observer)
Adapter表示一個數(shù)據(jù)源,這個數(shù)據(jù)源是有可能發(fā)生變化的,比如增加了數(shù)據(jù)、刪除了數(shù)據(jù)、修改了數(shù)據(jù),當數(shù)據(jù)發(fā)生變化的時候,它要通知相應的AdapterView做出相應的改變。為了實現(xiàn)這個功能,Adapter使用了觀察者模式,Adapter本身相當于被觀察的對象,AdapterView相當于觀察者,通過調(diào)用registerDataSetObserver方法,給Adapter注冊觀察者。
public abstract void unregisterDataSetObserver (DataSetObserver observer)
通過調(diào)用unregisterDataSetObserver方法,反注冊觀察者。
public abstract int getCount () 返回Adapter中數(shù)據(jù)的數(shù)量。
public abstract Object getItem (int position)
Adapter中的數(shù)據(jù)類似于數(shù)組,里面每一項就是對應一條數(shù)據(jù),每條數(shù)據(jù)都有一個索引位置,即position,根據(jù)position可以獲取Adapter中對應的數(shù)據(jù)項。
public abstract long getItemId (int position)
獲取指定position數(shù)據(jù)項的id,通常情況下會將position作為id。在Adapter中,相對來說,position使用比id使用頻率更高。
public abstract boolean hasStableIds ()
hasStableIds表示當數(shù)據(jù)源發(fā)生了變化的時候,原有數(shù)據(jù)項的id會不會發(fā)生變化,如果返回true表示Id不變,返回false表示可能會變化。Android所提供的Adapter的子類(包括直接子類和間接子類)的hasStableIds方法都返回false。
public abstract View getView (int position, View convertView, ViewGroup parent)
getView是Adapter中一個很重要的方法,該方法會根據(jù)數(shù)據(jù)項的索引為AdapterView創(chuàng)建對應的UI項。