更多視覺(jué)額自動(dòng)駕駛項(xiàng)目請(qǐng)見(jiàn):
小白學(xué)視覺(jué)
自動(dòng)駕駛項(xiàng)目
項(xiàng)目成果圖
現(xiàn)推出專欄項(xiàng)目:從圖像處理(去霧/去雨)/目標(biāo)檢測(cè)/目標(biāo)跟蹤/單目測(cè)距/到人體姿態(tài)識(shí)別等視覺(jué)感知項(xiàng)目------------------------>>>>傳送門
廢話不多說(shuō),切入正文!
目標(biāo)檢測(cè)
YOLOv5是一種計(jì)算機(jī)視覺(jué)算法,它是YOLO(You Only Look Once)系列算法的最新版本,由Joseph Redmon和Alexey Bochkovskiy等人開(kāi)發(fā)。它是一種單階段目標(biāo)檢測(cè)算法,可以在圖像中檢測(cè)出多個(gè)物體,并輸出它們的類別和位置信息。相比于以往的YOLO版本,YOLOv5具有更高的檢測(cè)精度和更快的速度。
網(wǎng)絡(luò)架構(gòu)
YOLOv5使用了一種新的檢測(cè)架構(gòu),稱為CSP(Cross-Stage Partial)架構(gòu),它將原始的卷積層替換為CSP卷積層,這種新的卷積層可以更好地利用計(jì)算資源,提高模型的效率和準(zhǔn)確度。此外,YOLOv5還使用了一種新的數(shù)據(jù)增強(qiáng)技術(shù),稱為Mosaic數(shù)據(jù)增強(qiáng),這種技術(shù)可以在單個(gè)圖像中合并多個(gè)圖像,以增加樣本的復(fù)雜性和多樣性,提高模型的泛化能力。
改進(jìn)點(diǎn)
YOLOv5引入了一種新的訓(xùn)練策略,稱為Self-Adversarial Training(SAT),它可以在模型訓(xùn)練過(guò)程中自動(dòng)生成對(duì)抗性樣本,以幫助模型更好地學(xué)習(xí)物體的特征和位置信息,提高模型的魯棒性和準(zhǔn)確度。
應(yīng)用領(lǐng)域
YOLOv5的同時(shí)也提供了預(yù)訓(xùn)練模型,可以直接用于物體檢測(cè)任務(wù)。此外,YOLOv5還可以在不同的硬件平臺(tái)上運(yùn)行,包括CPU、GPU和TPU等。因此,YOLOv5非常適合在嵌入式設(shè)備、移動(dòng)設(shè)備和云端服務(wù)器等不同場(chǎng)景中應(yīng)用,可以廣泛應(yīng)用于交通、安防、無(wú)人駕駛、智能家居等領(lǐng)域。
deepsort追蹤
多目標(biāo)跟蹤算法
DeepSORT是一種基于深度學(xué)習(xí)的多目標(biāo)跟蹤算法,可以在復(fù)雜的場(chǎng)景中實(shí)現(xiàn)高效準(zhǔn)確的目標(biāo)追蹤。DeepSORT的核心思想是將目標(biāo)檢測(cè)和目標(biāo)跟蹤兩個(gè)任務(wù)分開(kāi)處理,利用深度學(xué)習(xí)網(wǎng)絡(luò)提取目標(biāo)特征,并結(jié)合卡爾曼濾波和匈牙利算法等傳統(tǒng)跟蹤方法,實(shí)現(xiàn)對(duì)多個(gè)目標(biāo)的準(zhǔn)確追蹤。
代碼
def main(_argv): #--->全部代碼qq1309399183--<
# Definition of the parameters
max_cosine_distance = 0.4
nn_budget = None
nms_max_overlap = 1.0
# initialize deep sort
model_filename = 'model_data/mars-small128.pb'
encoder = gdet.create_box_encoder(model_filename, batch_size=1)
# calculate cosine distance metric
metric = nn_matching.NearestNeighborDistanceMetric("cosine", max_cosine_distance, nn_budget)
# initialize tracker
tracker = Tracker(metric)
# load configuration for object detector
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
STRIDES, ANCHORS, NUM_CLASS, XYSCALE = utils.load_config(FLAGS)
input_size = FLAGS.size
video_path = FLAGS.video
# load tflite model if flag is set
if FLAGS.framework == 'tflite':
interpreter = tf.lite.Interpreter(model_path=FLAGS.weights)
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
print(input_details)
print(output_details)
# otherwise load standard tensorflow saved model
else:
saved_model_loaded = tf.saved_model.load(FLAGS.weights, tags=[tag_constants.SERVING])
infer = saved_model_loaded.signatures['serving_default']
# begin video capture
try:
vid = cv2.VideoCapture(int(video_path))
except:
vid = cv2.VideoCapture(video_path)
out = None
# get video ready to save locally if flag is set
if FLAGS.output:
# by default VideoCapture returns float instead of int
width = int(vid.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(vid.get(cv2.CAP_PROP_FPS))
codec = cv2.VideoWriter_fourcc(*FLAGS.output_format)
out = cv2.VideoWriter(FLAGS.output, codec, fps, (width, height))
frame_num = 0
# while video is running
while True:
return_value, frame = vid.read()
if return_value:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
image = Image.fromarray(frame)
else:
print('Video has ended or failed, try a different video format!')
break
frame_num += 1
print('Frame #: ', frame_num)
frame_size = frame.shape[:2]
image_data = cv2.resize(frame, (input_size, input_size))
image_data = image_data / 255.
image_data = image_data[np.newaxis, ...].astype(np.float32)
模塊
DeepSORT主要有三個(gè)模塊:特征提取模塊、卡爾曼濾波模塊和匈牙利算法模塊。其中,特征提取模塊使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)提取每個(gè)目標(biāo)的特征向量,以區(qū)分不同目標(biāo)之間的差異??柭鼮V波模塊用于預(yù)測(cè)每個(gè)目標(biāo)的位置和速度,以減小運(yùn)動(dòng)模糊和噪聲對(duì)追蹤結(jié)果的影響。匈牙利算法模塊用于將當(dāng)前幀中的每個(gè)檢測(cè)框與上一幀中已跟蹤的目標(biāo)進(jìn)行匹配,以確定每個(gè)目標(biāo)的唯一ID,并更新目標(biāo)的位置和速度信息。
新特點(diǎn)
DeepSORT除了基本的跟蹤功能外,還具有一些高級(jí)功能。例如,它可以對(duì)目標(biāo)進(jìn)行重新識(shí)別,以處理目標(biāo)遮擋、漂移等問(wèn)題;它還可以使用多個(gè)相機(jī)進(jìn)行目標(biāo)跟蹤,以處理多個(gè)視角的場(chǎng)景;它還可以實(shí)現(xiàn)在線學(xué)習(xí),以適應(yīng)不同場(chǎng)景下的目標(biāo)特征。
單目測(cè)距
# 介紹
YOLO(You Only Look Once)是一種單階段目標(biāo)檢測(cè)算法,可以在圖像中檢測(cè)出多個(gè)物體,并輸出它們的類別和位置信息。與傳統(tǒng)的目標(biāo)檢測(cè)方法不同,YOLO不僅可以檢測(cè)物體,還可以計(jì)算物體的深度信息,從而實(shí)現(xiàn)單目測(cè)距。
代碼
depth = (cam_H / np.sin(angle_c)) * math.cos(angle_b)#目標(biāo)深度
# print('depth', depth)
##聯(lián)系--方式:----qq1309399183--------
k_inv = np.linalg.inv(in_mat)#K^-1 內(nèi)參矩陣的逆
p_inv = np.linalg.inv(out_mat)#R^-1 外參矩陣的逆
print("out---:",p_inv)
point_c = np.array([x_d, y_d, 1]) ##圖像坐標(biāo)
point_c = np.transpose(point_c)#目標(biāo)的世界坐標(biāo)
# print('point_c', point_c)
print('in----', k_inv)
##相機(jī)坐標(biāo)系和圖像坐標(biāo)系下物體坐標(biāo)可按照下式轉(zhuǎn)換。
c_position = np.matmul(k_inv, depth * point_c)#Zc*[u,v,1].T*ins^-1==[Xc,Yc,Zc].T #坐標(biāo)轉(zhuǎn)換
YOLO單目測(cè)距的具體實(shí)現(xiàn)方法有多種,其中比較常見(jiàn)的方法是基于單目視覺(jué)幾何學(xué)的方法。該方法利用相機(jī)成像原理和三角測(cè)量原理,通過(guò)計(jì)算物體在圖像中的位置和大小,以及相機(jī)的內(nèi)參和外參等參數(shù),來(lái)估計(jì)物體的距離。
測(cè)距步驟
具體來(lái)說(shuō),YOLO單目測(cè)距可以分為以下幾個(gè)步驟:
-
相機(jī)標(biāo)定:通過(guò)拍攝特定的標(biāo)定板,獲取相機(jī)的內(nèi)參和外參等參數(shù),用于后續(xù)的距離計(jì)算。
-
目標(biāo)檢測(cè):使用YOLO算法在圖像中檢測(cè)出目標(biāo),并獲取目標(biāo)的位置和大小信息。
-
物體位置計(jì)算:利用相機(jī)成像原理和三角測(cè)量原理,計(jì)算物體在相機(jī)坐標(biāo)系下的三維坐標(biāo)。
-
距離計(jì)算:利用相機(jī)的內(nèi)參和外參等參數(shù),將物體在相機(jī)坐標(biāo)系下的三維坐標(biāo)轉(zhuǎn)換為物體在世界坐標(biāo)系下的三維坐標(biāo),并計(jì)算物體與相機(jī)之間的距離。
除了基于單目視覺(jué)幾何學(xué)的方法外,還有一些其他的方法可以實(shí)現(xiàn)YOLO單目測(cè)距,例如基于深度學(xué)習(xí)的方法和基于光流的方法等,這些方法都有其優(yōu)缺點(diǎn)和適用場(chǎng)景,需要根據(jù)實(shí)際情況選擇合適的方法。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-448811.html
結(jié)論
總的來(lái)說(shuō),YOLO單目測(cè)距是一種基于單目視覺(jué)的距離估計(jì)方法,具有簡(jiǎn)單、快速、低成本等優(yōu)點(diǎn),在自動(dòng)駕駛、機(jī)器人導(dǎo)航、智能交通等領(lǐng)域有廣泛的應(yīng)用前景。但需要注意的是,由于單目視覺(jué)存在一些局限性,如遮擋、光照變化、紋理缺失等問(wèn)題,因此需要結(jié)合其他傳感器或算法進(jìn)行輔助,以提高測(cè)距的準(zhǔn)確度和魯棒性。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-448811.html
到了這里,關(guān)于目標(biāo)檢測(cè)+目標(biāo)追蹤+單目測(cè)距(畢設(shè)+代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!