基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

逗逗班学Python發表於2024-04-04

摘要:本文深入探討了基於YOLOv8/v7/v6/v5的血細胞智慧檢測與計數系統,該系統的核心是採用最先進的YOLOv8演算法,並與YOLOv7、YOLOv6、YOLOv5等先前版本進行效能指標對比。文章全面回顧了國內外研究現狀,並詳細介紹了資料集處理的步驟,探討了不同YOLO演算法版本的原理和特點,並展示瞭如何構建和訓練這些模型。此外,本文還著重介紹了基於Streamlit框架開發的互動式Web應用介面設計,該介面支援從影像、影片到實時攝像頭的各種血細胞智慧檢測與計數任務。使用者能夠便捷地上傳不同訓練模型(YOLOv8/v7/v6/v5)進行推理預測,並且可以方便地對介面進行定製修改。作為研究成果的補充,本文提供了包括完整的網頁設計、深度學習模型程式碼,以及訓練資料集的下載連結,旨在促進該領域的進一步研究和應用開發。這些資源將對希望在醫學影像分析領域應用深度學習技術的研究人員和開發者大有裨益。

@

目錄
  • 1. 網頁功能與效果
  • 2. 緒論
    • 2.1 研究背景及意義
    • 2.2 國內外研究現狀
    • 2.3 要解決的問題及其方案
      • 2.3.1 要解決的問題
      • 2.3.2 解決方案
    • 2.4 博文貢獻與組織結構
  • 3. 資料集處理
  • 4. 原理與程式碼介紹
    • 4.1 YOLOv8演算法原理
    • 4.2 模型構建
    • 4.3 訓練程式碼
  • 5. 實驗結果與分析
    • 5.1 訓練曲線
    • 5.2 F1曲線圖
    • 5.3 YOLOv8/v7/v6/v5對比實驗
  • 6. 系統設計與實現
    • 6.1 系統架構概覽
    • 6.2 系統流程
  • 程式碼下載連結
  • 7. 結論與未來工作

➷點選跳轉至文末所有涉及的完整程式碼檔案下載頁☇


完整資源中包含資料集及訓練程式碼,環境配置與介面中文字、圖片、logo等的修改方法請見影片,專案完整檔案下載請見演示與介紹影片的簡介處給出:➷➷➷
演示與介紹影片https://www.bilibili.com/video/BV1wx4y1Y7mE/
YOLOv8/v7/v6/v5專案合集下載:https://mbd.pub/o/bread/mbd-ZZ2Xm5xy
YOLOv8和v5專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2XmZpu
YOLOv7專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Xmpds
YOLOv6專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Xm5dx

若您想獲得博文中涉及的實現完整全部資原始檔(包括測試圖片、影片,py, UI檔案,訓練資料集、訓練程式碼、介面程式碼等),這裡已打包上傳至博主的麵包多平臺,見可參考部落格與影片,已將所有涉及的檔案同時打包到裡面,點選即可執行,完整檔案截圖如下:

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

1. 網頁功能與效果

(1)開啟攝像頭實時檢測:本系統允許使用者透過網頁直接開啟攝像頭,實現對實時影片流中血細胞的檢測。系統將自動識別並分析畫面中的血細胞,並將檢測結果實時顯示在使用者介面上,為使用者提供即時的反饋。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

(2)選擇圖片檢測:使用者可以上傳本地的圖片檔案到系統中進行血細胞智慧檢測與計數。系統會分析上傳的圖片,識別出圖片中的血細胞,並在介面上展示帶有血細胞標籤和置信度的檢測結果,讓使用者能夠清晰地瞭解到每個血細胞狀態。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

(3)選擇影片檔案檢測:系統支援使用者上傳影片檔案進行血細胞智慧檢測與計數。上傳的影片將被系統逐幀分析,以識別和標記影片中每一幀的血細胞。使用者可以觀看帶有血細胞智慧檢測與計數標記的影片,瞭解影片中血細胞的變化。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

(4)選擇不同訓練好的模型檔案:系統整合了多個版本的YOLO模型(如YOLOv8/v7/v6/v5),使用者可以根據自己的需求選擇不同的模型進行血細胞智慧檢測與計數。這一功能使得使用者能夠靈活地比較不同模型的表現,以選擇最適合當前任務的模型。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

在我們開發的基於Streamlit的互動式Web應用中,我們致力於提供一個直觀、易用的操作介面,以便使用者能夠高效準確地進行血細胞智慧檢測與計數。應用整合了一系列功能,旨在滿足不同使用者的需求。

首先,實時攝像頭檢測功能允許使用者開啟連線的攝像頭,直接進行實時血細胞檢測,適用於沒有預先準備樣本圖片的即時檢測需求。此外,我們還提供了圖片檢測影片檔案檢測功能,使用者可以上傳本地的血細胞影像或影片檔案,系統將自動進行檢測並展示結果。為了適應不同的檢測需求,我們設計了模型檔案選擇功能,使用者可以根據個人需求,從不同訓練好的模型檔案(YOLOv8/v7/v6/v5)中選擇最合適的模型進行檢測。

我們深知使用者可能需要對比檢測前後的差異,因此提供了檢測與原始畫面同時或單獨顯示的功能,使用者可根據需要選擇檢視模式。為了便於使用者對特定目標進行分析,我們還加入了特定目標標記與結果展示的功能,透過點選下拉框選擇標記特定目標,並單獨顯示檢測結果。

為了讓使用者能夠更靈活地調整檢測結果,我們實現了可以動態調整的置信度閾值和IOU閾值設定,以及將檢測結果動態顯示在頁面表格上的設計。使用者還可以透過點選按鈕,將表格結果輸出到CSV檔案,或將標記過的圖片、影片及攝像頭畫面的檢測結果匯出為AVI影像檔案,便於儲存和進一步分析。透過這些精心設計的功能,我們的Web應用不僅提高了血細胞檢測的效率和準確性,也極大地最佳化了使用者體驗。我們期待未來能夠進一步最佳化該應用,引入更多創新功能,以更好地服務於醫療健康領域的需求。


2. 緒論

2.1 研究背景及意義

在過去的幾年裡,血細胞的智慧檢測與計數領域經歷了飛速的發展,特別是深度學習技術在醫學影像處理中的應用,極大地推動了該領域的進步。目標檢測演算法,尤其是YOLO系列,因其高效的檢測速度和準確率,在血細胞檢測中展現了巨大的潛力。最新的研究表明,透過對YOLO演算法的不斷最佳化和改進,可以顯著提高血細胞檢測的準確性和效率。

