Grounding DINO

Grounding DINO는 IDEA Research가 개발한 오픈셋 객체 탐지기로, 고정 클래스 목록 대신 자유 텍스트 프롬프트를 기준으로 이미지 점수를 계산합니다. LibreYOLO는 이를 오픈 보캐뷸러리 탐지기 계층의 예측 전용 계열로 래핑합니다.

작업
detection
크기
t, b at 800 px
설치
pip install libreyolo
지원 티어
별도 티어, v부터 지원. 자체 팩토리와 계약을 갖춘 별도의 제품 영역입니다.
업스트림
IDEA Research의 Grounding DINO, Apache-2.0. 논문, 소스
라이선스
코드 MIT, 가중치 Apache-2.0. 상업적 사용

설치

Grounding DINO는 openvocab extra가 필요한 LibreYOLO의 오픈 보캐뷸러리 탐지기 계층으로 불러옵니다.

bash
pip install "libreyolo[openvocab]"

이 extra는 해당 계층이 호출하는 Hugging Face 라이브러리인 transformerstimm을 가져옵니다.

예측

Grounding DINO는 LibreYOLO가 LibreYOLO()로 불러오는 체크포인트가 아닙니다. 형제 팩토리인 LibreOpenVocab으로 불러오며, 처음 사용할 때 Hugging Face 스냅샷을 내려받아 weights/ 아래에 캐시합니다.

Python
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("grounding-dino-t")model.set_classes(["person", "dog", "skateboard"]) result = model.predict(SAMPLE_IMAGE, conf=0.25)for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
텍스트 임계값
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("grounding-dino-b")model.set_classes(["remote control", "school bus"]) # conf는 바운딩 박스 점수로, text_threshold는 디코딩된 구문의 토큰# 점수로 필터링합니다. 설정하지 않으면 둘 다 기본값은 0.25입니다.result = model.predict(SAMPLE_IMAGE, conf=0.25, text_threshold=0.3)print(result.names)

set_classes()는 유지되는 텍스트 보캐뷸러리를 설정합니다. 목록을 바꾸려면 다시 호출하고 기본 COCO-80 레이블을 유지하려면 생략합니다. Grounding DINO는 자체 텍스트 출력에서 자유 형식 구문을 디코딩하고 그 구문을 보캐뷸러리에 다시 매핑합니다. 정규화된 정확한 일치가 우선이며 전체 토큰 일치도 허용합니다. 모호하거나 일치하지 않는 구문은 추측하지 않고 버리므로 school busbus 또는 school 하나에만 매핑되지 않습니다. 텍스트 인코더의 토큰 제한을 초과할 만큼 긴 보캐뷸러리는 여러 프롬프트로 나누고 별도의 순전파로 실행한 다음 max_det으로 제한된 하나의 탐지 집합으로 다시 병합합니다.

API 호환성을 위해 iou를 허용하지만 경고만 표시하고 아무것도 하지 않습니다. 여기서는 NMS를 실행하지 않기 때문입니다. imgszaugment=True는 즉시 거부됩니다. transformers 프로세서가 크기 조정을 담당하며 테스트 시점 증강은 이 계층의 범위를 벗어납니다. 단일 이미지의 predict()는 목록이 아닌 하나의 Results를 반환합니다. 여러 결과를 얻으려면 디렉터리나 이미지 목록을 전달하거나 비디오 소스에 stream=True를 사용합니다. 이 계열에는 CLI 경로가 없습니다. libreyolo predictLibreYOLO()를 통해 .pt 체크포인트만 불러오므로 LibreOpenVocab 계열은 Python에서 실행합니다. 소스 유형과 스트리밍은 예측을 참조합니다.

변형

체크포인트는 tb 두 가지입니다. 크기를 지정하지 않으면 t가 이 계층의 기본값입니다. 두 체크포인트 모두 transformersGroundingDinoForObjectDetection을 통해 공식 IDEA Research 릴리스를 미러링하며, 업스트림 파일을 보존하는 LibreYOLO 호스팅 Hugging Face 스냅샷으로 한 번 내려받습니다. 이 계열의 정확도 또는 지연 시간 수치는 아직 게시되지 않았습니다.

학습, 데이터셋 검증, 내보내기는 모두 이 계층의 범위를 벗어납니다. train(), val(), export()는 모두 조건 없이 NotImplementedError를 일으킵니다. 공개된 체크포인트를 감싼 예측 전용 래퍼입니다.

체크포인트

이 계열에서 공개된 모든 가중치 파일입니다.

파일입력(px)가중치 라이선스
Detection
LibreGroundingDINOt.pt800apache-2.0
LibreGroundingDINOb.pt800apache-2.0

위의 모든 파일은 현재 LibreYOLO 조직에 있으며 처음 사용할 때 내려받습니다.

라이선스

내려받는 특정 가중치의 Hugging Face 저장소에서 라이선스를 확인하십시오. LibreYOLO 조직의 모든 체크포인트에는 라이선스가 있으며 한 계열 안에서도 항상 같지는 않습니다. 해당 저장소가 신뢰할 수 있는 기준입니다. 아래 요약은 이 페이지를 마지막으로 검증했을 때 적용된 내용을 설명합니다.

관련 라이선스에 관한 설명이며 법률 자문이 아닙니다. 상업적으로 중요한 사안이라면 라이선스를 직접 읽고 별도의 법률 자문을 받으십시오.

원작
Grounding DINO, IDEA Research
업스트림 라이선스
Apache-2.0
LibreYOLO 코드
MIT
가중치
Apache-2.0, huggingface.co/LibreYOLO에 다시 게시됨
해석
Apache-2.0 is a permissive license, so this checkpoint 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 Grounding DINO model source of its own: LibreGroundingDINO calls the Apache-2.0 `transformers` implementation, `GroundingDinoForObjectDetection`, directly, and downloads the official checkpoint into a LibreYOLO-hosted mirror repository that preserves the upstream snapshot files.

인용

@article{liu2023grounding,
  title={Grounding dino: Marrying dino with grounded pre-training for open-set object detection},
  author={Liu, Shilong and Zeng, Zhaoyang and Ren, Tianhe and Li, Feng and Zhang, Hao and Yang, Jie and Li, Chunyuan and Yang, Jianwei and Su, Hang and Zhu, Jun and others},
  journal={arXiv preprint arXiv:2303.05499},
  year={2023}
}

github.com/IDEA-Research/GroundingDINO#black_nib-citation에 있는 저자의 인용 블록에서 복사했습니다.

LibreYOLO v1.5.0에서 검증되었습니다. 이 페이지의 지원 표, 체크포인트, 벤치마크 수치는 출시된 라이브러리와 공개된 가중치에서 생성되며 수동으로 작성되지 않습니다.