<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="386556" data-post-id="386556">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><code>Xav</code> is awesome, thanks to all who work on it. I have lots of other ideas I can use it for!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="386556" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/183">Post #182</a>
	                </div>
	            </div>
              <div id="likers-container-386556" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="386556"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #182"></div>
  </section>
</div>
    <div class="postbit" id="387695" data-post-id="387695">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sodapopcan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sodapopcan/120/34668_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sodapopcan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey Kip, congrats on the release!</p>
<p>It seem <code>image_detection</code> does not exist.  I though the link was just broken but I can find anything similarly named in hex.pm.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387695" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/184">Post #183</a>
	                </div>
	            </div>
              <div id="likers-container-387695" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387695"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #183"></div>
  </section>
</div>
    <div class="postbit" id="387697" data-post-id="387697">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>It seem <code>image_detection</code> does not exist</p>
</blockquote>
<p>You are right, it’s still a work in progress on my side. If its something you desperately need I can try and accelerate, otherwise its a couple of weeks off.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387697" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/185">Post #184</a>
	                </div>
	            </div>
              <div id="likers-container-387697" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387697"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #184"></div>
  </section>
</div>
    <div class="postbit" id="387698" data-post-id="387698">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sodapopcan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sodapopcan/120/34668_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sodapopcan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Oh no, not desperately by any means.  Just dipping back into a project that requires image processing but still in the experimentation phase.  Thanks!!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387698" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/186">Post #185</a>
	                </div>
	            </div>
              <div id="likers-container-387698" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387698"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #185"></div>
  </section>
</div>
    <div class="postbit" id="387766" data-post-id="387766">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Today’s fun library: <a href="https://hex.pm/packages/image_vision" rel="nofollow">image_vision</a> is now available on hex.</p>
<p><code>ImageVision</code> is a simple, opinionated image vision library for Elixir. It sits alongside the <a href="https://hex.pm/packages/image" rel="nofollow"><code>image</code></a> library and answers three questions about any image - illustrated best with some extracts from the included <a href="https://github.com/elixir-image/image_vision/blob/main/livebooks/image_vision.livemd" rel="nofollow">livebook</a>:</p>
<h3><a name="p-387766-whats-in-the-image-1" class="anchor" href="#p-387766-whats-in-the-image-1" aria-label="Heading link" rel="nofollow"></a>What’s in the image?</h3>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/2/3/230cb48fe948404e04b7e98002144305c1b8c5b8.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/230cb48fe948404e04b7e98002144305c1b8c5b8" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/2/3/230cb48fe948404e04b7e98002144305c1b8c5b8_2_469x600.jpeg" alt="image" data-base62-sha1="503VOuwVdg7vKB1UbaafDNZ3eQg" width="469" height="600" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/2/3/230cb48fe948404e04b7e98002144305c1b8c5b8_2_469x600.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/2/3/230cb48fe948404e04b7e98002144305c1b8c5b8_2_703x900.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/optimized/3X/2/3/230cb48fe948404e04b7e98002144305c1b8c5b8_2_938x1200.jpeg 2x" data-dominant-color="B0B2B0"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1200×1533 75.9 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<h3><a name="p-387766-where-are-the-objects-in-the-image-2" class="anchor" href="#p-387766-where-are-the-objects-in-the-image-2" aria-label="Heading link" rel="nofollow"></a>Where are the objects in the image?</h3>
<p>Where are the objects, and then apply an image overlay to visualise them.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/f/d/fddceee23331a948a30ddd5cfcdde621514d1169.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/fddceee23331a948a30ddd5cfcdde621514d1169" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/f/d/fddceee23331a948a30ddd5cfcdde621514d1169_2_540x600.jpeg" alt="image" data-base62-sha1="AdM97pTeqk1YLxosSSgfxr4EyqR" width="540" height="600" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/f/d/fddceee23331a948a30ddd5cfcdde621514d1169_2_540x600.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/f/d/fddceee23331a948a30ddd5cfcdde621514d1169_2_810x900.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/optimized/3X/f/d/fddceee23331a948a30ddd5cfcdde621514d1169_2_1080x1200.jpeg 2x" data-dominant-color="9EA6AF"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1200×1331 119 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<p>What are the positions and dimensions of the objects?</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/0/1/01268e356def90c85b11f9c0df90cce262cee63d.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/01268e356def90c85b11f9c0df90cce262cee63d" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/0/1/01268e356def90c85b11f9c0df90cce262cee63d.jpeg" alt="image" data-base62-sha1="ab56bt7PiXTvhxaJK2y8ol4abX" width="690" height="395" data-dominant-color="ABADB0"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1200×687 39.4 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<h3><a name="p-387766-which-pixels-belong-to-which-object-in-the-image-3" class="anchor" href="#p-387766-which-pixels-belong-to-which-object-in-the-image-3" aria-label="Heading link" rel="nofollow"></a>Which pixels belong to which object in the image?</h3>
<p>What are the objects at a pixel mask level. Then visualise them using color masks.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/2/e/2eada55c00fe45e719de26319692d879cd709483.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/2eada55c00fe45e719de26319692d879cd709483" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/2/e/2eada55c00fe45e719de26319692d879cd709483_2_690x583.jpeg" alt="image" data-base62-sha1="6EVZTCzHG7IotgseQmQ6UyTSsU3" width="690" height="583" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/2/e/2eada55c00fe45e719de26319692d879cd709483_2_690x583.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/2/e/2eada55c00fe45e719de26319692d879cd709483_2_1035x874.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/original/3X/2/e/2eada55c00fe45e719de26319692d879cd709483.jpeg 2x" data-dominant-color="7F7B7F"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1200×1014 89.8 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387766" data-batch-url="/posts/batch_likers">
                        9
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/187">Post #186</a>
	                </div>
	            </div>
              <div id="likers-container-387766" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387766"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #186"></div>
  </section>
