─░├žeri─če ge├ž

Ultralytics YOLOv5 Mimarl─▒k

YOLOv5 (v6.0/6.1) Ultralytics taraf─▒ndan geli┼čtirilen g├╝├žl├╝ bir nesne alg─▒lama algoritmas─▒d─▒r. Bu makale YOLOv5 mimarisini, veri art─▒rma stratejilerini, e─čitim metodolojilerini ve kay─▒p hesaplama tekniklerini derinlemesine incelemektedir. Bu kapsaml─▒ anlay─▒┼č, g├Âzetim, otonom ara├žlar ve g├Âr├╝nt├╝ tan─▒ma dahil olmak ├╝zere ├že┼čitli alanlarda nesne alg─▒lama pratik uygulamalar─▒n─▒z─▒ geli┼čtirmenize yard─▒mc─▒ olacakt─▒r.

1. Model Yap─▒s─▒

YOLOv5'in mimarisi ├╝├ž ana b├Âl├╝mden olu┼čmaktad─▒r:

  • Omurga: Bu, a─č─▒n ana g├Âvdesidir. YOLOv5 i├žin omurga ┼ču ┼čekilde tasarlanm─▒┼čt─▒r New CSP-Darknet53 yap─▒s─▒, ├Ânceki s├╝r├╝mlerde kullan─▒lan Darknet mimarisinin bir modifikasyonu.
  • Boyun: Bu k─▒s─▒m omurga ile ba┼č─▒ birbirine ba─člar. ─░├žinde YOLOv5, SPPF ve New CSP-PAN yap─▒lar kullan─▒lmaktad─▒r.
  • Kafa: Bu b├Âl├╝m nihai ├ž─▒kt─▒n─▒n ├╝retilmesinden sorumludur. YOLOv5 YOLOv3 Head bu ama├ž i├žin.

Modelin yap─▒s─▒ a┼ča─č─▒daki resimde g├Âsterilmektedir. Model yap─▒s─▒n─▒n detaylar─▒n─▒ ┼čurada bulabilirsiniz yolov5l.yaml.

yolov5

YOLOv5 ├Âncekilere k─▒yasla baz─▒ k├╝├ž├╝k de─či┼čiklikler getiriyor:

  1. Bu Focus yap─▒s─▒, ├Ânceki s├╝r├╝mlerde bulunan bir 6x6 Conv2d yap─▒. Bu de─či┼čiklik verimlili─či art─▒r─▒r #4825.
  2. Bu SPP yap─▒s─▒ ile de─či┼čtirilir SPPF. Bu de─či┼čiklik i┼člem h─▒z─▒n─▒ iki kattan fazla art─▒r─▒r.

H─▒z─▒n─▒ test etmek i├žin SPP ve SPPFa┼ča─č─▒daki kod kullan─▒labilir:

SPP vs SPPF h─▒z profili olu┼čturma ├Ârne─či (a├žmak i├žin t─▒klay─▒n)
import time

import torch
import torch.nn as nn


class SPP(nn.Module):
    def __init__(self):
        """Initializes an SPP module with three different sizes of max pooling layers."""
        super().__init__()
        self.maxpool1 = nn.MaxPool2d(5, 1, padding=2)
        self.maxpool2 = nn.MaxPool2d(9, 1, padding=4)
        self.maxpool3 = nn.MaxPool2d(13, 1, padding=6)

    def forward(self, x):
        """Applies three max pooling layers on input `x` and concatenates results along channel dimension."""
        o1 = self.maxpool1(x)
        o2 = self.maxpool2(x)
        o3 = self.maxpool3(x)
        return torch.cat([x, o1, o2, o3], dim=1)


class SPPF(nn.Module):
    def __init__(self):
        """Initializes an SPPF module with a specific configuration of MaxPool2d layer."""
        super().__init__()
        self.maxpool = nn.MaxPool2d(5, 1, padding=2)

    def forward(self, x):
        """Applies sequential max pooling and concatenates results with input tensor; expects input tensor x of any shape."""
        o1 = self.maxpool(x)
        o2 = self.maxpool(o1)
        o3 = self.maxpool(o2)
        return torch.cat([x, o1, o2, o3], dim=1)


