ทดลองนำ AI Model — Style-Transfer มาใช้ด้วยตัวเอง แบบง่ายๆ
บทความนี้ ผมจะพาทุกท่านไปทดลองนำ AI model ที่ถูกเทรนไว้แล้วมาใช้งานจริงกันแบบไม่ยาก แค่อ่านตามก็ทำได้เลยครับ โดยเราจะใช้ code ด้วยการ clone จาก git repository ที่ถูกสร้างโดย Logan Engstrom
Style Transfer
Style Transfer ที่เคยถูกกล่าวไว้ในบทความเกี่ยวกับ Supervised Learning คือการให้ AI เรียนรู้สไตล์การวาดภาพ หรือจุดเด่นของภาพ ภาพใดภาพหนึ่ง แล้วนำสไตล์นั้นมาใช้กับภาพอื่นๆ เสมือนศิลปินคนนั้นมาวาดเองกับมือ ดังตัวอย่างด้านล่าง
สามารถนำเทคนิคนี้ไปใช้กับ Video ก็ยังได้ครับ
เริ่มกันเลย
อันดับแรก เราจะต้องลงโปรแกรม miniconda กันก่อนครับ miniconda เป็นเวอร์ชั่นที่เล็กกว่า Anaconda ซึ่งเป็นตัวเต็มนั่นเอง โดยเลือกโหลดแบบ Python 3 ครับ
พอลงเสร็จแล้วเปิด Terminal หรือ Command Line ขึ้นมาลอง พิมพ์คำสั่ง conda
Clone Git Repository
หากเครื่องใครยังไม่มี Git ก็สามารถดาวน์โหลดได้จากลิงก์นี้ครับ
หลังจากลงเรียบร้อยแล้วให้ clone git repository ด้วยคำสั่งด้านล่าง เมื่อเสร็จแล้ว change directory ไปที่ โฟลเดอร์ fast-style-transfer ดูได้เลยครับ
git clone https://github.com/lengstrom/fast-style-transfer.git
เตรียม Environment
สร้าง environment ใหม่ขึ้นมาชื่อ style-transfer โดยใช้คำสั่ง
conda create -n style-transfer python=3
conda activate style-transfer
install package ที่เกี่ยวข้องครับ
conda install tensorflow scipy pillow
pip install moviepy
สุดท้าย import และ ดาวน์โหลด plugin ของ imageio เพื่อให้โปรแกรมโหลดรูปภาพใน format ต่างๆ ได้
python -c "import imageio; imageio.plugins.ffmpeg.download()"
เตรียม Checkpoint
เวลาเราเทรน AI model ใดๆ ก็ตามเราสามารถที่จะ save เก็บเอาไว้ และ load กลับมาเทรนต่อได้ ทั้งนี้เนื่องจากบาง model อาจใช้เวลาหลายๆ วันในการเทรน เราเรียก model ที่เรา save เก็บเอาไว้ว่า checkpoint
Logan Engstrom ได้เทรน model โดยใช้ภาพวาดที่แตกต่างกันเก็บเอาไว้เป็น checkpoint ต่างๆ ซึ่งเราจะนำมาใช้กันครับ
เลือกโหลด checkpoint ที่ Logan แชร์ไว้ใน Google Drive มาใส่ไว้ในโฟลเดอร์ fast-style-transfer ในเครื่องเราครับ สามารถโหลดมากี่ model ก็ได้
เตรียมภาพที่จะเอามาใช้เป็น Input
ขั้นตอนต่อไปคือการเตรียมภาพที่จะเอามาใช้เป็นภาพตั้งต้นหรือ input ครับ โดยถ้าภาพเราละเอียดมากเวลาที่ใช้ประมวลผลก็นานขึ้น ผมเลือกใช้ภาพที่มีความละเอียดด้านยาว 630 pixel ขนาดนี้ไม่เกิน 10 วินาที ก็เสร็จแล้วครับ (รันบน MacBook Pro)
ตั้งชื่อไฟล์ เช่น input.jpg แล้วนำไปวางไว้ในโฟลเดอร์ fast-style-transfer เช่นกัน
รัน Model
และเมื่อทุกอย่างพร้อมเราก็รันคำสั่งด้านล่างกันดูได้เลยครับ แทนที่ชื่อ input.jpg และ output.jpg ตามต้องการ
python evaluate.py --checkpoint ./udnie.ckpt --in-path input.jpg --out-path ./output.jpg
และนี่คือผลลัพธ์ที่ได้ครับ
เป็นยังไงบ้างครับ หวังว่าการทำ AI จะมีความสนุกอยู่บ้างไม่มากก็น้อยนะครับ : ) ใครทำแล้ว ได้ผลที่น่าสนใจยังไงก็มาแชร์ลิงก์ไว้ให้ดูกันนะครับ
โดย: ภูริ เฉลิมเกียรติสกุล