91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

YOLOv8中的損失函數(shù)解析

新機(jī)器視覺 ? 來源:小白玩轉(zhuǎn)python ? 2024-11-05 17:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

來源:小白玩轉(zhuǎn)python

介紹

YOLO長(zhǎng)期以來一直是目標(biāo)檢測(cè)任務(wù)的首選模型之一。它既快速又準(zhǔn)確。此外,其API簡(jiǎn)潔易用。運(yùn)行訓(xùn)練或推斷作業(yè)所需的代碼行數(shù)有限。在2023年下半年,YOLOv8在框架中引入了姿態(tài)估計(jì)后,該框架現(xiàn)在支持最多四個(gè)任務(wù),包括分類、目標(biāo)檢測(cè)、實(shí)例分割和姿態(tài)估計(jì)。

ec19b69a-90b3-11ef-a511-92fbcf53809c.png

在本文中,我們將詳細(xì)介紹YOLOv8中使用的五個(gè)損失函數(shù)。請(qǐng)注意,我們將僅討論YOLOv8倉庫中配置的默認(rèn)損失函數(shù)。此外,我們還將僅關(guān)注代表性參數(shù),跳過一些標(biāo)量和常數(shù)以進(jìn)行歸一化或縮放,以便更好地理解。YOLOv8中對(duì)應(yīng)的任務(wù)和損失函數(shù)可見于圖1。接下來我們將分別對(duì)每一個(gè)進(jìn)行討論。

IoU損失

ec490b52-90b3-11ef-a511-92fbcf53809c.png

cw = b1_x2.maximum(b2_x2) - b1_x1.minimum(b2_x1)  # convex (smallest enclosing box) width
ch = b1_y2.maximum(b2_y2) - b1_y1.minimum(b2_y1)  # convex height


