OWLv2
OWLv2는 Google Research가 개발한 오픈 보캐뷸러리 객체 탐지기로, CLIP 방식 인코더의 텍스트 임베딩을 기준으로 이미지 영역의 점수를 계산합니다. LibreYOLO는 이를 오픈 보캐뷸러리 탐지기 계층의 예측 전용 계열로 래핑합니다.
- 작업
- detection
- 크기
- b16, l14 at 960 to 1008 px
- 설치
pip install libreyolo- 지원 티어
- 별도 티어, v부터 지원. 자체 팩토리와 계약을 갖춘 별도의 제품 영역입니다.
- 라이선스
- 코드 MIT, 가중치 Apache-2.0. 상업적 사용
설치
OWLv2는 openvocab extra가 필요한 LibreYOLO의 오픈 보캐뷸러리 탐지기 계층으로
불러옵니다.
pip install "libreyolo[openvocab]"이 extra는 해당 계층이 호출하는 Hugging Face 라이브러리인 transformers와
timm을 가져옵니다.
예측
OWLv2는 LibreYOLO가 LibreYOLO()로 불러오는 체크포인트가 아닙니다. 형제 팩토리인
LibreOpenVocab으로 불러오며, 처음 사용할 때 Hugging Face 스냅샷을 내려받아
weights/ 아래에 캐시합니다.
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("owlv2-b16")model.set_classes(["person", "dog", "skateboard"]) result = model.predict(SAMPLE_IMAGE, conf=0.1)for box in result.boxes: print(box.cls, box.conf, box.xyxy)from libreyolo import LibreOpenVocab, SAMPLE_IMAGE # set_classes()를 생략하면 계층의 기본 COCO-80 보캐뷸러리를 유지합니다.model = LibreOpenVocab("owlv2-l14")result = model.predict(SAMPLE_IMAGE, conf=0.1)print(result.names)set_classes()는 유지되는 텍스트 보캐뷸러리를 설정합니다. 목록을 바꾸려면 다시
호출하고 기본 COCO-80 레이블을 유지하려면 생략합니다. 각 레이블은 텍스트 타워에
도달하기 전에 고정 프롬프트 템플릿으로 래핑되며, 이는 transformers의
Owlv2ForObjectDetection 학습 방식과 일치합니다.
OWLv2에는 텍스트 토큰 임계값이 없습니다. conf만 탐지를 필터링하며
text_threshold를 전달하면 오류가 발생합니다. API 호환성을 위해 iou를
허용하지만 경고만 표시하고 아무것도 하지 않습니다. 여기서는 NMS를 실행하지 않기
때문입니다. imgsz와 augment=True는 즉시 거부됩니다. transformers
프로세서가 크기 조정을 담당하며 테스트 시점 증강은 이 계층의 범위를 벗어납니다.
단일 이미지의 predict()는 목록이 아닌 하나의 Results를 반환합니다. 여러
결과를 얻으려면 디렉터리나 이미지 목록을 전달하거나 비디오 소스에 stream=True를
사용합니다. 이 계열에는 CLI 경로가 없습니다. libreyolo predict는
LibreYOLO()를 통해 .pt 체크포인트만 불러오므로 LibreOpenVocab 계열은
Python에서 실행합니다. 소스 유형과 스트리밍은 예측을 참조합니다.
변형
체크포인트는 b16(base, 패치 크기 16)과 l14(large, 패치 크기 14) 두
가지입니다. 크기를 지정하지 않으면 b16이 이 계층의 기본값입니다. 두 체크포인트
모두 transformers의 Owlv2ForObjectDetection을 통해 공식 Google Research
릴리스를 미러링하며, 업스트림 파일을 보존하는 LibreYOLO 호스팅 Hugging Face
스냅샷으로 한 번 내려받습니다. 이 계열의 정확도 또는 지연 시간 수치는 아직
게시되지 않았습니다.
학습, 데이터셋 검증, 내보내기는 모두 이 계층의 범위를 벗어납니다. train(),
val(), export()는 모두 조건 없이 NotImplementedError를 일으킵니다. 공개된
체크포인트를 감싼 예측 전용 래퍼입니다.
체크포인트
이 계열에서 공개된 모든 가중치 파일입니다.
| 파일 | 입력(px) | 가중치 라이선스 |
|---|---|---|
| Detection | ||
| LibreOWLv2b16.pt | 960 | apache-2.0 |
| LibreOWLv2l14.pt | 1008 | apache-2.0 |
위의 모든 파일은 현재 LibreYOLO 조직에 있으며 처음 사용할 때 내려받습니다.
라이선스
내려받는 특정 가중치의 Hugging Face 저장소에서 라이선스를 확인하십시오. LibreYOLO 조직의 모든 체크포인트에는 라이선스가 있으며 한 계열 안에서도 항상 같지는 않습니다. 해당 저장소가 신뢰할 수 있는 기준입니다. 아래 요약은 이 페이지를 마지막으로 검증했을 때 적용된 내용을 설명합니다.
관련 라이선스에 관한 설명이며 법률 자문이 아닙니다. 상업적으로 중요한 사안이라면 라이선스를 직접 읽고 별도의 법률 자문을 받으십시오.
- 원작
- OWLv2, Google Research
- 업스트림 라이선스
- Apache-2.0
- LibreYOLO 코드
- MIT
- 가중치
- Apache-2.0, huggingface.co/LibreYOLO에 다시 게시됨
- 해석
- Apache-2.0 is a permissive license, so these checkpoints can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. LibreYOLO vendors no OWLv2 model source of its own: LibreOWLv2 calls the Apache-2.0 `transformers` implementation, `Owlv2ForObjectDetection`, directly, and downloads the official checkpoints into a LibreYOLO-hosted mirror repository that preserves the upstream snapshot files.
인용
@article{minderer2023scaling,
title={Scaling Open-Vocabulary Object Detection},
author={Matthias Minderer, Alexey Gritsenko, Neil Houlsby},
journal={NeurIPS},
year={2023},
}github.com/google-research/scenic/blob/main/scenic/projects/owl_vit/README.md#references에 있는 저자의 인용 블록에서 복사했습니다.