์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

Ultralytics YOLOv5 ์•„ํ‚คํ…์ฒ˜

YOLOv5 (v6.0/6.1)์€ Ultralytics ์—์„œ ๊ฐœ๋ฐœํ•œ ๊ฐ•๋ ฅํ•œ ๊ฐ์ฒด ๊ฐ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” YOLOv5 ์•„ํ‚คํ…์ฒ˜, ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ์ „๋žต, ํ•™์Šต ๋ฐฉ๋ฒ•๋ก , ์†์‹ค ๊ณ„์‚ฐ ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํฌ๊ด„์ ์ธ ์ดํ•ด๋Š” ๊ฐ์‹œ, ์ž์œจ ์ฃผํ–‰ ์ฐจ๋Ÿ‰, ์ด๋ฏธ์ง€ ์ธ์‹ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ๊ฐ์ฒด ๊ฐ์ง€์˜ ์‹ค์ œ ์ ์šฉ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

1. ๋ชจ๋ธ ๊ตฌ์กฐ

YOLOv5์˜ ์•„ํ‚คํ…์ฒ˜๋Š” ํฌ๊ฒŒ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

  • ๋ฐฑ๋ณธ: ๋„คํŠธ์›Œํฌ์˜ ๋ณธ์ฒด์ž…๋‹ˆ๋‹ค. YOLOv5 ์˜ ๊ฒฝ์šฐ ๋ฐฑ๋ณธ์€ New CSP-Darknet53 ๊ตฌ์กฐ๋Š” ์ด์ „ ๋ฒ„์ „์—์„œ ์‚ฌ์šฉ๋œ ๋‹คํฌ๋„ท ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ˆ˜์ •ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋ชฉ: ์ด ๋ถ€๋ถ„์€ ๋ฐฑ๋ณธ๊ณผ ํ—ค๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. YOLOv5 ์—์„œ , SPPF ๋ฐ New CSP-PAN ๊ตฌ์กฐ๊ฐ€ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • Head: ์ด ๋ถ€๋ถ„์€ ์ตœ์ข… ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. YOLOv5 ์—์„œ๋Š” YOLOv3 Head ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ชจ๋ธ์˜ ๊ตฌ์กฐ๋Š” ์•„๋ž˜ ์ด๋ฏธ์ง€์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. yolov5l.yaml.

yolov5

YOLOv5 ๋Š” ์ด์ „ ๋ฒ„์ „์— ๋น„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์†Œํ•œ ๋ณ€ํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

  1. The Focus ๊ตฌ์กฐ๊ฐ€ ์ด์ „ ๋ฒ„์ „์—์„œ ๋ฐœ๊ฒฌ๋˜์—ˆ๋˜ 6x6 Conv2d ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์œผ๋กœ ํšจ์œจ์„ฑ ํ–ฅ์ƒ #4825.
  2. The SPP ๊ตฌ์กฐ๊ฐ€ SPPF. ์ด๋ ‡๊ฒŒ ๋ณ€๊ฒฝํ•˜๋ฉด ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋‘ ๋ฐฐ ์ด์ƒ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

์†๋„๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด SPP ๋ฐ SPPF๋กœ ์„ค์ •ํ•˜๋ฉด ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

SPP์™€ SPPF ์†๋„ ํ”„๋กœํŒŒ์ผ๋ง ์˜ˆ์‹œ(์—ด๋ ค๋ฉด ํด๋ฆญ)
import time
import torch
import torch.nn as nn


class SPP(nn.Module):
    def __init__(self):
        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):
        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):
        super().__init__()
        self.maxpool = nn.MaxPool2d(5, 1, padding=2)

    def forward(self, x):
        o1 = self.maxpool(x)
        o2 = self.maxpool(o1)
        o3 = self.maxpool(o2)
        return torch.cat([x, o1, o2, o3], dim=1)


def main():
    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()
๊ฒฐ๊ณผ:
True
SPP time: 0.5373051166534424
SPPF time: 0.20780706405639648

2. ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ๊ธฐ์ˆ 