def main():
    """Compares outputs and performance of SPP and SPPF on a random tensor (8, 32, 16, 16)."""
    input_tensor = torch.rand(8, 32, 16, 16)
    spp = SPP()
    sppf = SPPF()
    output1 = spp(input_tensor)
    output2 = sppf(input_tensor)

    print(torch.equal(output1, output2))

    t_start = time.time()
    for _ in range(100):
        spp(input_tensor)
    print(f"SPP time: {time.time() - t_start}")

    t_start = time.time()
    for _ in range(100):
        sppf(input_tensor)
    print(f"SPPF time: {time.time() - t_start}")


if __name__ == "__main__":
    main()
Sonu├ž:
True
SPP time: 0.5373051166534424
SPPF time: 0.20780706405639648

2. Veri Art─▒rma Teknikleri

YOLOv5 modelin genelleme yetene─čini geli┼čtirmek ve a┼č─▒r─▒ uyumu azaltmak i├žin ├že┼čitli veri art─▒rma teknikleri kullan─▒r. Bu teknikler ┼čunlar─▒ i├žerir:

  • Mozaik B├╝y├╝tme: Nesne alg─▒lama modellerini ├že┼čitli nesne ├Âl├žeklerini ve ├Âtelemelerini daha iyi ele almaya te┼čvik edecek ┼čekilde d├Ârt e─čitim g├Âr├╝nt├╝s├╝n├╝ tek bir g├Âr├╝nt├╝de birle┼čtiren bir g├Âr├╝nt├╝ i┼čleme tekni─či.

    Mozaik

  • Kopyala-Yap─▒┼čt─▒r Art─▒rma: Bir g├Âr├╝nt├╝den rastgele yamalar─▒ kopyalayan ve bunlar─▒ rastgele se├žilen ba┼čka bir g├Âr├╝nt├╝ye yap─▒┼čt─▒rarak etkili bir ┼čekilde yeni bir e─čitim ├Ârne─či olu┼čturan yenilik├ži bir veri art─▒rma y├Ântemi.

    kopyala-yap─▒┼čt─▒r

  • Rastgele Afin D├Ân├╝┼č├╝mler: Bu, g├Âr├╝nt├╝lerin rastgele d├Ând├╝r├╝lmesini, ├Âl├žeklenmesini, ├Âtelenmesini ve kesilmesini i├žerir.

    random-affine

  • MixUp Augmentation: ─░ki g├Âr├╝nt├╝n├╝n ve ili┼čkili etiketlerinin do─črusal bir kombinasyonunu alarak bile┼čik g├Âr├╝nt├╝ler olu┼čturan bir y├Ântem.

    kar─▒┼č─▒kl─▒k

  • Albumentations: ├çok ├že┼čitli b├╝y├╝tme tekniklerini destekleyen g├Âr├╝nt├╝ b├╝y├╝tme i├žin g├╝├žl├╝ bir k├╝t├╝phane.

  • HSV B├╝y├╝tme: G├Âr├╝nt├╝lerin Ton, Doygunluk ve De─čerinde rastgele de─či┼čiklikler.

    hsv

  • Rastgele Yatay ├çevirme: G├Âr├╝nt├╝leri rastgele yatay olarak ├ževiren bir b├╝y├╝tme y├Ântemi.

    yatay ├ževirme

3. E─čitim Stratejileri

YOLOv5 modelin performans─▒n─▒ art─▒rmak i├žin ├že┼čitli sofistike e─čitim stratejileri uygular. Bunlar ┼čunlar─▒ i├žerir:

  • ├çok ├ľl├žekli E─čitim: Giri┼č g├Âr├╝nt├╝leri, e─čitim s├╝reci s─▒ras─▒nda orijinal boyutlar─▒n─▒n 0,5 ila 1,5 kat─▒ aral─▒─č─▒nda rastgele yeniden ├Âl├žeklendirilir.
  • Otomatik ├çapa: Bu strateji, ├Ânceki ├žapa kutular─▒n─▒ ├Âzel verilerinizdeki temel ger├žek kutular─▒n─▒n istatistiksel ├Âzellikleriyle e┼čle┼čecek ┼čekilde optimize eder.
  • Is─▒nma ve Kosin├╝s LR Zamanlay─▒c─▒s─▒: Model performans─▒n─▒ art─▒rmak i├žin ├Â─črenme oran─▒n─▒ ayarlamaya y├Ânelik bir y├Ântem.
  • ├ťstel Hareketli Ortalama (EMA): E─čitim s├╝recini stabilize etmek ve genelleme hatas─▒n─▒ azaltmak i├žin ge├žmi┼č ad─▒mlardaki parametrelerin ortalamas─▒n─▒ kullanan bir strateji.
  • Kar─▒┼č─▒k Hassasiyet E─čitimi: ─░┼člemleri yar─▒ hassas formatta ger├žekle┼čtirerek bellek kullan─▒m─▒n─▒ azaltan ve hesaplama h─▒z─▒n─▒ art─▒ran bir y├Ântem.
  • Hiperparametre Evrimi: Optimum performans elde etmek i├žin hiperparametreleri otomatik olarak ayarlamaya y├Ânelik bir strateji.

