FOMO
FOMO는 그리드 기반 포인트 위치 추정기입니다. 저해상도 그리드의 각 셀을 배경 또는 객체 중심으로 분류하며 바운딩 박스 회귀는 사용하지 않습니다. LibreYOLO는 포인트 작업에서 이를 지원합니다.
- 작업
- point
- 크기
- 설치
pip install libreyolo- 지원 티어
- 지원, v부터 지원. 보조 학습 가능 모델입니다. CI 통과 상태를 유지하며 기능은 여건에 따라 추가됩니다.
- 라이선스
- 코드 MIT, 가중치 MIT. 상업적 사용
설치
FOMO에는 기본 패키지 외에 추가 항목이 필요하지 않습니다.
pip install libreyolo예측
이 사이트의 다른 모든 계열과 달리 LibreFOMO 가중치는 자동으로 내려받지 않습니다.
LibreYOLO("LibreFOMOs-point.pt")는 디스크에서 해당 파일을 찾고 Hugging Face에서
가져오는 대신 파일 이름을 명시한 ValueError를 일으킵니다. 먼저
LibreYOLO 조직에서 체크포인트를 내려받아 로컬
경로로 불러오거나 자체적으로 학습합니다(아래 학습 참조).
from libreyolo import LibreYOLO, SAMPLE_IMAGE # LibreFOMO 가중치는 자동으로 내려받지 않습니다(아래 체크포인트 참조).# 이미 로컬에 내려받은 체크포인트를 지정합니다.model = LibreYOLO("./LibreFOMOs-point.pt")result = model(SAMPLE_IMAGE, save=True) for point in result.points: print(point.cls, point.conf, point.xy)libreyolo predict model=./LibreFOMOs-point.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True결과에는 boxes 대신 points 페이로드가 들어 있습니다. 각 행은
x, y, class, confidence이며 result.points.data 또는 .xy, .xyn, .cls,
.conf 접근자로 사용할 수 있습니다. 억제할 바운딩 박스가 없으므로 설정할 iou
임계값도 없습니다. predict(..., nms_radius=1)은 두 탐지를 모두 유지하기 위해
얼마나 많은 그리드 셀 간격이 필요한지 제어하며, 로더가 인식하려면 파일 이름에
FOMO의 -point 작업 접미사가 있어야 합니다. 소스, 스트리밍, 결과 처리는
예측을 참조합니다.
변형
s, m, l 크기 3개는 점차 넓어지는 MobileNetV2 방식 백본을 각각 더 큰 고정
입력 해상도에서 사용하며, 모두 단일 1x1 분류 헤드 뒤에 배치됩니다. 이 페이지에는
이 계열의 벤치마크 표가 없습니다. 아래 표의 체크포인트 파일 크기가 현재 공개된
크기별 지표 중 가장 명확합니다.
학습
from libreyolo import LibreYOLO model = LibreYOLO("./LibreFOMOs-point.pt")model.train( data="my-dataset.yaml", epochs=40, batch=32, lr0=3e-4,)# imgsz를 전달해야 합니다. CLI 기본값은 640이며 s 체크포인트는# 네이티브 크기 96만 허용합니다.libreyolo train model=./LibreFOMOs-point.pt data=my-dataset.yaml imgsz=96 epochs=40 batch=32 lr0=3e-4imgsz는 자유롭게 선택할 수 없습니다. 기본값은 불러온 체크포인트의 네이티브
해상도이며 다른 값을 전달하면 예상 크기를 명시한 ValueError가 발생합니다. 해당
크기는 s가 96, m이 192, l이 224입니다. CLI의 imgsz 기본값은 640이므로
libreyolo train 명령에서 체크포인트에 맞는 값을 명시해야 합니다.
다른 값을 지정하지 않으면 트레이너는 Adam, 배치 32, lr0=3e-4, 가중치 감쇠
없이 40 에폭을 실행합니다. 일반적인 장면에서는 거의 모든 그리드 셀이 배경이므로
셀별 교차 엔트로피 손실에서 전경 클래스에 배경보다 100배 높은 가중치를 적용합니다.
EMA와 혼합 정밀도는 모두 기본적으로 비활성화되며, LibreYOLO의 다른 곳에서 사용하는
기하학적 또는 색상 증강도 적용하지 않습니다. 모자이크, mixup, HSV 지터, 뒤집기,
회전, 이동, 전단 값이 모두 0입니다.
공개된 LibreFOMO 체크포인트는 이 경로로 COCO에서 처음부터 학습했습니다.
데이터셋과 로거는 학습을 참조합니다.
검증
val()은 이 계열용 그리드 수준 검증기로 디스패치합니다. 다른 포인트 작업과 공유하는
포인트 일치 metrics/precision, metrics/recall, metrics/mAP@ 키와 함께
신뢰도 임계값 및 nms_radius 값을 순회하며, 최상의 F1 조합을
metrics/grid_F1, metrics/grid_precision, metrics/grid_recall,
metrics/grid_mean_distance로 게시합니다. 해당 조합을 생성한 임계값과 반지름은
decode/threshold와 decode/nms_radius로 게시합니다.
from libreyolo import LibreYOLO model = LibreYOLO("./LibreFOMOs-point.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/grid_F1"])print(metrics["metrics/grid_precision"], metrics["metrics/grid_recall"])libreyolo val model=./LibreFOMOs-point.pt data=my-dataset.yaml내보내기
| 작업 | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| point | point to ONNX: 지원함 | point to TorchScript: 지원함 | point to ExecuTorch: 지원함 | point to TensorRT: 지원함 | point to OpenVINO: 지원함 | point to Paddle: 지원하지 않음 | point to MNN: 지원하지 않음 | point to RKNN: 지원하지 않음 | point to ncnn: 지원함 | point to TFLite: 지원하지 않음 | point to CoreML: 지원하지 않음 | point to Core AI: 지원함 |
내보낸 아티팩트는 파일 접미사에 따라 LibreYOLO()로 다시 불러오므로 .onnx 또는
.engine 파일이 체크포인트처럼 동작하며 동일한 Results를 반환합니다.
LibreYOLO를 설치하지 않고 런타임에서 그래프를 직접 실행할 수도 있지만 이 경우
전처리와 후처리를 직접 작성해야 합니다.
from libreyolo import LibreYOLO model = LibreYOLO("./LibreFOMOs-point.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=./LibreFOMOs-point.pt format=onnxfrom libreyolo import LibreYOLO, SAMPLE_IMAGE # 팩토리는 파일 접미사로 라우팅하므로 내보낸 아티팩트도# 체크포인트처럼 불러오며 동일한 Results 객체를 반환합니다.model = LibreYOLO("./LibreFOMOs-point.onnx")result = model(SAMPLE_IMAGE) print(result.points.xy)체크포인트
이 계열에서 공개된 모든 가중치 파일입니다. 어떤 파일도 자동으로 내려받지 않습니다.
연결된 Hugging Face 페이지에서 원하는 파일을 가져와 로컬 경로를 LibreYOLO()에
전달합니다.
| 파일 | 입력(px) | 가중치 라이선스 |
|---|---|---|
| point | ||
| LibreFOMOs-point.pt | mit | |
| LibreFOMOm-point.pt | mit | |
| LibreFOMOl-point.pt | mit | |
위의 모든 파일은 현재 LibreYOLO 조직에 있으며 처음 사용할 때 내려받습니다.
라이선스
내려받는 특정 가중치의 Hugging Face 저장소에서 라이선스를 확인하십시오. LibreYOLO 조직의 모든 체크포인트에는 라이선스가 있으며 한 계열 안에서도 항상 같지는 않습니다. 해당 저장소가 신뢰할 수 있는 기준입니다. 아래 요약은 이 페이지를 마지막으로 검증했을 때 적용된 내용을 설명합니다.
관련 라이선스에 관한 설명이며 법률 자문이 아닙니다. 상업적으로 중요한 사안이라면 라이선스를 직접 읽고 별도의 법률 자문을 받으십시오.
- 원작
- FOMO (Faster Objects, More Objects), Edge Impulse
- 업스트림 라이선스
- MIT
- LibreYOLO 코드
- MIT
- 가중치
- MIT, huggingface.co/LibreYOLO에 다시 게시됨
- 해석
- FOMO is a technique Edge Impulse introduced through a blog post and its product documentation, not a code release, so there is no upstream repository or license to inherit. LibreYOLO's architecture is an original MobileNetV2-style reimplementation of the published description, and the LibreFOMO checkpoints are trained from scratch on COCO, so both the code and these weights are MIT, LibreYOLO's own. They are also not auto-downloaded: LibreYOLO("LibreFOMOs-point.pt") looks for that file locally and raises rather than fetching it, so get the checkpoint from the Hugging Face repository first. The name FOMO and the technique it describes remain Edge Impulse's.
연결할 FOMO 업스트림 코드 저장소는 없습니다. Edge Impulse는 블로그 게시물과 제품 문서에서 이 기법을 설명하지만 FOMO 학습 또는 추론 코드를 공개하지 않았습니다. 여기의 아키텍처와 학습은 해당 공개 설명을 바탕으로 한 LibreYOLO 자체 구현이며, 공개된 LibreFOMO 체크포인트는 COCO에서 처음부터 학습했습니다. 따라서 코드와 이러한 가중치는 모두 LibreYOLO 자체 MIT입니다. FOMO 이름과 해당 이름이 설명하는 기법은 계속 Edge Impulse에 속합니다.