목표
전체 이미지 넣으면 → 자동으로 크롭 이미지 만들고 → 라벨 추출해서 → 관련 설명 추출까지 해서 DB 저장하는 자동 파이프라인
yolo의 문제점
라벨링이 부실. YOLO(COCO 기반)의 한계가 있다. 특히 예술 이미지처럼 도메인 특화 시각 정보가 많은 경우에는 일반 detection 모델로는 정확한 라벨 추출이 어렵다.
→ 그래서 라벨 없이도 잘 감지하고 설명 생성까지 연결할 수 있는 모델이나 API를 사용해야한다.
좋은 이미지 객체 감지 + 라벨링 대안 (API 또는 모델)
1. BLIP-2 / MiniGPT-4
✅ 이미지에서 자연어로 라벨 생성 가능
즉: bounding box 없이도 “이건 고양이야”, “이건 빨간 꽃이야” 같은 설명 가능
장점단점
| 자연어 라벨링, 설명 생성 가능 | 속도 느림 (LLM 기반), 객체 위치 알 수 없음 |
| 객체 단위로 의미 설명 가능 | 정확한 crop 자동화 불가능 (bbox X) |
활용 방식:
- YOLO or SAM으로 crop
- crop 이미지를 BLIP-2에 넣어 → 라벨 또는 캡션 생성
→ 이걸 객체 설명으로 사용
실행: Hugging Face 모델 또는 salesforce/blip2-opt-2.7b, MiniGPT-4 활용 가능
2. Grounding DINO + Segment Anything (SAM)
✅ 사전 라벨 없이 객체 감지 + 원하는 텍스트로 라벨링 가능
구성설명
| Grounding DINO | “text prompt”를 주면 해당 객체 위치 감지 (zero-shot 가능) |
| SAM | 감지된 박스를 정밀하게 세그멘테이션 가능 (crop 품질 ↑) |
활용 방식:
- text prompt 없이 → 모든 객체 bbox 감지 (pseudo-labeling)
- crop 후 → CLIP, BLIP로 의미 추론
예시:
text_prompt = ["cat", "flower", "dragonfly", "pheasant"]
# or grounding dino + blip 조합으로 자동 탐지
2025.05.20 - [분류 전체보기] - Grounding DINO + SAM
Grounding DINO + SAM
트러블 슈팅맥북에서는 torchvision이 깔리지 않는다.conda 가상환경을 만들어서 여기에 설치하여 실행했다. 2025.05.20 - [ICT 드림업 - 무물 매니저/개발] - Conda 가상환경 만들기 Conda 가상환경 만들기파
kcw9609.tistory.com
3. Google Cloud Vision API / Amazon Rekognition / Azure Vision
✅ 실제 서비스에서 사용되는 이미지 분석 API들
항목특징
| Google Cloud Vision | 객체 감지, 라벨링, landmark, logo 인식 가능 |
| AWS Rekognition | 사람/텍스트/사물/장면 탐지 |
| Azure Computer Vision | 이미지 내 시각 특징 자동 추출 |
장점:
- 관리 필요 없음
- 모델 튜닝 없이 사용 가능
단점: - API 비용
- 사용자 지정 label 불가 (일반적인 객체에 한정)
4. yolo + Sentence_transformers
2025.05.20 - [ICT 드림업 - 무물 매니저/개발] - [Eyedia] YOLO + sentence_transformers
[Eyedia] YOLO + sentence_transformers
입력 이미지# ==============================# 파일 업로드 (이미지 선택)# ==============================from google.colab import filesuploaded = files.upload()import osimage_path = next(iter(uploaded)) # 업로드된 첫 번째 파일 이름#
kcw9609.tistory.com
🔍 비교 요약
방식라벨링 방식위치 제공설명 생성추천도
| YOLO(COCO) | 미리 정의된 80개 라벨 | ✅ | ❌ | ⚠️ 낮음 |
| Grounding DINO + SAM | 사용자가 prompt로 라벨 정의 | ✅ | ❌ | ✅ 매우 높음 |
| BLIP-2 / MiniGPT | 이미지에서 자연어 라벨 생성 | ❌ | ✅ | ✅ 높음 |
| Google Vision API | 사물 라벨 제공 | ✅ | ❌ | ⚠️ 보통 |
| CLIP + 텍스트 매칭 | crop → 가장 유사한 텍스트 찾기 | ❌ | ❌ | ⚠️ 제한적 |
Grounding DINO + SAM + BLIP-2
- DINO로 위치 감지
- SAM으로 crop
- crop 이미지를 BLIP-2로 넣어 → 라벨링 + 설명 추출
→ 자동화에 가장 적합 + 의미 보존 + 유연함
오류1
ModuleNotFoundError Traceback (most recent call last)
/usr/local/lib/python3.11/dist-packages/transformers/utils/import_utils.py in _get_module(self, module_name)
1085 try:
-> 1086 return importlib.import_module("." + module_name, self.__name__)
1087 except Exception as e:
24 frames
ModuleNotFoundError: No module named 'torch.sparse._triton_ops'
The above exception was the direct cause of the following exception:
RuntimeError Traceback (most recent call last)
/usr/local/lib/python3.11/dist-packages/transformers/utils/import_utils.py in _get_module(self, module_name)
1086 return importlib.import_module("." + module_name, self.__name__)
1087 except Exception as e:
-> 1088 raise RuntimeError(
1089 f"Failed to import {self.__name__}.{module_name} because of the following error (look up to see its"
1090 f" traceback):\n{e}"
RuntimeError: Failed to import transformers.models.bert.modeling_bert because of the following error (look up to see its traceback):
No module named 'torch.sparse._triton_ops'