国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

經(jīng)典目標(biāo)檢測YOLO系列(二)YOLOV2的復(fù)現(xiàn)(2)正樣本的匹配、損失函數(shù)的實(shí)現(xiàn)及模型訓(xùn)練

這篇具有很好參考價值的文章主要介紹了經(jīng)典目標(biāo)檢測YOLO系列(二)YOLOV2的復(fù)現(xiàn)(2)正樣本的匹配、損失函數(shù)的實(shí)現(xiàn)及模型訓(xùn)練。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

經(jīng)典目標(biāo)檢測YOLO系列(二)YOLOV2的復(fù)現(xiàn)(2)正樣本的匹配、損失函數(shù)的實(shí)現(xiàn)及模型訓(xùn)練

我們在之前實(shí)現(xiàn)YOLOv1的基礎(chǔ)上,加入了先驗(yàn)框機(jī)制,快速的實(shí)現(xiàn)了YOLOv2的網(wǎng)絡(luò)架構(gòu),并且實(shí)現(xiàn)了前向推理過程。

經(jīng)典目標(biāo)檢測YOLO系列(二)YOLOV2的復(fù)現(xiàn)(1)總體網(wǎng)絡(luò)架構(gòu)及前向推理過程

如前所述,我們使用基于先驗(yàn)框的正樣本匹配策略。

1 正樣本匹配策略

1.1 基于先驗(yàn)框的正樣本匹配策略

  • 由于每個網(wǎng)格只輸出一個邊界框,因此在YOLOv1中的正樣本匹配策略很簡單,目標(biāo)框的中心點(diǎn)落在哪個網(wǎng)格,這個網(wǎng)格(左上角點(diǎn))就是正樣本。
  • 但是,我們現(xiàn)在引入了先驗(yàn)框機(jī)制,每個網(wǎng)格會輸出5個預(yù)測框。那么目標(biāo)框的中心點(diǎn)所在的每一個網(wǎng)格,我們都需要確定這5個預(yù)測框中,哪些是正樣本,哪些是負(fù)樣本。
  • 既然我們已經(jīng)有了具有邊界框尺寸信息的先驗(yàn)框,那么我們可以基于先驗(yàn)框來篩選正樣本。

假設(shè)一個含有目標(biāo)框中心的網(wǎng)格上的5個先驗(yàn)框分別為A、B、C、D、E,那么需要計算這5個先驗(yàn)框與目標(biāo)框O的IoU值,分別為:IoU_A、IoU_B、IoU_C、IoU_D、IoU_E,然后設(shè)定一個閾值iou_thresh:

  • 第1種情況:如果IoU_A、IoU_B、IoU_C、IoU_D、IoU_E都小于iou_thresh,為了不丟失這個訓(xùn)練樣本,我們選擇選擇IoU值最大的先驗(yàn)框P_A。將P_A對應(yīng)的預(yù)測框B_A,標(biāo)記為正樣本,即先驗(yàn)框決定哪些預(yù)測框會參與到何種損失的計算中去。
  • 第2種情況:僅有一個IoU值大于iou_thresh,那么這個先驗(yàn)框所對應(yīng)的預(yù)測框會被標(biāo)記為正樣本,會參與到置信度、類別及位置損失的計算。
  • 第3種情況:有多個IoU值大于iou_thresh,那么這些先驗(yàn)框所對應(yīng)的預(yù)測框都會被標(biāo)記為正樣本,即一個目標(biāo)會被匹配上多個正樣本。

這種正樣本匹配策略,似乎保證了每個目標(biāo)都會至少匹配上一個正樣本,但其實(shí)存在漏洞。假如,有2個目標(biāo)的中心點(diǎn)都落到了同一個目標(biāo)框,可能會導(dǎo)致原本屬于目標(biāo)A的先驗(yàn)框后來又分配給目標(biāo)B。

  • 在YOLOv1中,2個目標(biāo)的中心點(diǎn)都落到了同一個目標(biāo)框,網(wǎng)絡(luò)就只能學(xué)習(xí)一個。
  • 在YOLOv2中,雖然每個網(wǎng)格會輸出多個預(yù)測框,但是在制作正樣本時候,也會存在剛才說的語義歧義現(xiàn)象,會使得某些目標(biāo)匹配不到正樣本,其信息也就不會被網(wǎng)絡(luò)學(xué)習(xí)到,不過我們現(xiàn)在不做處理。