4. Ek ├ľzellikler

4.1 Kay─▒plar─▒ Hesaplay─▒n

YOLOv5 adresindeki kay─▒p, ├╝├ž ayr─▒ kay─▒p bile┼čeninin bir kombinasyonu olarak hesaplan─▒r:

  • S─▒n─▒flar Kayb─▒ (BCE Kayb─▒): ─░kili ├çapraz Entropi kayb─▒, s─▒n─▒fland─▒rma g├Ârevi i├žin hatay─▒ ├Âl├žer.
  • Nesnellik Kayb─▒ (BCE Kayb─▒): Ba┼čka bir ─░kili ├çapraz Entropi kayb─▒, belirli bir ─▒zgara h├╝cresinde bir nesnenin mevcut olup olmad─▒─č─▒n─▒ tespit etmedeki hatay─▒ hesaplar.
  • Konum Kayb─▒ (CIoU Kayb─▒): Tam IoU kayb─▒, ─▒zgara h├╝cresi i├žindeki nesnenin yerini belirlemedeki hatay─▒ ├Âl├žer.

Genel kay─▒p fonksiyonu ┼ču ┼čekilde g├Âsterilir:

kay─▒p

4.2 Denge Kay─▒plar─▒

├ť├ž tahmin katman─▒n─▒n nesnellik kay─▒plar─▒ (P3, P4, P5) farkl─▒ ┼čekilde a─č─▒rl─▒kland─▒r─▒l─▒r. Denge a─č─▒rl─▒klar─▒ ┼čunlard─▒r [4.0, 1.0, 0.4] s─▒ras─▒yla. Bu yakla┼č─▒m, farkl─▒ ├Âl├žeklerdeki tahminlerin toplam kayba uygun ┼čekilde katk─▒da bulunmas─▒n─▒ sa─člar.

obj_loss

4.3 ┼×ebeke Hassasiyetini Ortadan Kald─▒r─▒n

YOLOv5 mimarisi, YOLO'un ├Ânceki s├╝r├╝mlerine k─▒yasla kutu tahmin stratejisinde baz─▒ ├Ânemli de─či┼čiklikler yapmaktad─▒r. YOLOv2 ve YOLOv3'te kutu koordinatlar─▒ son katman─▒n aktivasyonu kullan─▒larak do─črudan tahmin edilmekteydi.

b_x b_y b_w b_h

YOLOv5 ─▒zgara hesaplama

Ancak, YOLOv5 adresinde kutu koordinatlar─▒n─▒ tahmin etme form├╝l├╝, ─▒zgara hassasiyetini azaltmak ve modelin s─▒n─▒rs─▒z kutu boyutlar─▒n─▒ tahmin etmesini ├Ânlemek i├žin g├╝ncellenmi┼čtir.

Tahmin edilen s─▒n─▒rlay─▒c─▒ kutunun hesaplanmas─▒ i├žin revize edilmi┼č form├╝ller a┼ča─č─▒daki gibidir:

bx taraf─▒ndan bw bh

├ľl├žeklemeden ├Ânce ve sonra merkez noktas─▒ ofsetini kar┼č─▒la┼čt─▒r─▒n. Merkez noktas─▒ ofset aral─▒─č─▒ (0, 1) ile (-0,5, 1,5) aras─▒nda ayarlan─▒r. Bu nedenle, ofset kolayca 0 veya 1 olabilir.

YOLOv5 ─▒zgara ├Âl├žeklendirme

