基于YOLOv5n/s/m不同參數量級模型開發構建茶葉嫩芽檢測識別模型,使用pruning剪枝技術來對模型進行輕量化處理,探索不同剪枝水平下模型性能影響【續】

這里主要是前一篇博文的后續內容,簡單回顧一下:本文選取了n/s/m三款不同量級的模型來依次構建訓練模型,所有的參數保持同樣的設置,之后探索在不同剪枝處理操作下的性能影響。

在上一篇博文中保持30的剪枝程度得到的效果還是比較理想的。這里進行的是分別進行60和90兩種不同程度的剪枝,之后對其進行微調訓練開發,對比分析模型性能。

先看60的結果:

【yolov5n_pruning】

?【yolov5s_pruning】

【yolov5m_pruning】

?三款參數量級的模型對比評估結果詳情如下所示:

【yolov5n_pruning】
Validating runs/train/yolov5n_pruning_0.60/weights/best.pt...
Fusing layers... 
YOLOv5n summary: 157 layers, 932592 parameters, 0 gradients, 2.1 GFLOPsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 5/5 [00:01<00:00,  2.79it/s]                      all         40        100      0.627       0.42      0.482      0.153
Results saved to runs/train/yolov5n_pruning_0.60【yolov5s_pruning】
Validating runs/train/yolov5s_pruning_0.60/weights/best.pt...
Fusing layers... 
YOLOv5s summary: 166 layers, 4637807 parameters, 0 gradientsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 5/5 [00:01<00:00,  2.51it/s]                      all         40        100      0.488        0.5      0.481      0.183
Results saved to runs/train/yolov5s_pruning_0.60【yolov5m_pruning】
Validating runs/train/yolov5m_pruning_0.60/weights/best.pt...
Fusing layers... 
YOLOv5m summary: 212 layers, 11711883 parameters, 0 gradients, 25.4 GFLOPsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 5/5 [00:01<00:00,  2.77it/s]                      all         40        100      0.633      0.708      0.672      0.256
Results saved to runs/train/yolov5m_pruning_0.60

綜合對比不難發現:在60%的剪枝程度處理下,各款模型都發現了明顯的精度下降的問題。為了直觀對比分析,我對其進行了可視化,如下所示:

【Precision曲線】
精確率曲線(Precision-Recall Curve)是一種用于評估二分類模型在不同閾值下的精確率性能的可視化工具。它通過繪制不同閾值下的精確率和召回率之間的關系圖來幫助我們了解模型在不同閾值下的表現。
精確率(Precision)是指被正確預測為正例的樣本數占所有預測為正例的樣本數的比例。召回率(Recall)是指被正確預測為正例的樣本數占所有實際為正例的樣本數的比例。
繪制精確率曲線的步驟如下:
使用不同的閾值將預測概率轉換為二進制類別標簽。通常,當預測概率大于閾值時,樣本被分類為正例,否則分類為負例。
對于每個閾值,計算相應的精確率和召回率。
將每個閾值下的精確率和召回率繪制在同一個圖表上,形成精確率曲線。
根據精確率曲線的形狀和變化趨勢,可以選擇適當的閾值以達到所需的性能要求。
通過觀察精確率曲線,我們可以根據需求確定最佳的閾值,以平衡精確率和召回率。較高的精確率意味著較少的誤報,而較高的召回率則表示較少的漏報。根據具體的業務需求和成本權衡,可以在曲線上選擇合適的操作點或閾值。
精確率曲線通常與召回率曲線(Recall Curve)一起使用,以提供更全面的分類器性能分析,并幫助評估和比較不同模型的性能。