經(jīng)典目標(biāo)檢測YOLO系列(二)YOLOV2的復(fù)現(xiàn)(2)正樣本的匹配、損失函數(shù)的實(shí)現(xiàn)及模型訓(xùn)練,# 深度學(xué)習(xí),目標(biāo)檢測,python,YOLO

1.2 代碼實(shí)現(xiàn)

1.2.1 正樣本匹配

pytorch讀取VOC數(shù)據(jù)集:

  • 一批圖像數(shù)據(jù)的維度是 [B, 3, H, W] ,分別是batch size,色彩通道數(shù),圖像的高和圖像的寬。

  • 標(biāo)簽數(shù)據(jù)是一個包含 B 個圖像的標(biāo)注數(shù)據(jù)的python的list變量(如下所示),其中,每個圖像的標(biāo)注數(shù)據(jù)的list變量又包含了 M 個目標(biāo)的信息(類別和邊界框)。

  • 獲得了這一批數(shù)據(jù)后,圖片是可以直接喂到網(wǎng)絡(luò)里去訓(xùn)練的,但是標(biāo)簽不可以,需要再進(jìn)行處理一下。

[
    {
        'boxes':     tensor([[ 29., 230., 148., 321.]]),  # bbox的坐標(biāo)(xmin, ymin, xmax, ymax)
        'labels':    tensor([18.]),                       # 標(biāo)簽
        'orig_size': [281, 500]                           # 圖片的原始大小
    }, 
    {
        'boxes':      tensor([[  0.,  79., 416., 362.]]), 
        'labels':     tensor([1.]),
        'orig_size': [375, 500]
    }
]

標(biāo)簽處理主要包括3個部分,

  • 一是將真實(shí)框中心所在網(wǎng)格對應(yīng)正樣本位置(anchor_idx)的置信度置為1,其他默認(rèn)為0
  • 二是將真實(shí)框中心所在網(wǎng)格對應(yīng)正樣本位置(anchor_idx)的標(biāo)簽類別為1(one-hot格式),其他類別設(shè)置為0
  • 三是將真實(shí)框中心所在網(wǎng)格對應(yīng)正樣本位置(anchor_idx)的bbox信息設(shè)置為真實(shí)框的bbox信息。
# 處理好的shape如下:
# gt_objectness  
torch.Size([2, 845, 1])  # 845=13×13×5
# gt_classes
torch.Size([2, 845, 20])
# gt_bboxes
torch.Size([2, 845, 4])

1.2.2 具體代碼實(shí)現(xiàn)

# RT-ODLab/models/detectors/yolov2/matcher.py

import torch
import numpy as np


