網(wǎng)站建設(shè)需要精通什么知識網(wǎng)絡(luò)推廣的優(yōu)勢有哪些
隨著智慧農(nóng)業(yè)的快速發(fā)展,利用先進(jìn)的技術(shù)手段對牲畜的行為進(jìn)行自動化監(jiān)測和管理,已經(jīng)成為現(xiàn)代農(nóng)業(yè)中的重要研究方向之一。在傳統(tǒng)的農(nóng)業(yè)管理模式中,牲畜的行為監(jiān)測通常依賴于人工觀測,耗時耗力且難以實現(xiàn)大規(guī)模實時監(jiān)控。然而,隨著物聯(lián)網(wǎng)、人工智能和深度學(xué)習(xí)等技術(shù)的成熟,利用智能化手段對牲畜進(jìn)行行為檢測和管理成為可能。本文重點研究并實現(xiàn)了一種基于YOLOV8深度學(xué)習(xí)模型的山羊行為檢測系統(tǒng),該系統(tǒng)為智慧農(nóng)業(yè)中的山羊養(yǎng)殖提供了一種高效、智能的解決方案。
該系統(tǒng)利用目標(biāo)檢測技術(shù),能夠自動識別山羊在圖像或視頻流中的行為狀態(tài),主要包括站立和躺下兩種典型行為。通過大量的訓(xùn)練數(shù)據(jù),系統(tǒng)學(xué)習(xí)并提取山羊行為的特征,從而在實際應(yīng)用中能夠準(zhǔn)確識別山羊的行為狀態(tài)。系統(tǒng)的核心模型是YOLOV8,這是一種最新的深度學(xué)習(xí)目標(biāo)檢測算法,具有高效的特征提取能力和實時檢測性能。與傳統(tǒng)的目標(biāo)檢測算法相比,YOLOV8不僅在檢測精度上有顯著提升,同時在檢測速度上也有明顯優(yōu)勢,能夠在低延遲的條件下實現(xiàn)對目標(biāo)的實時跟蹤與識別。
在系統(tǒng)的開發(fā)過程中,本文構(gòu)建了一個包含大量山羊行為圖像的數(shù)據(jù)集,用于模型的訓(xùn)練和測試。通過數(shù)據(jù)增強和標(biāo)簽標(biāo)注等技術(shù),進(jìn)一步提升了模型的魯棒性和泛化能力。實驗結(jié)果表明,本文提出的山羊行為檢測系統(tǒng)在目標(biāo)檢測精度、召回率和處理速度等方面均表現(xiàn)出色。在實驗環(huán)境中,系統(tǒng)在檢測山羊站立和躺下行為的過程中,平均精度(mAP)達(dá)到了較高水平,且系統(tǒng)能夠在每秒處理多幀圖像,滿足了實時監(jiān)測的需求。
除了高精度的檢測能力,該系統(tǒng)還具有良好的擴展性和實用性。它不僅可以應(yīng)用于山羊的行為監(jiān)測,還能夠通過進(jìn)一步訓(xùn)練,擴展到其他牲畜種類或更多的行為類別,具有廣泛的應(yīng)用前景。通過實時監(jiān)測山羊的行為狀態(tài),系統(tǒng)可以幫助養(yǎng)殖者及時發(fā)現(xiàn)異常行為,如長時間躺臥或不正常的活動,從而提高對牲畜健康和生活環(huán)境的管理效率。此外,系統(tǒng)生成的行為數(shù)據(jù)可以與農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)集成,為智能農(nóng)業(yè)平臺提供有價值的數(shù)據(jù)支持。
本文研究并實現(xiàn)的基于YOLOV8的山羊行為檢測系統(tǒng),為智慧農(nóng)業(yè)領(lǐng)域提供了一種新的自動化監(jiān)測工具。通過高效的目標(biāo)檢測算法和深度學(xué)習(xí)技術(shù),系統(tǒng)能夠?qū)崟r、準(zhǔn)確地檢測山羊的行為狀態(tài),提升了養(yǎng)殖管理的自動化水平,并具有廣泛的應(yīng)用價值。未來,隨著更多先進(jìn)技術(shù)的引入和數(shù)據(jù)集的進(jìn)一步擴展,該系統(tǒng)有望在更多農(nóng)業(yè)場景中得到推廣應(yīng)用,為現(xiàn)代農(nóng)業(yè)的發(fā)展提供更強大的技術(shù)支撐。
算法流程
項目數(shù)據(jù)
通過搜集關(guān)于數(shù)據(jù)集為各種各樣的骨折相關(guān)圖像,并使用Labelimg標(biāo)注工具對每張圖片進(jìn)行標(biāo)注,分2個檢測類別,分別是standing表示”站立”,lying表示”躺臥”。
目標(biāo)檢測標(biāo)注工具
(1)labelimg:開源的圖像標(biāo)注工具,標(biāo)簽可用于分類和目標(biāo)檢測,它是用python寫的,并使用Qt作為其圖形界面,簡單好用(雖然是英文版的)。其注釋以 PASCAL VOC格式保存為XML文件,這是ImageNet使用的格式。此外,它還支持 COCO數(shù)據(jù)集格式。
(2)安裝labelimg 在cmd輸入以下命令 pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
結(jié)束后,在cmd中輸入labelimg
初識labelimg
打開后,我們自己設(shè)置一下
在View中勾選Auto Save mode
接下來我們打開需要標(biāo)注的圖片文件夾
并設(shè)置標(biāo)注文件保存的目錄(上圖中的Change Save Dir)
接下來就開始標(biāo)注,畫框,標(biāo)記目標(biāo)的label,然后d切換到下一張繼續(xù)標(biāo)注,不斷重復(fù)重復(fù)。
Labelimg的快捷鍵
(3)數(shù)據(jù)準(zhǔn)備
這里建議新建一個名為data的文件夾(這個是約定俗成,不這么做也行),里面創(chuàng)建一個名為images的文件夾存放我們需要打標(biāo)簽的圖片文件;再創(chuàng)建一個名為labels存放標(biāo)注的標(biāo)簽文件;最后創(chuàng)建一個名為 classes.txt 的txt文件來存放所要標(biāo)注的類別名稱。
data的目錄結(jié)構(gòu)如下:
│─img_data
│─images 存放需要打標(biāo)簽的圖片文件
│─labels 存放標(biāo)注的標(biāo)簽文件
└ classes.txt 定義自己要標(biāo)注的所有類別(這個文件可有可無,但是在我們定義類別比較多的時候,最好有這個創(chuàng)建一個這樣的txt文件來存放類別)
首先在images這個文件夾放置待標(biāo)注的圖片。
生成文件如下:
“classes.txt”定義了你的 YOLO 標(biāo)簽所引用的類名列表。
(4)YOLO模式創(chuàng)建標(biāo)簽的樣式
存放標(biāo)簽信息的文件的文件名為與圖片名相同,內(nèi)容由N行5列數(shù)據(jù)組成。
每一行代表標(biāo)注的一個目標(biāo),通常包括五個數(shù)據(jù),從左到右依次為:類別id、x_center、y_center、width、height。
其中:
–x類別id代表標(biāo)注目標(biāo)的類別;
–x_center和y_center代表標(biāo)注框的相對中心坐標(biāo);
–xwidth和height代表標(biāo)注框的相對寬和高。
注意:這里的中心點坐標(biāo)、寬和高都是相對數(shù)據(jù)!!!
存放標(biāo)簽類別的文件的文件名為classes.txt (固定不變),用于存放創(chuàng)建的標(biāo)簽類別。
完成后可進(jìn)行后續(xù)的yolo訓(xùn)練方面的操作。
模型訓(xùn)練
模型的訓(xùn)練、評估與推理
1.YOLOv8的基本原理
YOLOv8是一個SOTA模型,它建立在Yolo系列歷史版本的基礎(chǔ)上,并引入了新的功能和改進(jìn)點,以進(jìn)一步提升性能和靈活性,使其成為實現(xiàn)目標(biāo)檢測、圖像分割、姿態(tài)估計等任務(wù)的最佳選擇。其具體創(chuàng)新點包括一個新的骨干網(wǎng)絡(luò)、一個新的Ancher-Free檢測頭和一個新的損失函數(shù),可在CPU到GPU的多種硬件平臺上運行。
YOLOv8是Yolo系列模型的最新王者,各種指標(biāo)全面超越現(xiàn)有對象檢測與實例分割模型,借鑒了Yolov5、Yolov6、YoloX等模型的設(shè)計優(yōu)點,在全面提升改進(jìn)Yolov5模型結(jié)構(gòu)的基礎(chǔ)上實現(xiàn),同時保持了Yolov5工程化簡潔易用的優(yōu)勢。
Yolov8模型網(wǎng)絡(luò)結(jié)構(gòu)圖如下圖所示:
2.數(shù)據(jù)集準(zhǔn)備與訓(xùn)練
本研究使用了包含各種山羊行為相關(guān)圖像的數(shù)據(jù)集,并通過Labelimg標(biāo)注工具對每張圖像中的目標(biāo)邊框(Bounding Box)及其類別進(jìn)行標(biāo)注。然后主要基于YOLOv8n這種模型進(jìn)行模型的訓(xùn)練,訓(xùn)練完成后對模型在驗證集上的表現(xiàn)進(jìn)行全面的性能評估及對比分析。模型訓(xùn)練和評估流程基本一致,包括:數(shù)據(jù)集準(zhǔn)備、模型訓(xùn)練、模型評估。本次標(biāo)注的目標(biāo)類別為站立和躺臥,數(shù)據(jù)集中共計包含416張圖像,其中訓(xùn)練集占332張,驗證集占84張。部分圖像如下圖所示:
部分標(biāo)注如下圖所示:
圖片數(shù)據(jù)的存放格式如下,在項目目錄中新建datasets目錄,同時將檢測的圖片分為訓(xùn)練集與驗證集放入datasets目錄下。
接著需要新建一個data.yaml文件,用于存儲訓(xùn)練數(shù)據(jù)的路徑及模型需要進(jìn)行檢測的類別。YOLOv8在進(jìn)行模型訓(xùn)練時,會讀取該文件的信息,用于進(jìn)行模型的訓(xùn)練與驗證。
data.yaml的具體內(nèi)容如下:
train: E:/GoatPoseDetection_v8/datasets/images/train 訓(xùn)練集的路徑
val: E:/GoatPoseDetection_v8/datasets/images/val 驗證集的路徑
#test: E:/GoatPoseDetection_v8/datasets/images/test 測試集的路徑
nc: 2 模型檢測的類別數(shù),共有2個類別。
names: [‘standing’,’lying’]
這個文件定義了用于模型訓(xùn)練和驗證的數(shù)據(jù)集路徑,以及模型將要檢測的目標(biāo)類別。
數(shù)據(jù)準(zhǔn)備完成后,通過調(diào)用train.py文件進(jìn)行模型訓(xùn)練,epochs參數(shù)用于調(diào)整訓(xùn)練的輪數(shù),batch參數(shù)用于調(diào)整訓(xùn)練的批次大小(根據(jù)內(nèi)存大小調(diào)整,最小為1)。
CPU/GPU訓(xùn)練代碼如下:
加載名為 yolov8n.pt 的預(yù)訓(xùn)練YOLOv8模型,yolov8n.pt是預(yù)先訓(xùn)練好的模型文件。
使用YOLO模型進(jìn)行訓(xùn)練,主要參數(shù)說明如下:
(1)data=data_yaml_path: 指定了用于訓(xùn)練的數(shù)據(jù)集配置文件。
(2)epochs=150: 設(shè)定訓(xùn)練的輪數(shù)為150輪。
(3)batch=4: 指定了每個批次的樣本數(shù)量為4。
(4)optimizer=’SGD’):SGD 優(yōu)化器。
(7)name=’train_v8′: 指定了此次訓(xùn)練的命名標(biāo)簽,用于區(qū)分不同的訓(xùn)練實驗。
3.訓(xùn)練結(jié)果評估
在深度學(xué)習(xí)的過程中,我們通常通過觀察損失函數(shù)下降的曲線來了解模型的訓(xùn)練情況。對于YOLOv8模型的訓(xùn)練,主要涉及三類損失:定位損失(box_loss)、分類損失(cls_loss)以及動態(tài)特征損失(dfl_loss)。訓(xùn)練完成后,相關(guān)的訓(xùn)練過程和結(jié)果文件會保存在 runs/ 目錄下,具體如下:
各損失函數(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é)果如下:
這張圖展示了YOLOv8模型在訓(xùn)練和驗證過程中的多個重要指標(biāo)的變化趨勢,具體如下:
train/box_loss:
(1)這是模型在訓(xùn)練過程中計算的邊界框損失(Bounding Box Loss)。
(2)隨著訓(xùn)練的進(jìn)行,邊界框損失逐漸減小,表明模型越來越精確地定位目標(biāo)。
train/cls_loss:
(1)這是分類損失(Classification Loss),表示模型在預(yù)測類別時的誤差。
(2)分類損失也隨著訓(xùn)練下降,表明模型在目標(biāo)類別分類上逐步提高了準(zhǔn)確性。
train/dfl_loss:
(1)這是分布焦點損失(Distribution Focal Loss),用來優(yōu)化邊界框的定位。
(2)DFL損失也在逐漸減小,這個損失與邊界框預(yù)測的回歸精度有關(guān)。
metrics/precision(B):
(1)訓(xùn)練過程中精確率(Precision)的變化。
(2)精度(precision)反映模型預(yù)測的正例中有多少是實際的正例,趨勢上精度有所提升。
metrics/recall(B):
(1)召回率(Recall)的變化。
(2)召回率(recall)逐漸增加,表明模型檢測到的目標(biāo)逐漸增多。
val/box_loss:
(1)驗證集上的邊界框損失。
(2)驗證集的邊界框損失在下降,表明模型不僅在訓(xùn)練集上收斂,在驗證集上也有較好的泛化能力。
val/cls_loss:
(1)驗證集上的分類損失。
(2)分類損失下降,驗證集上的分類性能也在提高。
val/dfl_loss:
(1)驗證集上的分布焦點損失。
(2)同樣,DFL損失下降,說明模型在邊界框預(yù)測方面表現(xiàn)得更好。
metrics/mAP50(B):
(1)mAP50表示在IoU閾值為0.5時的平均精度(Mean Average Precision)。
(2)驗證集的mAP@0.5在上升,表示模型的目標(biāo)檢測性能持續(xù)提升。
metrics/mAP50-95(B):
(1)mAP50-95表示在IoU閾值從0.5到0.95的平均精度。
(2)驗證集的mAP@0.5-0.95也在上升,表明模型在多種IoU閾值下都有較好的檢測效果。
這些圖表反映了您的YOLOv8模型在訓(xùn)練和驗證集上的逐步改進(jìn)。損失函數(shù)的減少和mAP的提高表明模型正在有效地學(xué)習(xí),檢測性能不斷優(yōu)化。
這張圖展示的是 Precision-Recall 曲線,用于評估模型在不同類別下的檢測性能。以下是詳細(xì)解釋:
Precision-Recall 曲線的含義:
(1)Precision(精度):表示模型預(yù)測為正類的樣本中,有多少是真正的正類樣本。
(2)Recall(召回率):表示所有正類樣本中,有多少被模型正確檢測出來。
(3)Precision-Recall 曲線:隨著模型預(yù)測閾值的變化,精度和召回率的關(guān)系也隨之變化。理想情況下,精度和召回率都應(yīng)該接近1。
不同類別的曲線:
(1)藍(lán)色實線:表示所有類別的綜合性能,mAP@0.5為0.812,表明在IoU閾值為0.5時,模型的平均精度為81.2%。
(2)淺藍(lán)色線條:代表standing(站立)的檢測結(jié)果,mAP為0.864。曲線更接近圖的右上角,說明對于站立類別,模型的檢測效果更好。
(3)橙色線條:代表lying(躺下)的檢測結(jié)果,mAP為0.761,曲線稍微偏離右上角,說明模型在躺下目標(biāo)的檢測上稍弱一些。
總體評價:
(1)站立(standing):精度和召回率都比較高,表現(xiàn)優(yōu)于躺下類別。
(2)躺下(lying):雖然精度和召回率略低于站立類別,但整體表現(xiàn)仍然較好。
(3)綜合表現(xiàn):mAP@0.5為0.812,說明模型總體上在兩類目標(biāo)上都有不錯的檢測性能。
這張PR曲線顯示了模型在不同目標(biāo)類別上的檢測性能。曲線越接近右上角,表示模型在該類別上的性能越好。從圖中可以看出,模型對站立目標(biāo)的檢測效果要優(yōu)于躺下目標(biāo),不過總體檢測性能相當(dāng)不錯。
4.檢測結(jié)果識別
模型訓(xùn)練完成后,我們可以得到一個最佳的訓(xùn)練結(jié)果模型best.pt文件,在runs/train/weights目錄下。我們可以使用該文件進(jìn)行后續(xù)的推理檢測。
imgTest.py 圖片檢測代碼如下:
加載所需庫:
(1)from ultralytics import YOLO:導(dǎo)入YOLO模型類,用于進(jìn)行目標(biāo)檢測。
(2)import cv2:導(dǎo)入OpenCV庫,用于圖像處理和顯示。
加載模型路徑和圖片路徑:
(1)path = ‘models/best.pt’:指定預(yù)訓(xùn)練模型的路徑,這個模型將用于目標(biāo)檢測任務(wù)。
(2)img_path = “TestFiles/imagetest.jpg”:指定需要進(jìn)行檢測的圖片文件的路徑。
加載預(yù)訓(xùn)練模型:
(1)model = YOLO(path, task=’detect’):使用指定路徑加載YOLO模型,并指定檢測任務(wù)為目標(biāo)檢測 (detect)。
(2)通過 conf 參數(shù)設(shè)置目標(biāo)檢測的置信度閾值,通過 iou 參數(shù)設(shè)置非極大值抑制(NMS)的交并比(IoU)閾值。
檢測圖片:
(1)results = model(img_path):對指定的圖片執(zhí)行目標(biāo)檢測,results 包含檢測結(jié)果。
顯示檢測結(jié)果:
(1)res = results[0].plot():將檢測到的結(jié)果繪制在圖片上。
(2)cv2.imshow(“YOLOv8 Detection”, res):使用OpenCV顯示檢測后的圖片,窗口標(biāo)題為“YOLOv8 Detection”。
(3)cv2.waitKey(0):等待用戶按鍵關(guān)閉顯示窗口
此代碼的功能是加載一個預(yù)訓(xùn)練的YOLOv8模型,對指定的圖片進(jìn)行目標(biāo)檢測,并將檢測結(jié)果顯示出來。
執(zhí)行imgTest.py代碼后,會將執(zhí)行的結(jié)果直接標(biāo)注在圖片上,結(jié)果如下:
這段輸出是基于YOLOv8模型對圖片“imagetest.jpg”進(jìn)行檢測的結(jié)果,具體內(nèi)容如下:
圖像信息:
(1)處理的圖像路徑為:TestFiles/imagetest.jpg。
(2)圖像尺寸為 448×640 像素。
檢測結(jié)果:
(1)模型檢測到圖片中有1個站立的山羊 (standing)。
(2)每張圖片的推理時間4.0毫秒。
處理速度:
(1)4.0ms preprocess:預(yù)處理時間。
(2)41.2ms inference:推理時間。
(3)57.1ms postprocess:后處理時間。
顯示了YOLOv8模型成功地檢測到了一張測試圖像中的一個站立的山羊,檢測速度較快,且結(jié)果已保存到指定的文件夾中。
運行效果
– 運行 MainProgram.py
1.主要功能:
(1)可用于實時檢測目標(biāo)圖片中的骨折;
(2)支持圖片、視頻及攝像頭進(jìn)行檢測,同時支持圖片的批量檢測;
(3)界面可實時顯示目標(biāo)位置、目標(biāo)總數(shù)、置信度、用時等信息;
(4)支持圖片或者視頻的檢測結(jié)果保存。
2.檢測結(jié)果說明:
這張圖表顯示了基于YOLOv8模型的目標(biāo)檢測系統(tǒng)的檢測結(jié)果界面。以下是各個字段的含義解釋:
用時(Time taken):
(1)這表示模型完成檢測所用的時間為0.014秒。
(2)這顯示了模型的實時性,檢測速度非???。
目標(biāo)數(shù)目(Number of objects detected):
(1)檢測到的目標(biāo)數(shù)目為2,表示這是當(dāng)前檢測到的第1目標(biāo)。
目標(biāo)選擇(下拉菜單):全部:
(1)這里有一個下拉菜單,用戶可以選擇要查看的目標(biāo)類型。
(2)在當(dāng)前情況下,選擇的是“全部”,意味著顯示所有檢測到的目標(biāo)信息。
類型(Type):
(1)當(dāng)前選中的類型為 “站立”,表示系統(tǒng)正在高亮顯示檢測到的“standing”。
置信度(Confidence):
(1)這表示模型對檢測到的目標(biāo)屬于“站立”類別的置信度為96.85%。
(2)置信度反映了模型的信心,置信度越高,模型對這個檢測結(jié)果越有信心。
目標(biāo)位置(Object location):
(1)xmin: 158, ymin: 29:目標(biāo)的左上角的坐標(biāo)(xmin, ymin),表示目標(biāo)區(qū)域在圖像中的位置。
(2)xmax: 244, ymax: 295:目標(biāo)的右下角的坐標(biāo)(xmax, ymax),表示目標(biāo)區(qū)域的邊界。
這張圖表明了一個系統(tǒng)對圖像中的目標(biāo)進(jìn)行了檢測,檢測到了兩個目標(biāo),并且對其中一個目標(biāo)“站立”的識別置信度較高。
3.圖片檢測說明
(1)躺臥
(2)站立
點擊打開圖片按鈕,選擇需要檢測的圖片,或者點擊打開文件夾按鈕,選擇需要批量檢測圖片所在的文件夾。
操作演示如下:
(1)點擊目標(biāo)下拉框后,可以選定指定目標(biāo)的結(jié)果信息進(jìn)行顯示。
(2)點擊保存按鈕,會對檢測結(jié)果進(jìn)行保存,存儲路徑為:save_data目錄下。
檢測結(jié)果:系統(tǒng)識別出圖片中的站立,并顯示檢測結(jié)果,包括總目標(biāo)數(shù)、用時、目標(biāo)類型、置信度、以及目標(biāo)的位置坐標(biāo)信息。
4.視頻檢測說明
點擊視頻按鈕,打開選擇需要檢測的視頻,就會自動顯示檢測結(jié)果,再次點擊可以關(guān)閉視頻。
點擊保存按鈕,會對視頻檢測結(jié)果進(jìn)行保存,存儲路徑為:save_data目錄下。
檢測結(jié)果:系統(tǒng)對視頻進(jìn)行實時分析,檢測到站立并顯示檢測結(jié)果。表格顯示了視頻中多個檢測結(jié)果的置信度和位置信息。
這個界面展示了系統(tǒng)對視頻幀中的多目標(biāo)檢測能力,能夠準(zhǔn)確識別站立,并提供詳細(xì)的檢測結(jié)果和置信度評分。
5.攝像頭檢測說明
點擊打開攝像頭按鈕,可以打開攝像頭,可以實時進(jìn)行檢測,再次點擊,可關(guān)閉攝像頭。
檢測結(jié)果:系統(tǒng)連接攝像頭進(jìn)行實時分析,檢測到站立并顯示檢測結(jié)果。實時顯示攝像頭畫面,并將檢測到的行為位置標(biāo)注在圖像上,表格下方記錄了每一幀中檢測結(jié)果的詳細(xì)信息。
6.保存圖片與視頻檢測說明
點擊保存按鈕后,會將當(dāng)前選擇的圖片(含批量圖片)或者視頻的檢測結(jié)果進(jìn)行保存。
檢測的圖片與視頻結(jié)果會存儲在save_data目錄下。
保存的檢測結(jié)果文件如下:
圖片文件保存的csv文件內(nèi)容如下,包括圖片路徑、目標(biāo)在圖片中的編號、目標(biāo)類別、置信度、目標(biāo)坐標(biāo)位置。
注:其中坐標(biāo)位置是代表檢測框的左上角與右下角兩個點的x、y坐標(biāo)。
(1)圖片保存
(2)視頻保存
– 運行 train.py
1.訓(xùn)練參數(shù)設(shè)置
(1)data=data_yaml_path: 使用data.yaml中定義的數(shù)據(jù)集。
(2)epochs=150: 訓(xùn)練的輪數(shù)設(shè)置為150輪。
(3)batch=4: 每個批次的圖像數(shù)量為4(批次大小)。
(4)name=’train_v8′: 訓(xùn)練結(jié)果將保存到以train_v8為名字的目錄中。
(5)optimizer=’SGD’: 使用隨機梯度下降法(SGD)作為優(yōu)化器。
雖然在大多數(shù)深度學(xué)習(xí)任務(wù)中,GPU通常會提供更快的訓(xùn)練速度。
但在某些情況下,可能由于硬件限制或其他原因,用戶需要在CPU上進(jìn)行訓(xùn)練。
溫馨提示:在CPU上訓(xùn)練深度學(xué)習(xí)模型通常會比在GPU上慢得多,尤其是像YOLOv8這樣的計算密集型模型。除非特定需要,通常建議在GPU上進(jìn)行訓(xùn)練以節(jié)省時間。
2.訓(xùn)練日志結(jié)果
這張圖展示了使用YOLOv8進(jìn)行模型訓(xùn)練的詳細(xì)過程和結(jié)果。
訓(xùn)練總時長:
(1)模型在訓(xùn)練了150輪后,總共耗時0.310小時。
R (召回率, Recall):
(1)all: 0.738,表示所有目標(biāo)的召回率為73.8%,意味著實際存在的目標(biāo)中,73.8%的目標(biāo)被成功檢測到。
(2)standing: 0.798,站立目標(biāo)的召回率為79.8%。
(3)lying: 0.678,躺下目標(biāo)的召回率為67.8%。
mAP50 (平均精度 @ IoU=50%):
(1)all: 0.812,表示在IoU=0.5的閾值下,所有目標(biāo)的平均精度為81.2%。
(2)standing: 0.864,站立目標(biāo)的平均精度為86.4%。
(3)lying: 0.761,躺下目標(biāo)的平均精度為76.1%。
mAP50-95 (平均精度 @ IoU=50%-95%):
(1)all: 0.652,表示在IoU=0.5到0.95多個閾值下,所有目標(biāo)的平均精度為65.2%。
(2)standing: 0.717,站立目標(biāo)的mAP50-95為71.7%。
(3)lying: 0.587,躺下目標(biāo)的mAP50-95為58.7%。
推理速度:
(1)模型推理速度為17.62幀每秒,處理速度非???#xff0c;適用于實時檢測。
結(jié)果保存:
(1)Results saved to runs\detect\train_v8:驗證結(jié)果保存在 runs\detect\train_v8 目錄下。
完成信息:
(1)Process finished with exit code 0:表示整個驗證過程順利完成,沒有報錯。
該模型在站立目標(biāo)的檢測精度和召回率較高,而躺下目標(biāo)的召回率略低一些,但整體性能表現(xiàn)良好,尤其是精度和速度方面。這些結(jié)果表明模型能夠很好地檢測目標(biāo),適合應(yīng)用于實際場景中的目標(biāo)檢測任務(wù)。