핵심 개념
LibreYOLO의 모든 모델은 네 가지 아이디어로 설명됩니다: 수행하는 작업, 속한 계열, 그 계열 내의 크기, 그리고 계열이 속한 지원 등급입니다. 체크포인트 파일 이름은 처음 세 가지를 인코딩합니다.
- 파일 이름 스키마
Libre<FAMILY><size>[-<task>].pt- 표준 작업
- 17
- 지원 등급
- 플래그십, 코어, 지원됨, 추론 전용, 박물관, 형제 계층
작업
작업은 모델이 반환하는 것입니다. LibreYOLO에는 열일곱 개의 표준 작업 이름이 있으며, 각각은 출력물을 담는 Results 객체의 필드를 이름 짓습니다.
| 과제 | 반환 |
|---|---|
detect | 클래스와 신뢰도를 가진 축 정렬 상자 |
segment | 인스턴스별 마스크, 감지된 객체마다 하나의 마스크 |
semantic | 픽셀당 하나의 클래스 레이블, 인스턴스 구분 없음 |
panoptic | 픽셀당 하나의 겹치지 않는 레이블, 셀 수 있는 것들을 형태가 불분명한 것들과 합치기 |
pose | 개별 인스턴스 키포인트, 박스와 정렬된 행 |
classify | 전체 이미지에 대한 레이블 집합의 확률 |
obb | 회전 각도가 있는 방향 상자 |
point | 박스가 아닌 탐지당 하나의 이미지 좌표 |
depth | 조밀한 상대 역깊이 지도 |
normal | 조밀한 단위 벡터 표면 법선 필드 |
edge | 밀집된 엣지 확률 지도 |
restore | 복원된 RGB 이미지, 디블러링, 노이즈 제거 또는 초해상도를 위해 |
matte | 배경 제거를 위한 0에서 1까지의 부드러운 전경 맵 |
ocr | 읽기 순서대로 된 텍스트 쿼드와 필기록 |
embed | 내적이 일치도를 측정하는 L2 정규화 벡터 |
gaze | 탐지된 얼굴마다 시선 방향 |
mesh | 감지된 각 사람에 대해 포즈가 지정된 3D 몸 |
이름들은 체크포인트 메타데이터와 파일 이름에 나타나는 이름들입니다. 익숙한 별칭은 작업이 전달되는 모든 곳에서 허용되며, 다른 모든 일이 일어나기 전에 정규화됩니다: detection와 det는 detect가 되고, keypoints는 pose가 되며, cls는 classify가 되고, deblur, denoise 및 super-resolution는 모두 restore가 되며, face-recognition와 reid는 embed가 됩니다. 인식되지 않는 이름은 조용히 기본값으로 처리되는 대신 오류를 발생시킵니다.
segment, semantic 및 panoptic는 세 개의 다른 작업이지 세 단어가 하나를 뜻하는 것이 아닙니다. 인스턴스 마스크, 픽셀 단위 레이블 및 병합된 사물-배경 맵은 서로 다른 참값, 서로 다른 평가 지표 및 서로 다른 결과 필드를 가집니다.
모범 계열
계열은 고유한 로딩, 전처리 및 후처리 코드를 가진 하나의 아키텍처 계통입니다. 각 계열은 yolo9, rfdetr 또는 dfine와 같은 FAMILY 식별자, 지원하는 작업, 그리고 제공되는 각 크기의 입력 해상도를 선언합니다.
LibreYOLO()은 클래스라기보다는 팩토리입니다. 경로가 주어지면 파일을 로드하고, 체크포인트 메타데이터에서 계열를 식별하거나, 실패할 경우 텐서 키 자체에서 계열를 식별하여 해당 계열 모델의 인스턴스를 반환합니다. 이것이 탐지기를 교체하는 것이 한 줄의 변경으로 가능한 이유입니다: 반환되는 객체는 동일한 predict, train, val 및 export 인터페이스를 제공하며 동일한 Results 타입을 반환합니다.
# 등록된 모든 계열의 작업, 크기 및 입력 해상도.libreyolo modelsfrom libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9t.pt") print(model.family, model.size, model.task)print(model.input_size)print(model.nb_classes, model.names[0])from libreyolo import LibreYOLO # 별칭은 API 경계에서 정규화됩니다: "keypoints"는 다음으로 해결됩니다# "pose", "det"를 "detect"로, "semantic-segmentation"을 "semantic"으로.model = LibreYOLO("LibreYOLO9t.pt", task="det")print(model.task)하나 이상의 작업을 수행하는 계열은 일반적으로 작업마다 별도의 체크포인트를 게시하며, 종종 각 작업마다 다른 크기 세트를 사용합니다. 대신 일부는 두 개의 런타임 작업 사이에서 하나의 아티팩트를 공유하기도 합니다. 어쨌든 지원되는 작업은 고정된 목록이며, 그 목록에 없는 작업을 요청하면 대략적인 것을 로드하는 대신 메시지에 지원되는 목록이 표시됩니다.
각 계열별 벤치마크와 공개된 가중치가 포함된 전체 목록은 모든 모델에 있습니다.
사이즈
크기는 계열 내의 변형으로, 계열 접두사에 직접 붙여진 소문자 코드로 작성됩니다. 일반적인 글자는 nano의 경우 n, tiny의 경우 t, small의 경우 s, medium의 경우 m, large의 경우 l, xlarge의 경우 x이지만, 코드는 계열별로 다르며 몇몇 계열는 완전히 다른 것을 사용합니다: 크기가 ResNet 깊이인 backbone-명명 코드(r50 또는 r101)나, b0부터 b3까지의 복합 스케일링 코드, 또는 릴리스된 체크포인트를 식별하는 이름 등이 있습니다. YOLOv9은 compact의 경우 c를 사용하며, 다른 계열는 l를 사용합니다.
크기는 입력 해상도도 고정하며, 여러 작업이 있는 계열의 경우 작업마다 해상도가 다를 수 있습니다. 둘 다 계열에서 읽으며, 절대 가정하지 않습니다; libreyolo models가 그것들을 출력합니다.
체크포인트 파일 이름
출판된 모든 가중치 파일은 하나의 스키마를 따릅니다:
Libre<FAMILY><size>[-<task>].pt계열 접두사는 각 계열마다 고정된 문자열이고, 크기는 소문자로 구분 기호 없이 붙으며, 작업 접미사는 하이픈이 접두사로 붙습니다. 검출(detection)은 접미사를 가지지 않으며, YOLO 체크포인트가 항상 사용해온 관례를 따릅니다. 따라서 LibreYOLO9t.pt는 검출기이고 LibreRFDETRn-seg.pt는 같은 계열의 분할(segmentation) 모델입니다.
| 과제 | 접미사 |
|---|---|
detect | |
segment | -seg |
semantic | -sem |
panoptic | -panoptic |
pose | -pose |
classify | -cls |
gaze | -gaze |
obb | -obb |
point | -point |
depth | -depth |
edge | -edge |
normal | -normal |
restore | -restore |
matte | -matte |
ocr | -ocr |
embed | -embed |
mesh | -mesh |
접미사가 없는 작업이 없는 계열은 접미사를 요구할 수 있으며, 따라서 접미사가 없는 이름은 해당 작업의 유효한 체크포인트로 받아들여지지 않습니다. 기본 앱이 아닌 데이터셋에서 학습된 가중치를 게시하는 계열은 데이터셋 이름을 추가 접미사로 덧붙이며, 이 변형은 파일이 다운로드되는 저장소 이름의 일부로 남습니다.
이 스키마 밖에는 세 개의 계층이 있습니다. 프롬프트 가능한 분할 계열, 비전-언어 계열, 그리고 개방 어휘 탐지기는 체크포인트 팩토리에 등록되지 않으며 Libre<FAMILY><size>.pt 파일을 생성하지 않습니다. 그들의 접두사 이름은 대신 다운로드된 Hugging Face 스냅샷이나 프롬프트 가능한 체크포인트를 나타내며, 업스트림 브랜드 대소문자는 의도적으로 그곳에서 유지됩니다.
작업이 결정되는 방법
여러 신호가 작업 이름을 지정할 수 있는 경우, 그것들은 고정된 순서로 참조되며, 가장 먼저 존재하는 신호가 선택됩니다: 먼저 전달한 task 인수, 그 다음 체크포인트 메타데이터에 기록된 작업, 그 후 파일 이름의 작업 접미사, 마지막으로 계열의 기본 작업입니다. 결과는 모델이 구축되기 전에 계열에서 지원하는 작업과 비교되므로, 불일치가 있을 경우 잘못된 출력이 나중에 발생하는 대신 로드 시점에서 실패합니다.
지원 등급
계열은 정확히 하나의 등급에 등록됩니다. 등급은 정확성에 대한 것이 아니라 엔지니어링 주의에 대한 진술입니다: 이는 새로운 기능이 처음 어디에 적용되는지와 무엇이 안전하게 유지되는지를 알려줍니다.
| 계층 | 그것이 의미하는 것 |
|---|---|
| 주력 | 기능은 여기에서 먼저 설계되고 완전히 GPU 검증됩니다 |
| 핵심 | 핵심 학습 가능한 탐지기. 기능은 같은 출시 주기의 플래그십을 따릅니다 |
| 지원됨 | 학습 가능한 계열을 지원합니다. CI에서 녹색을 유지하며, 기회에 따라 토지를 특징으로 합니다 |
| 추론만 | 예측, 검증 및 내보내기. 학습 기능은 적용되지 않습니다 |
| 박물관 | 동결된 전시. 버그 수정만 |
| 형제 자매 등급 | 자체 팩토리과 계약을 가진 별도의 제품 표면 |
각 모델 페이지는 헤더에 해당 모델 계열의 등급을 표시합니다. 두 개의 대표 계열은 CNN 탐지기용 YOLOv9과 변환기 탐지기용 RF-DETR입니다. 특별한 이유가 없다면 그곳에서 시작하십시오.
추론은 누락된 것, 즉 LibreYOLO의 학습 루프만을 말합니다. 예측하고, 검증하며, 계열이 지원하는 경우 모든 작업을 내보냅니다. 이러한 계열에서 train()를 호출하면 이유를 명명하는 NotImplementedError가 발생합니다.