class Yolov2Matcher(object):
    def __init__(self, iou_thresh, num_classes, anchor_size):
        self.num_classes = num_classes
        self.iou_thresh = iou_thresh
        # anchor box
        self.num_anchors = len(anchor_size)
        self.anchor_size = anchor_size
        self.anchor_boxes = np.array(
            [ [0., 0., anchor[0], anchor[1]] for anchor in anchor_size]
            )  # [KA, 4]


    def compute_iou(self, anchor_boxes, gt_box):
        """
            函數(shù)功能: 計算目標(biāo)框和5個先驗(yàn)框的IoU值
            anchor_boxes : ndarray -> [KA, 4] (cx, cy, bw, bh).
            gt_box : ndarray -> [1, 4] (cx, cy, bw, bh).

            返回值: iou變量,類型為ndarray類型,shape為[5,], iou[i]就表示該目標(biāo)框和第i個先驗(yàn)框的IoU值

        """
        # 1、計算5個anchor_box的面積
        # anchors: [KA, 4]
        anchors = np.zeros_like(anchor_boxes)
        anchors[..., :2] = anchor_boxes[..., :2] - anchor_boxes[..., 2:] * 0.5  # x1y1
        anchors[..., 2:] = anchor_boxes[..., :2] + anchor_boxes[..., 2:] * 0.5  # x2y2
        anchors_area = anchor_boxes[..., 2] * anchor_boxes[..., 3]
        # 2、gt_box復(fù)制5份,計算5個相同gt_box的面積
        # gt_box: [1, 4] -> [KA, 4]
        gt_box = np.array(gt_box).reshape(-1, 4)
        gt_box = np.repeat(gt_box, anchors.shape[0], axis=0)
        gt_box_ = np.zeros_like(gt_box)
        gt_box_[..., :2] = gt_box[..., :2] - gt_box[..., 2:] * 0.5  # x1y1
        gt_box_[..., 2:] = gt_box[..., :2] + gt_box[..., 2:] * 0.5  # x2y2
        gt_box_area = np.prod(gt_box[..., 2:] - gt_box[..., :2], axis=1)
        # 3、計算計算目標(biāo)框和5個先驗(yàn)框的IoU值
        # intersection  交集
        inter_w = np.minimum(anchors[:, 2], gt_box_[:, 2]) - \
                  np.maximum(anchors[:, 0], gt_box_[:, 0])
        inter_h = np.minimum(anchors[:, 3], gt_box_[:, 3]) - \
                  np.maximum(anchors[:, 1], gt_box_[:, 1])
        inter_area = inter_w * inter_h
        
        # union
        union_area = anchors_area + gt_box_area - inter_area

        # iou
        iou = inter_area / union_area
        iou = np.clip(iou, a_min=1e-10, a_max=1.0)
        
        return iou


    @torch.no_grad()
    def __call__(self, fmp_size, stride, targets):
        """
            img_size: (Int) input image size
            stride: (Int) -> stride of YOLOv1 output.
            targets: (Dict) dict{'boxes': [...], 
                                 'labels': [...], 
                                 'orig_size': ...}
        """
        # prepare
        bs = len(targets)
        fmp_h, fmp_w = fmp_size
        gt_objectness = np.zeros([bs, fmp_h, fmp_w, self.num_anchors, 1]) 
        gt_classes = np.zeros([bs, fmp_h, fmp_w, self.num_anchors, self.num_classes]) 
        gt_bboxes = np.zeros([bs, fmp_h, fmp_w, self.num_anchors, 4])

        # 第一層for循環(huán)遍歷每一張圖像的標(biāo)簽
        for batch_index in range(bs):
            # targets_per_image是python的Dict類型
            targets_per_image = targets[batch_index]
            # [N,] N表示一個圖像中有N個目標(biāo)對象
            tgt_cls = targets_per_image["labels"].numpy()
            # [N, 4]
            tgt_box = targets_per_image['boxes'].numpy()
            # 第二層for循環(huán)遍歷這張圖像標(biāo)簽的每一個目標(biāo)數(shù)據(jù)
            for gt_box, gt_label in zip(tgt_box, tgt_cls):
                x1, y1, x2, y2 = gt_box
                # xyxy -> cxcywh
                xc, yc = (x2 + x1) * 0.5, (y2 + y1) * 0.5
                bw, bh = x2 - x1, y2 - y1
                gt_box = [0, 0, bw, bh]

                # check
                if bw < 1. or bh < 1.:
                    continue    

                # 1、計算該目標(biāo)框和5個先驗(yàn)框的IoU值
                iou = self.compute_iou(self.anchor_boxes, gt_box)
                iou_mask = (iou > self.iou_thresh)

                # 2、基于先驗(yàn)框的標(biāo)簽分配策略
                label_assignment_results = []
                # 第一種情況:所有的IoU值均低于閾值,選擇IoU最大的先驗(yàn)框
                if iou_mask.sum() == 0:
                    # We assign the anchor box with highest IoU score.
                    iou_ind = np.argmax(iou)
                    anchor_idx = iou_ind
                    # compute the grid cell
                    xc_s = xc / stride
                    yc_s = yc / stride
                    grid_x = int(xc_s)
                    grid_y = int(yc_s)

                    label_assignment_results.append([grid_x, grid_y, anchor_idx])
                else:
                    # 第二種和第三種情況:至少有一個IoU值大于閾值
                    for iou_ind, iou_m in enumerate(iou_mask):
                        if iou_m:
                            anchor_idx = iou_ind
                            # compute the gride cell
                            xc_s = xc / stride
                            yc_s = yc / stride
                            grid_x = int(xc_s)
                            grid_y = int(yc_s)

                            label_assignment_results.append([grid_x, grid_y, anchor_idx])

                # label assignment
                # 獲取到被標(biāo)記為正樣本的先驗(yàn)框,我們就可以為這次先驗(yàn)框?qū)?yīng)的預(yù)測框制作學(xué)習(xí)標(biāo)簽
                for result in label_assignment_results:
                    grid_x, grid_y, anchor_idx = result
                    if grid_x < fmp_w and grid_y < fmp_h:
                        # objectness標(biāo)簽,采用0,1離散值
                        gt_objectness[batch_index, grid_y, grid_x, anchor_idx] = 1.0
                        # classification標(biāo)簽,采用one-hot格式
                        cls_ont_hot = np.zeros(self.num_classes)
                        cls_ont_hot[int(gt_label)] = 1.0
                        gt_classes[batch_index, grid_y, grid_x, anchor_idx] = cls_ont_hot
                        # box標(biāo)簽,采用目標(biāo)框的坐標(biāo)值
                        gt_bboxes[batch_index, grid_y, grid_x, anchor_idx] = np.array([x1, y1, x2, y2])

        # [B, H, W, A, C] -> [B, HWA, C]
        gt_objectness = gt_objectness.reshape(bs, -1, 1)
        gt_classes = gt_classes.reshape(bs, -1, self.num_classes)
        gt_bboxes = gt_bboxes.reshape(bs, -1, 4)

        # to tensor
        gt_objectness = torch.from_numpy(gt_objectness).float()
        gt_classes = torch.from_numpy(gt_classes).float()
        gt_bboxes = torch.from_numpy(gt_bboxes).float()

        return gt_objectness, gt_classes, gt_bboxes