if CIoU or DIoU:  # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1
  c2 = cw ** 2 + ch ** 2 + eps  # convex diagonal squared
  rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 + (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4  # center dist ** 2
  
  if CIoU:  # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47
     v = (4 / math.pi ** 2) * (torch.atan(w2 / h2) - torch.atan(w1 / h1)).pow(2)
     with torch.no_grad():
       alpha = v / (v - iou + (1 + eps))
     return iou - (rho2 / c2 + v * alpha)  # CIoU

當(dāng)考慮評(píng)估邊界框準(zhǔn)確度的方式時(shí),交并比(IoU)指標(biāo)可能是大多數(shù)人首先想到的一個(gè)指標(biāo)。IoU度量了預(yù)測(cè)的邊界框與實(shí)際邊界框之間的重疊程度。它也可以作為一個(gè)損失函數(shù),只需將IoU轉(zhuǎn)換為1-IoU。

在YOLOv8中,修訂后的版本,完全I(xiàn)oU(CIoU)1被應(yīng)用于衡量預(yù)測(cè)邊界框與實(shí)際邊界框之間的差異。CIoU是一個(gè)綜合性指標(biāo),它考慮了邊界框之間的三個(gè)屬性:

重疊比

中心點(diǎn)之間的距離

長(zhǎng)寬比

CIoU的方程可在圖2右側(cè)找到。重疊比、中心點(diǎn)距離和長(zhǎng)寬比這三個(gè)因素分別由方程中的各項(xiàng)表示。方程中涉及的關(guān)鍵參數(shù)在左側(cè)的圖中進(jìn)行了說明,其中p和g表示預(yù)測(cè)和實(shí)際情況,b、w和h分別是相應(yīng)邊界框的中心、寬度和高度。參數(shù)c是包圍邊界框的對(duì)角線(灰色虛線矩形)而ρ是歐氏距離。除了分類任務(wù)外,IoU損失在YOLOv8中的所有其他任務(wù)中都會(huì)應(yīng)用。

分布焦點(diǎn)損失(DFL)

def _df_loss(pred_dist, target):
    """Return sum of left and right DFL losses."""
    # Distribution Focal Loss (DFL) proposed in Generalized Focal Loss https://ieeexplore.ieee.org/document/9792391
    tl = target.long()  # target left
    tr = tl + 1  # target right
    wl = tr - target  # weight left
    wr = 1 - wl  # weight right
    return (F.cross_entropy(pred_dist, tl.view(-1), reduction='none').view(tl.shape) * wl +
            F.cross_entropy(pred_dist, tr.view(-1), reduction='none').view(tl.shape) * wr).mean(-1, keepdim=True)

另一個(gè)與邊界框相關(guān)的損失函數(shù)是分布焦點(diǎn)損失(DFL)2。DFL關(guān)注的是邊界框回歸的分布差異。YOLOv8中的網(wǎng)絡(luò)不是直接預(yù)測(cè)邊界框,而是預(yù)測(cè)邊界框的概率分布。它旨在解決邊界模糊或部分遮擋的挑戰(zhàn)性對(duì)象。

關(guān)鍵點(diǎn)損失

ec706378-90b3-11ef-a511-92fbcf53809c.png

loss[1] += self.keypoint_loss(pred_kpt, gt_kpt, kpt_mask, area)


area:bounding box area


class KeypointLoss(nn.Module):


  def forward(self, pred_kpts, gt_kpts, kpt_mask, area):
        """Calculates keypoint loss factor and Euclidean distance loss for predicted and actual keypoints."""
        d = (pred_kpts[..., 0] - gt_kpts[..., 0]) ** 2 + (pred_kpts[..., 1] - gt_kpts[..., 1]) ** 2
        kpt_loss_factor = (torch.sum(kpt_mask != 0) + torch.sum(kpt_mask == 0)) / (torch.sum(kpt_mask != 0) + 1e-9)
        # e = d / (2 * (area * self.sigmas) ** 2 + 1e-9)  # from formula
        e = d / (2 * self.sigmas) ** 2 / (area + 1e-9) / 2  # from cocoeval
        return kpt_loss_factor * ((1 - torch.exp(-e)) * kpt_mask).mean()

在YOLOv8中,首次將姿態(tài)估計(jì)任務(wù)納入到框架中。姿態(tài)由一組關(guān)鍵點(diǎn)的坐標(biāo)和順序定義。關(guān)鍵點(diǎn)損失監(jiān)控了預(yù)測(cè)和實(shí)際關(guān)鍵點(diǎn)之間的相似性。兩個(gè)對(duì)應(yīng)關(guān)鍵點(diǎn)之間的歐幾里得距離是關(guān)鍵點(diǎn)損失的主要組成部分。此外,每個(gè)關(guān)鍵點(diǎn)都帶有一個(gè)權(quán)重σ,定義了關(guān)鍵點(diǎn)的重要性,默認(rèn)值為1/關(guān)鍵點(diǎn)數(shù)。例如,如果姿態(tài)有四個(gè)關(guān)鍵點(diǎn),則所有關(guān)鍵點(diǎn)的權(quán)重為1/4 = 0.25。

關(guān)鍵點(diǎn)目標(biāo)損失

ec82b956-90b3-11ef-a511-92fbcf53809c.png

import torch.nn as nn
loss[2] = nn.BCEWithLogitsLoss(pred_kpt[..., 2], kpt_mask.float())

在大多數(shù)姿態(tài)估計(jì)訓(xùn)練中,我們可以定義每個(gè)關(guān)鍵點(diǎn)的可見性。Python腳本中的參數(shù)kpt_mask攜帶了我們?cè)?a target="_blank">標(biāo)簽中定義的可見性(1/0)。關(guān)鍵點(diǎn)目標(biāo)損失計(jì)算關(guān)鍵點(diǎn)存在的距離。在YOLOv8中,距離由預(yù)測(cè)值和實(shí)際值的二元交叉熵(BCE)測(cè)量。

