PageSourceSearch

https://blog-olive-eight-23.vercel.app/assets/index.html-ZPO4U7qk.js

js blog-olive-eight-23.vercel.app collected 2026-10-03 06:18:39 UTC 20,132 bytes, 61 lines download raw bytes

1import{_ as a}from"./plugin-vue_export-helper-DlAUqK2U.js";import{o as n,c as s,e}from"./app-BSCYujwr.js";const t="/assets/image-BI99gN_n.jpg",p={},o=e(`<h1 id="clip" tabindex="-1"><a class="header-anchor" href="#clip"><span>CLIP</span></a></h1><h2 id="introduction" tabindex="-1"><a class="header-anchor" href="#introduction"><span>Introduction</span></a></h2><h2 id="prepare-pre-trained-model" tabindex="-1"><a class="header-anchor" href="#prepare-pre-trained-model"><span>prepare pre trained model</span></a></h2><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token function">curl</span> <span class="token parameter variable">-LO</span> https://huggingface.co/laion/CLIP-ViT-B-16-laion2B-s34B-b88K/resolve/main/open_clip_pytorch_model.bin
2</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="prepare-base-image" tabindex="-1"><a class="header-anchor" href="#prepare-base-image"><span>prepare base image</span></a></h2><ul><li>the dependency <code>open-clip-torch</code> is too big to install, so we need to prepare a base image with it installed</li><li>prepare <code>base.dockerfile</code><ul><li><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>FROM docker.io/library/python:3.12.1-bullseye
3
4RUN pip install -i https://mirrors.aliyun.com/pypi/simple/ open-clip-torch==2.24.0
5
6</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li><li>build the base image <ul><li><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token function">podman</span> build <span class="token parameter variable">-t</span> open-clip-base:latest <span class="token parameter variable">-f</span> base.dockerfile <span class="token builtin class-name">.</span>
7</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li></ul></li></ul><h2 id="text-vectorization" tabindex="-1"><a class="header-anchor" href="#text-vectorization"><span>Text Vectorization</span></a></h2><ol><li>prepare <code>text-vectorization.py</code><ul><li><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">import</span> os
8<span class="token keyword">import</span> torch
9<span class="token keyword">import</span> open_clip
10
11model_path <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">&quot;MODEL_PATH&quot;</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">&quot;/app/model/wiki.en.bin&quot;</span><span class="token punctuation">)</span>
12model_name <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">&quot;MODEL_NAME&quot;</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">&quot;ViT-B-16&quot;</span><span class="token punctuation">)</span>
13sentence <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">&quot;SENTENCE&quot;</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">&quot;hello world&quot;</span><span class="token punctuation">)</span>
14device <span class="token operator">=</span> <span class="token string">&quot;cuda&quot;</span> <span class="token keyword">if</span> torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>is_available<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">else</span> <span class="token string">&quot;cpu&quot;</span>
15model<span class="token punctuation">,</span> _<span class="token punctuation">,</span> preprocess <span class="token operator">=</span> open_clip<span class="token punctuation">.</span>create_model_and_transforms<span class="token punctuation">(</span>
16    model_name<span class="token operator">=</span><span class="token string">&quot;ViT-B-16&quot;</span><span class="token punctuation">,</span> pretrained<span class="token operator">=</span>model_path<span class="token punctuation">,</span> device<span class="token operator">=</span>device
17<span class="token punctuation">)</span>
18tokenizer <span class="token operator">=</span> open_clip<span class="token punctuation">.</span>get_tokenizer<span class="token punctuation">(</span>model_name<span class="token operator">=</span><span class="token string">&quot;ViT-B-16&quot;</span><span class="token punctuation">)</span>
19text <span class="token operator">=</span> tokenizer<span class="token punctuation">(</span><span class="token punctuation">[</span>sentence<span class="token punctuation">]</span><span class="token punctuation">)</span>
20<span class="token keyword">with</span> torch<span class="token punctuation">.</span>no_grad<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>amp<span class="token punctuation">.</span>
20autocast<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
21    text_features <span class="token operator">=</span> model<span class="token punctuation">.</span>encode_text<span class="token punctuation">(</span>text<span class="token punctuation">)</span>
22    text_features <span class="token operator">/=</span> text_features<span class="token punctuation">.</span>norm<span class="token punctuation">(</span>dim<span class="token operator">=</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> keepdim<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span>
23    <span class="token keyword">print</span><span class="token punctuation">(</span>text_features<span class="token punctuation">)</span>
24
25</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li><li>run with container <ul><li><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token function">podman</span> run <span class="token parameter variable">--rm</span> <span class="token punctuation">\\</span>
26    <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/open_clip_pytorch_model.bin:/app/model/open_clip_pytorch_model.bin <span class="token punctuation">\\</span>
27    <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/text-vectorization.py:/app/text-vectorization.py <span class="token punctuation">\\</span>
28    <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODEL_PATH</span><span class="token operator">=</span>/app/model/open_clip_pytorch_model.bin <span class="token punctuation">\\</span>
29    <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODEL_NAME</span><span class="token operator">=</span>ViT-B-16 <span class="token punctuation">\\</span>
30    <span class="token parameter variable">-e</span> <span class="token assign-left variable">SENTENCE</span><span class="token operator">=</span><span class="token string">&quot;On a freezing New Year&#39;s Eve, a poor young girl, shivering, bareheaded and barefoot, unsuccessfully tries to sell matches in the street.&quot;</span> <span class="token punctuation">\\</span>
31    <span class="token parameter variable">-it</span> localhost/clip-test:latest <span class="token punctuation">\\</span>
32        python3 /app/text-vectorization.py
33</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li></ol><h2 id="image-vectorization" tabindex="-1"><a class="header-anchor" href="#image-vectorization"><span>Image Vectorization</span></a></h2><ol><li>prepare <code>image-vectorization.py</code><ul><li><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">
33import</span> os
34<span class="token keyword">import</span> torch
35<span class="token keyword">import</span> open_clip
36
37<span class="token keyword">from</span> PIL <span class="token keyword">import</span> Image
38
39model_path <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">&quot;MODEL_PATH&quot;</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">&quot;/app/model/wiki.en.bin&quot;</span><span class="token punctuation">)</span>
40model_name <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">&quot;MODEL_NAME&quot;</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">&quot;ViT-B-16&quot;</span><span class="token punctuation">)</span>
41image_path <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">&quot;IMAGE_PATH&quot;</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">&quot;/app/image.jpg&quot;</span><span class="token punctuation">)</span>
42device <span class="token operator">=</span> <span class="token string">&quot;cuda&quot;</span> <span class="token keyword">if</span> torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>is_available<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">else</span> <span class="token string">&quot;cpu&quot;</span>
43model<span class="token punctuation">,</span> _<span class="token punctuation">,</span> preprocess <span class="token operator">=</span> open_clip<span class="token punctuation">.</span>create_model_and_transforms<span class="token punctuation">(</span>
44    model_name<span class="token operator">=</span><span class="token string">&quot;ViT-B-16&quot;</span><span class="token punctuation">,</span> pretrained<span class="token operator">=</span>model_path<span class="token punctuation">,</span> device<span class="token operator">=</span>device
45<span class="token punctuation">)</span>
46image <span class="token operator">=</span> preprocess<span class="token punctuation">(</span>Image<span class="token punctuation">.</span><span class="token builtin">open</span><span class="token punctuation">(</span>image_path<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>unsqueeze<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
47<span class="token keyword">with</span> torch<span class="token punctuation">.</span>no_grad<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>amp<span class="token punctuation">.</span>autocast<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
48    image_features <span class="token operator">=</span> model<span class="token punctuation">.</span>encode_image<span class="token punctuation">(</span>image<span class="token punctuation">)</span>
49    image_features <span class="token operator">/=</span> image_features<span class="token punctuation">.</span>norm<span class="token punctuation">(</span>dim<span class="token operator">=</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> keepdim<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span>
50    <span class="token keyword">print</span><span class="token punctuation">(</span>image_features<span class="token punctuation">)</span>
51
52</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li><li>prepare <code>image.jpg</code><ul><li><img src="`+t+`" alt="image.jpg" tabindex="0" loading="lazy"><figcaption>image.jpg</figcaption></li></ul></li><li>run with container <ul><li><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token function">
52podman</span> run <span class="token parameter variable">--rm</span> <span class="token punctuation">\\</span>
53    <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/open_clip_pytorch_model.bin:/app/model/open_clip_pytorch_model.bin <span class="token punctuation">\\</span>
54    <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/image-vectorization.py:/app/image-vectorization.py <span class="token punctuation">\\</span>
55    <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/image.jpg:/app/image.jpg <span class="token punctuation">\\</span>
56    <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODEL_PATH</span><span class="token operator">=</span>/app/model/open_clip_pytorch_model.bin <span class="token punctuation">\\</span>
57    <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODEL_NAME</span><span class="token operator">=</span>ViT-B-16 <span class="token punctuation">\\</span>
58    <span class="token parameter variable">-e</span> <span class="token assign-left variable">IMAGE_PATH</span><span class="token operator">=</span>/app/image.jpg <span class="token punctuation">\\</span>
59    <span class="token parameter variable">-it</span> localhost/clip-test:latest <span class="token punctuation">\\</span>
60        python3 /app/image-vectorization.py
61</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li></ol><h2 id="reference" tabindex="-1"><a class="header-anchor" href="#reference"><span>reference</span></a></h2><ul><li>https://github.com/openai/CLIP</li><li>https://github.com/mlfoundations/open_clip</li><li>https://huggingface.co/laion/CLIP-ViT-B-16-laion2B-s34B-b88K</li></ul>`,12),i=[o];function l(c,r){return n(),s("div",null,i)}const k=a(p,[["render",l],["__file","index.html.vue"]]),m=JSON.parse('{"path":"/articles/data-lake/examples/clip/","title":"CLIP","lang":"en-US","frontmatter":{"description":"CLIP Introduction prepare pre trained model prepare base image the dependency open-clip-torch is too big to install, so we need to prepare a base image with it installed prepare...","head":[["meta",{"property":"og:url","content":"https://mister-hope.github.io/articles/data-lake/examples/clip/"}],["meta",{"property":"og:site_name","content":"GeekCity"}],["meta",{"property":"og:title","content":"CLIP"}],["meta",{"property":"og:description","content":"CLIP Introduction prepare pre trained model prepare base image the dependency open-clip-torch is too big to install, so we need to prepare a base image with it installed prepare..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2025-10-09T08:52:15.000Z"}],["meta",{"property":"article:author","content":"ben.wangz"}],["meta",{"property":"article:modified_time","content":"2025-10-09T08:52:15.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"CLIP\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2025-10-09T08:52:15.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"ben.wangz\\",\\"url\\":\\"/intro/me.md\\"}]}"]]},"headers":[{"level":2,"title":"Introduction","slug":"introduction","link":"#introduction","children":[]},{"level":2,"title":"prepare pre trained model","slug":"prepare-pre-trained-model","link":"#prepare-pre-trained-model","children":[]},{"level":2,"title":"prepare base image","slug":"prepare-base-image","link":"#prepare-base-image","children":[]},{"level":2,"title":"Text Vectorization","slug":"text-vectorization","link":"#text-vectorization","children":[]},{"level":2,"title":"Image Vectorization","slug":"image-vectorization","link":"#image-vectorization","children":[]},{"level":2,"title":"reference","slug":"reference","link":"#reference","children":[]}
61],"git":{"createdTime":1759999935000,"updatedTime":1759999935000,"contributors":[{"name":"ben.wangz","email":"[email protected]","commits":1}]},"readingTime":{"minutes":0.66,"words":197},"filePathRelative":"articles/data-lake/examples/clip/README.md","localizedDate":"October 9, 2025","excerpt":"\\n<h2>Introduction</h2>\\n<h2>prepare pre trained model</h2>\\n<div class=\\"language-bash\\" data-ext=\\"sh\\" data-title=\\"sh\\"><pre class=\\"language-bash\\"><code><span class=\\"token function\\">curl</span> <span class=\\"token parameter variable\\">-LO</span> https://huggingface.co/laion/CLIP-ViT-B-16-laion2B-s34B-b88K/resolve/main/open_clip_pytorch_model.bin\\n</code></pre></div>","autoDesc":true}');export{k as comp,m as data};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.