if __name__ == '__main__':
    anchor_size  = [[17, 25], [55, 75], [92, 206], [202, 21], [289, 311]]
    matcher = Yolov2Matcher(iou_thresh=0.5, num_classes=20, anchor_size=anchor_size)
    targets = [
    {
        'boxes':     torch.tensor([[ 29., 230., 148., 321.]]),  # bbox的坐標(biāo)(xmin, ymin, xmax, ymax)
        'labels':    torch.tensor([18.]),                       # 標(biāo)簽
        'orig_size': [281, 500]                                 # 圖片的原始大小
    },
    {
        'boxes':      torch.tensor([[  0.,  79., 416., 362.]]),
        'labels':     torch.tensor([1.]),
        'orig_size': [375, 500]
    }
]
    gt_objectness, gt_classes, gt_bboxes = matcher(fmp_size=(13, 13),stride=32, targets=targets )
    print(gt_objectness.shape)
    print(gt_classes.shape)
    print(gt_bboxes.shape)
  • 最終這段代碼返回了gt_objectness, gt_classes, gt_bboxes三個Tensor類型的變量:
    • gt_objectness包含一系列的0和1,標(biāo)記了哪些預(yù)測框是正樣本,哪些預(yù)測框是負(fù)樣本
    • gt_classes包含一系列的one-hot格式的類別標(biāo)簽
    • gt_bboxes包含的是正樣本要學(xué)習(xí)的邊界框的位置參數(shù)
  • 在上述代碼實(shí)現(xiàn)中,在計算IoU時候,我們將目標(biāo)框的中心點(diǎn)坐標(biāo)和先驗(yàn)框的中心點(diǎn)坐標(biāo)都設(shè)置為0,這是因?yàn)?code>一個目標(biāo)框在做匹配時候,僅僅考慮到目標(biāo)框中心點(diǎn)所在的網(wǎng)格中的5個先驗(yàn)框,周圍的網(wǎng)格都不進(jìn)行考慮。
  • 在SSD以及Faster R-CNN中,每一個目標(biāo)框都是和全局的先驗(yàn)框去計算IoU,這些算法都會考慮目標(biāo)框的中心點(diǎn)坐標(biāo)和先驗(yàn)框的中心點(diǎn)坐標(biāo)。因此,其每一個目標(biāo)框匹配上的先驗(yàn)框不僅來自中心點(diǎn)所在的網(wǎng)格,也會來自周圍的網(wǎng)格。這是YOLO和其他工作一個重要差別所在,YOLO這種只考慮中心點(diǎn)的做法,處理起來更加簡便、更易學(xué)習(xí)。

