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

Ultralytics ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ

ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์ €ํฌ์˜ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌ๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ๊ณ„์‹œ๋‹ค๋‹ˆ Ultralytics ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•ด ์ฃผ์…”์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฐธ์—ฌ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋„์›€์ด ๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „์ฒด ์ปค๋ฎค๋‹ˆํ‹ฐ์—๋„ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ช…ํ™•ํ•œ ๊ฐ€์ด๋“œ๋ผ์ธ๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Ultralytics ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์—ฌ์ž

๋ชฉ์ฐจ

  1. ํ–‰๋™ ๊ฐ•๋ น
  2. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ†ตํ•œ ๊ธฐ์—ฌ
  3. ๋ฒ„๊ทธ ์‹ ๊ณ ํ•˜๊ธฐ
  4. ๋ผ์ด์„ ์Šค
  5. ๊ฒฐ๋ก 
  6. ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

ํ–‰๋™ ๊ฐ•๋ น

๋ชจ๋‘๋ฅผ ํ™˜์˜ํ•˜๊ณ  ํฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์„ ์กฐ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๊ธฐ์—ฌ์ž๋Š” ํ–‰๋™ ๊ฐ•๋ น์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์กด์ค‘, ์นœ์ ˆ, ์ „๋ฌธ์„ฑ์€ ์šฐ๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ†ตํ•œ ๊ธฐ์—ฌ

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ํ˜•ํƒœ๋กœ ๊ธฐ์—ฌํ•ด ์ฃผ์‹œ๋ฉด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ตœ๋Œ€ํ•œ ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ์ฃผ์„ธ์š”:

  1. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํฌํฌํ•ฉ๋‹ˆ๋‹ค: Ultralytics YOLO ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ GitHub ๊ณ„์ •์œผ๋กœ ํฌํฌํ•˜์—ฌ ์‹œ์ž‘ํ•˜์„ธ์š”.

  2. ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค: ํฌํฌ๋œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•˜๋Š” ๋ช…ํ™•ํ•˜๊ณ  ์„ค๋ช…์ด ํฌํ•จ๋œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  3. ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค: ์ฝ”๋“œ๊ฐ€ ํ”„๋กœ์ ํŠธ์˜ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ค€์ˆ˜ํ•˜๊ณ  ์ƒˆ๋กœ์šด ์˜ค๋ฅ˜๋‚˜ ๊ฒฝ๊ณ ๋ฅผ ์œ ๋ฐœํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค: ์ œ์ถœํ•˜๊ธฐ ์ „์— ๋กœ์ปฌ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•˜์—ฌ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€, ์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

  5. ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค: ๊ฐ„๊ฒฐํ•˜๊ณ  ์„ค๋ช…์ ์ธ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋กœ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์ปค๋ฐ‹ํ•˜์„ธ์š”. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํŠน์ • ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— ์ด์Šˆ ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จํ•˜์„ธ์š”.

  6. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค: ํฌํฌ๋œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฉ”์ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ( Ultralytics YOLO )๋กœ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ณ  ์ƒ์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์„ธ์š”.

CLA ์„œ๋ช…

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋ ค๋ฉด ๋จผ์ € ๊ธฐ์—ฌ์ž ๋ผ์ด์„ ์Šค ๊ณ„์•ฝ(CLA)์— ์„œ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ•์  ๊ณ„์•ฝ์€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ธฐ์—ฌ์— ์ ์ ˆํ•œ ๋ผ์ด์„ ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์–ด ํ”„๋กœ์ ํŠธ๊ฐ€ AGPL-3.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๊ณ„์† ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ•˜๋ฉด CLA ๋ด‡์ด ์„œ๋ช… ์ ˆ์ฐจ๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. CLA์— ์„œ๋ช…ํ•˜๋ ค๋ฉด PR์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

I have read the CLA Document and I sign the CLA

Google-์Šคํƒ€์ผ ๋ฌธ์„œ ๋ฌธ์ž์—ด

์ƒˆ ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” Google-์Šคํƒ€์ผ์˜ ๋ฌธ์„œ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜์„ธ์š”. ์ด๋Ÿฌํ•œ ๋ฌธ์„œ ๋ฌธ์ž์—ด์€ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ช…ํ™•ํ•˜๊ณ  ํ‘œ์ค€ํ™”๋œ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ ๋ฌธ์ž์—ด ์˜ˆ์ œ