</div>
    <div class="postbit" id="388129" data-post-id="388129">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Three new additions to the <a href="https://github.com/elixir-image" rel="nofollow"><code>elixir-image</code></a> family hit Hex this week.</p>
<h3><a name="p-388129-image_ocrhttpshexpmpackagesimage_ocr-1" class="anchor" href="#p-388129-image_ocrhttpshexpmpackagesimage_ocr-1" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/image_ocr" rel="nofollow"><code>image_ocr</code></a></h3>
<p><code>image_ocr</code> is an idiomatic Elixir interface to Tesseract 5 via a NIF over the C++ API. Plain text or per-word results with confidence and bounding boxes, auto-normalisation of pixel format before recognition, flexible locale handling, <code>+</code>-joined combinations), and a <code>NimblePool</code>-backed pool for parallel recognition across schedulers.</p>
<p>Tesseract is quite a large install so it’s not available pre-compiled but there are install instructions for most common platforms.</p>
<h3><a name="p-388129-image_qrcodehttpshexpmpackagesimage_qrcode-2" class="anchor" href="#p-388129-image_qrcodehttpshexpmpackagesimage_qrcode-2" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/image_qrcode" rel="nofollow"><code>image_qrcode</code></a></h3>
<p>A QR encoding (via Nayuki’s <a href="https://github.com/nayuki/QR-Code-generator" rel="nofollow">QR-Code-generator</a>) and decoding (via <a href="https://github.com/dlbeer/quirc" rel="nofollow">quirc</a>). Both run on dirty CPU schedulers and ship as precompiled NIFs for Linux (gnu/musl × x86_64/aarch64/armv7), macOS (x86_64/arm64) and Windows (x86_64) — typically no compiler toolchain required at install time.</p>
<h3><a name="p-388129-image_lens_correctionhttpshexpmpackagesimage_lens_correction-3" class="anchor" href="#p-388129-image_lens_correctionhttpshexpmpackagesimage_lens_correction-3" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/image_lens_correction" rel="nofollow"><code>image_lens_correction</code></a></h3>
<p>.Corrections for the four most common camera-lens defects: radial (barrel/pincushion) distortion, vignetting, lateral chromatic aberration, and geometric projection.</p>
<p>Driven by the fabulous <a href="https://github.com/lensfun/lensfun" rel="nofollow">Lensfun</a> community calibration database (1,013 camera bodies, 1,459 lens calibration sets) bundled as a compact ~5 MB Erlang term file.</p>
<p>The EXIF-driven pipeline (<code>Image.LensFun.Correct.correct/2</code>) reads the camera/lens identification, focal length, aperture and focus distance from image metadata, looks up and interpolates the calibration, and applies all enabled corrections in one pass.</p>
<p>This one has been lingering half-finished for a couple of years so its feels good to get it ready for release.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="388129" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/188">Post #187</a>
	                </div>
	            </div>
              <div id="likers-container-388129" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="388129"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #187"></div>
  </section>
</div>
    <div class="postbit" id="388131" data-post-id="388131">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a href="https://hex.pm/packages/image_vision" rel="nofollow">image_vision</a> was also updated this week with some cool new models; all callable in a couple of lines without ML expertise.</p>
