?前言
? ? ? ???大四是整個(gè)大學(xué)期間最忙碌的時(shí)光,一邊要忙著備考或?qū)嵙?xí)為畢業(yè)后面臨的就業(yè)升學(xué)做準(zhǔn)備,一邊要為畢業(yè)設(shè)計(jì)耗費(fèi)大量精力。近幾年各個(gè)學(xué)校要求的畢設(shè)項(xiàng)目越來(lái)越難,有不少課題是研究生級(jí)別難度的,對(duì)本科同學(xué)來(lái)說(shuō)是充滿(mǎn)挑戰(zhàn)。為幫助大家順利通過(guò)和節(jié)省時(shí)間與精力投入到更重要的就業(yè)和考試中去,學(xué)長(zhǎng)分享優(yōu)質(zhì)的選題經(jīng)驗(yàn)和畢設(shè)項(xiàng)目與技術(shù)思路。
? ? ? ????對(duì)畢設(shè)有任何疑問(wèn)都可以問(wèn)學(xué)長(zhǎng)哦!
? ? ? ? ?選題指導(dǎo):
? ? ? ? 最新最全計(jì)算機(jī)專(zhuān)業(yè)畢設(shè)選題精選推薦匯總
? ? ? ??大家好,這里是海浪學(xué)長(zhǎng)畢設(shè)專(zhuān)題,本次分享的課題是
? ? ? ? ??復(fù)雜背景下的無(wú)人機(jī)(UVA)夜間目標(biāo)檢測(cè)系統(tǒng)
設(shè)計(jì)思路
一、課題背景與意義
? ? ? ?近年來(lái),隨著計(jì)算機(jī)圖像處理和無(wú)人機(jī)技術(shù)的發(fā)展,基于無(wú)人機(jī)航拍圖像的目標(biāo)檢測(cè)得到廣泛研究,并成功應(yīng)用于視頻監(jiān)控、森林防火、農(nóng)業(yè)信息、電力線(xiàn)檢測(cè)、考古研究、道橋損壞評(píng)估和軍事偵察等領(lǐng)域。然而,現(xiàn)有研究多集中在良好照明條件下進(jìn)行,對(duì)于夜間目標(biāo)檢測(cè)技術(shù)的研究相對(duì)較少,導(dǎo)致無(wú)人機(jī)在夜間的應(yīng)用能力受限。因此,研究高準(zhǔn)確度的無(wú)人機(jī)夜間目標(biāo)檢測(cè)技術(shù)對(duì)于提升無(wú)人機(jī)在各種環(huán)境下的應(yīng)用能力具有重要意義。
二、算法理論原理
? ? ? ?YOLOv5的網(wǎng)絡(luò)架構(gòu)由輸入層(Input)、Backbone層、Neck層和預(yù)測(cè)層(Head)組成。輸入層采用Mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框和自適應(yīng)圖片縮放對(duì)輸入圖像進(jìn)行預(yù)處理。Mosaic數(shù)據(jù)增強(qiáng)通過(guò)對(duì)4種圖片隨機(jī)拼接,每個(gè)圖片都有各自的識(shí)別框,然后將拼接的圖片作為訓(xùn)練數(shù)據(jù)送入網(wǎng)絡(luò)進(jìn)行深度學(xué)習(xí),提升了模型的訓(xùn)練速度和網(wǎng)絡(luò)精度。自適應(yīng)錨框計(jì)算在訓(xùn)練時(shí)直接得出最佳描點(diǎn)框,而不需要像YOLOv3和YOLOv4那樣需要運(yùn)行單獨(dú)的程序獲取初始描點(diǎn)框。自適應(yīng)圖片縮放將原始圖片縮放到標(biāo)準(zhǔn)尺寸,這些數(shù)據(jù)處理方法大大縮短了訓(xùn)練時(shí)間。
? ? ? ?Backbone層是用于提取圖像不同特征的神經(jīng)卷積網(wǎng)絡(luò),主要包括CBS、CSP_X和SSPF。輸入圖像經(jīng)過(guò)預(yù)處理后,首先進(jìn)入CBS層,由卷積層(Conv)、正則化(BN)和激活函數(shù)(SiLU)組成,對(duì)圖像進(jìn)行特征提取。處理完成后,進(jìn)入CSP_X層,通過(guò)對(duì)卷積層分通道減少梯度消失,提取更細(xì)粒度的特征,同時(shí)降低計(jì)算量,提升CNN的學(xué)習(xí)能力。重復(fù)這些算法,進(jìn)行更多特征的提取。最后,池化層利用SPPF算法將任意大小的圖像特征圖轉(zhuǎn)換成固定大小的特征向量,實(shí)現(xiàn)了不同模型的特征融合。
? ? ? ?Neck層是網(wǎng)絡(luò)的融合部分,它通過(guò)CSP+PAN結(jié)構(gòu)對(duì)Backbone網(wǎng)絡(luò)得到的特征層進(jìn)行深度的特征提取,并將提取好的特征傳遞給預(yù)測(cè)層。
? ? ? ?Head層對(duì)最后的輸出結(jié)果進(jìn)行預(yù)測(cè),使輸出結(jié)果符合預(yù)期目標(biāo)。
? ? ? ?YOLOv5的網(wǎng)絡(luò)架構(gòu)通過(guò)數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框和自適應(yīng)圖片縮放等技術(shù)對(duì)輸入圖像進(jìn)行預(yù)處理,通過(guò)Backbone、Neck和Head層實(shí)現(xiàn)特征提取、特征融合和目標(biāo)預(yù)測(cè),從而提高夜間無(wú)人機(jī)目標(biāo)檢測(cè)的準(zhǔn)確性和性能。
相關(guān)代碼:
import numpy as np
import cv2
def color_restoration(image):
# 將圖像轉(zhuǎn)換為浮點(diǎn)數(shù)類(lèi)型
image_float = image.astype(np.float32)
三、檢測(cè)的實(shí)現(xiàn)
3.1 數(shù)據(jù)集
? ? ? ?由于網(wǎng)絡(luò)上缺乏合適的夜間無(wú)人機(jī)目標(biāo)檢測(cè)數(shù)據(jù)集,我決定親自進(jìn)行現(xiàn)場(chǎng)拍攝,收集圖片并創(chuàng)建一個(gè)全新的數(shù)據(jù)集。這個(gè)數(shù)據(jù)集包含了各種夜間場(chǎng)景下的無(wú)人機(jī)目標(biāo)檢測(cè)圖像,其中包括不同類(lèi)型的目標(biāo)、不同光照條件下的場(chǎng)景以及各種復(fù)雜背景。通過(guò)現(xiàn)場(chǎng)拍攝,我能夠捕捉到真實(shí)的夜間環(huán)境和多樣的目標(biāo)情況,這將為我的夜間無(wú)人機(jī)目標(biāo)檢測(cè)研究提供更準(zhǔn)確、可靠的數(shù)據(jù)。我相信這個(gè)自制的數(shù)據(jù)集將為夜間無(wú)人機(jī)目標(biāo)檢測(cè)技術(shù)的發(fā)展提供有力的支持,并為該領(lǐng)域的研究和應(yīng)用做出積極的貢獻(xiàn)。
? ? ? ?夜間無(wú)人機(jī)目標(biāo)檢測(cè)自制數(shù)據(jù)集的數(shù)據(jù)標(biāo)注是關(guān)鍵步驟,常見(jiàn)的方法包括目標(biāo)邊界框標(biāo)注和目標(biāo)類(lèi)別標(biāo)注。在標(biāo)注過(guò)程中,確保準(zhǔn)確性和一致性很重要,可以通過(guò)多個(gè)標(biāo)注人員和驗(yàn)證校對(duì)來(lái)提高標(biāo)注質(zhì)量。此外,為了使數(shù)據(jù)集更豐富多樣,可以考慮在不同時(shí)間、光照條件下拍攝,并包含各種目標(biāo)和場(chǎng)景。這樣的數(shù)據(jù)集將為夜間無(wú)人機(jī)目標(biāo)檢測(cè)研究提供有力支持,提高模型的泛化能力和檢測(cè)性能。
相關(guān)代碼示例:
def random_translation(image, translation_range):
tx = np.random.randint(-translation_range, translation_range)
ty = np.random.randint(-translation_range, translation_range)
height, width = image.shape[:2]
translation_matrix = np.float32([[1, 0, tx], [0, 1, ty]])
translated_image = cv2.warpAffine(image, translation_matrix, (width, height))
return translated_image
# 讀取圖像
image = cv2.imread('image.jpg')
# 隨機(jī)旋轉(zhuǎn)圖像
rotated_image = random_rotation(image, 10)
# 隨機(jī)縮放圖像
scaled_image = random_scale(image, (0.8, 1.2))
# 隨機(jī)平移圖像
translated_image = random_translation(image, 50)
3.2 實(shí)驗(yàn)環(huán)境搭建
? ? ? ?本實(shí)驗(yàn)使用了一套強(qiáng)大的計(jì)算機(jī)配置和常用的開(kāi)發(fā)工具,為實(shí)現(xiàn)無(wú)人機(jī)夜間目標(biāo)檢測(cè)提供了充足的計(jì)算資源和便捷的開(kāi)發(fā)環(huán)境。Python和Tensorflow的組合能夠提供豐富的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)功能,使得實(shí)驗(yàn)可以進(jìn)行高效的模型訓(xùn)練和評(píng)估。同時(shí),AMD Ryzen 7-5800H CPU和NVIDIA RTX 3060顯卡的配備也能夠滿(mǎn)足對(duì)計(jì)算資源和顯存的需求。整體上,這個(gè)實(shí)驗(yàn)環(huán)境具備了進(jìn)行無(wú)人機(jī)夜間目標(biāo)檢測(cè)研究的必要條件。
3.3 實(shí)驗(yàn)及結(jié)果分析
? ? ? ?通過(guò)對(duì)原始YOLO算法和改進(jìn)后的YOLO算法的目標(biāo)檢測(cè)性能進(jìn)行對(duì)比,包括查準(zhǔn)率、查全率和檢測(cè)速度。改進(jìn)的YOLO算法在查準(zhǔn)率和查全率兩個(gè)指標(biāo)上分別比原始YOLO算法提高了11.22%和5.32%。雖然改進(jìn)后的算法的檢測(cè)速度有所降低,但仍然符合實(shí)時(shí)性要求,并能有效地進(jìn)行夜間目標(biāo)檢測(cè)。
? ? ? ?針對(duì)YOLOv5算法在夜間目標(biāo)檢測(cè)方面能力較差的問(wèn)題,提出了一種改進(jìn)的Retinex算法進(jìn)行數(shù)據(jù)增強(qiáng),并將YOLOv5網(wǎng)絡(luò)中的Focus層替換為CBS層。通過(guò)仿真實(shí)驗(yàn),結(jié)果表明所提出的方法能夠顯著提高無(wú)人機(jī)在夜間環(huán)境下的物體檢測(cè)準(zhǔn)確率,具有較好的實(shí)際應(yīng)用價(jià)值。這一研究為夜間目標(biāo)檢測(cè)技術(shù)的改進(jìn)和提升提供了新的思路和方法,有望推動(dòng)無(wú)人機(jī)在夜間任務(wù)中的應(yīng)用,并在實(shí)際場(chǎng)景中取得更好的檢測(cè)效果。
相關(guān)代碼如下:
model.eval()
# 定義類(lèi)別標(biāo)簽
class_labels = ['person', 'car', 'bicycle', 'motorcycle']
# 加載夜間測(cè)試圖像
image = Image.open('night_image.jpg') # 示例輸入圖像
# 圖像預(yù)處理
transform = transforms.Compose([
transforms.Resize((416, 416)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
image = transform(image).unsqueeze(0)
# 運(yùn)行圖像通過(guò)模型進(jìn)行推理
with torch.no_grad():
outputs = model(image)
# 解析預(yù)測(cè)結(jié)果
pred_boxes = outputs.pred[0][:, :4] # 預(yù)測(cè)框坐標(biāo)
pred_scores = outputs.pred[0][:, 4] # 預(yù)測(cè)置信度
pred_class_indices = outputs.pred[0][:, 5].long() # 預(yù)測(cè)類(lèi)別索引
# 根據(jù)置信度閾值過(guò)濾預(yù)測(cè)結(jié)果
threshold = 0.5 # 置信度閾值
filtered_indices = pred_scores >= threshold
filtered_boxes = pred_boxes[filtered_indices]
filtered_scores = pred_scores[filtered_indices]
filtered_class_indices = pred_class_indices[filtered_indices]
# 打印過(guò)濾后的預(yù)測(cè)結(jié)果
for box, score, class_index in zip(filtered_boxes, filtered_scores, filtered_class_indices):
class_label = class_labels[class_index]
print(f"Class: {class_label}, Score: {score}, Box: {box}")
創(chuàng)作不易,歡迎點(diǎn)贊、關(guān)注、收藏。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-822634.html
畢設(shè)幫助,疑難解答,歡迎打擾!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-822634.html
最后
到了這里,關(guān)于【畢業(yè)設(shè)計(jì)選題】復(fù)雜背景下的無(wú)人機(jī)(UVA)夜間目標(biāo)檢測(cè)系統(tǒng) python 人工智能 深度學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!