YOLOv5[1]作為一種輕量級的目標檢測演算法,已被廣泛應用於醫學影像的處理中。近期的研究表明,YOLOv5不僅在檢測速度上具有優勢,而且在處理複雜醫學影像時,準確率也得到了顯著提升。隨後,YOLOv6和YOLOv7][2]的釋出,進一步最佳化了模型的結構和演算法,使得檢測的準確性和速度得到了平衡,特別是在處理高解析度的醫學影像時,這一優勢更為明顯。

YOLOv8的出現,標誌著目標檢測演算法在醫學影像分析領域的又一次飛躍。研究表明,YOLOv8不僅進一步減少了模型的複雜度,提高了執行效率,而且在多類別的血細胞檢測任務中,展現了比前幾代更高的準確率和更好的泛化能力。這對於需要快速而準確檢測和計數多種血細胞的臨床應用來說,是一個重要的進步。

然而,儘管取得了這些進展,血細胞智慧檢測與計數仍然面臨著一些挑戰,如演算法的泛化能力、對不同型別血細胞的識別精度、以及在實際應用中的效率等問題。因此,未來的研究需要繼續探索更有效的演算法改進策略,最佳化模型結構,提高檢測的準確性和效率,以滿足臨床應用的需求。

2.2 國內外研究現狀

在過去的幾年裡,深度學習技術在醫學影像分析,尤其是在血細胞的智慧檢測與計數領域,取得了顯著的進步。其中,目標檢測演算法的發展尤為突出,YOLO系列自YOLOv5以來的迭代更新不僅體現了在速度和準確性上的最佳化,更重要的是,它們提供了處理複雜醫學影像挑戰的有效解決方案。YOLOv8、YOLOv7、YOLOv6與YOLOv5的連續改進,展現了演算法在精度、速度以及模型大小上的平衡,使其成為血細胞檢測任務中的首選技術。

除了YOLO系列,其他演算法如ViT(Vision Transformer)[3]、注意力機制的引入、RetinaNet、Faster R-CNN[4]以及DETR(End-to-End Object Detection with Transformers)等,也在目標檢測領域內展現了其獨特的優勢。ViT透過引入自注意力機制來捕獲影像中的長距離依賴,改善了模型對影像特徵的理解,而DETR利用Transformer的結構,簡化了檢測流程,去除了對先驗框的依賴,展現了在處理複雜場景時的優勢。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

在資料集的發展上,隨著深度學習技術的普及,公開可用的醫學影像資料集數量和質量都有了顯著提升。這不僅促進了演算法的訓練和驗證,也為演算法效能的比較提供了公平的基準。與此同時,新的資料增強技術和預處理方法的發展,進一步提高了模型訓練的效率和泛化能力,特別是在處理血細胞這類小目標檢測任務時的表現更為突出。

儘管如此,血細胞的智慧檢測與計數領域仍然面臨著一系列技術挑戰。例如,如何有效處理血細胞影像中的遮擋和聚集問題、如何提高模型對不同型別血細胞的分類精度、以及如何在保證檢測速度的同時,減少模型的計算資源消耗等。這些問題的解決,需要在演算法創新、資料處理、模型最佳化等方面進行綜合考慮。

未來的研究趨勢可能會聚焦於演算法的綜合最佳化,比如結合YOLO系列的高效檢測能力和Transformer系列的強大表達能力,以及進一步探索輕量化模型和實時檢測技術的可能性。同時,隨著計算資源的發展和演算法最佳化技術的進步,更復雜的模型和演算法有望在實際應用中得到更廣泛的應用。

2.3 要解決的問題及其方案

2.3.1 要解決的問題

在開發血細胞智慧檢測與計數系統的過程中,我們面臨著一系列複雜而獨特的挑戰。這些挑戰的解決方案對於提升系統的效能和使用者體驗至關重要。以下是我們需要解決的關鍵問題:

  1. 血細胞識別的準確性和速度:血細胞的種類繁多,且每種血細胞在形狀、大小和顏色上可能都有細微的差異。這就要求我們的系統不僅要能夠準確地識別出這些細微的特徵差異,還需要能夠快速處理影像資料,以滿足臨床和研究中對實時性的高要求。

  2. 環境適應性和模型泛化能力:血細胞影像的採集環境複雜多變,如不同的顯微鏡設定、光照條件和背景噪聲等,都可能影響識別的準確性。因此,我們的系統需要具備出色的環境適應性和模型泛化能力,確保在各種條件下都能保持高識別準確率。

  3. 使用者互動介面的直觀性和功能性:為了讓使用者能夠有效地使用我們的系統,我們需要設計一個直觀易懂的使用者互動介面。該介面應該能夠讓使用者輕鬆地進行影像上傳、實時監控、歷史資料查詢和模型切換等操作。

  4. 資料處理能力和儲存效率:鑑於血細胞檢測與計數將涉及大量的影像和影片資料處理,我們的系統必須具備強大的資料處理能力和高效的儲存機制,以保證識別過程的實時性和長期資料的有效管理。

  5. 系統的可擴充套件性和維護性:考慮到醫學研究和臨床應用的快速發展,我們的系統設計需要具有良好的可擴充套件性,以便未來可以輕鬆整合新的檢測模型或功能。此外,系統的維護性也非常重要,確保能夠持續穩定執行,並及時進行更新和升級。

2.3.2 解決方案

在面對血細胞智慧檢測與計數的挑戰時,我們提出了一系列創新解決方案,以確保我們的系統不僅能準確快速地識別和計數血細胞,還能適應各種環境,提供直觀的使用者體驗,並具備高效的資料處理和儲存能力。以下是我們採取的關鍵策略:

  1. 深度學習模型的選擇和最佳化

我們採用了基於YOLOv8/v7/v6/v5系列的深度學習模型,結合PyTorch技術框架,以實現血細胞智慧檢測與計數。YOLO系列的模型以其高速和準確性著稱,非常適合實時影像處理任務。特別地,我們透過精細調整模型架構,最佳化了模型以適應血細胞影像的特點,包括其獨特的形狀、大小和顏色差異。此外,我們運用了多種資料增強技術,如隨機裁剪、旋轉、縮放和色彩調整等,以提升模型在不同環境條件下的泛化能力和準確性。

  1. 技術框架和開發工具

選擇PyTorch作為我們的主要深度學習框架,不僅因為它的靈活性和強大的GPU加速功能,而且還因為它廣泛的社群支援和豐富的庫資源。基於Streamlit構建的Web應用介面,使得使用者可以輕鬆上傳影像、影片檔案進行血細胞檢測,並實時從攝像頭獲取影像資料。我們使用CSS進行介面美化,確保了應用的美觀性和使用者友好性。此外,PyCharm作為我們的開發IDE,提供了強大的程式碼管理和除錯工具,幫助我們高效地開發和維護程式碼。

  1. 功能實現和系統設計