YOLOv5 ๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์˜ ์ผ๋ฐ˜ํ™” ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๊ณผ์ ํ•ฉ์„ ์ค„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋ฒ•์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:

  • ๋ชจ์ž์ดํฌ ์ฆ๊ฐ•: ๊ฐ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ์ด ๋‹ค์–‘ํ•œ ๊ฐ์ฒด ํฌ๊ธฐ์™€ ๋ณ€ํ™˜์„ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก 4๊ฐœ์˜ ํ•™์Šต ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋ชจ์ž์ดํฌ

  • ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ์ฆ๊ฐ•: ์ด๋ฏธ์ง€์—์„œ ๋ฌด์ž‘์œ„๋กœ ํŒจ์น˜๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ฌด์ž‘์œ„๋กœ ์„ ํƒํ•œ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€์— ๋ถ™์—ฌ๋„ฃ์–ด ์ƒˆ๋กœ์šด ํ•™์Šต ์ƒ˜ํ”Œ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ํ˜์‹ ์ ์ธ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ

  • ๋žœ๋ค ์•„ํ•€ ๋ณ€ํ™˜: ์—ฌ๊ธฐ์—๋Š” ์ด๋ฏธ์ง€์˜ ๋ฌด์ž‘์œ„ ํšŒ์ „, ํฌ๊ธฐ ์กฐ์ •, ์ด๋™ ๋ฐ ์‹œ์–ด๋ง์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋žœ๋ค-์•„ํ•€

  • ๋ฏน์Šค์—… ์ฆ๊ฐ•: ๋‘ ์ด๋ฏธ์ง€์™€ ๊ด€๋ จ ๋ ˆ์ด๋ธ”์„ ์„ ํ˜•์ ์œผ๋กœ ์กฐํ•ฉํ•˜์—ฌ ํ•ฉ์„ฑ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋ฏน์Šค์—…

  • ๋ฌธ์„œํ™”: ๋‹ค์–‘ํ•œ ์ฆ๊ฐ• ๊ธฐ์ˆ ์„ ์ง€์›ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์ด๋ฏธ์ง€ ์ฆ๊ฐ• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

  • HSV ์ฆ๊ฐ•: ์ด๋ฏธ์ง€์˜ ์ƒ‰์กฐ, ์ฑ„๋„ ๋ฐ ๊ฐ’์„ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

hsv

  • ๋žœ๋ค ์ˆ˜ํ‰ ๋’ค์ง‘๊ธฐ: ์ด๋ฏธ์ง€๋ฅผ ๋ฌด์ž‘์œ„๋กœ ๊ฐ€๋กœ๋กœ ๋’ค์ง‘๋Š” ์ฆ๊ฐ• ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ˆ˜ํ‰ ๋’ค์ง‘๊ธฐ

3. ๊ต์œก ์ „๋žต

YOLOv5 ๋Š” ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ •๊ตํ•œ ํ›ˆ๋ จ ์ „๋žต์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:

  • ๋ฉ€ํ‹ฐ์Šค์ผ€์ผ ํ›ˆ๋ จ: ์ž…๋ ฅ ์ด๋ฏธ์ง€๋Š” ํ›ˆ๋ จ ๊ณผ์ •์—์„œ ์›๋ž˜ ํฌ๊ธฐ์˜ 0.5~1.5๋ฐฐ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ž„์˜๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค.
  • ์ž๋™ ์•ต์ปค: ์ด ์ „๋žต์€ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ์ดํ„ฐ์˜ ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ ์ƒ์ž์˜ ํ†ต๊ณ„์  ํŠน์„ฑ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ด์ „ ์•ต์ปค ์ƒ์ž๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์›Œ๋ฐ์—… ๋ฐ ์ฝ”์‚ฌ์ธ LR ์Šค์ผ€์ค„๋Ÿฌ: ๋ชจ๋ธ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•™์Šต ์†๋„๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ์ง€์ˆ˜์ด๋™ํ‰๊ท (EMA): ๊ณผ๊ฑฐ ๋‹จ๊ณ„์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ‰๊ท ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์Šต ํ”„๋กœ์„ธ์Šค๋ฅผ ์•ˆ์ •ํ™”ํ•˜๊ณ  ์ผ๋ฐ˜ํ™” ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๋Š” ์ „๋žต์ž…๋‹ˆ๋‹ค.
  • ํ˜ผํ•ฉ ์ •๋ฐ€๋„ ํ›ˆ๋ จ: ๋ฐ˜์ •๋ฐ€ ํ˜•์‹์œผ๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ๊ณ„์‚ฐ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์ง„ํ™”: ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์กฐ์ •ํ•˜๋Š” ์ „๋žต์ž…๋‹ˆ๋‹ค.

4. ์ถ”๊ฐ€ ๊ธฐ๋Šฅ

4.1 ๊ณ„์‚ฐ ์†์‹ค