【Recall曲線】
召回率曲線(Recall Curve)是一種用于評估二分類模型在不同閾值下的召回率性能的可視化工具。它通過繪制不同閾值下的召回率和對應的精確率之間的關系圖來幫助我們了解模型在不同閾值下的表現。
召回率(Recall)是指被正確預測為正例的樣本數占所有實際為正例的樣本數的比例。召回率也被稱為靈敏度(Sensitivity)或真正例率(True Positive Rate)。
繪制召回率曲線的步驟如下:
使用不同的閾值將預測概率轉換為二進制類別標簽。通常,當預測概率大于閾值時,樣本被分類為正例,否則分類為負例。
對于每個閾值,計算相應的召回率和對應的精確率。
將每個閾值下的召回率和精確率繪制在同一個圖表上,形成召回率曲線。
根據召回率曲線的形狀和變化趨勢,可以選擇適當的閾值以達到所需的性能要求。
通過觀察召回率曲線,我們可以根據需求確定最佳的閾值,以平衡召回率和精確率。較高的召回率表示較少的漏報,而較高的精確率意味著較少的誤報。根據具體的業務需求和成本權衡,可以在曲線上選擇合適的操作點或閾值。
召回率曲線通常與精確率曲線(Precision Curve)一起使用,以提供更全面的分類器性能分析,并幫助評估和比較不同模型的性能。


【F1值曲線】
F1值曲線是一種用于評估二分類模型在不同閾值下的性能的可視化工具。它通過繪制不同閾值下的精確率(Precision)、召回率(Recall)和F1分數的關系圖來幫助我們理解模型的整體性能。
F1分數是精確率和召回率的調和平均值,它綜合考慮了兩者的性能指標。F1值曲線可以幫助我們確定在不同精確率和召回率之間找到一個平衡點,以選擇最佳的閾值。
繪制F1值曲線的步驟如下:
使用不同的閾值將預測概率轉換為二進制類別標簽。通常,當預測概率大于閾值時,樣本被分類為正例,否則分類為負例。
對于每個閾值,計算相應的精確率、召回率和F1分數。
將每個閾值下的精確率、召回率和F1分數繪制在同一個圖表上,形成F1值曲線。
根據F1值曲線的形狀和變化趨勢,可以選擇適當的閾值以達到所需的性能要求。
F1值曲線通常與接收者操作特征曲線(ROC曲線)一起使用,以幫助評估和比較不同模型的性能。它們提供了更全面的分類器性能分析,可以根據具體應用場景來選擇合適的模型和閾值設置。

?【loss曲線】

?接下來是剪枝度為90的最后一組實驗。

【yolov5n_pruning】

?【yolov5s_pruning】

?【yolov5m_pruning】

?三款不同參數量級在剪枝度90的情況下,模型評估結果對比如下所示:

【yolov5n_pruning】
Validating runs/train/yolov5n_pruning_0.90/weights/best.pt...
Fusing layers... 
YOLOv5n summary: 157 layers, 710530 parameters, 0 gradients, 1.4 GFLOPsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 5/5 [00:01<00:00,  3.53it/s]                      all         40        100      0.267       0.23      0.189     0.0464
Results saved to runs/train/yolov5n_pruning_0.90【yolov5s_pruning】
Validating runs/train/yolov5s_pruning_0.90/weights/best.pt...
Fusing layers... 
YOLOv5s summary: 166 layers, 3920903 parameters, 0 gradientsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 5/5 [00:01<00:00,  3.59it/s]                      all         40        100      0.204       0.27      0.175     0.0635
Results saved to runs/train/yolov5s_pruning_0.90【yolov5m_pruning】
Validating runs/train/yolov5m_pruning_0.90/weights/best.pt...
Fusing layers... 
YOLOv5m summary: 212 layers, 8908815 parameters, 0 gradients, 17.7 GFLOPsClass     Images  Instances          P          R      mAP50   mAP50-95: 100%|??????????| 5/5 [00:01<00:00,  3.21it/s]                      all         40        100      0.213       0.35      0.221      0.078
Results saved to runs/train/yolov5m_pruning_0.90

同樣為了直觀對比分析,我對其也進行了對比可視化展示,如下所示:

【F1值】

【loss曲線】

?【Precision】

?【Recall】

?90的話結果已經變差了很多了。

接下來我整體對比一下30/60/90這三組剪枝實驗結果,如下所示:

【F1值】

?【loss】

?【Precision】

?【Recall】

?從對比可視化曲線上面不難看出:剪枝三組實驗效果依次遞降。

精度和速度本身就是一堆需要平衡的指標,在算力條件允許的情況下盡量保持較低程度的剪枝水平會帶來不錯的精度體驗。