我們的系統設計支援多種輸入源,包括影像檔案、影片流和實時攝像頭捕獲,以適應不同使用者的需求。實現了動態模型切換功能,使用者可以根據自己的具體需求,選擇不同版本的YOLO模型進行檢測。此外,我們設計了直觀的使用者介面,支援使用者登入註冊,保障了使用者資訊的安全性,並提供了易於管理和許可權控制的功能。

  1. 資料處理和儲存策略

我們利用PyTorch的高效資料載入和預處理機制,確保了資料處理的實時性和準確性。同時,設計了智慧資料儲存方案,透過有效的資料組織和索引技術,提高了長期資料管理和查詢的效率。為保障資料的安全性,我們實施了加密儲存和訪問控制機制。

  1. 效能最佳化和系統測試

我們對模型和系統進行了全面的效能分析,識別並針對性地最佳化了瓶頸,包括模型壓縮和硬體加速等措施,以確保系統的高效執行。透過全面的測試,包括單元測試、功能測試和壓力測試,我們確保了系統的穩定性和可靠性。

透過實施上述方法,我們開發的血細胞智慧檢測與計數系統能夠在不同環境下準確、快速地進行血細胞的檢測與計數,同時提供友好的使用者體驗和強大的資料處理能力,滿足了科研和臨床應用

2.4 博文貢獻與組織結構

本文詳細介紹了基於YOLOv8/v7/v6/v5的血細胞智慧檢測與計數系統的設計與實現,涵蓋了從理論研究到實際應用的全面內容。我們的工作不僅聚焦於演算法的選擇和最佳化,還包括了系統設計、使用者介面的開發以及對模型效能的深入分析。以下是本文的主要貢獻:

  1. 任務相關文獻綜述:我們系統性地回顧了當前在血細胞檢測與計數領域的研究進展,包括深度學習在內的多種演算法應用,特別是YOLO系列演算法在這一領域的最新進展。這為我們的研究提供了堅實的理論基礎。

  2. 資料集的處理:本文詳細介紹了血細胞影像資料集的預處理方法,包括資料增強、標註和分割等關鍵步驟,旨在提高模型訓練的效率和準確性。

  3. YOLOv8/v7/v6/v5等演算法選擇:我們對比了不同版本的YOLO演算法在血細胞智慧檢測與計數任務上的效能,透過實驗驗證選擇了最適合本專案的模型版本,並對模型進行了最佳化和調整以滿足特定需求。

  4. 採用Streamlit設計了美觀友好的網頁:利用Streamlit框架,我們開發了一個直觀易用的Web應用,使得使用者可以方便地上傳影像、影片進行血細胞檢測,同時支援實時攝像頭捕獲功能。

  5. 對比了YOLOv7/v6/v5等演算法的效果:本文提供了一個詳盡的演算法效能比較,包括檢測速度、準確率以及在不同條件下的表現,為讀者提供了選擇合適模型的參考依據。

  6. 完整的資料集和程式碼資源包:為了促進血細胞智慧檢測與計數領域的研究,我們提供了完整的資料集和程式碼資源包,包括預處理指令碼、模型訓練和預測的程式碼,以及使用者介面的設計程式碼。

後續章節的組織結構如下: 緒論:介紹研究背景、目的和本文的主要貢獻;演算法原理:詳細介紹YOLOv8/v7/v6/v5等演算法的工作原理及其在血細胞智慧檢測與計數中的應用;資料集處理:討論使用的資料集及其預處理、增強方法。程式碼介紹:提供模型訓練和預測的詳細程式碼說明,包括環境搭建、引數配置和執行步驟。實驗結果與分析:展示不同模型在血細胞智慧檢測與計數任務上的實驗結果,並進行比較分析。系統設計與實現:介紹基於Streamlit的血細胞智慧檢測與計數系統的設計與實現細節。結論與未來工作:總結本文的研究成果,並討論未來的研究方向和潛在的改進空間。


3. 資料集處理

在探索血細胞智慧檢測與計數的研究旅程中,構建一個全面、均衡且豐富的資料集是成功的關鍵。本文介紹的資料集擔負著這一使命,它透過精心設計,支援了從深度學習模型訓練到效能驗證的全過程。包含3153張影像的這個資料集被劃分為2853張訓練影像、219張驗證影像和81張測試影像,以支援模型在不同階段的適應性和泛化能力測試。博主使用的類別如下:

Chinese_name = {'Platelets': "血小板", 'RBC': "紅細胞", 'WBC': "白細胞", 'sickle cell': "鐮狀細胞"}

資料集中的影像經過專業的預處理和增強,以確保在不同裝置和環境下的一致性,提高演算法的魯棒性。每張影像都被自動調整至640x640畫素的統一尺寸,並去除了EXIF資訊中可能導致方向混淆的標籤,這一步驟對於訓練卷積神經網路是至關重要的。此外,針對血細胞影像的特點,進行的資料增強措施有助於模型抵禦現實世界中的各種挑戰,如不同的光照、顯微鏡設定及背景噪聲。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

資料集的類別分佈呈現了顯著的不平衡,其中紅細胞(RBC)例項的數量大大超過其他型別的血細胞,如血小板、白細胞(WBC)和鐮狀細胞。這一不平衡性可能導致模型對紅細胞的過度擬合,而忽視了其他較少見的類別。因此,在模型訓練過程中,需要採用特定策略如重取樣或類別權重調整,以確保所有型別的血細胞都能被公平地識別。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

標註邊界框的分佈情況表明,大多數血細胞位於影像的中心位置。這可能是由於在製備血液塗片時的取樣習慣所致,但這也意味著需要在資料增強階段模擬邊緣情況,以提高模型對邊緣血細胞的識別能力。同時,邊界框的尺寸分佈揭示了血細胞的多種形態,其中血小板通常具有較小的尺寸,而紅細胞和白細胞則呈現更大的邊界框。模型需要能夠區分和處理不同大小的血細胞,以實現準確計數和分類。

綜上所述,本資料集的構建旨在解決血細胞檢測與計數中的實際問題,它不僅注重影像數量和質量的平衡,還專注於實現資料的多樣性和可操作性。透過對資料集的這些特點進行深入分析,我們可以開發出更加魯棒和精確的血細胞檢測模型,這對於提高生物醫學影像分析的效率和準確性具有重要意義。在未來的研究中,這個資料集也為探索新的演算法和技術提供了一個堅實的基礎。