2 損失函數(shù)的計算、YOLOv2的訓(xùn)練

2.1 損失函數(shù)的計算

  • YOLOv2損失函數(shù)計算(RT-ODLab/models/detectors/yolov2/loss.py)和之前實(shí)現(xiàn)的YOLOv1基本一致,不再贅述
  • 我們實(shí)現(xiàn)的YOLOv2和之前實(shí)現(xiàn)的YOLOv1相比,僅僅多了先驗(yàn)框以及由此帶來的正樣本匹配上的一些細(xì)節(jié)上的差別。

2.2 YOLOv2的訓(xùn)練

  • 完成了YOLOv2的網(wǎng)絡(luò)搭建,標(biāo)簽匹配以及損失函數(shù)的計算,就可以進(jìn)行訓(xùn)練了

  • 數(shù)據(jù)讀取、數(shù)據(jù)預(yù)處理及數(shù)據(jù)增強(qiáng)操作,和之前實(shí)現(xiàn)的YOLOv1一致,不再贅述

  • YOLOv1和YOLOv2都在同一個項(xiàng)目代碼中,數(shù)據(jù)代碼、訓(xùn)練代碼及測試代碼均一致,我們只需要修改訓(xùn)練腳本即可

    nohup python -u train.py --cuda \
             -d voc                 \
             -m yolov2              \
             -bs 16                 \
             -size 640              \
             --wp_epoch 3           \
             --max_epoch 150        \
             --eval_epoch 10        \
             --no_aug_epoch 10      \
             --ema                  \
             --fp16                 \
             --multi_scale          \
             --num_workers 8 1>./logs/yolo_v2_train_log.txt 2>./logs/yolo_v2_warning_log.txt &
    

相關(guān)參數(shù)講解可以參考YOLOv1:

經(jīng)典目標(biāo)檢測YOLO系列(一)復(fù)現(xiàn)YOLOV1(5)模型的訓(xùn)練及驗(yàn)證

2.3 可視化檢測結(jié)果、計算mAP指標(biāo)

  • 訓(xùn)練結(jié)束后,模型默認(rèn)保存在weights/voc/yolov2/文件夾下,名為yolov2_voc_best.pth,保存了訓(xùn)練階段在測試集上mAP指標(biāo)最高的模型。

  • 運(yùn)行項(xiàng)目中所提供的eval.py文件可以驗(yàn)證模型的性能,具體命令如下行所示

  • 可以給定不同的圖像尺寸來測試實(shí)現(xiàn)的YOLOv1在不同輸入尺寸下的性能

    python eval.py \
    --cuda -d voc \
    --root path/to/voc -m yolov2 \
    --weight path/to/yolov2_voc_best.pth \
    -size 416
    
  • 也可以可視化訓(xùn)練好的模型

    python test.py \
    --cuda -d voc \
    --root path/to/voc -m yolov2 
    --weight path/to/yolov2_voc_best.pth \
    -size 416 -vt 0.3 \
    --show
    
    # -size表示輸入圖像的最大邊尺寸
    # -vt是可視化的置信度閾值,只有高于此值的才會被可視化出來
    # --show表示展示檢測結(jié)果的可視化圖片
    

2.4 訓(xùn)練結(jié)果

《YOLO目標(biāo)檢測》作者訓(xùn)練好的模型,在VOC2007測試集測試指標(biāo)如下:

從表格中可以看到,實(shí)現(xiàn)的YOLOv2達(dá)到了官方Y(jié)OLOv2的性能。文章來源地址http://www.zghlxwxcb.cn/news/detail-804137.html

