[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EDP2KBDC3ZSJWJMTYZMNTH":3,"skill-same:01M6EDP2KBDC3ZSJWJMTYZMNTH":45},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":20,"frontMatter":21,"refName":22,"commitSha":23,"skillDirectory":24,"forksCount":25,"repositoryHtmlUrl":26,"repositoryHomepageUrl":27,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M6EDP2KBDC3ZSJWJMTYZMNTH","clip",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FOrchestra-Research\u002FAI-Research-SKILLs\u002Fclip\u002FSKILL.md",[],[5],"2026-11-10 10:12:30",false,"# CLIP - Contrastive Language-Image Pre-Training\n\nOpenAI's model that understands images from natural language.\n\n## When to use CLIP\n\n**Use when:**\n- Zero-shot image classification (no training data needed)\n- Image-text similarity\u002Fmatching\n- Semantic image search\n- Content moderation (detect NSFW, violence)\n- Visual question answering\n- Cross-modal retrieval (image→text, text→image)\n\n**Metrics**:\n- **25,300+ GitHub stars**\n- Trained on 400M image-text pairs\n- Matches ResNet-50 on ImageNet (zero-shot)\n- MIT License\n\n**Use alternatives instead**:\n- **BLIP-2**: Better captioning\n- **LLaVA**: Vision-language chat\n- **Segment Anything**: Image segmentation\n\n## Quick start\n\n### Installation\n\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP.git\npip install torch torchvision ftfy regex tqdm\n```\n\n### Zero-shot classification\n\n```python\nimport torch\nimport clip\nfrom PIL import Image\n\n# Load model\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nmodel, preprocess = clip.load(\"ViT-B\u002F32\", device=device)\n\n# Load image\nimage = preprocess(Image.open(\"photo.jpg\")).unsqueeze(0).to(device)\n\n# Define possible labels\ntext = clip.tokenize([\"a dog\", \"a cat\", \"a bird\", \"a car\"]).to(device)\n\n# Compute similarity\nwith torch.no_grad():\n    image_features = model.encode_image(image)\n    text_features = model.encode_text(text)\n\n    # Cosine similarity\n    logits_per_image, logits_per_text = model(image, text)\n    probs = logits_per_image.softmax(dim=-1).cpu().numpy()\n\n# Print results\nlabels = [\"a dog\", \"a cat\", \"a bird\", \"a car\"]\nfor label, prob in zip(labels, probs[0]):\n    print(f\"{label}: {prob:.2%}\")\n```\n\n## Available models\n\n```python\n# Models (sorted by size)\nmodels = [\n    \"RN50\",           # ResNet-50\n    \"RN101\",          # ResNet-101\n    \"ViT-B\u002F32\",       # Vision Transformer (recommended)\n    \"ViT-B\u002F16\",       # Better quality, slower\n    \"ViT-L\u002F14\",       # Best quality, slowest\n]\n\nmodel, preprocess = clip.load(\"ViT-B\u002F32\")\n```\n\n| Model | Parameters | Speed | Quality |\n|-------|------------|-------|---------|\n| RN50 | 102M | Fast | Good |\n| ViT-B\u002F32 | 151M | Medium | Better |\n| ViT-L\u002F14 | 428M | Slow | Best |\n\n## Image-text similarity\n\n```python\n# Compute embeddings\nimage_features = model.encode_image(image)\ntext_features = model.encode_text(text)\n\n# Normalize\nimage_features \u002F= image_features.norm(dim=-1, keepdim=True)\ntext_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Cosine similarity\nsimilarity = (image_features @ text_features.T).item()\nprint(f\"Similarity: {similarity:.4f}\")\n```\n\n## Semantic image search\n\n```python\n# Index images\nimage_paths = [\"img1.jpg\", \"img2.jpg\", \"img3.jpg\"]\nimage_embeddings = []\n\nfor img_path in image_paths:\n    image = preprocess(Image.open(img_path)).unsqueeze(0).to(device)\n    with torch.no_grad():\n        embedding = model.encode_image(image)\n        embedding \u002F= embedding.norm(dim=-1, keepdim=True)\n    image_embeddings.append(embedding)\n\nimage_embeddings = torch.cat(image_embeddings)\n\n# Search with text query\nquery = \"a sunset over the ocean\"\ntext_input = clip.tokenize([query]).to(device)\nwith torch.no_grad():\n    text_embedding = model.encode_text(text_input)\n    text_embedding \u002F= text_embedding.norm(dim=-1, keepdim=True)\n\n# Find most similar images\nsimilarities = (text_embedding @ image_embeddings.T).squeeze(0)\ntop_k = similarities.topk(3)\n\nfor idx, score in zip(top_k.indices, top_k.values):\n    print(f\"{image_paths[idx]}: {score:.3f}\")\n```\n\n## Content moderation\n\n```python\n# Define categories\ncategories = [\n    \"safe for work\",\n    \"not safe for work\",\n    \"violent content\",\n    \"graphic content\"\n]\n\ntext = clip.tokenize(categories).to(device)\n\n# Check image\nwith torch.no_grad():\n    logits_per_image, _ = model(image, text)\n    probs = logits_per_image.softmax(dim=-1)\n\n# Get classification\nmax_idx = probs.argmax().item()\nmax_prob = probs[0, max_idx].item()\n\nprint(f\"Category: {categories[max_idx]} ({max_prob:.2%})\")\n```\n\n## Batch processing\n\n```python\n# Process multiple images\nimages = [preprocess(Image.open(f\"img{i}.jpg\")) for i in range(10)]\nimages = torch.stack(images).to(device)\n\nwith torch.no_grad():\n    image_features = model.encode_image(images)\n    image_features \u002F= image_features.norm(dim=-1, keepdim=True)\n\n# Batch text\ntexts = [\"a dog\", \"a cat\", \"a bird\"]\ntext_tokens = clip.tokenize(texts).to(device)\n\nwith torch.no_grad():\n    text_features = model.encode_text(text_tokens)\n    text_features \u002F= text_features.norm(dim=-1, keepdim=True)\n\n# Similarity matrix (10 images × 3 texts)\nsimilarities = image_features @ text_features.T\nprint(similarities.shape)  # (10, 3)\n```\n\n## Integration with vector databases\n\n```python\n# Store CLIP embeddings in Chroma\u002FFAISS\nimport chromadb\n\nclient = chromadb.Client()\ncollection = client.create_collection(\"image_embeddings\")\n\n# Add image embeddings\nfor img_path, embedding in zip(image_paths, image_embeddings):\n    collection.add(\n        embeddings=[embedding.cpu().numpy().tolist()],\n        metadatas=[{\"path\": img_path}],\n        ids=[img_path]\n    )\n\n# Query with text\nquery = \"a sunset\"\ntext_embedding = model.encode_text(clip.tokenize([query]))\nresults = collection.query(\n    query_embeddings=[text_embedding.cpu().numpy().tolist()],\n    n_results=5\n)\n```\n\n## Best practices\n\n1. **Use ViT-B\u002F32 for most cases** - Good balance\n2. **Normalize embeddings** - Required for cosine similarity\n3. **Batch processing** - More efficient\n4. **Cache embeddings** - Expensive to recompute\n5. **Use descriptive labels** - Better zero-shot performance\n6. **GPU recommended** - 10-50× faster\n7. **Preprocess images** - Use provided preprocess function\n\n## Performance\n\n| Operation | CPU | GPU (V100) |\n|-----------|-----|------------|\n| Image encoding | ~200ms | ~20ms |\n| Text encoding | ~50ms | ~5ms |\n| Similarity compute | \u003C1ms | \u003C1ms |\n\n## Limitations\n\n1. **Not for fine-grained tasks** - Best for broad categories\n2. **Requires descriptive text** - Vague labels perform poorly\n3. **Biased on web data** - May have dataset biases\n4. **No bounding boxes** - Whole image only\n5. **Limited spatial understanding** - Position\u002Fcounting weak\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fopenai\u002FCLIP ⭐ 25,300+\n- **Paper**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.00020\n- **Colab**: https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fopenai\u002Fclip\u002F\n- **License**: MIT\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FOrchestra-Research\u002FAI-Research-SKILLs\u002Fclip",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill clip",{"tool":37,"command":38},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill clip",{"tool":40,"command":41},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill clip","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FOrchestra-Research\u002FAI-Research-SKILLs\u002Fclip\u002FSKILL.md",true,[],[46,60,70,79,85,92],{"skillNo":47,"name":48,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":49,"categories":50,"keywords":56,"publishedAt":18},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[51],{"categoryNo":52,"categoryName":53,"taxonomyType":54,"taxonomyTypeDesc":55},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[57,58,59],"model","model hierarchy","model hierarchy skill",{"skillNo":61,"name":62,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":66,"publishedAt":18},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[65],{"categoryNo":52,"categoryName":53,"taxonomyType":54,"taxonomyTypeDesc":55},[67,68,69],"MCP","zoom","zoom mcp",{"skillNo":71,"name":72,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":18},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[76,77,78,68],"sdk","zoom apps sdk","apps",{"skillNo":80,"name":81,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":18},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[81],{"skillNo":86,"name":87,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":91,"publishedAt":18},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[90],{"categoryNo":52,"categoryName":53,"taxonomyType":54,"taxonomyTypeDesc":55},[87],{"skillNo":93,"name":94,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":18},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[94]]