4. 原理與程式碼介紹

4.1 YOLOv8演算法原理

YOLOv8模型作為目前最新一代的目標檢測模型,繼承了YOLO系列的核心設計理念,同時引入了創新的架構和技術以提高效能和效率。YOLO(You Only Look Once)系列自從推出以來,就以其高速的檢測速度和良好的實時效能贏得了廣泛的認可。

YOLOv8作為當今最先進的目標檢測演算法之一,在設計和實現上都顯示出了顯著的創新。其核心在於如何快速且準確地對輸入影像中的物體進行檢測,其架構可分為三個主要組成部分:Backbone、Neck和Head。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

在Backbone部分,YOLOv8繼承並改進了前代YOLO系列演算法中的Darknet架構。它使用了CSPDarknet53作為基礎網路架構,透過引入CSPNet(Cross Stage Partial Networks)的設計,即在傳統的Darknet53結構中,將每個卷積層的特徵分為兩部分,一部分直接穿過網路,另一部分則進入後續的層進行處理。這種設計可以有效地減少計算量,同時保持或提高網路的效能。而YOLOv8在此基礎上做出了進一步的最佳化,提高了特徵提取的效率和精度。

Neck部分負責提取不同尺度的特徵,並進行特徵融合。YOLOv8沿用並改進了YOLOv5引入的PAN(Path Aggregation Network)結構,該結構與FPN(Feature Pyramid Networks)相結合,旨在聚合不同層級的特徵,以提高檢測的精度。YOLOv8透過SPPF(Spatial Pyramid Pooling Fusion)增強了對不同尺度特徵的聚合能力,透過多尺度特徵的融合,大大提高了模型對於不同尺寸物體的檢測能力。

在Head部分,YOLOv8進行了顯著的改進,尤其是在Anchor設計方面。不同於YOLOv5的Anchor-based設計,YOLOv8採用了Anchor-free的設計理念,摒棄了傳統的固定大小的Anchor,減少了模型在訓練過程中對於Anchor大小調整的依賴。這一設計的優點在於簡化了模型,並減少了預設的複雜性。此外,YOLOv8引入了新的損失函式,即DFL(Distribution Focal Loss),這種損失函式專注於處理不同類別間的分佈失衡,從而提高模型在多分類任務中的表現。

總體而言,YOLOv8的創新不僅在於其結構的改進,還體現在其對於目標檢測中的類別不平衡、尺寸多樣性、檢測精度和速度等方面的全面考量。透過上述的技術創新,YOLOv8實現了在實時性與檢測精度之間的良好平衡,為實際應用中的血細胞智慧檢測與計數系統提供了強有力的技術支援。

4.2 模型構建

在我們的血細胞智慧檢測與計數研究中,構建一個準確且高效的深度學習模型是關鍵。本部分介紹了模型的構建過程,涵蓋了從資料預處理到模型載入,再到預測和後處理的每一步。

首先,我們匯入了處理影像所需的OpenCV庫以及PyTorch,這些工具為我們提供了在影像資料上應用深度學習演算法的能力。QtFusion.models中的Detector是我們自定義的類,用於目標檢測,而datasets.label_name提供了我們資料集中類別名稱的中文翻譯。選擇正確的裝置來執行我們的模型是非常重要的,我們使用torch.cuda.is_available()檢查是否有GPU可用,如果有,則使用GPU加速計算,否則退回到CPU。這是透過設定device變數來完成的。

import cv2
import torch
from QtFusion.models import Detector
from datasets.label_name import Chinese_name
from ultralytics import YOLO
from ultralytics.utils.torch_utils import select_device

在程式碼中,device變數用於定義模型訓練和推理將使用的計算裝置。如果GPU可用(torch.cuda.is_available()),則使用GPU加速計算;如果不可用,回退到CPU。接著定義了一系列的初始引數ini_params,它們為模型預測設定了諸如裝置型別、置信度閾值、IOU閾值和類別過濾器等重要引數。這些引數是我們模型預測步驟中不可或缺的部分,它們將影響模型如何識別和處理影像中的血細胞。

device = "cuda:0" if torch.cuda.is_available() else "cpu"
ini_params = {
    'device': device,
    'conf': 0.25,
    'iou': 0.5,
    'classes': None,
    'verbose': False
}

為了數出每個類別的例項數量,我們定義了一個函式count_classes。它利用了一個字典來儲存每個類別的計數,並透過遍歷檢測資訊來更新這個計數。這為我們提供了一個清晰的檢視,瞭解哪些血細胞類別最常見,哪些比較罕見。

def count_classes(det_info, class_names):
    count_dict = {name: 0 for name in class_names}
    for info in det_info:
        class_name = info['class_name']
        if class_name in count_dict:
            count_dict[class_name] += 1
    count_list = [count_dict[name] for name in class_names]
    return count_list

在YOLOv8v5Detector類中,我們繼承並擴充套件了Detector類。這個類的建構函式初始化了模型和一些關鍵的變數。在load_model方法中,我們載入了預訓練的YOLO模型,並將裝置設定為之前確定的CPU或GPU。此外,我們還轉換了模型中的類別名稱,將其本地化為中文,以便於在實際應用中更易於理解。preprocess方法定義瞭如何處理輸入影像,這裡我們將其簡單地保留原樣。而predict方法則是模型的核心,它呼叫YOLO模型進行預測,利用初始化引數進行置信度和IOU的篩選。

class YOLOv8v5Detector(Detector):
    def __init__(self, params=None):
        super().__init__(params)
        self.model = None
        self.img = None
        self.names = list(Chinese_name.values())
        self.params = params if params else ini_params
	def load_model(self, model_path):
	    self.device = select_device(self.params['device'])
	    self.model = YOLO(model_path)
	    names_dict = self.model.names
	    self.names = [Chinese_name[v] if v in Chinese_name else v for v in names_dict.values()]
	    self.model(torch.zeros(1, 3, *[self.imgsz] * 2).to(self.device).type_as(next(self.model.model.parameters())))
	def preprocess(self, img):
	    self.img = img
	    return img
	
	def predict(self, img):
	    results = self.model(img, **ini_params)
	    return results
	
	def postprocess(self, pred):
	    results = []
	    for res in pred[0].boxes:
	        for box in res:
	            class_id = int(box.cls.cpu())
	            bbox = box.xyxy.cpu().squeeze().tolist()
	            bbox = [int(coord) for coord in bbox]
	            result = {
	                "class_name": self.names[class_id],
	                "bbox": bbox,
	                "score": box.conf.cpu().squeeze().item(),
	                "class_id": class_id,
	            }
	            results.append(result)
	    return results
	    
    def set_param(self, params):
        self.params.update(params)