์ด ์˜ˆ๋Š” Google-์Šคํƒ€์ผ์˜ ๋ฌธ์„œ ๋ฌธ์ž์—ด์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ๋ชจ๋‘ types ๋Š” ํ•ญ์ƒ ๊ด„ํ˜ธ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค(์˜ˆ:, (bool).

def example_function(arg1, arg2=4):
    """
    Example function demonstrating Google-style docstrings.

    Args:
        arg1 (int): The first argument.
        arg2 (int): The second argument, with a default value of 4.

    Returns:
        (bool): True if successful, False otherwise.

    Examples:
        >>> result = example_function(1, 2)  # returns False
    """
    if arg1 == arg2:
        return True
    return False

์ด ์˜ˆ์ œ์—๋Š” Google-์Šคํƒ€์ผ์˜ ๋ฌธ์„œ ๋ฌธ์ž์—ด๊ณผ ์ธ์ˆ˜ ๋ฐ ๋ฐ˜ํ™˜์— ๋Œ€ํ•œ ์œ ํ˜• ํžŒํŠธ๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ, ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

def example_function(arg1: int, arg2: int = 4) -> bool:
    """
    Example function demonstrating Google-style docstrings.

    Args:
        arg1: The first argument.
        arg2: The second argument, with a default value of 4.

    Returns:
        True if successful, False otherwise.

    Examples:
        >>> result = example_function(1, 2)  # returns False
    """
    if arg1 == arg2:
        return True
    return False

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

def example_small_function(arg1: int, arg2: int = 4) -> bool:
    """Example function with a single-line docstring."""
    return arg1 == arg2

GitHub ์•ก์…˜ CI ํ…Œ์ŠคํŠธ

๋ชจ๋“  ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋Š” ๋ณ‘ํ•ฉ๋˜๊ธฐ ์ „์— GitHub Actions ์ง€์†์  ํ†ตํ•ฉ (CI) ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ์—๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ”„๋กœ์ ํŠธ์˜ ํ’ˆ์งˆ ํ‘œ์ค€์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฐํŒ…, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ๊ธฐํƒ€ ๊ฒ€์‚ฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. CI ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์„ธ์š”.

๋ฒ„๊ทธ ์‹ ๊ณ ํ•˜๊ธฐ

๋ฒ„๊ทธ ์‹ ๊ณ ๋Š” ํ”„๋กœ์ ํŠธ์˜ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋˜๋ฏ€๋กœ ๋งค์šฐ ์†Œ์ค‘ํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•  ๋•Œ๋Š” ๋ฌธ์ œ๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ๋ช…ํ™•ํ•œ ์ฝ”๋“œ ์˜ˆ์ œ์ธ ์ตœ์†Œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ์˜ˆ์ œ๋ฅผ์ œ๊ณตํ•ด ์ฃผ์„ธ์š”. ์ด๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

Ultralytics ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— GNU Affero ์ผ๋ฐ˜ ๊ณต์ค‘ ๋ผ์ด์„ ์Šค v3.0(AGPL-3.0 )์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์ด์„ ์Šค๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ๊ฐœ๋ฐฉ์„ฑ, ํˆฌ๋ช…์„ฑ, ํ˜‘์—…์  ๊ฐœ์„ ์„ ์ด‰์ง„ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ, ์ˆ˜์ •, ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜์—ฌ ๊ฐ•๋ ฅํ•œ ํ˜‘์—…๊ณผ ํ˜์‹ ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์กฐ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ธฐ์—ฌ์ž๋Š” Ultralytics ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์— ํšจ๊ณผ์ ์ด๊ณ  ์œค๋ฆฌ์ ์œผ๋กœ ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด AGPL-3.0 ๋ผ์ด์„ ์Šค ์•ฝ๊ด€์„ ์ˆ™์ง€ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Ultralytics ์˜คํ”ˆ์†Œ์Šค YOLO ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฐธ์—ฌ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฏธ๋ž˜๋ฅผ ๋งŒ๋“ค๊ณ  ํ˜์‹ ๊ณผ ํ˜‘์—…์˜ ํ™œ๊ธฐ์ฐฌ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๊ฑฐ๋‚˜ ๋ฒ„๊ทธ๋ฅผ ๋ณด๊ณ ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ œ์•ˆํ•˜๋Š” ๋“ฑ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ธฐ์—ฌ๋Š” ๋งค์šฐ ์†Œ์ค‘ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์˜ ์•„์ด๋””์–ด๊ฐ€ ์‹คํ˜„๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ฒŒ ๋˜์–ด ๊ธฐ์˜๊ณ , ๋ฌผ์ฒด ์ธ์‹ ๊ธฐ์ˆ ์„ ๋ฐœ์ „์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๊ณผ ํ•จ๊ป˜ ์ด ํฅ๋ฏธ์ง„์ง„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์—ฌ์ •์—์„œ ๊ณ„์† ์„ฑ์žฅํ•˜๊ณ  ํ˜์‹ ํ•ด ๋‚˜๊ฐ‘์‹œ๋‹ค. ํ–‰๋ณตํ•œ ์ฝ”๋”ฉ! ๐Ÿš€๐ŸŒŸ

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Ultralytics YOLO ์˜คํ”ˆ์†Œ์Šค ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ธฐ์—ฌํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Ultralytics YOLO ์˜คํ”ˆ ์†Œ์Šค ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ธฐ์—ฌํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ฐœ์„ ๋˜์–ด ์ „์ฒด ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์œ„ํ•ด ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ณ  ํ’๋ถ€ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์—ฌ์—๋Š” ์ฝ”๋“œ ๊ฐœ์„ , ๋ฒ„๊ทธ ์ˆ˜์ •, ๋ฌธ์„œ ๊ฐœ์„  ๋ฐ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ธฐ์—ฌ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž ๋ฐ ์ „๋ฌธ๊ฐ€์™€ ํ˜‘์—…ํ•˜์—ฌ ์ž์‹ ์˜ ๊ธฐ์ˆ ๊ณผ ํ‰ํŒ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๊ธฐ์—ฌํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Ultralytics YOLO ์— ๋Œ€ํ•œ ๊ธฐ์—ฌ์ž ๋ผ์ด์„ ์Šค ๊ณ„์•ฝ(CLA)์— ์–ด๋–ป๊ฒŒ ์„œ๋ช…ํ•˜๋‚˜์š”?

๊ธฐ์—ฌ์ž ๋ผ์ด์„ ์Šค ๊ณ„์•ฝ(CLA)์— ์„œ๋ช…ํ•˜๋ ค๋ฉด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ•œ ํ›„ CLA ๋ด‡์ด ์ œ๊ณตํ•˜๋Š” ์ง€์นจ์„ ๋”ฐ๋ฅด์„ธ์š”. ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ธฐ์—ฌ๊ฐ€ AGPL-3.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ์ ์ ˆํ•˜๊ฒŒ ๋ผ์ด์„ ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์–ด ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ๋ฒ•์  ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”:

I have read the CLA Document and I sign the CLA.

์ž์„ธํ•œ ๋‚ด์šฉ์€ CLA ์„œ๋ช… ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Google-์Šคํƒ€์ผ ๋ฌธ์„œ ๋ฌธ์ž์—ด์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ Ultralytics YOLO ๊ธฐ์—ฌ์— ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Google-์Šคํƒ€์ผ ๋…์ŠคํŠธ๋ง์€ ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋…์ŠคํŠธ๋ง์€ ํ•จ์ˆ˜์˜ ๋ชฉ์ , ์ธ์ˆ˜, ๋ฐ˜ํ™˜๊ฐ’์„ ํŠน์ • ์„œ์‹ ๊ทœ์น™๊ณผ ํ•จ๊ป˜ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Ultralytics YOLO ์— ๊ธฐ์—ฌํ•˜์‹ค ๋•Œ Google-์Šคํƒ€์ผ์˜ ๋ฌธ์„œ ๋ฌธ์ž์—ด์„ ๋”ฐ๋ฅด๋ฉด ์ถ”๊ฐ€ํ•œ ๋‚ด์šฉ์ด ์ž˜ ๋ฌธ์„œํ™”๋˜๊ณ  ์‰ฝ๊ฒŒ ์ดํ•ด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ์™€ ๊ฐ€์ด๋“œ๋ผ์ธ์€ Google-์Šคํƒ€์ผ ๋…์ŠคํŠธ๋ง ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‚ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด GitHub Actions CI ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋ ค๋ฉด ๋จผ์ € ๋ชจ๋“  GitHub Actions ์ง€์†์  ํ†ตํ•ฉ(CI) ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ์—๋Š” ๋ฆฐํŒ…, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐํƒ€ ๊ฒ€์‚ฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ ํ’ˆ์งˆ ํ‘œ์ค€์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. CI ๊ฒฐ๊ณผ๋ฌผ์„ ๊ฒ€ํ† ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. CI ํ”„๋กœ์„ธ์Šค ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ ํŒ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub Actions CI ํ…Œ์ŠคํŠธ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Ultralytics YOLO ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜๋ ค๋ฉด ๋ฒ„๊ทธ ์‹ ๊ณ ์™€ ํ•จ๊ป˜ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์ตœ์†Œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ์˜ˆ์‹œ๋ฅผ ์ œ๊ณตํ•˜์„ธ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ์˜ˆ์ œ์ด์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋ฒ„๊ทธ ์‹ ๊ณ ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‹จ๊ณ„๋Š” ๋ฒ„๊ทธ ์‹ ๊ณ ํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ“…1 ๋…„ ์ „ ์ƒ์„ฑ๋จ โœ๏ธ 1๊ฐœ์›” ์ „ ์—…๋ฐ์ดํŠธ๋จ

๋Œ“๊ธ€