《博主簡介》
小伙伴們好,我是阿旭。專注于人工智能、AIGC、python、計算機視覺相關(guān)分享研究。
?更多學(xué)習(xí)資源,可關(guān)注公-仲-hao:【阿旭算法與機器學(xué)習(xí)】,共同學(xué)習(xí)交流~
??感謝小伙伴們點贊、關(guān)注!
《------往期經(jīng)典推薦------》
一、AI應(yīng)用軟件開發(fā)實戰(zhàn)專欄【鏈接】
項目名稱 | 項目名稱 |
---|---|
1.【人臉識別與管理系統(tǒng)開發(fā)】 | 2.【車牌識別與自動收費管理系統(tǒng)開發(fā)】 |
3.【手勢識別系統(tǒng)開發(fā)】 | 4.【人臉面部活體檢測系統(tǒng)開發(fā)】 |
5.【圖片風(fēng)格快速遷移軟件開發(fā)】 | 6.【人臉表表情識別系統(tǒng)】 |
7.【YOLOv8多目標(biāo)識別與自動標(biāo)注軟件開發(fā)】 | 8.【基于YOLOv8深度學(xué)習(xí)的行人跌倒檢測系統(tǒng)】 |
9.【基于YOLOv8深度學(xué)習(xí)的PCB板缺陷檢測系統(tǒng)】 | 10.【基于YOLOv8深度學(xué)習(xí)的生活垃圾分類目標(biāo)檢測系統(tǒng)】 |
11.【基于YOLOv8深度學(xué)習(xí)的安全帽目標(biāo)檢測系統(tǒng)】 | 12.【基于YOLOv8深度學(xué)習(xí)的120種犬類檢測與識別系統(tǒng)】 |
13.【基于YOLOv8深度學(xué)習(xí)的路面坑洞檢測系統(tǒng)】 | 14.【基于YOLOv8深度學(xué)習(xí)的火焰煙霧檢測系統(tǒng)】 |
15.【基于YOLOv8深度學(xué)習(xí)的鋼材表面缺陷檢測系統(tǒng)】 | 16.【基于YOLOv8深度學(xué)習(xí)的艦船目標(biāo)分類檢測系統(tǒng)】 |
17.【基于YOLOv8深度學(xué)習(xí)的西紅柿成熟度檢測系統(tǒng)】 | 18.【基于YOLOv8深度學(xué)習(xí)的血細(xì)胞檢測與計數(shù)系統(tǒng)】 |
19.【基于YOLOv8深度學(xué)習(xí)的吸煙/抽煙行為檢測系統(tǒng)】 | 20.【基于YOLOv8深度學(xué)習(xí)的水稻害蟲檢測與識別系統(tǒng)】 |
21.【基于YOLOv8深度學(xué)習(xí)的高精度車輛行人檢測與計數(shù)系統(tǒng)】 | 22.【基于YOLOv8深度學(xué)習(xí)的路面標(biāo)志線檢測與識別系統(tǒng)】 |
23.【基于YOLOv8深度學(xué)習(xí)的智能小麥害蟲檢測識別系統(tǒng)】 | 24.【基于YOLOv8深度學(xué)習(xí)的智能玉米害蟲檢測識別系統(tǒng)】 |
25.【基于YOLOv8深度學(xué)習(xí)的200種鳥類智能檢測與識別系統(tǒng)】 | 26.【基于YOLOv8深度學(xué)習(xí)的45種交通標(biāo)志智能檢測與識別系統(tǒng)】 |
27.【基于YOLOv8深度學(xué)習(xí)的人臉面部表情識別系統(tǒng)】 | 28.【基于YOLOv8深度學(xué)習(xí)的蘋果葉片病害智能診斷系統(tǒng)】 |
29.【基于YOLOv8深度學(xué)習(xí)的智能肺炎診斷系統(tǒng)】 | 30.【基于YOLOv8深度學(xué)習(xí)的葡萄簇目標(biāo)檢測系統(tǒng)】 |
31.【基于YOLOv8深度學(xué)習(xí)的100種中草藥智能識別系統(tǒng)】 | 32.【基于YOLOv8深度學(xué)習(xí)的102種花卉智能識別系統(tǒng)】 |
33.【基于YOLOv8深度學(xué)習(xí)的100種蝴蝶智能識別系統(tǒng)】 | 34.【基于YOLOv8深度學(xué)習(xí)的水稻葉片病害智能診斷系統(tǒng)】 |
35.【基于YOLOv8與ByteTrack的車輛行人多目標(biāo)檢測與追蹤系統(tǒng)】 | 36.【基于YOLOv8深度學(xué)習(xí)的智能草莓病害檢測與分割系統(tǒng)】 |
37.【基于YOLOv8深度學(xué)習(xí)的復(fù)雜場景下船舶目標(biāo)檢測系統(tǒng)】 | 38.【基于YOLOv8深度學(xué)習(xí)的農(nóng)作物幼苗與雜草檢測系統(tǒng)】 |
39.【基于YOLOv8深度學(xué)習(xí)的智能道路裂縫檢測與分析系統(tǒng)】 | 40.【基于YOLOv8深度學(xué)習(xí)的葡萄病害智能診斷與防治系統(tǒng)】 |
41.【基于YOLOv8深度學(xué)習(xí)的遙感地理空間物體檢測系統(tǒng)】 |
二、機器學(xué)習(xí)實戰(zhàn)專欄【鏈接】,已更新31期,歡迎關(guān)注,持續(xù)更新中~~
三、深度學(xué)習(xí)【Pytorch】專欄【鏈接】
四、【Stable Diffusion繪畫系列】專欄【鏈接】
五、YOLOv8改進專欄【鏈接】,持續(xù)更新中~~
《------正文------》
基本功能演示
摘要:
無人機視角物體檢測系統(tǒng)
是一項先進的目標(biāo)檢測技術(shù),它具有實時、高效和自動識別地面物體的能力
。當(dāng)無人機搭載此系統(tǒng)時,可以在空中執(zhí)行復(fù)雜的監(jiān)視和分析任務(wù),捕獲廣角視野下的動態(tài)情況。本文基于YOLOv8深度學(xué)習(xí)框架
,通過7019
張圖片,訓(xùn)練了一個進行無人機視角下物體
的目標(biāo)檢測模型,可進行10種類型
的物體檢測。并基于此模型開發(fā)了一款帶UI界面的無人機視角物體檢測系統(tǒng)
,可用于實時檢測無人機拍攝的地面物體
,也更方便進行功能的展示。該系統(tǒng)是基于python
與PyQT5
開發(fā)的,支持圖片
、視頻
以及攝像頭
進行目標(biāo)檢測
,并保存檢測結(jié)果
。本文提供了完整的Python代碼和使用教程,給感興趣的小伙伴參考學(xué)習(xí),完整的代碼資源文件獲取方式見文末。
點擊跳轉(zhuǎn)至文末《完整相關(guān)文件及源碼》獲取
前言
基于YOLOv8的無人機視角物體檢測系統(tǒng)
是一項先進的技術(shù),它具有實時、高效和自動識別地面物體的能力
。當(dāng)無人機搭載此系統(tǒng)時,可以在空中執(zhí)行復(fù)雜的監(jiān)視和分析任務(wù),捕獲廣角視野下的動態(tài)情況。這對于增強多種領(lǐng)域的安全監(jiān)控、交通監(jiān)管、人群管理和災(zāi)害響應(yīng)等方面均有重要意義。系統(tǒng)能夠?qū)\動或靜止的目標(biāo)進行識別,實現(xiàn)從高空進行準(zhǔn)確觀察的需求,相對于傳統(tǒng)的地面監(jiān)視,無人機視角提供了更大范圍的監(jiān)控能力和更靈活的視角。
無人機視角物體檢測系統(tǒng)的
應(yīng)用場景包括
:交通監(jiān)控
:監(jiān)測和分析道路上的交通流量,包含汽車、公交車、卡車等不同類型的車輛。
搜索與救援:在遇難者搜尋過程中,快速識別受困人員或者事故現(xiàn)場的行人,提高搜救效率。安全巡邏
:使用無人機監(jiān)控私有或公共區(qū)域,檢測非法行為,如非法占用公共道路的攤販。
災(zāi)害評估:自然災(zāi)害發(fā)生后,評估受損交通工具、道路堵塞情況和人員分布。人群監(jiān)管
:在大型公共活動或聚集地點,對人群流動進行監(jiān)測,保障公共安全。
城市規(guī)劃與管理:分析城市中車輛和行人的流量和分布,為城市規(guī)劃提供數(shù)據(jù)支持。農(nóng)村地區(qū)交通統(tǒng)計
:在缺乏傳統(tǒng)監(jiān)控基礎(chǔ)設(shè)施的偏遠地區(qū),無人機可以監(jiān)控和統(tǒng)計交通情況。執(zhí)法記錄
:記錄交通違規(guī)行為,作為事故分析或執(zhí)法的證據(jù)。
總結(jié)來說,基于YOLOv8的無人機視角物體檢測系統(tǒng)為現(xiàn)代監(jiān)控帶來了革命性的改進,可實現(xiàn)高效、精確且廣泛的應(yīng)用
。該系統(tǒng)不僅為實時監(jiān)測提供支持,而且有助于緊急情況下的快速響應(yīng),最終為我們構(gòu)建一個更加安全、更可管理的環(huán)境。隨著無人機技術(shù)和人工智能的進步,我們可以期待這些系統(tǒng)在未來發(fā)揮更大的作用,實現(xiàn)更廣泛的應(yīng)用。
博主通過搜集實際場景中的無人機視角
相關(guān)數(shù)據(jù)圖片,根據(jù)YOLOv8的目標(biāo)檢測技術(shù),基于python與Pyqt5
開發(fā)了一款界面簡潔的無人機視角物體檢測系統(tǒng)
,可支持圖片、視頻以及攝像頭檢測
,同時可以將圖片或者視頻檢測結(jié)果進行保存
。
軟件初始界面如下圖所示:
檢測結(jié)果界面如下:
一、軟件核心功能介紹及效果演示
軟件主要功能
1. 可用于實時無人機視角下的物體檢測
,可檢測10個類別
,分別是:['行人','人','汽車','面包車','公交車','卡車','摩托車','自行車','帶蓬三輪車','三路車']
;
2. 支持圖片、視頻及攝像頭
進行檢測,同時支持圖片的批量檢測
;
3. 界面可實時顯示目標(biāo)位置
、目標(biāo)總數(shù)
、置信度
、用時
等信息;
4. 支持圖片
或者視頻
的檢測結(jié)果保存
;
界面參數(shù)設(shè)置說明
置信度閾值:也就是目標(biāo)檢測時的conf參數(shù),只有檢測出的目標(biāo)置信度大于該值,結(jié)果才會顯示;
交并比閾值:也就是目標(biāo)檢測時的iou參數(shù),只有目標(biāo)檢測框的交并比大于該值,結(jié)果才會顯示;
IoU:全稱為Intersection over
Union,表示交并比。在目標(biāo)檢測中,它用于衡量模型生成的候選框與原標(biāo)記框之間的重疊程度。IoU值越大,表示兩個框之間的相似性越高。通常,當(dāng)IoU值大于0.5時,認(rèn)為可以檢測到目標(biāo)物體。這個指標(biāo)常用于評估模型在特定數(shù)據(jù)集上的檢測準(zhǔn)確度。
(1)圖片檢測演示
點擊打開圖片
按鈕,選擇需要檢測的圖片,或者點擊打開文件夾
按鈕,選擇需要批量檢測圖片所在的文件夾,操作演示如下:
點擊目標(biāo)下拉框后,可以選定指定目標(biāo)的結(jié)果信息進行顯示。
點擊保存
按鈕,會對檢測結(jié)果進行保存,存儲路徑為:save_data
目錄下。注:1.右側(cè)目標(biāo)位置默認(rèn)顯示置信度最大一個目標(biāo)位置,可用下拉框進行目標(biāo)切換。所有檢測結(jié)果均在左下方表格中顯示。
單個圖片檢測操作如下:
批量圖片檢測操作如下:
(2)視頻檢測演示
點擊視頻
按鈕,打開選擇需要檢測的視頻,就會自動顯示檢測結(jié)果,再次點擊可以關(guān)閉視頻。
點擊保存
按鈕,會對視頻檢測結(jié)果進行保存,存儲路徑為:save_data
目錄下。
(3)攝像頭檢測演示
點擊打開攝像頭
按鈕,可以打開攝像頭,可以實時進行檢測,再次點擊,可關(guān)閉攝像頭。
(4)保存圖片與視頻檢測結(jié)果
點擊保存
按鈕后,會將當(dāng)前選擇的圖片【含批量圖片】或者視頻
的檢測結(jié)果進行保存。檢測的圖片與視頻結(jié)果會存儲在save_data
目錄下。
視頻檢測保存演示如下:
保存的檢測結(jié)果文件如下:
二、模型的訓(xùn)練、評估與推理
1.YOLOv8的基本原理
YOLOv8是一種前沿的目標(biāo)檢測技術(shù),它基于先前YOLO版本在目標(biāo)檢測任務(wù)上的成功,進一步提升了性能和靈活性,在精度和速度方面都具有尖端性能
。在之前YOLO 版本的基礎(chǔ)上,YOLOv8 引入了新的功能和優(yōu)化,使其成為廣泛應(yīng)用中各種物體檢測任務(wù)的理想選擇。主要的創(chuàng)新點包括一個新的骨干網(wǎng)絡(luò)、一個新的 Ancher-Free 檢測頭和一個新的損失函數(shù),可以在從 CPU 到 GPU 的各種硬件平臺上運行
。
YOLO各版本性能對比:
YOLOv8網(wǎng)絡(luò)結(jié)構(gòu)如下:
2. 數(shù)據(jù)集準(zhǔn)備與訓(xùn)練
本文使用的數(shù)據(jù)集為無人機視角拍攝的物體相關(guān)圖片
,并使用Labelimg標(biāo)注工具對每張圖片中的目標(biāo)邊框(Bounding Box)及類別進行標(biāo)注,共10個類別
,分別是:['行人','人','汽車','面包車','公交車','卡車','摩托車','自行車','帶蓬三輪車','三路車']
。一共包含7019張圖片
,其中訓(xùn)練集包含6471張圖片
,驗證集包含548張圖片
。
部分圖像及標(biāo)注如下圖所示:
圖片數(shù)據(jù)的存放格式如下,在項目目錄中新建datasets
目錄,同時將檢測的圖片分為訓(xùn)練集與驗證集放入Data
目錄下。
同時我們需要新建一個data.yaml
文件,用于存儲訓(xùn)練數(shù)據(jù)的路徑及模型需要進行檢測的類別。YOLOv8在進行模型訓(xùn)練時,會讀取該文件的信息,用于進行模型的訓(xùn)練與驗證。data.yaml
的具體內(nèi)容如下:
train: D:\2MyCVProgram\2DetectProgram\DroneViewDetection_v8\datasets\Data\train
val: D:\2MyCVProgram\2DetectProgram\DroneViewDetection_v8\datasets\Data\val
nc: 10
names: ['pedestrian', 'person', 'car', 'van', 'bus', 'truck', 'motor', 'bicycle', 'awning-tricycle', 'tricycle']
注:train與val后面表示需要訓(xùn)練圖片的路徑,建議直接寫自己文件的絕對路徑。
數(shù)據(jù)準(zhǔn)備完成后,通過調(diào)用train.py
文件進行模型訓(xùn)練,epochs
參數(shù)用于調(diào)整訓(xùn)練的輪數(shù),batch
參數(shù)用于調(diào)整訓(xùn)練的批次大小【根據(jù)內(nèi)存大小調(diào)整,最小為1】,代碼如下:
#coding:utf-8
from ultralytics import YOLO
# 模型配置文件
model_yaml_path = "ultralytics/cfg/models/v8/yolov8.yaml"
#數(shù)據(jù)集配置文件
data_yaml_path = 'datasets/Data/data.yaml'
#預(yù)訓(xùn)練模型
pre_model_name = 'yolov8n.pt'
if __name__ == '__main__':
#加載預(yù)訓(xùn)練模型
model = YOLO(model_yaml_path).load(pre_model_name)
#訓(xùn)練模型
results = model.train(data=data_yaml_path,
epochs=150,
batch=4,
name='train_v8')
3. 訓(xùn)練結(jié)果評估
在深度學(xué)習(xí)中,我們通常用損失函數(shù)下降的曲線來觀察模型訓(xùn)練的情況。YOLOv8在訓(xùn)練時主要包含三個方面的損失:定位損失(box_loss)、分類損失(cls_loss)和動態(tài)特征損失(dfl_loss),在訓(xùn)練結(jié)束后,可以在runs/
目錄下找到訓(xùn)練過程及結(jié)果文件,如下所示:
各損失函數(shù)作用說明:定位損失box_loss
:預(yù)測框與標(biāo)定框之間的誤差(GIoU),越小定位得越準(zhǔn);分類損失cls_loss
:計算錨框與對應(yīng)的標(biāo)定分類是否正確,越小分類得越準(zhǔn);動態(tài)特征損失(dfl_loss)
:DFLLoss是一種用于回歸預(yù)測框與目標(biāo)框之間距離的損失函數(shù)。在計算損失時,目標(biāo)框需要縮放到特征圖尺度,即除以相應(yīng)的stride,并與預(yù)測的邊界框計算Ciou Loss,同時與預(yù)測的anchors中心點到各邊的距離計算回歸DFLLoss。這個過程是YOLOv8訓(xùn)練流程中的一部分,通過計算DFLLoss可以更準(zhǔn)確地調(diào)整預(yù)測框的位置,提高目標(biāo)檢測的準(zhǔn)確性。
本文訓(xùn)練結(jié)果如下:
我們通常用PR曲線
來體現(xiàn)精確率和召回率的關(guān)系,本文訓(xùn)練結(jié)果的PR曲線如下。mAP
表示Precision和Recall作為兩軸作圖后圍成的面積,m表示平均,@后面的數(shù)表示判定iou為正負(fù)樣本的閾值。mAP@.5:表示閾值大于0.5的平均mAP,可以看到本文模型目標(biāo)檢測的mAP@0.5
值為0.344
,結(jié)果有進一步提升空間。
4. 檢測結(jié)果識別
模型訓(xùn)練完成后,我們可以得到一個最佳的訓(xùn)練結(jié)果模型best.pt
文件,在runs/train/weights
目錄下。我們可以使用該文件進行后續(xù)的推理檢測。
圖片檢測代碼如下:
#coding:utf-8
from ultralytics import YOLO
import cv2
# 所需加載的模型目錄
path = 'models/best_v8.pt'
# 需要檢測的圖片地址
img_path = "TestFiles/0000140_02277_d_0000005.jpg"
# 加載預(yù)訓(xùn)練模型
# conf 0.25 object confidence threshold for detection
# iou 0.7 intersection over union (IoU) threshold for NMS
model = YOLO(path, task='detect')
# model = YOLO(path, task='detect',conf=0.5)
# 檢測圖片
results = model(img_path)
print(results)
res = results[0].plot()
res = cv2.resize(res,dsize=None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
cv2.imshow("YOLOv8 Detection", res)
cv2.waitKey(0)
執(zhí)行上述代碼后,會將執(zhí)行的結(jié)果直接標(biāo)注在圖片上,結(jié)果如下:
以上便是關(guān)于此款無人機視角物體檢測系統(tǒng)
的原理與代碼介紹?;诖四P?,博主用python
與Pyqt5
開發(fā)了一個帶界面的軟件系統(tǒng),即文中第二部分的演示內(nèi)容,能夠很好的支持圖片、視頻及攝像頭進行檢測,同時支持檢測結(jié)果的保存
。
關(guān)于該系統(tǒng)涉及到的完整源碼、UI界面代碼、數(shù)據(jù)集、訓(xùn)練代碼、測試圖片視頻等相關(guān)文件,均已打包上傳,感興趣的小伙伴可以通過下載鏈接自行獲取。
【獲取方式】
關(guān)注下方名片G-Z-H:【阿旭算法與機器學(xué)習(xí)】,并發(fā)送【源碼】即可獲取下載方式
本文涉及到的完整全部程序文件:包括python源碼、數(shù)據(jù)集、訓(xùn)練好的結(jié)果文件、訓(xùn)練代碼、UI源碼、測試圖片視頻等(見下圖),獲取方式見文末:
注意:該代碼基于Python3.9開發(fā),運行界面的主程序為
MainProgram.py
,其他測試腳本說明見上圖。為確保程序順利運行,請按照程序運行說明文檔txt
配置軟件運行所需環(huán)境。
關(guān)注下方名片GZH:【阿旭算法與機器學(xué)習(xí)】,并發(fā)送【源碼】即可獲取下載方式
結(jié)束語
以上便是博主開發(fā)的基于YOLOv8深度學(xué)習(xí)的無人機視角物體檢測系統(tǒng)
的全部內(nèi)容,由于博主能力有限,難免有疏漏之處,希望小伙伴能批評指正。
關(guān)于本篇文章大家有任何建議或意見,歡迎在評論區(qū)留言交流!文章來源:http://www.zghlxwxcb.cn/news/detail-842173.html
覺得不錯的小伙伴,感謝點贊、關(guān)注加收藏哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-842173.html
到了這里,關(guān)于基于YOLOv8深度學(xué)習(xí)的無人機視角地面物體檢測系統(tǒng)【python源碼+Pyqt5界面+數(shù)據(jù)集+訓(xùn)練代碼】深度學(xué)習(xí)實戰(zhàn)、目標(biāo)檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!