分類損失和掩碼損失

eca756da-90b3-11ef-a511-92fbcf53809c.png

import torch.nn as nn


loss[3] = nn.BCEWithLogitLoss(pred_scores, target_scores.to(dtype)).sum() / target_scores_sum  # BCE

分類損失是涉及到所有任務(wù)的唯一損失函數(shù)。無論我們是在進(jìn)行分類、目標(biāo)檢測(cè)、分割還是姿態(tài)估計(jì),圖像或特定對(duì)象的類別(例如貓、狗、人等)的推斷結(jié)果之間的距離都是通過二元交叉熵(BCE)計(jì)算的。

它還適用于實(shí)例分割中的掩碼損失。掩碼損失將每個(gè)像素視為一個(gè)對(duì)象,并計(jì)算相關(guān)的BCE值。在圖5中計(jì)算了一個(gè)3x3的預(yù)測(cè)掩碼和相應(yīng)的掩碼損失。

總損失

# yolo/cfg/default.yaml
...
box: 7.5  # box loss gain
cls: 0.5  # cls loss gain (scale with pixels)
dfl: 1.5  # dfl loss gain
pose: 12.0  # pose loss gain
kobj: 1.0  # keypoint obj loss gain
...

好了,以上我們已經(jīng)介紹了所有六個(gè)損失。在網(wǎng)絡(luò)應(yīng)用反向傳播并更新其參數(shù)之前,將損失與相應(yīng)的權(quán)重相加。權(quán)重在配置文件default.yaml中定義,如上所示。如果您想在訓(xùn)練階段動(dòng)態(tài)調(diào)整權(quán)重,您可以考慮直接在存儲(chǔ)庫中使用下面提供的代碼片段。

loss[0] *= self.hyp.box  # box gain
loss[1] *= self.hyp.pose / batch_size  # pose gain
loss[2] *= self.hyp.kobj / batch_size  # kobj gain
loss[3] *= self.hyp.cls  # cls gain
loss[4] *= self.hyp.dfl  # dfl gain


return loss.sum() * batch_size, loss.detach()

總結(jié)

YOLO是一個(gè)為目標(biāo)檢測(cè)任務(wù)而知名的框架。除了在效率和準(zhǔn)確性方面的表現(xiàn)之外,它還在不斷更新最新的研究成果。這是一個(gè)讓計(jì)算機(jī)視覺從業(yè)者跟蹤和學(xué)習(xí)入選技術(shù)的好框架。損失函數(shù)在模型訓(xùn)練中起著重要作用,并決定了最終的準(zhǔn)確性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4380

    瀏覽量

    64850
  • 目標(biāo)檢測(cè)
    +關(guān)注

    關(guān)注

    0

    文章

    225

    瀏覽量

    16014
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86710