YOLOv5 ์˜ ์†์‹ค์€ ์„ธ ๊ฐ€์ง€ ๊ฐœ๋ณ„ ์†์‹ค ๊ตฌ์„ฑ ์š”์†Œ์˜ ์กฐํ•ฉ์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค:

  • ํด๋ž˜์Šค ์†์‹ค(BCE ์†์‹ค): ์ด์ง„ ๊ต์ฐจ ์—”ํŠธ๋กœํ”ผ ์†์‹ค๋กœ, ๋ถ„๋ฅ˜ ์ž‘์—…์˜ ์˜ค๋ฅ˜๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด์„ฑ ์†์‹ค(BCE ์†์‹ค): ๋˜ ๋‹ค๋ฅธ ์ด์ง„ ๊ต์ฐจ ์—”ํŠธ๋กœํ”ผ ์†์‹ค๋กœ, ํŠน์ • ๊ทธ๋ฆฌ๋“œ ์…€์— ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฐ์ง€ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„์น˜ ์†์‹ค(CIoU ์†์‹ค): ์™„์ „ํ•œ IoU ์†์‹ค๋กœ, ๊ทธ๋ฆฌ๋“œ ์…€ ๋‚ด์—์„œ ์˜ค๋ธŒ์ ํŠธ์˜ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ์†์‹ค ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:

์†์‹ค

4.2 ์ž”์•ก ์†์‹ค

์„ธ ์˜ˆ์ธก ๋ ˆ์ด์–ด์˜ ์˜ค๋ธŒ์ ํŠธ๋‹ˆ์Šค ์†์‹ค(P3, P4, P5)์˜ ๊ฐ€์ค‘์น˜๋Š” ๋‹ค๋ฅด๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐธ๋Ÿฐ์Šค ๊ฐ€์ค‘์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. [4.0, 1.0, 0.4] ๋ฅผ ๊ฐ๊ฐ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ทœ๋ชจ์˜ ์˜ˆ์ธก์ด ์ด ์†์‹ค์— ์ ์ ˆํžˆ ๊ธฐ์—ฌํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ์†์‹ค

4.3 ๊ทธ๋ฆฌ๋“œ ๊ฐ๋„ ์ œ๊ฑฐํ•˜๊ธฐ

YOLOv5 ์•„ํ‚คํ…์ฒ˜๋Š” ์ด์ „ ๋ฒ„์ „( YOLO)๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ฐ•์Šค ์˜ˆ์ธก ์ „๋žต์— ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. YOLOv2 ๋ฐ YOLOv3์—์„œ๋Š” ๋งˆ์ง€๋ง‰ ๋ ˆ์ด์–ด์˜ ํ™œ์„ฑํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ•์Šค ์ขŒํ‘œ๋ฅผ ์ง์ ‘ ์˜ˆ์ธกํ–ˆ์Šต๋‹ˆ๋‹ค.

b_x b_y b_w b_h

YOLOv5 ๊ทธ๋ฆฌ๋“œ ๊ณ„์‚ฐ

๊ทธ๋Ÿฌ๋‚˜ YOLOv5 ์—์„œ๋Š” ์ƒ์ž ์ขŒํ‘œ๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๊ณต์‹์ด ์—…๋ฐ์ดํŠธ๋˜์–ด ๊ทธ๋ฆฌ๋“œ ๊ฐ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ๋ชจ๋ธ์ด ๋ฌดํ•œํ•œ ์ƒ์ž ์น˜์ˆ˜๋ฅผ ์˜ˆ์ธกํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ธก ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ˆ˜์ •๋œ ๊ณต์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

bx by bw bh

์Šค์ผ€์ผ๋ง ์ „๊ณผ ํ›„์˜ ์ค‘์‹ฌ์  ์˜คํ”„์…‹์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ค‘์‹ฌ์  ์˜คํ”„์…‹ ๋ฒ”์œ„๋Š” (0, 1)์—์„œ (-0.5, 1.5)๋กœ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜คํ”„์…‹์€ ์‰ฝ๊ฒŒ 0 ๋˜๋Š” 1์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

YOLOv5 ๊ทธ๋ฆฌ๋“œ ์Šค์ผ€์ผ๋ง

์กฐ์ • ์ „๊ณผ ํ›„์˜ ๋†’์ด์™€ ๋„ˆ๋น„ ๋ฐฐ์œจ(์•ต์ปค ๊ธฐ์ค€)์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ yolo/darknet ์ƒ์ž ๋ฐฉ์ •์‹์—๋Š” ์‹ฌ๊ฐํ•œ ๊ฒฐํ•จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ˆ๋น„์™€ ๋†’์ด๊ฐ€ ๋‹จ์ˆœํžˆ ์•„์›ƒ=์—‘์Šค(์ธ)์ด๋ฏ€๋กœ ์™„์ „ํžˆ ๋ฌดํ•œ๋Œ€์ด๋ฉฐ, ์ด๋Š” ๊ฒฝ์‚ฌ๋„ ํญ์ฃผ, ๋ถˆ์•ˆ์ •์„ฑ, NaN ์†์‹ค ๋ฐ ๊ถ๊ทน์ ์œผ๋กœ ํ›ˆ๋ จ์˜ ์™„์ „ํ•œ ์†์‹ค๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

