clip-aware-embeddings
dhriyatinandu-bot/claude-skills/.claude/skills/clip-aware-embeddings/SKILL.md
Semantic image-text matching with CLIP and alternatives. Use for image search, zero-shot classification, similarity matching. NOT for counting objects, fine-grained classification (celebrities,
Skill0 starsChanged 7 months ago
- Installs packages
What's in it
- CLIP-Aware Image Embeddings
- MCP Integrations
- Quick Decision Tree
- When to Use This Skill
- Installation
- Basic Usage
- Image Search
- Common Anti-Patterns
- Anti-Pattern 1: "CLIP for Everything"
- Anti-Pattern 2: Fine-Grained Classification
- Anti-Pattern 3: Spatial Understanding
- Anti-Pattern 4: Attribute Binding
- Evolution Timeline
- 2021: CLIP Released
- 2022-2023: Limitations Discovered
- 2024: Alternatives Emerge
- 2025: Current Best Practices
- Validation Script
- Task-Specific Guidance
- Image Search (CLIP ✓)
- Zero-Shot Classification (CLIP ✓)
- Object Counting (CLIP ✗)
- Fine-Grained Classification (CLIP ✗)
- Spatial Reasoning (CLIP ✗)
- Troubleshooting
- Issue: CLIP gives unexpected results
- Issue: Low similarity scores
- Model Selection Guide
- Performance Notes
- Further Reading
Tools it asks for
- Read
- Write
- Edit
- Bash
---
name: clip-aware-embeddings
description: Semantic image-text matching with CLIP and alternatives. Use for image search, zero-shot classification, similarity matching. NOT for counting objects, fine-grained classification (celebrities,
car models), spatial reasoning, or compositional queries. Activate on "CLIP", "embeddings", "image similarity", "semantic search", "zero-shot classification", "image-text matching".
allowed-tools: Read,Write,Edit,Bash
metadata:
category: AI & Machine Learning
pairs-with:
- skill: photo-content-recognition-curation-expert
reason: Content-aware photo processing
- skill: collage-layout-expert
reason: Semantic image matching for layouts
tags:
- clip
- embeddings
- vision
- similarity
- zero-shot
---
# CLIP-Aware Image Embeddings
Smart image-text matching that knows when CLIP works and when to use alternatives.
## MCP Integrations
| MCP | Purpose |
|-----|---------|
| **Firecrawl** | Research latest CLIP alternatives and benchmarks |
| **Hugging Face** (if configured) | Access model cards and documentation |
## Quick Decision Tree
```
Your task:
├─ Semantic search ("find beach images") → CLIP ✓
├─ Zero-shot classification (broad categories) → CLIP ✓
├─ Counting objects → DETR, Faster R-CNN ✗
├─ Fine-grained ID (celebrities, car models) → Specialized model ✗
├─ Spatial relations ("cat left of dog") → GQA, SWIG ✗
└─ Compositional ("red car AND blue truck") → DCSMs, PC-CLIP ✗
```
## When to Use This Skill
✅ **Use for**:
- Semantic image search
- Broad category classification
- Image similarity matching
- Zero-shot tasks on new categories
❌ **Do NOT use for**:
- Counting objects in images
- Fine-grained classification
- Spatial understanding
- Attribute binding
- Negation handling
## Installation
```bash
pip install transformers pillow torch sentence-transformers --break-system-packages
```
**Validation**: Run `python scripts/validate_setup.py`
## Basic Usage
### Image Search
```python
from transformers import CLIPProcessor, CLIPModel
from PIL import Image
model = CLIPModel.from_pretrained("openai/clip-vit-large-patch14")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-large-patch14")
# Embed images
images = [Image.open(f"img{i}.jpg") for i in range(10)]
inputs = processor(images=images, return_tensors="pt")
image_features = model.get_image_features(**inputs)
# Search with text
text_inputs = processor(text=["a beach at sunset"], return_tensors="pt")
text_features = model.get_text_features(**text_inputs)
# Compute similarity
similarity = (image_features @ text_features.T).softmax(dim=0)
```
## Common Anti-Patterns
### Anti-Pattern 1: "CLIP for Everything"
**❌ Wrong**:
```python
# Using CLIP to count cars in an image
prompt = "How many cars are in this image?"
# CLIP cannot count - it will give nonsense results
```
**Why wrong**: CLIP's architecture collapses spatial information into a single vector. It literally cannot count.
**✓ Right**:
```python
from transformers import DetrImageProcessor, DetrForObjectDetection
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")
# Detect objects
results = model(**processor(images=image, return_tensors="pt"))
# Filter for cars and count
car_detections = [d for d in results if d['label'] == 'car']
count = len(car_detections)
```
**How to detect**: If query contains "how many", "count", or numeric questions → Use object detection
---
### Anti-Pattern 2: Fine-Grained Classification
**❌ Wrong**:
```python
# Trying to identify specific celebrities with CLIP
prompts = ["Tom Hanks", "Brad Pitt", "Morgan Freeman"]
# CLIP will perform poorly - not trained for fine-grained face ID
```
**Why wrong**: CLIP trained on coarse categories. Fine-grained faces, car models, flower species require specialized models.
**✓ Right**:
```python
# Use a fine-tuned face recognition model
from transformers import AutoFeatureExtractor, AutoModelForImageClassification
model = AutoModelForImageClassification.from_pretrained(
"microsoft/resnet-50" # Then fine-tune on celebrity dataset
)
# Or use dedicated face recognition: ArcFace, CosFace
```
**How to detect**: If query asks to distinguish between similar items in same category → Use specialized model
---
### Anti-Pattern 3: Spatial Understanding
**❌ Wrong**:
```python
# CLIP cannot understand spatial relationships
prompts = [
"cat to the left of dog",
"cat to the right of dog"
]
# Will give nearly identical scores
```
**Why wrong**: CLIP embeddings lose spatial topology. "Left" and "right" are treated as bag-of-words.
**✓ Right**:
```python
# Use a spatial reasoning model
# Examples: GQA models, Visual Genome models, SWIG
from swig_model import SpatialRelationModel
model = SpatialRelationModel()
result = model.predict_relation(image, "cat", "dog")
# Returns: "left", "right", "above", "below", etc.
```
**How to detect**: If query contains directional words (left, right, above, under, next to) → Use spatial model
---
### Anti-Pattern 4: Attribute Binding
**❌ Wrong**:
```python
prompts = [
"red car and blue truck",
"blue car and red truck"
]
# CLIP often gives similar scores for both
```
**Why wrong**: CLIP cannot bind attributes to objects. It sees "red, blue, car, truck" as a bag of concepts.
**✓ Right - Use PC-CLIP or DCSMs**:
```python
# PC-CLIP: Fine-tuned for pairwise comparisons
from pc_clip import PCCLIPModel
model = PCCLIPModel.from_pretrained("pc-clip-vit-l")
# Or use DCSMs (Dense Cosine Similarity Maps)
```
**How to detect**: If query has multiple objects with different attributes → Use compositional model
---
## Evolution Timeline
### 2021: CLIP Released
- Revolutionary: zero-shot, 400M image-text pairs
- Widely adopted for everything
- Limitations not yet understood
### 2022-2023: Limitations Discovered
- Cannot count objects
- Poor at fine-grained classification
- Fails spatial reasoning
- Can't bind attributes
### 2024: Alternatives Emerge
- **DCSMs**: Preserve patch/token topology
- **PC-CLIP**: Trained on pairwise comparisons
- **SpLiCE**: Sparse interpretable embeddings
### 2025: Current Best Practices
- Use CLIP for what it's good at
- Task-specific models for limitations
- Compositional models for complex queries
**LLM Mistake**: LLMs trained on 2021-2023 data will suggest CLIP for everything because limitations weren't widely known. This skill corrects that.
---
## Validation Script
Before using CLIP, check if it's appropriate:
```bash
python scripts/validate_clip_usage.py \
--query "your query here" \
--check-all
```
Returns:
- ✅ CLIP is appropriate
- ❌ Use alternative (with suggestion)
## Task-Specific Guidance
### Image Search (CLIP ✓)
```python
# Good use of CLIP
queries = ["beach", "mountain", "city skyline"]
# Works well for broad semantic concepts
```
### Zero-Shot Classification (CLIP ✓)
```python
# Good: Broad categories
categories = ["indoor", "outdoor", "nature", "urban"]
# CLIP excels at this
```
### Object Counting (CLIP ✗)
```python
# Use object detection instead
from transformers import DetrImageProcessor, DetrForObjectDetection
# See /references/object_detection.md
```
### Fine-Grained Classification (CLIP ✗)
```python
# Use specialized models
# See /references/fine_grained_models.md
```
### Spatial Reasoning (CLIP ✗)
```python
# Use spatial relation models
# See /references/spatial_models.md
```
---
## Troubleshooting
### Issue: CLIP gives unexpected results
**Check**:
1. Is this a counting task? → Use object detection
2. Fine-grained classification? → Use specialized model
3. Spatial query? → Use spatial model
4. Multiple objects with attributes? → Use compositional model
**Validation**:
```bash
python scripts/diagnose_clip_issue.py --image path/to/image --query "your query"
```
### Issue: Low similarity scores
**Possible causes**:
1. Query too specific (CLIP works better with broad concepts)
2. Fine-grained task (not CLIP's strength)
3. Need to adjust threshold
**Solution**: Try broader query or use alternative model
---
## Model Selection Guide
| Model | Best For | Avoid For |
|-------|----------|-----------|
| CLIP ViT-L/14 | Semantic search, broad categories | Counting, fine-grained, spatial |
| DETR | Object detection, counting | Semantic similarity |
| DINOv2 | Fine-grained features | Text-image matching |
| PC-CLIP | Attribute binding, comparisons | General embedding |
| DCSMs | Compositional reasoning | Simple similarity |
## Performance Notes
**CLIP models**:
- ViT-B/32: Fast, lower quality
- ViT-L/14: Balanced (recommended)
- ViT-g-14: Highest quality, slower
**Inference time** (single image, CPU):
- ViT-B/32: ~100ms
- ViT-L/14: ~300ms
- ViT-g-14: ~1000ms
## Further Reading
- `/references/clip_limitations.md` - Detailed analysis of CLIP's failures
- `/references/alternatives.md` - When to use what model
- `/references/compositional_reasoning.md` - DCSMs and PC-CLIP deep dive
- `/scripts/validate_clip_usage.py` - Pre-flight validation tool
- `/scripts/diagnose_clip_issue.py` - Debug unexpected results
---
*See CHANGELOG.md for version history.*
More agent context in dhriyatinandu-bot/claude-skills
185 other files this repository gives its agents, the first 60 shown.
CLAUDE.md
Skill
- 2000s-visualization-expert.claude/skills/2000s-visualization-expert/SKILL.md
- 2026-legal-research-agent.claude/skills/2026-legal-research-agent/SKILL.md
- adhd-daily-planner.claude/skills/adhd-daily-planner/SKILL.md
- adhd-design-expert.claude/skills/adhd-design-expert/SKILL.md
- admin-dashboard.claude/skills/admin-dashboard/SKILL.md
- agent-creator.claude/skills/agent-creator/SKILL.md
- ai-engineer.claude/skills/ai-engineer/SKILL.md
- ai-video-production-master.claude/skills/ai-video-production-master/SKILL.md
- anthropic-technical-deep-dive.claude/skills/anthropic-technical-deep-dive/SKILL.md
- api-architect.claude/skills/api-architect/SKILL.md
- automatic-stateful-prompt-improver.claude/skills/automatic-stateful-prompt-improver/SKILL.md
- background-job-orchestrator.claude/skills/background-job-orchestrator/SKILL.md
- bot-developer.claude/skills/bot-developer/SKILL.md
- caching-strategies.claude/skills/caching-strategies/SKILL.md
- career-biographer.claude/skills/career-biographer/SKILL.md
- chatbot-analytics.claude/skills/chatbot-analytics/SKILL.md
- checklist-discipline.claude/skills/checklist-discipline/SKILL.md
- claude-ecosystem-promoter.claude/skills/claude-ecosystem-promoter/SKILL.md
- clinical-diagnostic-reasoning.claude/skills/clinical-diagnostic-reasoning/SKILL.md
- cloudflare-worker-dev.claude/skills/cloudflare-worker-dev/SKILL.md
- code-architecture.claude/skills/code-architecture/SKILL.md
- code-necromancer.claude/skills/code-necromancer/SKILL.md
- code-review-checklist.claude/skills/code-review-checklist/SKILL.md
- collage-layout-expert.claude/skills/collage-layout-expert/SKILL.md
- color-contrast-auditor.claude/skills/color-contrast-auditor/SKILL.md
- color-theory-palette-harmony-expert.claude/skills/color-theory-palette-harmony-expert/SKILL.md
- competitive-cartographer.claude/skills/competitive-cartographer/SKILL.md
- component-template-generator.claude/skills/component-template-generator/SKILL.md
- computer-vision-pipeline.claude/skills/computer-vision-pipeline/SKILL.md
- cost-accrual-tracker.claude/skills/cost-accrual-tracker/SKILL.md
- cost-optimizer.claude/skills/cost-optimizer/SKILL.md
- cost-verification-auditor.claude/skills/cost-verification-auditor/SKILL.md
- crisis-detection-intervention-ai.claude/skills/crisis-detection-intervention-ai/SKILL.md
- crisis-response-protocol.claude/skills/crisis-response-protocol/SKILL.md
- cv-creator.claude/skills/cv-creator/SKILL.md
- dark-mode-design-expert.claude/skills/dark-mode-design-expert/SKILL.md
- database-design-patterns.claude/skills/database-design-patterns/SKILL.md
- data-pipeline-engineer.claude/skills/data-pipeline-engineer/SKILL.md
- data-viz-2025.claude/skills/data-viz-2025/SKILL.md
- dependency-management.claude/skills/dependency-management/SKILL.md
- design-accessibility-auditor.claude/skills/design-accessibility-auditor/SKILL.md
- design-archivist.claude/skills/design-archivist/SKILL.md
- design-critic.claude/skills/design-critic/SKILL.md
- design-justice.claude/skills/design-justice/SKILL.md
- design-system-creator.claude/skills/design-system-creator/SKILL.md
- design-system-documenter.claude/skills/design-system-documenter/SKILL.md
- design-system-generator.claude/skills/design-system-generator/SKILL.md
- design-trend-analyzer.claude/skills/design-trend-analyzer/SKILL.md
- devops-automator.claude/skills/devops-automator/SKILL.md
- diagramming-expert.claude/skills/diagramming-expert/SKILL.md
- digital-estate-planner.claude/skills/digital-estate-planner/SKILL.md
- docker-containerization.claude/skills/docker-containerization/SKILL.md
- document-generation-pdf.claude/skills/document-generation-pdf/SKILL.md
- drizzle-migrations.claude/skills/drizzle-migrations/SKILL.md
- drone-cv-expert.claude/skills/drone-cv-expert/SKILL.md
- drone-inspection-specialist.claude/skills/drone-inspection-specialist/SKILL.md
- email-composer.claude/skills/email-composer/SKILL.md
- error-handling-patterns.claude/skills/error-handling-patterns/SKILL.md
- event-detection-temporal-intelligence-expert.claude/skills/event-detection-temporal-intelligence-expert/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
No reports yet. Be the first to say whether it worked.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.

