0 前言
?? 優(yōu)質(zhì)競賽項(xiàng)目系列,今天要分享的是
?? 深度學(xué)習(xí)YOLO圖像視頻足球和人體檢測
該項(xiàng)目較為新穎,適合作為競賽課題方向,學(xué)長非常推薦!
??學(xué)長這里給一個題目綜合評分(每項(xiàng)滿分5分)
- 難度系數(shù):3分
- 工作量:3分
- 創(chuàng)新點(diǎn):5分
?? 更多資料, 項(xiàng)目分享:文章來源:http://www.zghlxwxcb.cn/news/detail-724230.html
https://gitee.com/dancheng-senior/postgraduate文章來源地址http://www.zghlxwxcb.cn/news/detail-724230.html
1 課題背景
得益于深度學(xué)習(xí)技術(shù)的飛速發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測算法研究成為近幾年研究的熱門方向。
本項(xiàng)目基于Yolov5算法實(shí)現(xiàn)圖像視頻足球和人檢測。
2 實(shí)現(xiàn)效果
3 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種包含卷積運(yùn)算的深層前饋神經(jīng)網(wǎng)絡(luò)。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)每個神經(jīng)元權(quán)重連接上層的所有神經(jīng)元,所以會出現(xiàn)大量權(quán)重值,增加整個網(wǎng)絡(luò)的數(shù)據(jù)量和復(fù)雜程度。CNN則具有兩個重要特征則是“局部感知”和“權(quán)值共享”,可有效提取數(shù)據(jù)的特征同時降低權(quán)值數(shù)量。完整的卷積網(wǎng)絡(luò)通常包括卷積層、池化層、全連接層和輸出層。
卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)行流程就是在卷積層進(jìn)行特征提取,池化層進(jìn)行進(jìn)一步特征概括,最終通過全連接層進(jìn)行分類的過程,流程見下圖。根據(jù)數(shù)據(jù)的特征不同,卷積網(wǎng)絡(luò)需要構(gòu)建不同深度的網(wǎng)絡(luò)結(jié)構(gòu),越復(fù)雜的數(shù)據(jù)越需要豐富的網(wǎng)絡(luò)堆疊方式來提取數(shù)據(jù)的多層特征。
卷積層的提取數(shù)據(jù)特征的作用方式是通過卷積運(yùn)算,使相同的卷積核根據(jù)固定的步長遍歷數(shù)據(jù)。卷積核每遍歷一個位置就和前一層中的神經(jīng)元執(zhí)行卷積運(yùn)算,它是將矩陣中相同位置的元素直接相乘,然后求和的過程。在一維卷積神經(jīng)網(wǎng)絡(luò)中按照這個運(yùn)算邏輯將卷積核矩陣根據(jù)步幅值繼續(xù)向右滑動,直到覆蓋整個輸入矩陣,如圖。
最后,得到卷積后的特征矩陣。在卷積層,輸入由一組卷積核卷積得到新的特征映射經(jīng)過激活函數(shù)處理傳遞至下一層。
池化層實(shí)現(xiàn)的功能則是對輸入數(shù)據(jù)的降維和抽象,通過在空間范圍內(nèi)做維度約減,使模型可以抽取更廣范圍的特征,同時減少計算量和參數(shù)個數(shù)。池化采樣主要分為兩種方法:平均池化采樣和最大池化采樣。本文采用的是最大池化。池化過程如圖。
最終卷積層和池化層提取的所有特征,在全連接層中以非線性地擬合輸入數(shù)據(jù)用于分類。
4 Yolov5算法
簡介
下圖所示為 YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)圖,分為輸入端,Backbone,Neck 和 Prediction 四個部分。其中,
輸入端包括 Mosaic 數(shù)據(jù)增強(qiáng)、自適應(yīng)圖片縮放、自適應(yīng)錨框計算,Backbone 包括 Focus 結(jié)構(gòu)、CSP
結(jié) 構(gòu),Neck 包 括 FPN+PAN 結(jié) 構(gòu),Prediction 包 括GIOU_Loss 結(jié)構(gòu)。
相關(guān)代碼
?
class Yolo(object):
def __init__(self, weights_file, verbose=True):
self.verbose = verbose
# detection params
self.S = 7 # cell size
self.B = 2 # boxes_per_cell
self.classes = ["aeroplane", "bicycle", "bird", "boat", "bottle",
"bus", "car", "cat", "chair", "cow", "diningtable",
"dog", "horse", "motorbike", "person", "pottedplant",
"sheep", "sofa", "train","tvmonitor"]
self.C = len(self.classes) # number of classes
# offset for box center (top left point of each cell)
self.x_offset = np.transpose(np.reshape(np.array([np.arange(self.S)]*self.S*self.B),
[self.B, self.S, self.S]), [1, 2, 0])
self.y_offset = np.transpose(self.x_offset, [1, 0, 2])
self.threshold = 0.2 # confidence scores threhold
self.iou_threshold = 0.4
# the maximum number of boxes to be selected by non max suppression
self.max_output_size = 10
self.sess = tf.Session()
self._build_net()
self._build_detector()
self._load_weights(weights_file)
5 數(shù)據(jù)集
數(shù)據(jù)集包含4000多張標(biāo)注過的球員與足球
6 最后
?? 更多資料, 項(xiàng)目分享:
https://gitee.com/dancheng-senior/postgraduate
到了這里,關(guān)于競賽選題 深度學(xué)習(xí)YOLO圖像視頻足球和人體檢測 - python opencv的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!