最后我們來直觀體驗感受下不同剪枝水平下模型體量的差異:

?后面有時間再繼續實驗分析吧。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41562.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41562.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41562.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 學習系列3 -- 函數壓棧與出棧

在C中&#xff0c;函數壓棧&#xff08;函數調用&#xff09;和出棧&#xff08;函數返回&#xff09;是函數調用過程中的兩個關鍵步驟。下面將逐步解釋這兩個過程&#xff1a; 一 函數壓棧與出棧過程簡介 函數壓棧&#xff08;函數調用&#xff09;的過程如下&#xff1a; …

2020年3月全國計算機等級考試真題(C語言二級)

2020年3月全國計算機等級考試真題&#xff08;C語言二級&#xff09; 第1題 有以下程序 void fun1 (char*p) { char*q; qp; while(*q!\0) { (*Q); q&#xff1b; } } main() { char a[]{"Program"},*p; p&a[3]; fun1(p); print…

【C語言學習】本地變量

本地變量 1.函數每次運行&#xff0c;就會產生一個獨立的變量空間&#xff0c;在這個空間中的變量&#xff0c;是函數的這次運行所獨有的&#xff0c;稱之為本地變量。 2.定義在函數內部的變量就是本地變量。 3.參數也是本地變量 變量的生存期和作用域 1.生存期&#xff1a;變量…

新能源電動車充電樁控制主板安全特點

新能源電動車充電樁控制主板安全特點 你是否曾經擔心過充電樁的安全問題?充電樁主板又是什么樣的呢?今天我們就來聊聊這個話題。 充電樁主板采用雙重安全防護系統&#xff0c;包括防水、防護、防塵等&#xff0c;確保充電樁安全、可靠。不僅如此&#xff0c;充電樁主板采用先…

簡單的洗牌算法

目錄 前言 問題 代碼展現及分析 poker類 game類 Text類 前言 洗牌算法為ArrayList具體使用的典例&#xff0c;可以很好的讓我們快速熟系ArrayList的用法。如果你對ArrayList還不太了解除&#xff0c;推薦先看本博主的ArrayList的詳解。 ArrayList的詳解_WHabcwu的博客-CSD…

mysql mysql 容器 忽略大小寫配置

首先能夠連接上mysql&#xff0c;然后輸入下面這個命令查看mysql是否忽略大小寫 show global variables like %lower_case%; lower_case_table_names 0&#xff1a;不忽略大小寫 lower_case_table_names 1&#xff1a;忽略大小寫 mysql安裝分為兩種&#xff08;根據自己的my…

sql server Varchar轉換為Datetime

將Varchar轉換為Datetime是一個常見的需求&#xff0c;在處理日期和時間數據時特別有用。在SQL Server中&#xff0c;可以使用CONVERT函數或CAST函數將Varchar轉換為Datetime。 使用CONVERT函數 CONVERT函數可以將一個值從一個類型轉換為另一個類型。以下是使用CONVERT函數將…

FPGA芯片IO口上下拉電阻的使用

FPGA芯片IO口上下拉電阻的使用 為什么要設置上下拉電阻一、如何設置下拉電阻二、如何設置上拉電阻為什么要設置上下拉電阻 這里以高云FPGA的GW1N-UV2QN48C6/I5來舉例,這個芯片的上電默認初始化階段,引腳是弱上來模式,且模式固定不能通過軟件的配置來改變。如下圖所示: 上…

centos 7.x 單用戶模式

最近碰到 centos 7.9 一些參數設置錯誤無法啟動系統的情況&#xff0c;研究后可以使用單用戶模式進入系統進行恢復操作。 進入啟動界面&#xff0c;按 e ro 替換為 rw init/sysroot/bin/sh 替換前 替換后 Ctrl-x 進行重啟進入單用戶模式 執行 chroot /sysroot 可以查看日…

【ARM64 常見匯編指令學習 19 -- ARM64 BEQ與B.EQ的區別】

文章目錄 ARM BEQ和B.EQ 上篇文章&#xff1a;ARM64 常見匯編指令學習 18 – ARM64 TST 指令與 條件標志位 Z ARM BEQ和B.EQ 在ARMv8匯編中&#xff0c;BEQ和B.EQ實際上是同一條指令的兩種不同表示方式&#xff0c;它們都表示條件分支指令&#xff0c;當某個條件滿足時&#x…

