<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      機器視覺 - YoloV8 的一些理解

      理解權重和偏置是什么

      • 全連接層: 輸出=f(輸入*權重+偏置), 權重是這個線性函數的一次性系數, 偏置是常數項.
      • 卷積層: 輸出=權重卷積核和輸入做卷積運算, 這里的權重是卷積核的各個元素, 卷積核也經常被叫做過濾器filter或kernel. 傳統的圖像處理, 圖像濾波器算子需要人工指定, 比如高斯濾波器, 在深度學習中, 卷積核是通過訓練學習求得的.
      • 權重和偏置的調整: 每個batch迭代完成后, 都會通過反向傳播來更新權重和偏置, 權重更新由輸入和梯度推導得到, 而偏置僅僅由梯度推導,不需要輸入項. 更新都是以最小化損失函數為目標的.

      理解batch

      • batch size: yolo 每次會從整個數據集中隨機選出一個batch的數據進行前向傳播訓練.
      • 計算此batch上所有樣本的損失函數值.
      • 通過損失對各層參數計梯度求導, 計算出權重參數新值
      • 將計算出的更新值應用到模型上, 完成參數的批量更新
      • 重復采樣下一個batch, 反復完成前向和后向傳播, 直至完成一個全量的epoch
      • 即yolov8采用的訓練策略是batch 更新方式.

      理解epoch

      • epoch 是訓練一個完整數據集的過程, 訓練一個epoch后, 會自動完成一次 val, 我們可以觀察收斂情況.

      特征圖數據的變化

      • 輸入圖像為 640×640×3, 3為RGB通道數.
      • 接著進入卷積層+池化處理.
      • [卷積層+池化]首先通過一個 3×3x3 的卷積核進行卷積操作, 卷積核的通道數也為 3 , 生成一個 640x640x3 的特征圖(feature map).
      • [卷積層+池化]然后通過非線性激活函數ReLU處理后, 是的特征圖的數值取值范圍為0到正無窮大.
      • [卷積層+池化]最后經過MaxPool操作, MaxPool操作相當于 2x2 濾波, 僅保留每個2x2區域中最大值, 特征圖尺寸將減半到 320x320.
      • 每次卷積層+池化處理, feature map的尺寸都會減半, 經過此次卷積層+池化處理, 就可以生成 80x80 這樣小尺寸的特征圖, 另外, yolov8還會生成 40x40 和 20x20 特征圖.
      • 最后將 80x80和 40x40 和 20x20 尺寸的特征圖輸入到head模塊預測, 最終輸出 26x26的識別矩陣.

      卷積核尺寸

      不同層通常使用的不同的尺寸的卷積核, 1x1 矩陣可以改變通道數.

      • 底層次卷積層通常使用較大的卷積核 3x3 或 5x5, 用于提取低級特征, 如邊緣和線條等.
      • 中層次卷積層通常使用 3x3 或 1x1 小核, 進一步提取中間級別特征
      • 高層次卷積層通常使用 1x1 小核, 用來改變通道數和融合特征.
      • 最大池化層使用固定的 2x2 卷積核, 實現下采樣.
      • 上采樣層通常使用固定的 2x2 卷積核, 實現上采樣.
      • 最后幾層通常使用 1x1 小核進行預測.

      識別結果矩陣的尺寸

      • 矩陣通常是26x26 或者 13x13
      • 通道數的公式為, 通道數 = cell目標個數x(類別數+1+4+2), 組成分別為:
        . cell目標個數: 是指每個cell最多能預測幾個目標, 通常是一個固定值, 比如5或其他.
        . 類別數: 一般設置80個Coco數據集類別
        . 每個目標準確度概率
        . 每個目標坐標預測值, 左上和右下坐標
        . 每個目標的寬高預測值
        . 舉例: 每個目標個數為5個, 通道數共計: 435=5x(80+1+4+2), 所以預測結果矩陣為 26x26x435

      網絡功能模塊

      • backbone 網絡部分: 負責對輸入圖像進行特征提取, 輸出底層和高層特征圖(feature map).
      • neck 網絡部分:是將backbone輸出的特征圖進行融合, 輸出集中的特征, 同時可以減少空間尺寸.
      • head 網絡: 基于neck輸出的特征, 進行最終的檢測任務, 通常包括兩個head:
        • 分類頭 classification head, 預測每個區域中的物體類別
        • 定位頭 regression head, 用來預測每個區域的物體坐標或掩碼

      訓練過程中如何進行val和如何結束訓練

      • YoloV8 在每個epoch完成后, 會使用val數據集進行驗證, 來計算loss和mAP等指標
      • 如果當前epoch的loss比之前最佳的loss還大, 就會增加一個early_stops計數, 如果比最佳loss小, 則early_stops清零. 如果early_stops計數大于閾值, 則進行早停(early_stopping)操作, 即整個訓練不需要一定要完整預設的epoch次數.
      • 早停機制是防止過擬合的重要手段.
      • 我們可以通過 yolov8 的 patience 設置early_stops閾值

      YoloV8的Fine-tuning和預訓練和from scratch訓練

      yolo命令行model的參數的說明既可以選擇 yolov8n.pt, 也可以選擇 yolov8n.yaml, 區別是:

      • model=yolov8n.pt, 即為Fine-tuning訓練, yolov8n.pt 模型文件已經包含了 yolo v8網絡結構、超參數、訓練參數、 權重參數信息, 它是官方的pre-trained 模型文件, 官方基于大規模數據集(coco 數據集)的80個類別訓練而成.
      • model=yolov8n.yaml pretrained=yolov8n.pt, 這是一個全新模型配置文件 + 預訓練模型文件的組合, 訓練過程將使用yaml模型配置文件, 包含模型的網絡結構, 超參數和訓練參數等信息, 但初始權重使用預訓練的yolov8n.pt, 這樣收斂速度較快, 訓練過程比完整的from scratch要會短一些.
      • model=yolov8n.yaml pretrained=False ,這是from scratch 訓練, yolov8n.yaml文件包含模型的網絡結構, 超參數和訓練參數等信息, 我們可以基于這樣的模型定義+自定義數據集訓練出自己的模型權重文件, 用于后續的預測. 訓練耗時最長. 從一個資料中看到, 每個object需要訓練2000次, yolov3 基于coco數據集共訓練了5萬多次, 由此可見from scratch的訓練量是非常大的.

      yolov8預訓練模型是基于coco和imagenet大型數據集做的訓練, 所以這樣的預訓練權重已經非常具備通用性了, 對于99%的情況都適用, 如果完成從0開始做預訓練,初始權重太過隨機,很難收斂,最終網路訓練結果也不會太好.

      如果我們修改了網絡, 預訓練權重基本上不能使用了, 需要從頭開始訓練網絡, 從頭訓練網絡需要有好的算力和大的數據集, 否則做不成.

      深度學習通過凍結部分參數提升效率效率

      • 深度學習模型通常包括通用特征提取(卷積+池化)和高層分類(卷積+池化)和結果輸出(全連接層)三個階段.
      • 特征提取是通用特征, 這部分參數通常無需調整
      • 所以, 可通過凍結特征提取參數來減少計算量, 提升fine-tuning的效率, 步驟一般為:
      • (1)先凍結前面幾層卷積和池化層, 僅僅更新后面負責高級特征處理的卷積和池化層(統稱為later classifier)
      • (2) 最后解凍全連接層, 完成分類任務的微調
      cd myEnv\Scripts
      
      # 基于預訓練 yolov8n.pt 進行自有數據的training, 換句話說, 是針對自有數據進行模型的 fine-tuning, 訓練耗時較短. 
      .\yolo task=detect mode=train data=coco8.yaml model=yolov8n.pt  
      
      # 使用 yolov8n.yaml 模型定義文件重新訓練, 并使用預訓練的 yolov8n.pt 作為初始權重值, 訓練耗時較長. 
      #   pretrained參數可以設置成bool值, 也可以設置為一個pt文件
      .\yolo task=detect mode=train data=coco8.yaml model=yolov8n.yaml pretrained=yolov8n.pt 
      
      # 使用 yolov8n.yaml 模型定義文件進行完全重新訓練, 訓練耗時最長. 
      .\yolo task=detect mode=train data=coco8.yaml model=yolov8n.yaml pretrained=False  
      
      

      Yolo頂層邏輯偽代碼結構

      下面是偽代碼, 僅用于理解yolo 訓練過程的頂層邏輯

      import torch
      from torch.utils.tensorboard import SummaryWriter
      from yolov8 import Darknet
      
      # 初始化模型、優化器等
      model = Darknet()
      optimizer = SGD(model.params) 
      
      writer = SummaryWriter('logs/yolov8')
      
      for epoch in range(epochs):
          
          ## 每個epoch 的 train 過程
          model.train() #模型切換到訓練狀態
          for batch_idx, (images, targets) in enumerate(train_loader):
          
             # 前向后向傳播
             pred = model(images)
             loss = calc_loss(pred, targets)
             
             optimizer.zero_grad()  
             loss.backward()
             optimizer.step()
             
             # 記錄指標
             writer.add_scalar('Loss/train', loss, global_step)
             global_step += 1
          
          
          ## 每個epoch 的 validate 
          model.eval()  #模型切換到val狀態
          val_loss = 0
          for images, targets in val_loader:
          
              pred = model(images)
              loss = calc_loss(pred, targets) 
              val_loss += loss
          
          val_loss /= len(val_loader)
          writer.add_scalar('Loss/val', val_loss, global_step)
          
          ## 保存最優模型
          if val_loss < best_loss:
              torch.save(model)
      
      writer.close()
      
      posted @ 2024-01-14 17:57  harrychinese  閱讀(2283)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久精品无码精品免费专区| 久久se精品一区二区三区| 国产精品国产片在线观看| 又爽又黄又无遮挡的激情视频| 内射极品少妇xxxxxhd| 国产精品久久人妻无码网站一区| 亚洲av永久无码精品天堂久久| 国产精品涩涩涩视频网站| 亚洲乱码日产精品一二三| 潼南县| 亚洲美免无码中文字幕在线 | 欧美成人免费一区二区三区视频 | 日韩狼人精品在线观看| 久久这里都是精品一区| 国产成人精品国内自产色| 国产精品久久久久不卡绿巨人 | 亚洲久久色成人一二三区| 灵璧县| 成人免费亚洲av在线| 大陆一级毛片免费播放| 97久久精品人人澡人人爽| 亚洲精品久久久蜜桃| 中文字幕无码av激情不卡| 色悠悠成人综合在线视频| 亚洲精品乱码久久久久久蜜桃| 国产精品美女黑丝流水| 人妻少妇偷人精品视频| 激情综合网激情综合网五月| 久久亚洲精品中文字幕波多野结衣| 亚洲中文字幕一区二区| 午夜精品一区二区三区成人| 99国产欧美另类久久久精品| 97久久久精品综合88久久| 国内精品免费久久久久电影院97| 麻豆av一区二区天美传媒| 国产极品尤物粉嫩在线观看| 亚洲欧美综合人成在线| 日韩精品亚洲专在线电影| 午夜成年男人免费网站| 无码激情亚洲一区| 武川县|