《------往期經典推薦------》
一、AI應用軟件開發實戰專欄【鏈接】
項目名稱 | 項目名稱 |
---|---|
1.【人臉識別與管理系統開發】 | 2.【車牌識別與自動收費管理系統開發】 |
3.【手勢識別系統開發】 | 4.【人臉面部活體檢測系統開發】 |
5.【圖片風格快速遷移軟件開發】 | 6.【人臉表表情識別系統】 |
7.【YOLOv8多目標識別與自動標注軟件開發】 | 8.【基于YOLOv8深度學習的行人跌倒檢測系統】 |
9.【基于YOLOv8深度學習的PCB板缺陷檢測系統】 | 10.【基于YOLOv8深度學習的生活垃圾分類目標檢測系統】 |
11.【基于YOLOv8深度學習的安全帽目標檢測系統】 | 12.【基于YOLOv8深度學習的120種犬類檢測與識別系統】 |
13.【基于YOLOv8深度學習的路面坑洞檢測系統】 | 14.【基于YOLOv8深度學習的火焰煙霧檢測系統】 |
15.【基于YOLOv8深度學習的鋼材表面缺陷檢測系統】 | 16.【基于YOLOv8深度學習的艦船目標分類檢測系統】 |
17.【基于YOLOv8深度學習的西紅柿成熟度檢測系統】 | 18.【基于YOLOv8深度學習的血細胞檢測與計數系統】 |
19.【基于YOLOv8深度學習的吸煙/抽煙行為檢測系統】 | 20.【基于YOLOv8深度學習的水稻害蟲檢測與識別系統】 |
21.【基于YOLOv8深度學習的高精度車輛行人檢測與計數系統】 | 22.【基于YOLOv8深度學習的路面標志線檢測與識別系統】 |
23.【基于YOLOv8深度學習的智能小麥害蟲檢測識別系統】 | 24.【基于YOLOv8深度學習的智能玉米害蟲檢測識別系統】 |
25.【基于YOLOv8深度學習的200種鳥類智能檢測與識別系統】 | 26.【基于YOLOv8深度學習的45種交通標志智能檢測與識別系統】 |
27.【基于YOLOv8深度學習的人臉面部表情識別系統】 | 28.【基于YOLOv8深度學習的蘋果葉片病害智能診斷系統】 |
29.【基于YOLOv8深度學習的智能肺炎診斷系統】 | 30.【基于YOLOv8深度學習的葡萄簇目標檢測系統】 |
31.【基于YOLOv8深度學習的100種中草藥智能識別系統】 | 32.【基于YOLOv8深度學習的102種花卉智能識別系統】 |
33.【基于YOLOv8深度學習的100種蝴蝶智能識別系統】 | 34.【基于YOLOv8深度學習的水稻葉片病害智能診斷系統】 |
35.【基于YOLOv8與ByteTrack的車輛行人多目標檢測與追蹤系統】 | 36.【基于YOLOv8深度學習的智能草莓病害檢測與分割系統】 |
37.【基于YOLOv8深度學習的復雜場景下船舶目標檢測系統】 | 38.【基于YOLOv8深度學習的農作物幼苗與雜草檢測系統】 |
39.【基于YOLOv8深度學習的智能道路裂縫檢測與分析系統】 | 40.【基于YOLOv8深度學習的葡萄病害智能診斷與防治系統】 |
41.【基于YOLOv8深度學習的遙感地理空間物體檢測系統】 | 42.【基于YOLOv8深度學習的無人機視角地面物體檢測系統】 |
43.【基于YOLOv8深度學習的木薯病害智能診斷與防治系統】 | 44.【基于YOLOv8深度學習的野外火焰煙霧檢測系統】 |
45.【基于YOLOv8深度學習的腦腫瘤智能檢測系統】 | 46.【基于YOLOv8深度學習的玉米葉片病害智能診斷與防治系統】 |
47.【基于YOLOv8深度學習的橙子病害智能診斷與防治系統】 | 48.【基于深度學習的車輛檢測追蹤與流量計數系統】 |
49.【基于深度學習的行人檢測追蹤與雙向流量計數系統】 | 50.【基于深度學習的反光衣檢測與預警系統】 |
51.【基于深度學習的危險區域人員闖入檢測與報警系統】 | 52.【基于深度學習的高密度人臉智能檢測與統計系統】 |
53.【基于深度學習的CT掃描圖像腎結石智能檢測系統】 | 54.【基于深度學習的水果智能檢測系統】 |
55.【基于深度學習的水果質量好壞智能檢測系統】 | 56.【基于深度學習的蔬菜目標檢測與識別系統】 |
57.【基于深度學習的非機動車駕駛員頭盔檢測系統】 | 58.【太基于深度學習的陽能電池板檢測與分析系統】 |
59.【基于深度學習的工業螺栓螺母檢測】 | 60.【基于深度學習的金屬焊縫缺陷檢測系統】 |
61.【基于深度學習的鏈條缺陷檢測與識別系統】 | 62.【基于深度學習的交通信號燈檢測識別】 |
63.【基于深度學習的草莓成熟度檢測與識別系統】 | 64.【基于深度學習的水下海生物檢測識別系統】 |
65.【基于深度學習的道路交通事故檢測識別系統】 | 66.【基于深度學習的安檢X光危險品檢測與識別系統】 |
67.【基于深度學習的農作物類別檢測與識別系統】 | 68.【基于深度學習的危險駕駛行為檢測識別系統】 |
69.【基于深度學習的維修工具檢測識別系統】 | 70.【基于深度學習的維修工具檢測識別系統】 |
71.【基于深度學習的建筑墻面損傷檢測系統】 | 72.【基于深度學習的煤礦傳送帶異物檢測系統】 |
73.【基于深度學習的老鼠智能檢測系統】 | 74.【基于深度學習的水面垃圾智能檢測識別系統】 |
75.【基于深度學習的遙感視角船只智能檢測系統】 | 76.【基于深度學習的胃腸道息肉智能檢測分割與診斷系統】 |
77.【基于深度學習的心臟超聲圖像間隔壁檢測分割與分析系統】 | 78.【基于深度學習的心臟超聲圖像間隔壁檢測分割與分析系統】 |
79.【基于深度學習的果園蘋果檢測與計數系統】 | 80.【基于深度學習的半導體芯片缺陷檢測系統】 |
81.【基于深度學習的糖尿病視網膜病變檢測與診斷系統】 | 82.【基于深度學習的運動鞋品牌檢測與識別系統】 |
83.【基于深度學習的蘋果葉片病害檢測識別系統】 | 84.【基于深度學習的醫學X光骨折檢測與語音提示系統】 |
二、機器學習實戰專欄【鏈接】,已更新31期,歡迎關注,持續更新中~~
三、深度學習【Pytorch】專欄【鏈接】
四、【Stable Diffusion繪畫系列】專欄【鏈接】
五、YOLOv8改進專欄【鏈接】,持續更新中~~
六、YOLO性能對比專欄【鏈接】,持續更新中~
《------正文------》
基本功能演示
基于YOLO11深度學習的遙感視角農田檢測與分割系統【python源碼+Pyqt5界面+數據集+訓練代碼】深度學習實戰、目標分割、人工智能
摘要:全球人口增長和城市化加速,使農業用地管理和保護至關重要。傳統地面調查和低分辨率衛星圖像分析在大規模監測中效率低、準確性有限。本文基于
YOLO11深度學習框架
,通過2880張
遙感視角農田相關圖片,訓練了一個進行農田分割
的目標分割模型
,可以檢測分割出農田的具體位置及大小
。最終基于此模型開發了一款帶UI界面的遙感視角農田檢測與分割系統
,可用于實時檢測分割場景中的農田
區域,并計算面積占比。該系統是基于python
與PyQT5
開發的,支持圖片、批量圖片、視頻以及攝像頭
進行目標檢測分割,并保存檢測結果
。本文提供了完整的Python代碼和使用教程,給感興趣的小伙伴參考學習,完整的代碼資源文件獲取方式見文末。
文章目錄
- 基本功能演示
- 前言
- 應用場景
- 一、軟件核心功能介紹及效果演示
- 軟件主要功能
- 界面參數設置說明
- (1)圖片檢測演示
- (2)視頻檢測演示
- (3)攝像頭檢測演示
- (4)檢測結果保存
- 二、目標分割模型的訓練、評估與推理
- 1.YOLO11簡介
- 2. 數據集準備與訓練
- 3. 訓練結果評估
- 4. 模型推理
- 四、可視化系統制作
- Pyqt5詳細介紹
- 系統制作
- 【獲取方式】
點擊跳轉至文末《完整相關文件及源碼》獲取
前言
隨著全球人口的增長和城市化進程的加快,農業用地的有效管理和保護變得尤為重要。傳統上,農田的監測主要依賴于地面調查或低分辨率衛星圖像分析,這些方法在面對大規模區域時效率低下且準確性有限。基于YOLO深度學習框架開發的遙感視角農田檢測與分割系統,能夠實時自動分割高分辨率遙感影像中的農田區域,并精確計算其面積占比。該系統的應用不僅提高了農田監測的效率和準確性,還為土地利用規劃、農業生產管理以及環境保護提供了科學依據,對于保障糧食安全和促進可持續發展具有重要意義。
應用場景
農業資源管理
:幫助政府部門和農業企業準確掌握農田分布及其變化趨勢,優化資源配置,制定合理的種植計劃。
土地使用規劃
:支持城鄉規劃部門進行土地使用評估,確保農業用地不被非法占用,維護土地利用的合理布局。
災害影響評估
:在自然災害(如洪水、干旱)發生后,快速評估受影響農田的范圍和程度,指導災后恢復工作。
精準農業
:結合其他傳感器數據,如土壤濕度、作物生長狀況等,為農民提供精細化管理建議,提高農作物產量和質量。
環境監測
:長期監測農田面積的變化情況,評估生態環境的影響,特別是針對森林砍伐、濕地破壞等問題,采取相應措施加以保護。
博主通過搜集遙感視角農田
的相關圖片,根據最前沿的YOLO11目標分割技術,基于python與Pyqt5
開發了一款界面簡潔的遙感視角農田檢測與分割系統
,可支持圖片、視頻以及攝像頭檢測
,同時可以將圖片、視頻以及攝像頭的檢測結果進行保存
。本文詳細的介紹了此系統的核心功能以及所使用到的技術原理與制作流程。
軟件初始界面如下圖所示:
檢測結果界面如下:
一、軟件核心功能介紹及效果演示
軟件主要功能
1. 可進行遙感視角農田檢測與分割
,并計算每塊分割區域面積占比
;
2. 支持圖片、圖片批量、視頻及攝像頭
進行檢測分割;
3. 可顯示總分割面積占比
以及單個目標的分割面積占比
;
4. 界面可實時顯示目標位置
、分割結果
、分割面積占比
、置信度
、用時
等信息;
5. 結果保存:支持圖片
、視頻
及攝像頭
的分割結果保存
;
界面參數設置說明
置信度閾值
:也就是目標檢測時的conf參數
,只有檢測出的目標置信度大于該值,結果才會顯示;交并比閾值
:也就是目標檢測時的iou參數
,只有目標檢測框的交并比大于該值,結果才會顯示;
3. 窗口1:顯示分割結果
:表示是否在檢測圖片中顯示分割結果,默認勾選;
4. 窗口1:顯示檢測框與標簽
:表示是否在檢測圖片中顯示檢測框與標簽,默認勾選;
5. 窗口2:顯示Mask或者顯示原始分割圖片
:表示在窗口2中顯示分割的Mask
或者原始圖片分割內容
;
顯示Mask
或者顯示原始分割圖片
選項的功能效果如下:
顯示Mask選項效果:
顯示原始分割圖片效果:
(1)圖片檢測演示
1.點擊打開圖片
按鈕,選擇需要檢測的圖片,或者點擊打開文件夾
按鈕,選擇需要批量檢測圖片所在的文件夾,操作演示如下:
2.點擊目標下拉框后,可以選定指定目標的結果信息進行顯示。
3. 點擊保存
按鈕,會對圖片檢測結果進行保存,存儲路徑為:save_data
目錄下。
4.點擊表格中的指定行,界面會顯示該行表格所寫的信息內容。
注:右側目標位置默認顯示置信度最大一個目標位置,可用下拉框進行信息切換。所有檢測結果均在表格中顯示。
點擊保存
按鈕,會對圖片的檢測結果進行保存,共會保存3種類型結果,分別是:檢測分割結果標識圖片、分割的Mask圖片以及原圖分割后的圖片
。存儲在save_data
目錄下,保存結果如下:
(2)視頻檢測演示
1.點擊打開視頻
圖標,打開選擇需要檢測的視頻,就會自動顯示檢測結果。再次點擊該按鈕,會關閉視頻
。
2.點擊保存
按鈕,會對視頻檢測結果進行保存,同樣會保存3種類型結果,分別是:檢測分割結果標識視頻、分割Mask視頻以及原視頻分割后的視頻
,存儲路徑為:save_data
目錄下。
視頻檢測保存結果如下:
(3)攝像頭檢測演示
1.點擊打開攝像頭
按鈕,可以打開攝像頭,可以實時進行檢測,再次點擊該按鈕,可關閉攝像頭
;
2.點擊保存
按鈕,可以進行攝像頭實時圖像的檢測結果保存
。
(4)檢測結果保存
點擊保存
按鈕后,會將當前選擇的圖片【含批量圖片】、視頻或者攝像頭
的分割結果進行保存。結果會存儲在save_data
目錄下,保存內容如下:
圖片文件保存的csv文件內容如下,包括圖片路徑、目標在圖片中的編號、目標類別、置信度、目標坐標位置。
注:其中坐標位置是代表檢測框的左上角與右下角兩個點的x、y坐標。
二、目標分割模型的訓練、評估與推理
1.YOLO11簡介
YOLO11源碼地址:https://github.com/ultralytics/ultralytics
Ultralytics YOLO11是一款尖端的、最先進的模型,它在之前YOLO版本成功的基礎上進行了構建,并引入了新功能和改進,以進一步提升性能和靈活性。YOLO11設計快速、準確且易于使用,使其成為各種物體檢測和跟蹤、實例分割、圖像分類以及姿態估計任務的絕佳選擇。
YOLO11創新點如下:
YOLO 11主要改進包括:
增強的特征提取
:YOLO 11采用了改進的骨干和頸部架構,增強了特征提取功能,以實現更精確的目標檢測。
優化的效率和速度
:優化的架構設計和優化的訓練管道提供更快的處理速度,同時保持準確性和性能之間的平衡。
更高的精度,更少的參數
:YOLO11m在COCO數據集上實現了更高的平均精度(mAP),參數比YOLOv8m少22%,使其在不影響精度的情況下提高了計算效率。
跨環境的適應性
:YOLO 11可以部署在各種環境中,包括邊緣設備、云平臺和支持NVIDIA GPU的系統。
廣泛的支持任務
:YOLO 11支持各種計算機視覺任務,如對象檢測、實例分割、圖像分類、姿態估計和面向對象檢測(OBB)。
YOLO11不同模型尺寸信息:
YOLO11 提供5種不同的型號規模模型,以滿足不同的應用需求:
Model | size (pixels) | mAPval 50-95 | Speed CPU ONNX (ms) | Speed T4 TensorRT10 (ms) | params (M) | FLOPs (B) |
---|---|---|---|---|---|---|
YOLO11n | 640 | 39.5 | 56.1 ± 0.8 | 1.5 ± 0.0 | 2.6 | 6.5 |
YOLO11s | 640 | 47.0 | 90.0 ± 1.2 | 2.5 ± 0.0 | 9.4 | 21.5 |
YOLO11m | 640 | 51.5 | 183.2 ± 2.0 | 4.7 ± 0.1 | 20.1 | 68.0 |
YOLO11l | 640 | 53.4 | 238.6 ± 1.4 | 6.2 ± 0.1 | 25.3 | 86.9 |
YOLO11x | 640 | 54.7 | 462.8 ± 6.7 | 11.3 ± 0.2 | 56.9 | 194.9 |
2. 數據集準備與訓練
通過網絡上搜集關于遙感視角農田相關圖片
,并使用Labelme標注工具對每張圖片中的分割結果及類別進行標注。一共包含2880張圖片
,其中訓練集包含2304張圖片
,驗證集包含288張圖片
,測試集包含288張圖片
。部分圖像及標注如下圖所示。
數據集的各類別具體分布如下所示:
圖片數據的存放格式如下,在項目目錄中新建datasets
目錄,同時將檢測的圖片分為訓練集、驗證集放入Data
目錄下。
同時我們需要新建一個data.yaml
文件,用于存儲訓練數據的路徑及模型需要進行檢測的類別。YOLOv8在進行模型訓練時,會讀取該文件的信息,用于進行模型的訓練與驗證。data.yaml
的具體內容如下:
train: D:\2MyCVProgram\3.SegmentProgram\RemoteFarmlandSeg_v11\datasets\Data/train/images
val: D:\2MyCVProgram\3.SegmentProgram\RemoteFarmlandSeg_v11\datasets\Data/valid/images
test: D:\2MyCVProgram\3.SegmentProgram\RemoteFarmlandSeg_v11\datasets\Data/test/imagesnc: 1
names: ['farms']
注:train與val后面表示需要訓練圖片的路徑,建議直接寫自己文件的絕對路徑。
數據準備完成后,通過調用train.py
文件進行模型訓練,epochs
參數用于調整訓練的輪數,batch
參數用于調整訓練的批次大小【根據內存大小調整,最小為1】,代碼如下:
#coding:utf-8
from ultralytics import YOLO
import matplotlib
matplotlib.use('TkAgg')if __name__ == '__main__':# 訓練模型配置文件路徑yolo_yaml_path = 'ultralytics/cfg/models/11/yolo11-seg.yaml'# 數據集配置文件路徑data_yaml_path = 'datasets/Data/data.yaml'# 官方預訓練模型路徑pre_model_path = "yolo11n-seg.pt"# 加載預訓練模型model = YOLO(yolo_yaml_path).load(pre_model_path)# 模型訓練model.train(data=data_yaml_path, epochs=150, batch=4)
3. 訓練結果評估
在深度學習中,我們通常用損失函數下降的曲線來觀察模型訓練的情況。YOLOv8在訓練時主要包含三個方面的損失:定位損失(box_loss)、分類損失(cls_loss)、動態特征損失(dfl_loss)以及分割損失(seg_loss),在訓練結束后,可以在runs/
目錄下找到訓練過程及結果文件,如下所示:
各損失函數作用說明:
定位損失box_loss
:預測框與標定框之間的誤差(GIoU),越小定位得越準;
分類損失cls_loss
:計算錨框與對應的標定分類是否正確,越小分類得越準;
動態特征損失(dfl_loss)
:DFLLoss是一種用于回歸預測框與目標框之間距離的損失函數。在計算損失時,目標框需要縮放到特征圖尺度,即除以相應的stride,并與預測的邊界框計算Ciou Loss,同時與預測的anchors中心點到各邊的距離計算回歸DFLLoss。這個過程是YOLO11訓練流程中的一部分,通過計算DFLLoss可以更準確地調整預測框的位置,提高目標檢測的準確性。
分割損失(seg_loss)
:預測的分割結果與標定分割之前的誤差,越小分割的越準確;
本文訓練結果如下:
我們通常用PR曲線
來體現精確率和召回率的關系,本文訓練結果的PR曲線如下。mAP
表示Precision和Recall作為兩軸作圖后圍成的面積,m表示平均,@后面的數表示判定iou為正負樣本的閾值。mAP@.5:表示閾值大于0.5的平均mAP。
定位結果的PR曲線如下:
分割結果的PR曲線如下:
從上面圖片曲線結果可以看到:定位的平均精度為0.915
,分割的平均精度為0.913
,結果還是非常不錯的。
4. 模型推理
模型訓練完成后,我們可以得到一個最佳的訓練結果模型best.pt
文件,在runs/trian/weights
目錄下。我們可以使用該文件進行后續的推理檢測。
圖片檢測代碼如下:
#coding:utf-8
from ultralytics import YOLO
import cv2# 所需加載的模型目錄
path = 'models/best.pt'
# 需要檢測的圖片地址
img_path = "TestFiles/3c5850f9-image_1037_jpg.rf.bb143d78ac126f5e3bf367e6bb10028b.jpg"# 加載預訓練模型
# conf 0.25 object confidence threshold for detection
# iou 0.7 intersection over union (IoU) threshold for NMS
model = YOLO(path, task='segment')
# model = YOLO(path, task='segment',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("Res", res)
cv2.waitKey(0)
執行上述代碼后,會將執行的結果直接標注在圖片上,結果如下:
更多分割結果展示如下:
四、可視化系統制作
基于上述訓練出的目標檢測模型,為了給此檢測系統提供一個用戶友好的操作平臺,使用戶能夠便捷、高效地進行檢測任務。博主基于Pyqt5開發了一個可視化的系統界面,通過圖形用戶界面(GUI),用戶可以輕松地在圖片、視頻和攝像頭實時檢測之間切換,無需掌握復雜的編程技能即可操作系統。【系統詳細展示見第一部分內容】
Pyqt5詳細介紹
關于Pyqt5的詳細介紹可以參考之前的博客文章:《Python中的Pyqt5詳細介紹:基本機構、部件、布局管理、信號與槽、跨平臺》
,地址:
https://a-xu-ai.blog.csdn.net/article/details/143273797
系統制作
博主基于Pyqt5框架開發了此款遙感視角農田檢測與分割系統
,即文中第一部分的演示內容,能夠很好的支持圖片、視頻及攝像頭進行檢測,同時支持檢測結果的保存
。
通過圖形用戶界面(GUI),用戶可以輕松地在圖片、視頻和攝像頭實時檢測之間切換,無需掌握復雜的編程技能即可操作系統。這不僅提升了系統的可用性和用戶體驗,還使得檢測過程更加直觀透明,便于結果的實時觀察和分析。此外,GUI還可以集成其他功能,如檢測結果的保存與導出、檢測參數的調整,從而為用戶提供一個全面、綜合的檢測工作環境,促進智能檢測技術的廣泛應用。
關于該系統涉及到的完整源碼、UI界面代碼、數據集、訓練代碼、測試圖片視頻等相關文件,均已打包上傳,感興趣的小伙伴可以通過下載鏈接自行獲取。
【獲取方式】
關注末尾名片G-Z-H:【阿旭算法與機器學習】,發送【源碼】即可獲取下載方式
本文涉及到的完整全部程序文件:包括環境配置文檔說明、python源碼、數據集、訓練代碼、UI文件、測試圖片視頻等(見下圖),獲取方式見文末:
注意:該代碼基于Python3.9開發,運行界面的主程序為
MainProgram.py
,其他測試腳本說明見上圖。為確保程序順利運行,請按照程序運行說明文檔txt
配置軟件運行所需環境。