原文標(biāo)題:YOLOv8中的損失函數(shù)解析

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用sophon-demo_v0.1.8_dbb4632_20231116下面的YOLOv8yolov8_bmcv歷程出現(xiàn)段錯(cuò)誤的原因?

    使用sophon-demo_v0.1.8_dbb4632_20231116下面的YOLOv8yolov8_bmcv歷程,出現(xiàn)段錯(cuò)誤: 定位到代碼中出錯(cuò)的函數(shù)是 picDec(h,
    發(fā)表于 05-30 07:37

    yolov8怎么在wsl搭建呢?

    純小白,yolov8怎么在wsl搭建呢?一直報(bào)錯(cuò)且無法安裝pip包
    發(fā)表于 07-11 07:37

    使用YOLOv8做目標(biāo)檢測(cè)和實(shí)例分割的演示

    YOLOv8是來自Ultralytics的最新的基于YOLO的對(duì)象檢測(cè)模型系列,提供最先進(jìn)的性能。
    的頭像 發(fā)表于 02-06 10:11 ?8419次閱讀

    YOLOv8自定義數(shù)據(jù)集訓(xùn)練到模型部署推理簡(jiǎn)析

    如果你只是想使用而不是開發(fā),強(qiáng)烈推薦通過pip安裝方式獲取YOLOv8包!YOLOv8安裝命令行
    的頭像 發(fā)表于 03-24 09:27 ?5137次閱讀

    在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測(cè)模型

    《在 AI 愛克斯開發(fā)板上用 OpenVINO 加速 YOLOv8 分類模型》介紹了在 AI 愛克斯開發(fā)板上使用 OpenVINO 開發(fā)套件部署并測(cè)評(píng) YOLOv8 的分類模型,本文將介紹在 AI 愛克斯開發(fā)板上使用 OpenVINO 加速
    的頭像 發(fā)表于 05-12 09:08 ?1798次閱讀
    在AI愛克斯開發(fā)板上用OpenVINO?加速<b class='flag-5'>YOLOv8</b>目標(biāo)檢測(cè)模型

    YOLOv8版本升級(jí)支持小目標(biāo)檢測(cè)與高分辨率圖像輸入

    YOLOv8版本最近版本又更新了,除了支持姿態(tài)評(píng)估以外,通過模型結(jié)構(gòu)的修改還支持了小目標(biāo)檢測(cè)與高分辨率圖像檢測(cè)。原始的YOLOv8模型結(jié)構(gòu)如下。
    的頭像 發(fā)表于 05-16 11:14 ?1.4w次閱讀
    <b class='flag-5'>YOLOv8</b>版本升級(jí)支持小目標(biāo)檢測(cè)與高分辨率圖像輸入

    AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測(cè)模型

    《在AI愛克斯開發(fā)板上用OpenVINO加速YOLOv8分類模型》介紹了在AI愛克斯開發(fā)板上使用OpenVINO 開發(fā)套件部署并測(cè)評(píng)YOLOv8的分類模型,本文將介紹在AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢
    的頭像 發(fā)表于 05-26 11:03 ?1838次閱讀
    AI愛克斯開發(fā)板上使用OpenVINO加速<b class='flag-5'>YOLOv8</b>目標(biāo)檢測(cè)模型

    教你如何用兩行代碼搞定YOLOv8各種模型推理

    大家好,YOLOv8 框架本身提供的API函數(shù)是可以兩行代碼實(shí)現(xiàn) YOLOv8 模型推理,這次我把這段代碼封裝成了一個(gè)類,只有40行代碼左右,可以同時(shí)支持YOLOv8對(duì)象檢測(cè)、實(shí)例分割
    的頭像 發(fā)表于 06-18 11:50 ?3746次閱讀
    教你如何用兩行代碼搞定<b class='flag-5'>YOLOv8</b>各種模型推理

    三種主流模型部署框架YOLOv8推理演示

    深度學(xué)習(xí)模型部署有OpenVINO、ONNXRUNTIME、TensorRT三個(gè)主流框架,均支持Python與C++的SDK使用。對(duì)YOLOv5~YOLOv8的系列模型,均可以通過C++推理實(shí)現(xiàn)模型
    的頭像 發(fā)表于 08-06 11:39 ?3269次閱讀

    解鎖YOLOv8修改+注意力模塊訓(xùn)練與部署流程

    很多人也想跟修改YOLOv5源碼一樣的方式去修改YOLOv8的源碼,但是在github上面卻發(fā)現(xiàn)找到的YOLOv8項(xiàng)目下面TAG分支是空的
    的頭像 發(fā)表于 08-11 14:14 ?5380次閱讀
    解鎖<b class='flag-5'>YOLOv8</b>修改+注意力模塊訓(xùn)練與部署流程

    如何修改YOLOv8的源碼

    很多人也想跟修改YOLOv5源碼一樣的方式去修改YOLOv8的源碼,但是在github上面卻發(fā)現(xiàn)找到的YOLOv8項(xiàng)目下面TAG分支是空的,然后就直接從master/main下面把源碼克隆出來一通
    的頭像 發(fā)表于 09-04 10:02 ?2614次閱讀
    如何修改<b class='flag-5'>YOLOv8</b>的源碼

    YOLOv8實(shí)現(xiàn)任意目錄下命令行訓(xùn)練

    當(dāng)你使用YOLOv8命令行訓(xùn)練模型的時(shí)候,如果當(dāng)前執(zhí)行的目錄下沒有相關(guān)的預(yù)訓(xùn)練模型文件,YOLOv8就會(huì)自動(dòng)下載模型權(quán)重文件。這個(gè)是一個(gè)正常操作,但是你還會(huì)發(fā)現(xiàn),當(dāng)你在參數(shù)model中指定已有
    的頭像 發(fā)表于 09-04 10:50 ?1474次閱讀
    <b class='flag-5'>YOLOv8</b>實(shí)現(xiàn)任意目錄下命令行訓(xùn)練

    基于YOLOv8的自定義醫(yī)學(xué)圖像分割

    YOLOv8是一種令人驚嘆的分割模型;它易于訓(xùn)練、測(cè)試和部署。在本教程,我們將學(xué)習(xí)如何在自定義數(shù)據(jù)集上使用YOLOv8。但在此之前,我想告訴你為什么在存在其他優(yōu)秀的分割模型時(shí)應(yīng)該使用YOLO
    的頭像 發(fā)表于 12-20 10:51 ?1279次閱讀
    基于<b class='flag-5'>YOLOv8</b>的自定義醫(yī)學(xué)圖像分割

    RK3576 yolov8訓(xùn)練部署教程

    本章展示yolov8模型的在EASY EAI Orin nano的部署過程。
    的頭像 發(fā)表于 04-02 16:04 ?457次閱讀
    RK3576 <b class='flag-5'>yolov8</b>訓(xùn)練部署教程

    RV1126 yolov8訓(xùn)練部署教程

    YOLOv8 是 ultralytics 公司在 2023 年 1月 10 號(hào)開源的基于YOLOV5進(jìn)行更新的 下一個(gè)重大更新版本,目前支持圖像分類、物體檢測(cè)和實(shí)例分割任務(wù),鑒于Yolov5的良好表現(xiàn),
    的頭像 發(fā)表于 04-16 14:53 ?474次閱讀
    RV1126 <b class='flag-5'>yolov8</b>訓(xùn)練部署教程
    主站蜘蛛池模板: 五月婷婷六月丁香综合 | 国产做爰一区二区 | 亚洲综合色丁香婷婷六月图片 | 天天在线精品视频在线观看 | 日本久操 | 失禁h啪肉尿出来高h健身房 | 欧美色图888 | 成 人 在 线 免费 8888 www | 国产精品久久久久久福利 | 久久久久久久久久免观看 | 天堂成人| 亚洲成年网 | 特级aaaaaaaaa毛片免费视频 | ts人妖系列在线专区 | 全日本爽视频在线 | 国产1区二区 | 特级全黄一级毛片免费 | 来啊mm影院亚洲mm影院 | av72成人| 九月婷婷综合婷婷 | 欧美一区二区视频在线观看 | 91国内在线国内在线播放 | 夜夜爽天天狠狠九月婷婷 | 久久综合久久久久 | 日本69sex护士xxx | 免费三级黄色 | 亚洲视频精品 | 黄色成人在线网站 | 最近最新视频中文字幕4 | 欧美xxx另类 | 中国一级做a爰片久久毛片 中韩日欧美电影免费看 | 68日本xxxxxxxxx xx | 4455亚洲| 在线成人亚洲 | 色妹子在线 | 欧美日韩在线成人看片a | 亚洲精品456 | 一区二区三区精品国产欧美 | 日韩黄页| 2021久久天天躁狠狠躁夜夜 | 一区二区三区精品国产欧美 |