Ayarlamadan ├Ânce ve sonra y├╝kseklik ve geni┼člik ├Âl├žekleme oran─▒n─▒ (├žapaya g├Âre) kar┼č─▒la┼čt─▒r─▒n. Orijinal yolo/darknet kutu denklemlerinin ciddi bir kusuru vard─▒r. Geni┼člik ve Y├╝kseklik basit├že out=exp(in) oldu─ču i├žin tamamen s─▒n─▒rs─▒zd─▒r, bu da ka├žak gradyanlara, karars─▒zl─▒klara, NaN kay─▒plar─▒na ve nihayetinde e─čitimin tamamen kaybedilmesine yol a├žabilece─činden tehlikelidir. bu konuya bak─▒n

YOLOv5 s─▒n─▒rs─▒z ├Âl├žeklendirme

4.4 Yap─▒ Hedefleri

YOLOv5 adresindeki hedef olu┼čturma s├╝reci, e─čitim verimlili─či ve model do─črulu─ču a├ž─▒s─▒ndan kritik ├Âneme sahiptir. Bu i┼člem, ├ž─▒kt─▒ haritas─▒ndaki uygun grid h├╝crelerine yer ger├že─či kutular─▒n─▒n atanmas─▒n─▒ ve bunlar─▒n uygun ├žapa kutular─▒yla e┼čle┼čtirilmesini i├žerir.

Bu s├╝re├ž ┼ču ad─▒mlar─▒ takip eder:

  • Temel ger├žek kutu boyutlar─▒n─▒n ve her bir ├žapa ┼čablonunun boyutlar─▒n─▒n oran─▒n─▒ hesaplay─▒n.

rw

rh

rwmax

rhmax

rmax

ma├ž

YOLOv5 IoU hesaplamas─▒

  • Hesaplanan oran e┼čik dahilindeyse, zemin ger├že─či kutusunu ilgili ├žapa ile e┼čle┼čtirin.

YOLOv5 ─▒zgara ├Ârt├╝┼čmesi

  • Revize edilen merkez noktas─▒ ofseti nedeniyle bir zemin do─čruluk kutusunun birden fazla ├žapaya atanabilece─čini g├Âz ├Ân├╝nde bulundurarak e┼čle┼čen ├žapay─▒ uygun h├╝crelere atay─▒n. ├ç├╝nk├╝ merkez noktas─▒ ofset aral─▒─č─▒ (0, 1)'den (-0,5, 1,5)'e ayarlanm─▒┼čt─▒r. GT Kutusu daha fazla ├žapaya atanabilir.

YOLOv5 ├žapa se├žimi

Bu ┼čekilde, hedef olu┼čturma s├╝reci, her bir temel ger├žek nesnesinin e─čitim s├╝recinde do─čru ┼čekilde atanmas─▒n─▒ ve e┼čle┼čtirilmesini sa─člayarak YOLOv5 'un nesne alg─▒lama g├Ârevini daha etkili bir ┼čekilde ├Â─črenmesine olanak tan─▒r.

Sonu├ž

Sonu├ž olarak, YOLOv5 ger├žek zamanl─▒ nesne alg─▒lama modellerinin geli┼čtirilmesinde ileriye do─čru at─▒lm─▒┼č ├Ânemli bir ad─▒m─▒ temsil etmektedir. ├çe┼čitli yeni ├Âzellikler, geli┼čtirmeler ve e─čitim stratejilerini bir araya getirerek, performans ve verimlilik a├ž─▒s─▒ndan YOLO ailesinin ├Ânceki s├╝r├╝mlerini geride b─▒rakmaktad─▒r.

YOLOv5 'daki ba┼čl─▒ca geli┼čtirmeler aras─▒nda dinamik bir mimarinin kullan─▒m─▒, ├žok ├že┼čitli veri art─▒rma teknikleri, yenilik├ži e─čitim stratejilerinin yan─▒ s─▒ra hesaplama kay─▒plar─▒ ve hedef olu┼čturma s├╝recindeki ├Ânemli ayarlamalar yer almaktad─▒r. T├╝m bu yenilikler, YOLO modellerinin alametifarikas─▒ olan y├╝ksek h─▒z─▒ korurken nesne tespitinin do─črulu─čunu ve verimlili─čini ├Ânemli ├Âl├ž├╝de art─▒rmaktad─▒r.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (9), sergiuwaxmann (1)

Yorumlar