์ฐธ์กฐ ultralytics/utils/checks.py
์ฐธ๊ณ
์ด ํ์ผ์ https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/utils/checks .py์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ํ ๋ฆฌํ์คํธ (๐ ๏ธ) ๋ฅผ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ก ๋์์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค ๐!
ultralytics.utils.checks.parse_requirements(file_path=ROOT.parent / 'requirements.txt', package='')
'#'๋ก ์์ํ๋ ์ค๊ณผ '#' ์ดํ์ ๋ชจ๋ ํ ์คํธ๋ฅผ ๋ฌด์ํ๊ณ ์๊ตฌ ์ฌํญ.txt ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
file_path |
Path
|
์๊ตฌ ์ฌํญ.txt ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค. |
parent / 'requirements.txt'
|
package |
str
|
Python ํจํค์ง๋ฅผ ์๊ตฌ์ฌํญ.txt ํ์ผ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค(์: package='ultralytics'). |
''
|
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
List[Dict[str, str]]
|
๋ค์์ ์ฌ์ฉํ์ฌ ๊ตฌ๋ฌธ ๋ถ์๋ ์๊ตฌ ์ฌํญ์ ์ฌ์ ์ผ๋ก ๋์ดํฉ๋๋ค. |
์
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.parse_version(version='0.0.0')
๋ฒ์ ๋ฌธ์์ด์ ์ ์ ํํ๋ก ๋ณํํ์ฌ ๋ฒ์ ์ ์ฐ๊ฒฐ๋ ์ซ์๊ฐ ์๋ ์ถ๊ฐ ๋ฌธ์์ด์ ๋ฌด์ํฉ๋๋ค. ์ด ํจ์๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ 'pkg_resources.parse_version(v)'์ ๋์ฒดํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
version |
str
|
๋ฒ์ ๋ฌธ์์ด(์: '2.0.1+cpu') |
'0.0.0'
|
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
tuple
|
๋ฒ์ ๊ณผ ์ถ๊ฐ ๋ฌธ์์ด์ ์ซ์ ๋ถ๋ถ์ ๋ํ๋ด๋ ์ ์์ ํํ(์: (2, 0, 1)) |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.is_ascii(s)
๋ฌธ์์ด์ด ASCII ๋ฌธ์๋ก๋ง ๊ตฌ์ฑ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
s |
str
|
ํ์ธํ ๋ฌธ์์ด์ ๋๋ค. |
ํ์ |
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
bool
|
๋ฌธ์์ด์ด ASCII ๋ฌธ์๋ก๋ง ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ True, ๊ทธ๋ ์ง ์์ผ๋ฉด False์ ๋๋ค. |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_imgsz(imgsz, stride=32, min_dim=1, max_dim=2, floor=0)
์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ ๊ฐ ์ฐจ์์์ ์ฃผ์ด์ง ๋ณดํญ์ ๋ฐฐ์์ธ์ง ํ์ธํฉ๋๋ค. ์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ ๋ณดํญ์ ๋ฐฐ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋ณดํญ์ ๋ฐฐ์๊ฐ ์๋ ๊ฒฝ์ฐ, ์ฃผ์ด์ง ๋ฐ๋ฅ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๋ณดํญ์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐฐ์๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
imgsz |
int | cList[int]
|
์ด๋ฏธ์ง ํฌ๊ธฐ. |
ํ์ |
stride |
int
|
๋ณดํญ ๊ฐ์ ๋๋ค. |
32
|
min_dim |
int
|
์ต์ ์น์ ์์ ๋๋ค. |
1
|
max_dim |
int
|
์ต๋ ์น์ ์์ ๋๋ค. |
2
|
floor |
int
|
์ด๋ฏธ์ง ํฌ๊ธฐ์ ์ต์ ํ์ฉ๊ฐ์ ๋๋ค. |
0
|
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
List[int]
|
์ด๋ฏธ์ง ํฌ๊ธฐ ์ ๋ฐ์ดํธ. |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_version(current='0.0.0', required='0.0.0', name='version', hard=False, verbose=False, msg='')
ํ์ฌ ๋ฒ์ ์ ํ์ํ ๋ฒ์ ๋๋ ๋ฒ์์ ๋น๊ตํ์ฌ ํ์ธํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
current |
str
|
๋ฒ์ ์ ๊ฐ์ ธ์ฌ ํ์ฌ ๋ฒ์ ๋๋ ํจํค์ง ์ด๋ฆ์ ๋๋ค. |
'0.0.0'
|
required |
str
|
ํ์ ๋ฒ์ ๋๋ ๋ฒ์(ํ ์คํ์ผ ํ์)์ ๋๋ค. |
'0.0.0'
|
name |
str
|
๊ฒฝ๊ณ ๋ฉ์์ง์ ์ฌ์ฉํ ์ด๋ฆ์ ๋๋ค. |
'version'
|
hard |
bool
|
True์ด๋ฉด ์๊ตฌ ์ฌํญ์ด ์ถฉ์กฑ๋์ง ์์ผ๋ฉด AssertionError๋ฅผ ๋ฐ์์ํต๋๋ค. |
False
|
verbose |
bool
|
True์ธ ๊ฒฝ์ฐ ์๊ตฌ ์ฌํญ์ด ์ถฉ์กฑ๋์ง ์์ผ๋ฉด ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ธ์ํฉ๋๋ค. |
False
|
msg |
str
|
์ฅํฉํ ๊ฒฝ์ฐ ํ์ํ ์ถ๊ฐ ๋ฉ์์ง์ ๋๋ค. |
''
|
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
bool
|
์๊ตฌ ์ฌํญ์ด ์ถฉ์กฑ๋๋ฉด ์ฐธ, ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฑฐ์ง์ ๋๋ค. |
์
# Check if current version is exactly 22.04
check_version(current='22.04', required='==22.04')
# Check if current version is greater than or equal to 22.04
check_version(current='22.10', required='22.04') # assumes '>=' inequality if none passed
# Check if current version is less than or equal to 22.04
check_version(current='22.04', required='<=22.04')
# Check if current version is between 20.04 (inclusive) and 22.04 (exclusive)
check_version(current='21.10', required='>20.04,<22.04')
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 |
|
ultralytics.utils.checks.check_latest_pypi_version(package_name='ultralytics')
๋ค์ด๋ก๋ํ๊ฑฐ๋ ์ค์นํ์ง ์๊ณ ์ต์ ๋ฒ์ ์ PyPI ํจํค์ง๋ฅผ ๋ฐํํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
package_name |
str
|
์ต์ ๋ฒ์ ์ ์ฐพ์ ํจํค์ง์ ์ด๋ฆ์ ๋๋ค. |
'ultralytics'
|
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
str
|
์ต์ ๋ฒ์ ์ ํจํค์ง์ ๋๋ค. |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_pip_update_available()
PyPI์์ ultralytics ํจํค์ง์ ์ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
bool
|
์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉด True, ๊ทธ๋ ์ง ์์ผ๋ฉด False์ ๋๋ค. |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_font(font='Arial.ttf')
๊ธ๊ผด์ด ์๋ ๊ฒฝ์ฐ ๋ก์ปฌ์์ ์ฐพ๊ฑฐ๋ ์ฌ์ฉ์์ ์ค์ ๋๋ ํ ๋ฆฌ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
font |
str
|
๊ธ๊ผด์ ๊ฒฝ๋ก ๋๋ ์ด๋ฆ์ ๋๋ค. |
'Arial.ttf'
|
๋ฐํํฉ๋๋ค:
์ด๋ฆ | ์ ํ | ์ค๋ช |
---|---|---|
file |
Path
|
ํ์ธ๋ ๊ธ๊ผด ํ์ผ ๊ฒฝ๋ก. |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_python(minimum='3.8.0')
ํ์ฌ python ๋ฒ์ ์ ํ์ํ ์ต์ ๋ฒ์ ๊ณผ ๋น๊ตํ์ฌ ํ์ธํ์ธ์.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
minimum |
str
|
python ์ ์ต์ ๋ฒ์ ์ด ํ์ํฉ๋๋ค. |
'3.8.0'
|
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
bool
|
์ค์น๋ Python ๋ฒ์ ์ด ์ต์ ์ ์ฝ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋์ง ์ฌ๋ถ์ ๋๋ค. |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_requirements(requirements=ROOT.parent / 'requirements.txt', exclude=(), install=True, cmds='')
์ค์น๋ ์ข ์์ฑ์ด YOLOv8 ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ํ์ธํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์๋ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
requirements |
Union[Path, str, List[str]]
|
์๊ตฌ ์ฌํญ.txt ํ์ผ์ ๊ฒฝ๋ก, ๋จ์ผ ํจํค์ง ์๊ตฌ ์ฌํญ์ ๊ฒฝ์ฐ ๋ฌธ์์ด ๋๋ ํจํค์ง ์๊ตฌ ์ฌํญ ๋ชฉ๋ก์ ๋ฌธ์์ด๋ก ์ง์ ํฉ๋๋ค. |
parent / 'requirements.txt'
|
exclude |
Tuple[str]
|
๊ฒ์ฌ์์ ์ ์ธํ ํจํค์ง ์ด๋ฆ์ ํํ์ ๋๋ค. |
()
|
install |
bool
|
True์ด๋ฉด ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ์ง ์๋ ํจํค์ง๋ฅผ ์๋ ์ ๋ฐ์ดํธํ๋ ค๊ณ ์๋ํฉ๋๋ค. |
True
|
cmds |
str
|
์๋ ์ ๋ฐ์ดํธ ์ pip ์ค์น ๋ช ๋ น์ ์ ๋ฌํ ์ถ๊ฐ ๋ช ๋ น์ด์ ๋๋ค. |
''
|
์
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_torchvision()
PyTorch ๋ฐ Torchvision์ ์ค์น๋ ๋ฒ์ ์ด ํธํ๋๋์ง ํ์ธํฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ PyTorch ๋ฐ Torchvision์ ์ค์น๋ ๋ฒ์ ์ ํ์ธํ๊ณ ํธํ๋์ง ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ๊ฒฝ๊ณ ํฉ๋๋ค. ํธํ๋์ง ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค: https://github.com/pytorch/๋น์ #์ค์น.
ํธํ์ฑ ํ ์ด๋ธ์ ํค๊ฐ PyTorch ๋ฒ์ ์ด๊ณ ๊ฐ์ด ํธํ๋๋ ํธํ ๊ฐ๋ฅํ ํ ์น๋น์ ๋ฒ์ ๋ชฉ๋ก์ ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_suffix(file='yolov8n.pt', suffix='.pt', msg='')
ํ์ผ์์ ํ์ฉ๋๋ ์ ๋ฏธ์ฌ๊ฐ ์๋์ง ํ์ธํ์ธ์.
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_yolov5u_filename(file, verbose=True)
๊ธฐ์กด YOLOv5 ํ์ผ๋ช ์ ์ ๋ฐ์ดํธ๋ YOLOv5u ํ์ผ๋ช ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_model_file_from_stem(model='yolov8n')
์ ํจํ ๋ชจ๋ธ ์คํ ์์ ๋ชจ๋ธ ํ์ผ๋ช ์ ๋ฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_file(file, suffix='', download=True, hard=True)
ํ์ผ ๊ฒ์/๋ค์ด๋ก๋(ํ์ํ ๊ฒฝ์ฐ) ๋ฐ ๋ฐํ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_yaml(file, suffix=('.yaml', '.yml'), hard=True)
ํ์ํ ๊ฒฝ์ฐ YAML ํ์ผ์ ๊ฒ์/๋ค์ด๋ก๋ํ๊ณ ์ ๋ฏธ์ฌ๋ฅผ ํ์ธํ์ฌ ๊ฒฝ๋ก๋ฅผ ๋ฐํํฉ๋๋ค.
ultralytics.utils.checks.check_is_path_safe(basedir, path)
๊ฒฝ๋ก ํ์์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ์ธ๋ ๊ฒฝ๋ก๊ฐ ์๋ํ ๋๋ ํ ๋ฆฌ ์๋์ ์๋์ง ํ์ธํฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
basedir |
Path | str
|
์๋ํ ๋๋ ํฐ๋ฆฌ์ ๋๋ค. |
ํ์ |
path |
Path | str
|
ํ์ธํ ๊ฒฝ๋ก์ ๋๋ค. |
ํ์ |
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
bool
|
๊ฒฝ๋ก๊ฐ ์์ ํ๋ฉด ์ฐธ์ด๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฑฐ์ง์ ๋๋ค. |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_imshow(warn=False)
ํ๊ฒฝ์ด ์ด๋ฏธ์ง ๋์คํ๋ ์ด๋ฅผ ์ง์ํ๋์ง ํ์ธํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_yolo(verbose=True, device='')
์ฌ๋์ด ์ฝ์ ์ ์๋ YOLO ์ํํธ์จ์ด ๋ฐ ํ๋์จ์ด ์์ฝ๋ณธ์ ๋ฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.collect_system_info()
OS, Python, RAM, CPU, CUDA ๋ฑ ๊ด๋ จ ์์คํ ์ ๋ณด๋ฅผ ์์งํ๊ณ ์ธ์ํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.check_amp(model)
์ด ๊ธฐ๋ฅ์ YOLOv8 ๋ชจ๋ธ์ PyTorch ์๋ ํผํฉ ์ ๋ฐ๋(AMP) ๊ธฐ๋ฅ์ ํ์ธํฉ๋๋ค. ๊ฒ์ฌ์ ์ ์คํจํ๋ฉด ์์คํ ์์ AMP์ ์ด์์ด ์์ด NaN ์์ค ๋๋ ์ ๋ก ๋งต ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ผ๋ฏ๋ก ํ๋ จ ์ค์ AMP๊ฐ ํ๋ จ ์ค์ ๋นํ์ฑํ๋ฉ๋๋ค.
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
model |
Module
|
YOLOv8 ๋ชจ๋ธ ์ธ์คํด์ค์ ๋๋ค. |
ํ์ |
์
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
bool
|
AMP ๊ธฐ๋ฅ์ด YOLOv8 ๋ชจ๋ธ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ฉด ์ฐธ์ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฑฐ์ง์ ๋ฐํํฉ๋๋ค. |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.git_describe(path=ROOT)
์ฌ๋์ด ์ฝ์ ์ ์๋ git ์ค๋ช (์: v5.0-5-g3e25f1e https://git-scm.com/docs/git-describe)์ ๋ฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.print_args(args=None, show_file=True, show_func=False)
ํจ์ ์ธ์๋ฅผ ์ธ์ํฉ๋๋ค(์ ํ์ ์ธ์ ๋์ ๋๋ฆฌ).
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.cuda_device_count()
ํ๊ฒฝ์์ ์ฌ์ฉ ๊ฐ๋ฅํ NVIDIA GPU ์๋ฅผ ํ์ธํฉ๋๋ค.
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
int
|
์ฌ์ฉ ๊ฐ๋ฅํ NVIDIA GPU ์์ ๋๋ค. |
์ ์์ค ์ฝ๋ ultralytics/utils/checks.py
ultralytics.utils.checks.cuda_is_available()
ํ๊ฒฝ์์ CUDA๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
๋ฐํํฉ๋๋ค:
์ ํ | ์ค๋ช |
---|---|
bool
|
ํ๋ ์ด์์ NVIDIA GPU๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉด True, ๊ทธ๋ ์ง ์์ผ๋ฉด False์ ๋๋ค. |