java練習4.快速查找

題目: 數組 arr[6,1,3,7,9,8,5,4,2],用快速排序進行升序排序. import java.util.Random;public class recursionDemo {public static void main(String[] args) {/*快速排序:* 第一輪:以0索引為基準數,確定基準數在數組正確的位置,* 比基準數小的放到左邊,比基準數大的放在右邊…

Scada和lloT有什么區別?

人們經常混淆SCADA&#xff08;監督控制和數據采集&#xff09;和IIoT&#xff08;工業物聯網&#xff09;。雖然SCADA系統已經存在多年&#xff0c;但IIoT是一種相對較新的技術&#xff0c;由于其能夠收集和分析來自各種設備的大量數據而越來越受歡迎。SCADA和IIoT都用于提高工…

leetcode原題:檢查子樹

題目&#xff1a; 檢查子樹。你有兩棵非常大的二叉樹&#xff1a;T1&#xff0c;有幾萬個節點&#xff1b;T2&#xff0c;有幾萬個節點。設計一個算法&#xff0c;判斷 T2 是否為 T1 的子樹。 如果 T1 有這么一個節點 n&#xff0c;其子樹與 T2 一模一樣&#xff0c;則 T2 為…

【學習筆記之vue】These dependencies were not found:

These dependencies were not found:方案一 全部安裝一遍 我們先淺試一個axios >> npm install axios 安裝完報錯就沒有axios了&#xff0c;驗證咱們的想法沒有問題&#xff0c;實行&#xff01; ok

Redis可以用作消息隊列嗎?如何實現簡單的消息隊列功能?

是的&#xff0c;Redis可以被用作簡單的消息隊列。下面是一種實現簡單消息隊列功能的方式&#xff1a; 生產者&#xff08;Producer&#xff09;端&#xff1a; 使用LPUSH命令將消息推送到一個列表中&#xff0c;作為消息隊列的實現。例如&#xff0c;使用LPUSH命令將消息推送到…

算法練習Day50|● 123.買賣股票的最佳時機III ● 188.買賣股票的最佳時機IV

LeetCode:123.買賣股票的最佳時機III 123. 買賣股票的最佳時機 III - 力扣&#xff08;LeetCode&#xff09; 1.思路 將兩次買入賣出轉化為是否持有的狀態&#xff0c;當天可進行兩次買賣&#xff0c;故每天買賣有四種狀態&#xff0c;四種狀態包含了當天不買不賣的狀態。 …

性能分析之MySQL慢查詢日志分析(慢查詢日志)

一、背景 MySQL的慢查詢日志是MySQL提供的一種日志記錄,他用來記錄在MySQL中響應的時間超過閾值的語句,具體指運行時間超過long_query_time(默認是10秒)值的SQL,會被記錄到慢查詢日志中。 慢查詢日志一般用于性能分析時開啟,收集慢SQL然后通過explain進行全面分析,一…

使用PDF文件入侵任何操作系統

提示&#xff1a;我們8月28號開學,所以我得快點更新了&#xff0c;不能拖了&#x1f625; 文章目錄 前言一、打開終端總結 前言 PDF文件被廣泛應用于共享信息&#xff0c;電子郵件&#xff0c;網站或文檔或存儲系統的真實鏈接 它可以用于惡意軟件的載體。 不要問我什么意思&am…

在項目中如何解除idea和Git的綁定

在項目中如何解除idea和Git的綁定 1、點擊File--->Settings...(CtrlAltS)--->Version Control--->Directory Mappings--->點擊取消Git的注冊根路徑&#xff1a; 2、回到idea界面就沒有Git了&#xff1a; 3、給這個項目初始化 這樣就可以重新綁定遠程倉庫了&#x…

Mysql查詢

第三章&#xff1a;select 語句 SELECT employees.employee_id,employees.department_id FROM employees WHERE employees.employee_id176; DESC departments;SELECT * FROM departments;第四章&#xff1a;運算符使用 SELECT employees.last_name,employees.salary FROM em…