0 前言
?? 這兩年開(kāi)始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。
為了大家能夠順利以及最少的精力通過(guò)畢設(shè),學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天要分享的是
?? **基于深度學(xué)習(xí)的行人重識(shí)別算法研究與實(shí)現(xiàn) **
??學(xué)長(zhǎng)這里給一個(gè)題目綜合評(píng)分(每項(xiàng)滿分5分)
- 難度系數(shù):3分
- 工作量:3分
- 創(chuàng)新點(diǎn):5分
1 課題背景
行人重識(shí)別是計(jì)算機(jī)視覺(jué)領(lǐng)域的研究熱點(diǎn)之一,旨在研究不重疊的多個(gè)攝像區(qū)域間對(duì)于特定行人的匹配準(zhǔn)確率,是圖像檢索的子問(wèn)題,多應(yīng)用于安防和刑偵。我國(guó)實(shí)現(xiàn)的視頻監(jiān)控“天網(wǎng)”,就是通過(guò)在人流量大的公共區(qū)域密集安裝監(jiān)控設(shè)備來(lái)實(shí)現(xiàn)“平安城市”建設(shè)。盡管部分?jǐn)z像頭可轉(zhuǎn)動(dòng),但仍存在監(jiān)控盲區(qū)和死角等局限性問(wèn)題,Re-ID技術(shù)彌補(bǔ)了攝像設(shè)備的視覺(jué)局限性。然而,在實(shí)際應(yīng)用中異時(shí)異地相同行人的圖像數(shù)據(jù),在姿勢(shì)、前景背景、光線視角以及成像分辨率等方面差異大,使得Re-ID研究具有挑戰(zhàn)性。
行人重識(shí)別展示
2 效果展示
手動(dòng)標(biāo)記
檢測(cè)結(jié)果
3 行人檢測(cè)
本項(xiàng)目實(shí)現(xiàn)了基于 yolo框架的行人目標(biāo)檢測(cè)算法,并將該目標(biāo)檢測(cè)算法應(yīng)用在圖像和視頻的識(shí)別檢測(cè)之中。
簡(jiǎn)介
下圖所示為 YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)圖,分為輸入端,Backbone,Neck 和 Prediction 四個(gè)部分。其中,
輸入端包括 Mosaic 數(shù)據(jù)增強(qiáng)、自適應(yīng)圖片縮放、自適應(yīng)錨框計(jì)算,Backbone 包括 Focus 結(jié)構(gòu)、CSP
結(jié) 構(gòu),Neck 包 括 FPN+PAN 結(jié) 構(gòu),Prediction 包 括GIOU_Loss 結(jié)構(gòu)。
Head輸出層
輸出層的錨框機(jī)制與YOLOv4相同,主要改進(jìn)的是訓(xùn)練時(shí)的損失函數(shù)GIOU_Loss,以及預(yù)測(cè)框篩選的DIOU_nms。
對(duì)于Head部分,可以看到三個(gè)紫色箭頭處的特征圖是40×40、20×20、10×10。以及最后Prediction中用于預(yù)測(cè)的3個(gè)特征圖:
①==>40×40×255
②==>20×20×255
③==>10×10×255
相關(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)
4 行人重識(shí)別
簡(jiǎn)介
行人重識(shí)別(Person re-identification)也稱行人再識(shí)別, 被廣泛認(rèn)為是一個(gè)圖像檢索的子問(wèn)題, 是利用計(jì)算機(jī)視覺(jué)技術(shù)判斷圖像或者視頻中是否存在特定行人的技術(shù), 即給定一個(gè)監(jiān)控行人圖像檢索跨設(shè)備下的該行人圖像。行人重識(shí)別技術(shù)可以彌補(bǔ)目前固定攝像頭的視覺(jué)局限, 并可與行人檢測(cè)、行人跟蹤技術(shù)相結(jié)合, 應(yīng)用于視頻監(jiān)控、智能安防等領(lǐng)域。行人重識(shí)別系統(tǒng)
行人檢測(cè)
主要用于檢測(cè)視頻中出現(xiàn)的人像,作為一個(gè)行人重識(shí)別首先要做到的就是能夠?qū)D片中的行人識(shí)別出來(lái),稱為Gallery輸入。當(dāng)然,在學(xué)術(shù)研究領(lǐng)域,行人重識(shí)別主要還是關(guān)注的下面這個(gè)部分,而對(duì)于行人檢測(cè)這部分多選擇采用目前已經(jīng)設(shè)計(jì)好的框架。
行人重識(shí)別
這一部分就是對(duì)上面的Probe以及Gallery進(jìn)行特征提取,當(dāng)然提取的方式可以是手工提取,也可以使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行提取。然后呢,就是對(duì)圖片的相似度進(jìn)行度量,根據(jù)相似圖進(jìn)行排序。
針對(duì)行人重識(shí)別系統(tǒng)從細(xì)節(jié)來(lái)說(shuō),包括下面幾個(gè)部分:
- 特征提取(feature Extraction):學(xué)習(xí)能夠應(yīng)對(duì)在不同攝像頭下行人變化的特征。
- 度量學(xué)習(xí)(Metric Learning) :將學(xué)習(xí)到的特征映射到新的空間使相同的人更近不同的人更遠(yuǎn)。
- 圖像檢索(Matching):根據(jù)圖片特征之間的距離進(jìn)行排序,返回檢索結(jié)果
Reid提取特征
行人重識(shí)別和人臉識(shí)別是類似的,剛開(kāi)始接觸的可以認(rèn)為就是人臉換成行人的識(shí)別。
-
截取需要識(shí)別的行人底庫(kù)
-
保存行人特征,方便進(jìn)行特征比對(duì)
相關(guān)代碼文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-834596.html
# features:reid模型輸出512dim特征
person_cossim = cosine_similarity(features, self.query_feat)
max_idx = np.argmax(person_cossim, axis=1)
maximum = np.max(person_cossim, axis=1)
max_idx[maximum < 0.6] = -1
score = maximum
reid_results = max_idx
draw_person(ori_img, xy, reid_results, self.names) # draw_person name
5 其他工具
OpenCV
是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺(jué)處理開(kāi)源軟件庫(kù),是由Intel公司俄羅斯團(tuán)隊(duì)發(fā)起并參與和維護(hù),支持與計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)相關(guān)的眾多算法。
本項(xiàng)目中利用opencv進(jìn)行相關(guān)標(biāo)記工作,相關(guān)代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-834596.html
import cv2
import numpy as np
def cv_imread(filePath):
cv_img = cv2.imdecode(np.fromfile(filePath,dtype=np.uint8), -1)
return cv_img
# 需要可視化的圖片地址
img_path = ‘’
# 對(duì)應(yīng)圖片的檢測(cè)結(jié)果
detection_result = []
# 如果路徑中包含中文,則需要用函數(shù)cv_imread的方式來(lái)讀取,否則會(huì)報(bào)錯(cuò)
img = cv_imread(img_path)
# 可視化
for bb in detection_result:
# bb的格式為:[xmin, ymin, xmax, ymax]
cv2.rectangle(img, (int(bb[0]), int(bb[1])),
(int(bb[2]), int(bb[3])),
(255, 0, 0), 2)
cv2.imshow('1', img)
cv2.waitKey(0)
6 最后
到了這里,關(guān)于深度學(xué)習(xí)畢設(shè)項(xiàng)目 深度學(xué)習(xí)實(shí)現(xiàn)行人重識(shí)別 - python opencv yolo Reid的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!