模型 輸入尺寸 mAP(%)
YOLOv2*(官方) 416 76.8
YOLOv2*(官方) 480 77.8
YOLOv2*(官方) 544 78.6
YOLOv2 416 76.8
YOLOv2 480 78.4
YOLOv2 544 79.6
YOLOv2 640 79.8

到了這里,關(guān)于經(jīng)典目標(biāo)檢測YOLO系列(二)YOLOV2的復(fù)現(xiàn)(2)正樣本的匹配、損失函數(shù)的實(shí)現(xiàn)及模型訓(xùn)練的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 目標(biāo)檢測算法(R-CNN,fast R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3,yoloV4,yoloV5,yoloV6,yoloV7)

    目標(biāo)檢測算法(R-CNN,fast R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3,yoloV4,yoloV5,yoloV6,yoloV7)

    深度學(xué)習(xí)目前已經(jīng)應(yīng)用到了各個領(lǐng)域,應(yīng)用場景大體分為三類:物體識別,目標(biāo)檢測,自然語言處理。 目標(biāo)檢測可以理解為是物體識別和物體定位的綜合 ,不僅僅要識別出物體屬于哪個分類,更重要的是得到物體在圖片中的具體位置。 為了完成這兩個任務(wù),目標(biāo)檢測模型分

    2024年02月02日
    瀏覽(27)
  • YOLO系列目標(biāo)檢測算法-YOLOv6

    YOLO系列目標(biāo)檢測算法-YOLOv6

    YOLO系列目標(biāo)檢測算法目錄 - 文章鏈接 YOLO系列目標(biāo)檢測算法總結(jié)對比- 文章鏈接 YOLOv1- 文章鏈接 YOLOv2- 文章鏈接 YOLOv3- 文章鏈接 YOLOv4- 文章鏈接 Scaled-YOLOv4- 文章鏈接 YOLOv5- 文章鏈接 YOLOv6 - 文章鏈接 YOLOv7- 文章鏈接 PP-YOLO- 文章鏈接 PP-YOLOv2- 文章鏈接 YOLOR- 文章鏈接 YOLOS- 文章鏈

    2023年04月08日
    瀏覽(45)
  • 【目標(biāo)檢測】YOLO系列——YOLOv1詳解

    【目標(biāo)檢測】YOLO系列——YOLOv1詳解

    本篇是關(guān)于目標(biāo)檢測算法YOLOv1的學(xué)習(xí)筆記。網(wǎng)上的博客大多是摘抄翻譯論文中的重點(diǎn)內(nèi)容加上自己的理解,或者是梳理論文的大致思路,在沒看過原文的情況下可能總會有些看不懂的地方。所以強(qiáng)烈建議博客搭配原文食用。 原文鏈接:You Only Look Once: Unified, Real-Time Object Dete

    2024年02月05日
    瀏覽(19)
  • 目標(biāo)檢測——YOLO系列學(xué)習(xí)(一)YOLOv1

    目標(biāo)檢測——YOLO系列學(xué)習(xí)(一)YOLOv1

    YOLO可以說是單階段的目標(biāo)檢測方法的集大成之作,必學(xué)的經(jīng)典論文,從準(zhǔn)備面試的角度來學(xué)習(xí)一下yolo系列。 RCNN系列,無論哪種算法,核心思路都是 Region Proposal(定位)+ classifier(修正定位+分類) 。所以也被稱為兩階段算法。但是難以達(dá)到實(shí)時檢測的效果,因此yolov1將其修

    2024年04月25日
    瀏覽(25)
  • YOLOv5目標(biāo)檢測學(xué)習(xí)(1):yolo系列算法的基礎(chǔ)概念

    YOLOv5目標(biāo)檢測學(xué)習(xí)(1):yolo系列算法的基礎(chǔ)概念

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 關(guān)于深度學(xué)習(xí)目標(biāo)檢測,有許多概念性的東西需要先了解一下。這里主要以基于深度學(xué)習(xí)的目標(biāo)檢測算法的部署實(shí)現(xiàn)來學(xué)習(xí)。 以yolov5為例: 使用YOLOv5進(jìn)行車輛和行人的目標(biāo)檢測通常涉及以下步驟: 數(shù)據(jù)

    2024年04月09日
    瀏覽(24)
  • 目標(biāo)檢測算法YOLOv2簡介

    目標(biāo)檢測算法YOLOv2簡介

    ? ? ? YOLOv2由Joseph Redmon等人于2016年提出,論文名為:《YOLO9000: Better, Faster, Stronger》,論文見:https://arxiv.org/pdf/1612.08242.pdf ,項(xiàng)目網(wǎng)頁:https://pjreddie.com/darknet/yolov2/ ,YOLO9000可以檢測9000個目標(biāo)類別。YOLOv2是對YOLOv1的改進(jìn)。 ? ? ? 以下內(nèi)容主要來自論文: ? ? ? 1. Better :YOL

    2024年04月27日
    瀏覽(20)
  • 【YOLO系列】YOLOv2論文超詳細(xì)解讀(翻譯 +學(xué)習(xí)筆記)

    【YOLO系列】YOLOv2論文超詳細(xì)解讀(翻譯 +學(xué)習(xí)筆記)

    時隔一年,YOLOv2隆重登場,新的YOLO版本論文叫《YOLO9000: Better, Faster, Stronger》,作者 Joseph Redmon 和 Ali Farhadi 在 YOLOv1 的基礎(chǔ)上,進(jìn)行了大量改進(jìn),提出了 YOLOv2 和 YOLO9000,重點(diǎn)解決YOLOv1召回率和定位精度方面的不足。 論文原文:[1612.08242] YOLO9000: Better, Faster, Stronger (arxiv.org) 項(xiàng)

    2023年04月08日
    瀏覽(32)
  • 目標(biāo)檢測——Yolo系列(YOLOv1/2/v3/4/5/x/6/7/8)

    目標(biāo)檢測——Yolo系列(YOLOv1/2/v3/4/5/x/6/7/8)

    什么是目標(biāo)檢測? 滑動窗口(Sliding Window) 滑動窗口的效率問題和改進(jìn) 滑動窗口的效率問題:計算成本很大 改進(jìn)思路 1:使用啟發(fā)式算法替換暴力遍歷 例如 R-CNN,F(xiàn)ast R-CNN 中使用 Selective Search 產(chǎn)生提議框 ( 區(qū)域提議 ) 依賴外部算法,系統(tǒng)實(shí)現(xiàn)復(fù)雜,難以聯(lián)合優(yōu)化性能 改進(jìn)

    2024年02月09日
    瀏覽(26)
  • 深度學(xué)習(xí)目標(biāo)檢測_YOLOV2超詳細(xì)解讀

    深度學(xué)習(xí)目標(biāo)檢測_YOLOV2超詳細(xì)解讀

    YOLO v1雖然檢測速度快,但在定位方面不夠準(zhǔn)確,并且召回率較低。為了提升定位準(zhǔn)確度,改善召回率,YOLO v2在YOLO v1的基礎(chǔ)上提出了幾種改進(jìn)策略,如下圖所示,一些改進(jìn)方法能有效提高模型的mAP。 這個圖片的第2行第1列是進(jìn)行改進(jìn)的點(diǎn),第2行第3列應(yīng)該看紅色數(shù)字標(biāo)注的列

    2024年02月08日
    瀏覽(52)
  • 人工智能學(xué)習(xí)07--pytorch21--目標(biāo)檢測:YOLO系列理論合集(YOLOv1~v3)

    人工智能學(xué)習(xí)07--pytorch21--目標(biāo)檢測:YOLO系列理論合集(YOLOv1~v3)

    如果直接看yolov3論文的話,會發(fā)現(xiàn)有好多知識點(diǎn)沒見過,所以跟著視頻從頭學(xué)一下。 學(xué)習(xí)up主霹靂吧啦Wz大佬的學(xué)習(xí)方法: 想學(xué)某個網(wǎng)絡(luò)的代碼時: 到網(wǎng)上搜這個網(wǎng)絡(luò)的講解 → 對這個網(wǎng)絡(luò)大概有了印象 → 讀論文原文 ( 很多細(xì)節(jié)都要依照原論文來實(shí)現(xiàn), 自己看原論文十分

    2024年02月10日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包