<h3><a name="p-388131-imagefacedetection-1" class="anchor" href="#p-388131-imagefacedetection-1" aria-label="Heading link" rel="nofollow"></a>Image.FaceDetection</h3>
<p>Fast face detection with bounding boxes, confidence scores, and the five canonical landmarks (eyes, nose tip, mouth corners). The default model is <a href="https://huggingface.co/opencv/face_detection_yunet" rel="nofollow">YuNet 2023-March</a>. It’s quite small at ~340 KB and runs on the CPU.</p>
<p>Includes <code>crop_largest/2</code> as the entry point for face-aware crop bias (think <code>gravity: :face</code>).</p>
<h3><a name="p-388131-imagebackground-2" class="anchor" href="#p-388131-imagebackground-2" aria-label="Heading link" rel="nofollow"></a>Image.Background</h3>
<p>Provides foreground/background separation.</p>
<ul>
<li>
<p><code>remove/2</code> returns the input with the background made transparent;</p>
</li>
<li>
<p><code>mask/2</code> returns the foreground mask alone for custom compositing.</p>
</li>
</ul>
<p>The default model is <a href="https://huggingface.co/onnx-community/BiRefNet_lite-ONNX" rel="nofollow">BiRefNet lite</a> (MIT, ~210 MB) via Ortex. There’s a mix task for downloading it.</p>
<p>There is a <a href="https://github.com/elixir-image/image_vision/blob/main/livebooks/background.livemd" rel="nofollow">livebook</a> for exploring background removal.</p>
<h3><a name="p-388131-imagecaptioning-3" class="anchor" href="#p-388131-imagecaptioning-3" aria-label="Heading link" rel="nofollow"></a>Image.Captioning</h3>
<p>Provides a natural-language description of an image. <code>caption/2</code> returns strings like <code>"a man riding a horse with a bird of prey"</code>.</p>
<p>The default model is <a href="https://huggingface.co/Salesforce/blip-image-captioning-base" rel="nofollow">BLIP base</a> (BSD-3-Clause, ~990 MB) via Bumblebee. Heavy enough that it isn’t auto-started by default — flip <code>autostart: true</code> or add it to your supervisor.</p>
<p>There is a <a href="https://github.com/elixir-image/image_vision/blob/main/livebooks/captioning.livemd" rel="nofollow">livebook</a> for exploring image captioning.</p>
<h3><a name="p-388131-imagezeroshot-4" class="anchor" href="#p-388131-imagezeroshot-4" aria-label="Heading link" rel="nofollow"></a>Image.ZeroShot</h3>
<p>Classify an image against arbitrary labels you supply at call time with no retraining.</p>
<ul>
<li><code>classify/3</code> returns ranked <code>{label, score}</code> pairs;</li>
<li><code>label/3</code> returns just the best;</li>
<li><code>similarity/3</code> computes CLIP-space cosine similarity between two images.</li>
</ul>
<p>The default model is <a href="https://huggingface.co/openai/clip-vit-base-patch32" rel="nofollow">OpenAI CLIP ViT-B/32</a> (MIT, ~600 MB). The default prompt template <code>"a photo of {label}"</code> boosts accuracy on bare-noun labels; override or disable as needed.</p>
<p>There is a <a href="https://github.com/elixir-image/image_vision/blob/main/livebooks/zero_shot.livemd" rel="nofollow">livebook</a> for exploring zero-shot classification.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="388131" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/189">Post #188</a>
	                </div>
	            </div>
              <div id="likers-container-388131" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="388131"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #188"></div>
  </section>
</div>
    <div class="postbit" id="388156" data-post-id="388156">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="xsteve" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  xsteve
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I tried to access the github repository for image_ocr - it does not seem to be available/public:</p>
<p><a href="https://github.com/kipcole9/image_ocr" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/kipcole9/image_ocr</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="388156" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/190">Post #189</a>
	                </div>
	            </div>
              <div id="likers-container-388156" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="388156"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #189"></div>
  </section>
</div>
    <div class="postbit" id="388157" data-post-id="388157">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="xsteve" data-post="190" data-topic="47568">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/x/8dc957/48.png" class="avatar"> xsteve:</div>
<blockquote>
<p>it does not seem to be available/public:</p>
</blockquote>
</aside>
<p>Whoops, incorrect source link. Its <a href="https://github.com/elixir-image/image_ocr" class="inline-onebox" rel="nofollow">GitHub - elixir-image/image_ocr: Elixir NIF-based interface to Tesseract OCR · GitHub</a></p>
<p>I’ve published an update to hex with the correct source link as well.  Thanks for letting me know.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="388157" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/191">Post #190</a>
	                </div>
	            </div>
              <div id="likers-container-388157" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="388157"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #190"></div>
  </section>
</div>
    <div class="postbit" id="389400" data-post-id="389400">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Today brings the introduction of something I’ve been working on since I started <a href="https://hex.pm/packages/image" rel="nofollow">image</a> four years ago.</p>
