不使用現有檢測框架實現乙個簡單的物體檢測網路

2022-07-16 05:21:07 字數 1368 閱讀 7455

基於深度神經網路完成乙個極簡的物體檢測器,實現物體類別和bounding_box的**。

每張影象中只有乙個物體;大小128*128畫素

物體類被只有5個:['car', 'bird', 'turtle', 'dog', 'lizard']

每個類別包含180張影象

標註檔案在gt_xx.txt (coordinates are 0-index based): image_index, xmin, ymin, xmax, ymax

定位準確率(iou>0.5)、分類準確率、分類和定位同時正確率,視覺化檢測結果

首先是專案的完整思路,其實並不複雜,具體而言,針對原始影象,由於tiny_vid資料集較小,所以為了得到較好的結果,先對資料實現資料增強,從而獲得了更多的訓練資料,提高模型效果。接下來,通過擴充後的資料集輸入搭建的cnn模型,並匯入ground truth標籤,完成模型的訓練,最終就可以向模型輸入待分類和定位的影象,輸出**的物體類別和邊框。

上圖所示是具體的資料增強方法舉例,首先針對一張原始影象,可以對它進行隨機的distort,改變飽和度,亮度這些顏色引數,然後還以進行影象翻轉,同時對bounding box的位置也進行調整,最後是影象裁切,同樣根據裁切後的影象設定新的bounding box即可。

接下來是網路的架構,首先將資料輸入到backbone網路中完成特徵提取,backbone實現了vgg16和mobilenet兩個版本,可以在訓練之前選擇任一一種,然後自己訓練網路或者匯入預訓練的模型引數,然後首先將輸出特徵送入乙個自己定義的回歸網路,完成bounding box的**,另外再使用乙個分類模型實現物體識別與分類。具體網路結構如上圖。

以vgg為backbone,經過多次訓練得到的最好效果如下,對於乙個簡單的物體檢測網路而言,在這個資料集上的表現還可以。

下面是物體識別的視覺化結果示例,其中粉色為groud_truth,藍色為此模型**的結果。

參考文獻: 

使用flask框架實現乙個簡單的網頁加法運算器

最近在看python web 開發的一些內容,正好看到了flask,這裡做一些記錄 flask 是乙個微型的web框架,相比於 django 整合了各種模組功能,flask 只是使用了簡單的核心,相關功能可以根據需要進行擴充套件 html 模板檔案需要放置在templates資料夾下,檔案放在sta...

乙個簡單基於LRU連線檢測實現

在做網路應用的時候經常要處理不處於活動的連線,對於不活動的tcp連線可以通過設定keepalive來觸發socketerror來處理掉.但有更多的時候是使用ping和pong來處理.對於ping,pong這種做法的發起者有兩種情況,分別是由server或client發起.對於由伺服器發起比較損耗資源...

Python實現乙個簡單的目標檢測

輸入測試 用選擇性搜尋 select search 方法,對輸入選出n個候選區域 用訓練好的cnn模型 每個候選區域,保留乙個得分最高的候選區域 輸出 結果 import sys import cv2 import numpy as np import tensorflow as tf from t...