考場作弊行為自動抓拍告警系統通過yolov7+python網絡模型算法,考場作弊行為自動抓拍告警算法實時監測考場內所有考生的行為,對考生的行為進行自動抓拍,并分析判斷是否存在作弊行為。YOLOv7 的發展方向與當前主流的實時目標檢測器不同,研究團隊希望它能夠同時支持移動 GPU 和從邊緣到云端的 GPU 設備。除了架構優化之外,該研究提出的方法還專注于訓練過程的優化,將重點放在了一些優化模塊和優化方法上。這可能會增加訓練成本以提高目標檢測的準確性,但不會增加推理成本。研究者將提出的模塊和優化方法稱為可訓練的「bag-of-freebies」。
近年來,實時目標檢測器仍在針對不同的邊緣設備進行開發。例如,MCUNet 和 NanoDet 的開發專注于生產低功耗單芯片并提高邊緣 CPU 的推理速度;YOLOX、YOLOR 等方法專注于提高各種 GPU 的推理速度;實時目標檢測器的發展集中在高效架構的設計上;在 CPU 上使用的實時目標檢測器的設計主要基于 MobileNet、ShuffleNet 或 GhostNet;為 GPU 開發的實時目標檢測器則大多使用 ResNet、DarkNet 或 DLA,并使用 CSPNet 策略來優化架構。對于模型重參數化,該研究使用梯度傳播路徑的概念分析了適用于不同網絡層的模型重參數化策略,并提出了有計劃的重參數化模型。此外,研究者發現使用動態標簽分配技術時,具有多個輸出層的模型在訓練時會產生新的問題:「如何為不同分支的輸出分配動態目標?」針對這個問題,研究者提出了一種新的標簽分配方法,稱為從粗粒度到細粒度(coarse-to-fine)的引導式標簽分配。
設計了幾種可訓練的 bag-of-freebies 方法,使得實時目標檢測可以在不增加推理成本的情況下大大提高檢測精度;對于目標檢測方法的演進,研究者發現了兩個新問題:一是重參數化的模塊如何替換原始模塊,二是動態標簽分配策略如何處理分配給不同輸出層的問題,并提出了解決這兩個問題的方法;提出了實時目標檢測器的「擴充(extend)」和「復合擴展(compound scale)」方法,以有效地利用參數和計算;該研究提出的方法可以有效減少 SOTA 實時目標檢測器約 40% 的參數和 50% 的計算量,并具有更快的推理速度和更高的檢測精度。
Adapter接口定義了如下方法:
public abstract void registerDataSetObserver (DataSetObserver observer)
Adapter表示一個數據源,這個數據源是有可能發生變化的,比如增加了數據、刪除了數據、修改了數據,當數據發生變化的時候,它要通知相應的AdapterView做出相應的改變。為了實現這個功能,Adapter使用了觀察者模式,Adapter本身相當于被觀察的對象,AdapterView相當于觀察者,通過調用registerDataSetObserver方法,給Adapter注冊觀察者。
public abstract void unregisterDataSetObserver (DataSetObserver observer)
通過調用unregisterDataSetObserver方法,反注冊觀察者。
public abstract int getCount () 返回Adapter中數據的數量。
public abstract Object getItem (int position)
Adapter中的數據類似于數組,里面每一項就是對應一條數據,每條數據都有一個索引位置,即position,根據position可以獲取Adapter中對應的數據項。
public abstract long getItemId (int position)
獲取指定position數據項的id,通常情況下會將position作為id。在Adapter中,相對來說,position使用比id使用頻率更高。
public abstract boolean hasStableIds ()
hasStableIds表示當數據源發生了變化的時候,原有數據項的id會不會發生變化,如果返回true表示Id不變,返回false表示可能會變化。Android所提供的Adapter的子類(包括直接子類和間接子類)的hasStableIds方法都返回false。
public abstract View getView (int position, View convertView, ViewGroup parent)
getView是Adapter中一個很重要的方法,該方法會根據數據項的索引為AdapterView創建對應的UI項。