在預測完成後,postprocess方法處理模型的輸出,將邊界框、類別、置信度等資訊轉換為我們需要的格式。我們對每個預測邊界框進行迭代,提取了類別ID、邊界框座標和置信度分數,並將它們包裝成一個結果字典。最後,set_param方法允許我們動態地更新模型的引數,這對於根據不同的應用場景調整模型行為非常有用。

透過這些程式碼,我們定義了一個端到端的流程,可以從影像中檢測和識別不同的血細胞型別。這一流程不僅在技術上先進,而且還考慮到了實用性和使用者體驗,使其在未來的血液分析和醫學研究中有著極大的應用潛力。

4.3 訓練程式碼

在我們的血細胞智慧檢測與計數專案中,訓練一個高效能的深度學習模型是至關重要的。這部分部落格將深入介紹如何使用PyTorch框架和YOLOv8演算法來訓練我們的模型。以下是訓練模型的詳細程式碼介紹。以下表格詳細介紹了YOLOv8模型訓練中使用的一些重要超引數及其設定:

超引數 設定 說明
學習率(lr0 0.01 決定了模型權重調整的步長大小,在訓練初期有助於快速收斂。
學習率衰減(lrf 0.01 控制訓練過程中學習率的降低速度,有助於模型在訓練後期細緻調整。
動量(momentum 0.937 加速模型在正確方向上的學習,並減少震盪,加快收斂速度。
權重衰減(weight_decay 0.0005 防止過擬合,透過在損失函式中新增正則項減少模型複雜度。
熱身訓練週期(warmup_epochs 3.0 初始幾個週期內以較低的學習率開始訓練,逐漸增加到預定學習率。
批次大小(batch 16 每次迭代訓練中輸入模型的樣本數,影響GPU記憶體使用和模型效能。
輸入影像大小(imgsz 640 模型接受的輸入影像的尺寸,影響模型的識別能力和計算負擔。

環境設定與模型載入:首先,我們需要匯入必要的庫。torch是PyTorch深度學習框架的核心庫,提供了GPU加速以及自動梯度計算等功能,而ultralytics中的YOLO是一種基於PyTorch的實現,用於載入和訓練YOLO模型。QtFusion.path中的abs_path函式用於獲取檔案的絕對路徑,確保路徑的準確性和跨平臺相容性。

import os
import torch
import yaml
from ultralytics import YOLO  # 用於載入YOLO模型
from QtFusion.path import abs_path  # 用於獲取檔案的絕對路徑

接下來,我們定義device變數來指定訓練時使用的裝置,如果檢測到可用的GPU,就使用第一塊GPU("0"),否則使用CPU。

device = "0" if torch.cuda.is_available() else "cpu"

資料集準備:workers引數指定了資料載入時使用的子程序數量,而batch定義了每個批次的影像數量。批次大小和工作程序數量在訓練效率和記憶體利用率之間提供了平衡。為了準確地指向我們的資料集,我們構造了資料集配置檔案的路徑,並進行了路徑規範化處理。然後,我們讀取YAML配置檔案,這個檔案包含了資料集的詳細資訊,如類別標籤和影像路徑等。

workers = 1  # 工作程序數
batch = 8  # 每批處理的影像數量
data_name = "Haemocytes"
data_path = abs_path(f'datasets/{data_name}/{data_name}.yaml', path_type='current')
unix_style_path = data_path.replace(os.sep, '/')

在讀取YAML檔案後,我們可能需要修改其中的某些項,如path,以確保它反映了資料的實際儲存位置。然後,我們將修改後的內容寫回到檔案中。

directory_path = os.path.dirname(unix_style_path)
with open(data_path, 'r') as file:
    data = yaml.load(file, Loader=yaml.FullLoader)

if 'path' in data:
    data['path'] = directory_path
    with open(data_path, 'w') as file:
        yaml.safe_dump(data, file, sort_keys=False)

訓練模型:最關鍵的部分是載入預訓練的YOLOv8模型並開始訓練。這裡我們使用了YOLO類的train方法,其中指定了各種訓練引數,包括資料集路徑、裝置、工作程序數、輸入影像大小、訓練週期數和批次大小。透過設定name引數,我們為訓練任務提供了一個識別符號,有助於後續的追蹤和分析。

model = YOLO(abs_path('./weights/yolov5nu.pt', path_type='current'), task='detect')  # 載入預訓練的YOLOv8模型
# model = YOLO('./weights/yolov5.yaml', task='detect').load('./weights/yolov5nu.pt')  # 載入預訓練的YOLOv8模型
# Training.
results = model.train(  # 開始訓練模型
    data=data_path,  # 指定訓練資料的配置檔案路徑
    device=device,  # 自動選擇進行訓練
    workers=workers,  # 指定使用2個工作程序載入資料
    imgsz=640,  # 指定輸入影像的大小為640x640
    epochs=120,  # 指定訓練100個epoch
    batch=batch,  # 指定每個批次的大小為8
    name='train_v5_' + data_name  # 指定訓練任務的名稱
)
model = YOLO(abs_path('./weights/yolov8n.pt'), task='detect')  # 載入預訓練的YOLOv8模型
results2 = model.train(  # 開始訓練模型
    data=data_path,  # 指定訓練資料的配置檔案路徑
    device=device,  # 自動選擇進行訓練
    workers=workers,  # 指定使用2個工作程序載入資料
    imgsz=640,  # 指定輸入影像的大小為640x640
    epochs=120,  # 指定訓練100個epoch
    batch=batch,  # 指定每個批次的大小為8
    name='train_v8_' + data_name  # 指定訓練任務的名稱
)

透過這段程式碼,我們將能夠訓練一個最佳化的YOLOv8模型,專門用於我們的血細胞檢測任務。隨著模型在多輪迭代中學習資料集的細節,它的效能預期將逐步提升,最終達到一個準確識別各種血細胞類別的狀態。


5. 實驗結果與分析

5.1 訓練曲線

在深度學習模型的訓練過程中,損失函式的變化及其評價指標的變化是模型效能進步的重要指示。圖中展示了YOLOv8模型在訓練期間各種損失和效能指標的變化情況,對這些指標的分析對於理解模型的學習效果至關重要。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

首先,觀察訓練和驗證階段的邊界框損失(box_loss)和分類損失(cls_loss)。這兩項損失的逐步降低表明,隨著訓練的進行,模型在定位物件的邊界框和分類任務上越來越精確。特別是在邊界框損失方面,我們可以看到一個明顯的下降趨勢,這說明模型在區分目標物件的位置方面有顯著提升。相比之下,分類損失的下降趨勢則表明模型在辨識不同型別的血細胞上也在不斷進步。

接下來分析目標檢測中兩個重要的效能指標:精確度(precision)和召回率(recall)。精確度表達了模型識別出的目標中,有多少是正確的。召回率則衡量了在所有應被識別的目標中,模型成功識別了多少。從圖中我們可以看出,精確度和召回率在訓練過程中經歷了波動,但總體上都呈現出提升的趨勢。在訓練初期,模型可能還在學習如何處理資料,因此效能指標可能會出現較大波動。隨著模型對資料集的特徵學習越來越深入,效能逐漸穩定並提高。

再來看均值平均精確度(mAP)的兩個指標,即mAP@0.5和mAP@0.5-0.95。mAP@0.5指的是在IoU(交併比)為0.5的閾值下的平均精確度,而mAP@0.5-0.95則考慮了IoU從0.5到0.95的不同閾值,是一個更為嚴格和全面的效能度量。兩者都是目標檢測領域中公認的評估標準。在本模型的訓練中,這兩個指標隨著訓練週期的增加而穩步上升,顯示出模型在捕獲目標的準確性方面取得了實質性的進展。

總之,這些訓練時的損失和效能圖表展示了YOLOv8模型在血細胞智慧檢測與計數任務上的有效學習。損失函式的下降趨勢和效能指標的提升表明模型在識別準確性、定位能力和分類準確性方面都有所提高。這些進步預示著模型在實際應用中,尤其是在高速度和高準確度都至關重要的醫學影像分析任務上,有著良好的潛力和適用性。

5.2 F1曲線圖

在深度學習模型的效能評估中,F1分數是衡量模型精確性和召回率平衡的關鍵指標,它的高值指示著模型在保持高識別率的同時避免了過多的誤判。圖中展示的是血細胞檢測模型在各個置信度閾值下的F1分數曲線,這為我們提供了模型效能的詳盡檢視。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

透過分析F1分數曲線,我們可以觀察到幾個重要的特點。首先,曲線的形狀告訴我們模型在不同置信度閾值下的效能變化。理想情況下,我們希望在置信度較低時就能獲得較高的F1分數,這意味著模型能在較為寬鬆的條件下就實現準確檢測。對於圖中的血細胞檢測模型,我們看到在置信度閾值較低的情況下F1分數迅速上升,說明模型即使在低置信度下也能保持較高的效能。

特別地,針對不同類別的血細胞——血小板、紅細胞(RBC)、白細胞(WBC)和鐮狀細胞——模型的F1分數表現出顯著差異。這可能與訓練資料中各類樣本的數量和多樣性有關。從曲線我們可以看出,對於紅細胞,模型的F1分數在置信度較低時即達到高峰,這反映了模型在紅細胞檢測上的強大效能。而對於鐮狀細胞,由於其獨特的形態,F1分數曲線在較高的置信度閾值下才達到高值,這表明模型在高置信度下對這類血細胞的檢測更為準確。

整體上所有類別的F1分數在置信度閾值約為0.463時達到了一個高峰,此時的整體F1分數為0.78。這意味著該置信度閾值可能是對於此模型進行血細胞檢測的最優閾值。在實際應用中,我們可以根據這個結果來調整我們模型的置信度閾值,以期達到最佳的檢測效果。

當置信度閾值進一步提高時,模型的F1分數開始下降,這提示我們模型可能會錯過一些正確的預測,或者是在某些類別上出現了過多的誤判。因此,在實際應用中,我們可能需要在保持高F1分數的同時,調整閾值以獲得最佳的精確度和召回率平衡。

透過這些詳細的分析,我們能夠深入理解模型在不同類別的血細胞檢測任務上的表現,並對模型的預測置信度進行最佳化。這些見解不僅有助於我們對現有模型進行改進,還為未來開發更精確、更魯棒的血細胞檢測模型提供了寶貴的資料支援。

5.3 YOLOv8/v7/v6/v5對比實驗

(1)實驗設計
本實驗旨在評估和比較YOLOv5、YOLOv6、YOLOv7和YOLOv8幾種模型在血細胞目標檢測任務上的效能。為了實現這一目標,博主分別使用使用相同的資料集訓練和測試了這四個模型,從而可以進行直接的效能比較。該資料集包含血細胞的影像。本文將比較分析四種模型,旨在揭示每種模型的優缺點,探討它們在工業環境中實際應用的場景選擇。

模型 影像大小 (畫素) mAPval 50-95 CPU ONNX 速度 (毫秒) A100 TensorRT 速度 (毫秒) 引數數量 (百萬) FLOPs (十億)
YOLOv5nu 640 34.3 73.6 1.06 2.6 7.7
YOLOv8n 640 37.3 80.4 0.99 3.2 8.7
YOLOv6N 640 37.5 - - 4.7 11.4
YOLOv7-tiny 640 37.4 - - 6.01 13.1

(2)度量指標

  • F1-Score:F1-Score 作為衡量模型效能的重要指標,尤其在處理類別分佈不均的資料集時顯得尤為關鍵。它透過結合精確率與召回率,提供了一個單一的度量標準,能夠全面評價模型的效能。精確率衡量的是模型在所有被標記為正例中真正屬於正例的比例,而召回率則關注於模型能夠識別出的真正正例佔所有實際正例的比例。F1-Score透過兩者的調和平均,確保了只有當精確率和召回率同時高時,模型的效能評估才會高,從而確保了模型對於正例的預測既準確又完整。
  • mAP(Mean Average Precision):在目標檢測任務中,Mean Average Precision(mAP)是評估模型效能的重要標準。它不僅反映了模型對單個類別的識別精度,而且還考慮了所有類別的平均表現,因此提供了一個全域性的效能度量。在計算mAP時,模型對於每個類別的預測被單獨考慮,然後計算每個類別的平均精度(AP),最後這些AP值的平均數形成了mAP。
名稱 YOLOv5nu YOLOv6n YOLOv7-tiny YOLOv8n
mAP 0.820 0.794 0.781 0.834
F1-Score 0.78 0.74 0.76 0.78

(3)實驗結果分析

在血細胞智慧檢測與計數的任務中,模型選擇是至關重要的。我們的實驗對YOLO系列的幾個版本進行了深入的效能比較,以明確哪一個模型更適合這一特定的應用場景。在這一過程中,我們使用了F1-Score和mAP這兩個核心指標,它們分別衡量了模型的準確性和預測的穩定性。

從實驗結果來看,YOLOv8n在mAP指標上得分最高,達到了0.834,顯示出在這個資料集上的優越效能。mAP指標衡量的是模型在各個置信度閾值下的平均精度,高分意味著模型在絕大多數情況下都能給出準確的預測。YOLOv5nu雖然緊隨其後,但mAP為0.820,說明它在精度上略微遜色於YOLOv8n。YOLOv6n和YOLOv7-tiny的mAP得分分別為0.794和0.781,相對較低,這可能是由於它們的網路架構較為簡單,或者是在訓練資料的利用上不如其他兩個版本。

在F1-Score的表現上,YOLOv5nu和YOLOv8n並列第一,均為0.78,這個結果反映了這兩個模型在精確度和召回率之間達到了良好的平衡。YOLOv7-tiny的F1-Score為0.76,略低於前兩者,但考慮到“tiny”版本通常是為了在準確性和速度之間取得平衡而設計的,這個結果仍然十分可觀。YOLOv6n的F1-Score為0.74,表現最差,可能是因為在模型訓練時未能很好地平衡偏差和方差,或者模型本身對於資料集的特徵學習不夠充分。

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

這些指標的差異可能與多個因素有關,包括模型的深度、寬度、以及複雜性。新版本的YOLO模型通常包含了更多的改進和最佳化,例如更先進的損失函式、更細粒度的特徵提取和更有效的非極大值抑制(NMS)機制。此外,YOLOv8n可能利用了最新的研究成果,如更深的網路結構和更大的模型容量,以更好地從資料中學習複雜的特徵。而YOLOv5nu則可能得益於其穩定的架構和有效的訓練策略,在這次評估中依然保持了高水平的效能。

綜上所述,選擇合適的模型需要根據實際的應用場景和需求進行。對於需要高準確性的場景,YOLOv8n將是一個不錯的選擇。對於需要在速度和準確性之間取得平衡的場景,YOLOv5nu或YOLOv7-tiny可能更加合適。而對於需要快速部署且計算資源受限的環境,YOLOv6n和YOLOv7-tiny的“n”和“tiny”版本仍然是值得考慮的候選者。透過深入分析每個模型的表現,我們可以對它們在實際醫療影像處理任務中的潛在效用有一個更全面的認識。


6. 系統設計與實現

6.1 系統架構概覽

在介紹基於YOLOv8/v7/v6/v5模型的血細胞智慧檢測與計數系統的架構設計時,我們將著重探討幾個核心元件的設計和實現。這些元件在系統中扮演著至關重要的角色,包括模型載入、影像處理、檢測執行、結果展示等多個方面。下面是對這些關鍵元件設計的具體說明:

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)
  1. 模型載入與初始化

在系統中,模型的載入與初始化是首要步驟,確保了檢測模型能夠被正確地載入和初始化以供後續使用。本系統中採用的YOLOv8v5Detector類負責載入預訓練的YOLO模型。這一步驟在__init__方法中實現,透過呼叫model.load_model方法,傳入模型路徑(如YOLOv8/v7/v6/v5的權重檔案),完成模型的載入工作。此外,該類還會初始化模型引數,如置信度閾值(conf_threshold)和IOU閾值(iou_threshold),以適應不同的檢測需求。

  1. 影像處理

影像處理是系統中的一個關鍵步驟,它直接影響到檢測結果的準確性和效率。在frame_process方法中,系統首先對輸入的影像進行尺寸調整,確保影像尺寸符合模型的輸入要求。接著,利用model.preprocess方法對影像進行預處理,如歸一化等,為模型推理做好準備。

  1. 檢測執行

檢測執行是系統的核心部分,負責執行血細胞的識別和定位。在frame_process方法中,經過影像預處理後,使用model.predict方法對預處理後的影像執行推理,獲得檢測結果。此過程中,會根據設定的置信度閾值和IOU閾值過濾掉一部分檢測框,以提高檢測的準確性。

  1. 結果展示與記錄

系統設計了多種方式來展示和記錄檢測結果,便於使用者理解和進一步分析。透過logTable例項(由LogTable類建立),系統能夠將檢測結果儲存至CSV檔案中,便於後續的分析和報告生成。同時,在toggle_comboBoxframe_process方法中,系統提供了圖形介面上的結果展示,包括將檢測框和置信度直接繪製在影像上,並透過image_placeholder等屬性在Web介面上展示處理後的影像和檢測結果。

  1. 使用者互動介面

系統透過streamlit庫構建了友好的使用者互動介面,允許使用者透過Web介面輕鬆地上傳影像或影片檔案,選擇模型型別,設定檢測引數等。在setup_sidebar方法中,系統初始化了側邊欄的各項配置,包括模型選擇、檔案上傳、引數設定等。此外,process_camera_or_file方法則根據使用者的選擇,執行攝像頭實時檢測或檔案檢測。

透過上述關鍵元件的設計和實現,本系統實現了血細胞的智慧檢測與計數功能,不僅提高了檢測的效率和準確性,還提供了易於使用的使用者介面,極大地方便了使用者的使用和結果的分析。

6.2 系統流程

在我們的血細胞智慧檢測與計數系統中,整個流程從使用者介面的互動到最終的檢測結果展示,形成了一個閉環的工作流程。以下是該系統工作流程的步驟性描述,旨在清晰展示從啟動到獲取結果的全過程:

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)
  1. 初始化系統:啟動系統時,首先執行__init__方法,進行必要的初始化設定,包括模型載入、引數設定、介面佈局等。在這一步驟中,YOLOv8v5Detector類例項被建立,用於後續的影像檢測任務。

  2. 設定使用者介面:透過setup_pagesetup_sidebar方法,系統設定主頁面和側邊欄的佈局與選項。側邊欄提供模型選擇、檔案上傳、引數配置等選項,使用者可以透過這些選項來自定義檢測過程。

  3. 檔案上傳和攝像頭選擇:使用者可以選擇上傳影像或影片檔案,或者選擇使用實時攝像頭進行檢測。這一步驟透過側邊欄中的選項來實現,系統根據使用者的選擇準備相應的輸入源。

  4. 引數配置:使用者可以透過側邊欄設定檢測相關的引數,如置信度閾值和IOU閾值等。這些引數直接影響檢測的精度和結果。

  5. 啟動檢測:使用者完成輸入源和引數設定後,點選“開始執行”按鈕啟動檢測過程。系統將根據使用者的選擇執行相應的檢測任務,包括處理攝像頭輸入、圖片檔案或影片檔案。

  6. 影像預處理:無論是來自攝像頭、圖片檔案還是影片檔案的輸入,系統首先對每一幀影像執行預處理,包括尺寸調整和歸一化等,以適應模型的輸入要求。

  7. 執行檢測:預處理後的影像資料被送入YOLO模型進行推理,系統透過frame_process方法呼叫model.predict執行檢測,得到包含血細胞位置和類別的檢測結果。

  8. 結果處理與展示:檢測完成後,系統透過toggle_comboBoxframe_process方法處理檢測結果,包括繪製檢測框、計數和分類等,並在使用者介面上展示這些結果。

  9. 結果記錄:檢測結果除了在介面上直接展示外,還透過logTable例項記錄到CSV檔案中,方便使用者後續進行分析和報告生成。

  10. 使用者互動與反饋:在檢測過程中,使用者可以隨時調整引數設定或重新選擇輸入源,系統將根據新的設定重新執行檢測。此外,使用者還可以匯出檢測結果和記錄檔案。

透過上述流程,我們的系統為使用者提供了一個高效、準確且易於操作的血細胞智慧檢測與計數工具,大大提升了血細胞分析的效率和準確性。


程式碼下載連結

如果您希望獲取部落格中提及的完整資源包,包含測試圖片、影片、Python檔案(*.py)、網頁配置檔案、訓練資料集、程式碼及介面設計等,可訪問博主在麵包多平臺的上傳內容。相關的部落格和影片資料提供了所有必要檔案的下載連結,以便一鍵執行。完整資源的預覽如下圖所示:

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

資源包中涵蓋了你需要的訓練測試資料集、訓練測試程式碼、UI介面程式碼等完整資源,完整專案檔案的下載連結可在下面的影片簡介中找到➷➷➷

演示與介紹影片https://www.bilibili.com/video/BV1wx4y1Y7mE/
YOLOv8/v7/v6/v5專案合集下載:https://mbd.pub/o/bread/mbd-ZZ2Xm5xy
YOLOv8和v5專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2XmZpu
YOLOv7專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Xmpds
YOLOv6專案完整資源下載:https://mbd.pub/o/bread/mbd-ZZ2Xm5dx

基於深度學習的血細胞智慧檢測與計數系統(網頁版+YOLOv8/v7/v6/v5程式碼+訓練資料集)

完整安裝執行教程:

這個專案的執行需要用到Anaconda和Pycharm兩個軟體,下載到資原始碼後,您可以按照以下連結提供的詳細安裝教程操作即可執行成功,如仍有執行問題可私信博主解決:

  1. Pycharm和Anaconda的安裝教程https://deepcode.blog.csdn.net/article/details/136639378

軟體安裝好後需要為本專案新建Python環境、安裝依賴庫,並在Pycharm中設定環境,這幾步採用下面的教程可選線上安裝(pip install直接線上下載包)或離線依賴包(博主提供的離線包直接裝)安裝兩種方式之一:

  1. Python環境配置教程https://deepcode.blog.csdn.net/article/details/136639396(2,3方法可選一種);
  2. 離線依賴包的安裝指南https://deepcode.blog.csdn.net/article/details/136650641(2,3方法可選一種);

如使用離線包方式安裝,請下載離線依賴庫,下載地址:https://pan.baidu.com/s/1uHbU9YzSqN0YP_dTHBgpFw?pwd=mt8u (提取碼:mt8u)。


7. 結論與未來工作

透過深入研究並實踐了基於YOLOv8/v7/v6/v5的深度學習模型在血細胞智慧檢測與計數領域的應用,我們成功開發了一個高效準確的系統。透過細緻比較和最佳化多個版本的YOLO模型,不僅顯著提升了血細胞智慧檢測與計數的準確率和實時性,而且還藉助Streamlit技術,打造了一個直觀、美觀且使用者友好的Web應用介面,極大地簡化了使用者操作流程,使得血細胞檢測變得更加便捷和高效。

經過嚴格的實驗驗證,我們的方法在血細胞智慧檢測與計數的準確性和處理速度方面均達到了高水平。此外,本研究還提供了完整的資料處理、模型訓練與預測程式碼,以及基於Streamlit的應用開發細節,為後續研究者和開發人員提供了極大的便利。儘管我們在這一領域已取得顯著成就,但血細胞智慧檢測與計數作為一個高度複雜和動態變化的任務,仍然存在諸多挑戰和提升空間。針對未來的研究和開發,我們計劃從以下方面進行深入探索:

  • 模型最佳化:我們將繼續研究深層網路結構和最佳化策略,如神經網路架構搜尋(NAS),以進一步提高模型的檢測效能和效率。
  • 多模態學習:考慮引入影像以外的其他模態資訊,如文字和語音資料,透過多模態學習方法來增強血細胞檢測的準確度和魯棒性。
  • 跨域適應性:研究在不同人群和環境條件下的血細胞檢測問題,透過領域適應技術提升模型的泛化能力和適應性。
  • 使用者互動體驗:我們計劃進一步改進和最佳化使用者介面和互動設計,使系統更加人性化和智慧化,以更好地滿足廣大使用者的需求。
  • 實際應用場景的擴充:探索血細胞智慧檢測與計數技術在更多實際應用中的潛力,如醫療健康、遠端診斷等領域,以實現其更廣泛的應用和社會價值。

總體而言,基於YOLOv8/v7/v6/v5模型的血細胞智慧檢測與計數技術正在迅速發展,並有望在醫療健康、生物科學研究等多個領域發揮更大的作用。隨著技術的不斷進步和應用範圍的持續擴充,我們有理由相信,這一領域的未來充滿了無限可能和廣闊前景。


  1. Yusof, Najiha‘Izzaty Mohd, et al. "Assessing the performance of YOLOv5, YOLOv6, and YOLOv7 in road defect detection and classification: a comparative study." Bulletin of Electrical Engineering and Informatics 13.1 (2024): 350-360. ↩︎

  2. Zhao, Dewei, et al. "A Small Object Detection Method for Drone-Captured Images Based on Improved YOLOv7." Remote Sensing 16.6 (2024): 1002. ↩︎

  3. Bietti, Alberto, et al. "Birth of a transformer: A memory viewpoint." Advances in Neural Information Processing Systems 36 (2024). ↩︎

  4. Qin, Han, et al. "An Improved Faster R-CNN Method for Landslide Detection in Remote Sensing Images." Journal of Geovisualization and Spatial Analysis 8.1 (2024): 2. ↩︎

相關文章