<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jidapa Klinsanga</title>
    <description>The latest articles on DEV Community by Jidapa Klinsanga (@jidapa).</description>
    <link>https://dev.to/jidapa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1415875%2F5f81054e-6953-4d66-bd33-5c15672533fc.jpg</url>
      <title>DEV Community: Jidapa Klinsanga</title>
      <link>https://dev.to/jidapa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jidapa"/>
    <language>en</language>
    <item>
      <title>การค้นหาภาพด้วยโมเดล Contrastive Language-Image Pre-Training (CLIP)</title>
      <dc:creator>Jidapa Klinsanga</dc:creator>
      <pubDate>Sun, 14 Apr 2024 11:46:57 +0000</pubDate>
      <link>https://dev.to/jidapa/kaarkhnhaaphaaphdwyomedl-contrastive-language-image-pre-training-clip-1dao</link>
      <guid>https://dev.to/jidapa/kaarkhnhaaphaaphdwyomedl-contrastive-language-image-pre-training-clip-1dao</guid>
      <description>&lt;p&gt;OpenAI ได้เปิดตัวโมเดลที่ใช้การเทรนจากรูปภาพและข้อความควบคู่กันไปซึ่งจะแตกต่างจากโมเดลตัวอื่นๆ ที่CLIP สามารถหาสิ่งที่ผู้ใช้ต้องการได้แม้ผู้ใช้งานจะไม่ได้ใช้คำที่หมายถึงสิ่งนั้นๆ โดยตรง เพราะการทำงานของมันคือการแปลงข้อมูลทั้งสองที่ใช้เทรนนั้นทั้งรูปและข้อความนั้นมาแปลงให้กลายเป็น shared embedding space ในส่วนที่มีคอนเซ็ปร่วมหรือเหมือนกัน &lt;/p&gt;

&lt;p&gt;บทความนี้จะมาแสดงตัวอย่าในการค้นหารูปภาพที่มีค่า Vector ตรงหรือใกล้เคียงกับข้อความที่มอบคำสั่งไว้ด้วยวิธี Sentence Transformer ผ่านตัวโมเดล CLIP ใน Python ผ่านการทำงานทุกขั้นตอนใน Google Colab แหล่ง dataset ที่ใช้นั้นนำมาจาก  Unsplash Dataset Lite โดยมีdataset ทั้งหมดถึง 25k&lt;/p&gt;

&lt;p&gt;โดย Sentence Transformer คือ โครงสร้างการทำงานของ Python ที่ใช้ในการแปลงข้อความ ประโยคและรูปภาพให้เป็นตัวเลขและอยู่ในรูปแบบของ Vector &lt;/p&gt;




&lt;h2&gt;
  
  
  ขั้นตอนการทำ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;ขั้นที่ 1: ทำการติดตั้ง Sentence Transformer &lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9w7ozrk2h35f5u6vauwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9w7ozrk2h35f5u6vauwz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;ขั้นที่ 2: นำเข้า libraries ที่ต้องใช้พร้อมกับโหลด CLIP โมเดลเข้ามาโดยใช้ Sentence Transformer &lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
ในขั้นตอนนี้โมเดลจะถูกดาวน์โหลดโดยอัตโนมัติ โมเดล CLIP ที่ใช้ในงานนี้คือ ViT-B-32 สามารถใช้คำสั่ง &lt;code&gt;clip.available_models()&lt;/code&gt; เพื่อดูโมเดลตัวอื่นๆ ของ CLIP ที่สามารถใช้งานได้เช่นกัน&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rlnb1gjqhd1j6da55xu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rlnb1gjqhd1j6da55xu.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;ขั้นที่ 3: โหลดข้อมูลชุดรูปภาพลง Google Colab&lt;/u&gt;&lt;br&gt;
ใน Code นี้จะมีคำสั่งนำเข้าข้อมูลเข้ามาอัตโนมัติหากไม่ได้ดาวน์โหลดไว้มาตั้งแต่แรก&lt;br&gt;
สามารถดูหรือดาวน์โหลดชุด dataset ได้ที่ &lt;a href="https://unsplash.com/data" rel="noopener noreferrer"&gt;HERE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rf740u0d582r4yjqco4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rf740u0d582r4yjqco4.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
เมื่อนำเข้าเสร็จสิ้นจะแสดงให้เห็นจำนวนชุด dataset ทั้งหมดดังนี้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkgt16f76n7h7s1uorq5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkgt16f76n7h7s1uorq5.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;ขั้นที่4: ทำการคำนวณค่า Embeddings&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
ในขั้นตอนนี้ได้ใช้วิธี Destribute pre-computed เพื่อให้การคำนวณรวดเร็วยิ่งขึ้น&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fize3vjr0o3creiziu5i9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fize3vjr0o3creiziu5i9.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เลขที่ได้จะเป็นชุดข้อมูลทั้งหมดหลังจากทำ Embeddings&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnslpbe0panuz2mk27r36.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnslpbe0panuz2mk27r36.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;ขั้นที่5: ทำการสร้าง Function สำหรับ Search&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffngyrexg5m6kmo15gwg9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffngyrexg5m6kmo15gwg9.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;ขั้นที่6: ทดสอบการใช้งานและความแม่นยำของโมเดลด้วยคำสั่ง search&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;search("...")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;ตัวอย่างการใช้งานและผลลัพธ์ที่ได้ :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2u88an0ijdaeti51jl20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2u88an0ijdaeti51jl20.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozfa42cjp1c2zbhyug94.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozfa42cjp1c2zbhyug94.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc15caep0o7a0jds1udtn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc15caep0o7a0jds1udtn.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faghrshihlecvy2c90a6l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faghrshihlecvy2c90a6l.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;สรุปผล&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;การค้นหาภาพด้วยโมเดล Contrastive Language-Image Pre-Training (CLIP)  นั้นสามารถคำนวณและให้ผลลัพธ์ที่แม่นยำและมีประสิทธิภาพ ใช้เวลาในการคำนวณน้อยแม้จะไม่ได้ Prompt คำสั่งกับสิ่งที่ต้องการค้นหาโดยตรงดังตัวอย่างแรก CLIP จึงเป็นเหมือนแนวทางการสร้างโมเดลเพื่อการค้นหาและจำแนกประเภทข้อความ ประโยคและรูปภาพให้มีประสิทธิภาพและความแม่นยำมากยิ่งขึ้นด้วยวิธีการที่ตัวของโมเดลนั้นใช้ข้อความและรูปภาพในการเทรนไปควบคู่กัน&lt;/p&gt;

&lt;p&gt;หากต้องการให้ผลลัพธ์แม่นยำมากขึ้นก็ควรที่จะเพิ่มชุดข้อมูลรูปและข้อความในการเทรนมากยิ่งขึ้นเพื่อเพิ่มประสิทธิภาพของตัวโมเดล&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ข้อมูลจาก/Dataset&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/research/clip" rel="noopener noreferrer"&gt;https://openai.com/research/clip&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/openai/CLIP" rel="noopener noreferrer"&gt;https://github.com/openai/CLIP&lt;/a&gt;&lt;br&gt;
&lt;a href="https://unsplash.com/data" rel="noopener noreferrer"&gt;https://unsplash.com/data&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