YOLOv5 ๋ฌดํ•œํ•œ ํ™•์žฅ์„ฑ

4.4 ๋นŒ๋“œ ํƒ€๊ฒŸ

YOLOv5 ์˜ ํƒ€๊ฒŸ ๊ตฌ์ถ• ํ”„๋กœ์„ธ์Šค๋Š” ํ•™์Šต ํšจ์œจ์„ฑ๊ณผ ๋ชจ๋ธ ์ •ํ™•๋„์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ถœ๋ ฅ ๋งต์˜ ์ ์ ˆํ•œ ๊ทธ๋ฆฌ๋“œ ์…€์— ๊ธฐ์ค€์  ์ƒ์ž๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์ด๋ฅผ ์ ์ ˆํ•œ ์•ต์ปค ์ƒ์ž์™€ ์ผ์น˜์‹œํ‚ค๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

  • ๊ธฐ์ค€์  ์ƒ์ž ์น˜์ˆ˜์™€ ๊ฐ ์•ต์ปค ํ…œํ”Œ๋ฆฟ์˜ ์น˜์ˆ˜์˜ ๋น„์œจ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

rw

rh

rwmax

rhmax

rmax

์ผ์น˜

YOLOv5 IoU ๊ณ„์‚ฐ

  • ๊ณ„์‚ฐ๋œ ๋น„์œจ์ด ์ž„๊ณ„๊ฐ’ ๋‚ด์— ์žˆ์œผ๋ฉด ๊ธฐ์ค€์  ์ƒ์ž๋ฅผ ํ•ด๋‹น ์•ต์ปค์™€ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค.

YOLOv5 ๊ทธ๋ฆฌ๋“œ ๊ฒน์นจ

  • ์ˆ˜์ •๋œ ์ค‘์‹ฌ์  ์˜คํ”„์…‹์œผ๋กœ ์ธํ•ด ๊ธฐ์ค€์  ์ƒ์ž๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์•ต์ปค์— ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์—ผ๋‘์— ๋‘๊ณ  ์ผ์น˜ํ•˜๋Š” ์•ต์ปค๋ฅผ ์ ์ ˆํ•œ ์…€์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ค‘์‹ฌ์  ์˜คํ”„์…‹ ๋ฒ”์œ„๊ฐ€ (0, 1)์—์„œ (-0.5, 1.5)๋กœ ์กฐ์ •๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. GT ๋ฐ•์Šค๋ฅผ ๋” ๋งŽ์€ ์•ต์ปค์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

YOLOv5 ์•ต์ปค ์„ ํƒ

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋นŒ๋“œ ํƒ€๊นƒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•™์Šต ๊ณผ์ •์—์„œ ๊ฐ ๊ธฐ์ค€์  ๊ฐ์ฒด๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ํ• ๋‹น๋˜๊ณ  ์ผ์น˜ํ•˜๋„๋ก ๋ณด์žฅํ•˜์—ฌ YOLOv5 ๊ฐ์ฒด ๊ฐ์ง€ ์ž‘์—…์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

๊ฒฐ๋ก ์ ์œผ๋กœ, YOLOv5 ์€ ์‹ค์‹œ๊ฐ„ ๊ฐ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ ๊ฐœ๋ฐœ์˜ ์ค‘์š”ํ•œ ์ง„์ „์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ, ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ ํ›ˆ๋ จ ์ „๋žต์„ ํ†ตํ•ฉํ•˜์—ฌ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ฑ ๋ฉด์—์„œ ์ด์ „ ๋ฒ„์ „์˜ YOLO ์ œํ’ˆ๊ตฐ์„ ๋Šฅ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

YOLOv5 ์˜ ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ์œผ๋กœ๋Š” ๋™์  ์•„ํ‚คํ…์ฒ˜ ์‚ฌ์šฉ, ๊ด‘๋ฒ”์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ๊ธฐ์ˆ , ํ˜์‹ ์ ์ธ ํ›ˆ๋ จ ์ „๋žต, ์ปดํ“จํŒ… ์†์‹ค ๋ฐ ๋ชฉํ‘œ๋ฌผ ๊ตฌ์ถ• ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š”ํ•œ ์กฐ์ • ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ˜์‹ ์€ YOLO ๋ชจ๋ธ์˜ ํŠธ๋ ˆ์ด๋“œ๋งˆํฌ์ธ ๋น ๋ฅธ ์†๋„๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฌผ์ฒด ๊ฐ์ง€์˜ ์ •ํ™•์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.



์ƒ์„ฑ๋จ 2023-11-12, ์—…๋ฐ์ดํŠธ๋จ 2024-01-14
์ž‘์„ฑ์ž: glenn-jocher (5), sergiuwaxmann (1)

๋Œ“๊ธ€