<ul>
<li>An Plug-based image CDN, published in <a href="https://hex.pm/packages/image_plug" rel="nofollow">image_plug</a></li>
<li>A set of responsive image components, published in <a href="https://hex.pm/packages/image_components" rel="nofollow">image_components</a></li>
<li>An <a href="https://github.com/elixir-image/image_playground" rel="nofollow">image playground</a> for testing and experimentation.</li>
</ul>
<h3><a name="p-389400-why-build-a-cdn-plug-when-there-are-so-many-image-cdns-already-1" class="anchor" href="#p-389400-why-build-a-cdn-plug-when-there-are-so-many-image-cdns-already-1" aria-label="Heading link" rel="nofollow"></a>Why build a CDN plug when there are so many image CDNs already?</h3>
<ul>
<li>They can be very expensive, when the requirements are often not that complex</li>
<li>Its easy to get tied to one CDN URL structure or API and its difficult to change</li>
<li>Its complex if you want to iteratively test in a local environment</li>
<li>Because you might want to build and offer an image CDN as a corporate resource or as a SaaS offering.</li>
<li>Because <a href="https://libvips.org" rel="nofollow">libvips</a> via the fabulous <a href="https://hex.pm/packages/vix" rel="nofollow">vix</a></li>
</ul>
<h3><a name="p-389400-features-2" class="anchor" href="#p-389400-features-2" aria-label="Heading link" rel="nofollow"></a>Features</h3>
<ul>
<li>High performance, optimised imaging pipeline. <code>libvips</code> via <code>vix</code> means we have access to the <code>libvips</code> streaming pipeline that can stream images from disk, or S3 and transform them in a space and time efficient manner.</li>
<li>A pluggable API server build over a common AST-like imaging pipeline allowing you to build your own API structure over the standard imaging pipeline.</li>
<li>Out-of-the-box support of the URL API structure of several of the big commercial CDN players so that you can use <code>image_plug</code> in development and a commercial CDN in production without code change. Ships with support for:
<ul>
<li><a href="https://www.cloudflare.com/en-au/developer-platform/products/cloudflare-images/" rel="nofollow">Cloudflare Images</a></li>
<li><a href="https://cloudinary.com" rel="nofollow">Cloudinary</a></li>
<li><a href="https://www.imgix.com" rel="nofollow">Imgix</a></li>
<li><a href="https://imagekit.io" rel="nofollow">ImageKit</a></li>
<li><a href="https://iiif.io" rel="nofollow">IIIF</a> servers</li>
</ul>
</li>
<li>Simple client library, <code>image_components</code> that is used for all CDNs modelled on the excellent <a href="https://github.com/ascorbic/unpic-img" rel="nofollow">unpic</a> javascript library.</li>
<li>Support generation of optimised image sets with the <code>.image</code> component as well as art direction if you use the <code>.picture</code> component.</li>
</ul>
<h3><a name="p-389400-live-playground-3" class="anchor" href="#p-389400-live-playground-3" aria-label="Heading link" rel="nofollow"></a>Live Playground</h3>
<p>You can experiment with what these libraries provide in a simple playground at <a href="https://image-playground.fly.dev" rel="nofollow">https://image-playground.fly.dev</a>. Be gentle, it bundles the image, image_vision (with several large ML models), Nx and EXLA libraries all on a <a href="http://fly.io" rel="nofollow">fly.io</a>’s small VPS server.</p>
<p>If you want to explore more, run the playground on your own machines. It’s mountable inside a Phoenix app or you can run it standalone.  The <a href="https://github.com/elixir-image/image_playground" rel="nofollow">README</a> has all the relevant info.</p>
<h3><a name="p-389400-example-4" class="anchor" href="#p-389400-example-4" aria-label="Heading link" rel="nofollow"></a>Example</h3>
<p>An example image in the playground, face-aware cropping, some vignetting added.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/a/d/ad785831b1098634bc09168396dbe354774b3bd3.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/ad785831b1098634bc09168396dbe354774b3bd3" title="Screenshot 2026-05-23 at 3.09.29 pm" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/a/d/ad785831b1098634bc09168396dbe354774b3bd3.jpeg" alt="Screenshot 2026-05-23 at 3.09.29 pm" data-base62-sha1="oKAreHgoOCXDqKIAhmerUut07Wr" width="690" height="915" data-dominant-color="2E2D2D"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">Screenshot 2026-05-23 at 3.09.29 pm</span><span class="informations">1200×1593 160 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="389400" data-batch-url="/posts/batch_likers">
                        21
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/192">Post #191</a>
	                </div>
	            </div>
              <div id="likers-container-389400" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="389400"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #191"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/47568/load_more?page=20">Load more posts (4 remaining)</a>
</div></template></turbo-stream>