AiToon เริ่มเตรียมข้อมูล (ต่อ 2 ตัดใบหน้า)

Source: Deep Learning on Medium


ตอนที่แล้วเราเอารูปดิบมากองไว้ได้แล้ว ขั้นตอนไปคือการสกัดเอาใบหน้าออกมา ซึ่งแน่นอนว่าผมคงไม่มา crop รูปหน้าทีละรูปออกมาอยู่แล้ว ต้องก้มกราบแทบเท้าไปยัง คนทำ https://github.com/qhgz2013/anime-face-detector repo นี้ขึ้นมา ที่ทำให้เราได้ tool ในการ extract หน้าออกมา ซึ่งจำเป็นที่จะต้องใช้ tensorflow ในการรันนะ เอาหล่ะ จะรออะไร git clone ด่วน

เนื่องจากเขา require python 3.6.x นะ แต่เครื่องผมลง anaconda (win64) 2.7 เอาไว้ เลยต้องสร้าง env ใหม่

conda create -n python3 python=3.6 anaconda
source activate python3
หรือ activate python3 (on cmd)

จากนั้นก็ตามต่อด้วยการติดตั้ง tensorflow (ผมใช้ version cpu นะ) แล้วก็ opencv

pip install tensorflow
pip install opencv-python

จากนั้นก็ติดตั้งตาม description ที่เขาให้มาใน git นั่นแหละ ผมทดลองป้อนภาพเข้าไป (ตัดก่อน ภาพจริง ๆ มันยาวเกินไป) ผลที่ได้ก็ตามนี้

python main.py -i 1.jpg

กราบบบบบบบบบบบบบบบบบบบบ

ยัง ๆ ๆ ยังไม่จบ เมื่อผมเข้าไป ดูในโค้ด main.py จะเห็นว่ามีการ resize รูปภาพก่อนที่จะยัดเข้าไปใน model นะ ซึ่งทำให้เราเอาภาพยาว ๆ ใส่เข้าไปแล้วมันผิด ratio จนไม่สามารถ detect หน้าได้ แต่จริง ๆ model rcnn มันทำการ convolution ไม่สนขนาดภาพอยู่แล้วนะ (ขนาดที่ train จะอยู่ที่ 1000×600 มั้งจาก VGG) นั่นหมายความว่าเราสามารถ feed ขนาดที่ยาว ๆ ไปได้เลย ไม่ต้อง resize ก่อน ทฤษฏีนี้มาจากการเดาของผมนั่นเอง ไม่มีอะไรอ้างอิง ทำได้ก็ได้ ทำไม่ได้ก็ต้องตัดภาพก่อน 555

ตามนั้น comment การ resize ทิ้งเลย 555 มาทดลองรันกัน

เยี่ยมไปเลยยยยยยยยย จากนั้นก็แก้โค้ดให้มัน export region ออกมา ไฟล์ main.py ที่แก้ไขแล้วก็จะมีประมาณนี้ (กด link) https://gist.github.com/comdet/7fe2dd8a421706c43d9bccc69e15fd5f

แต่พอรันไปสักพัก จะเห็นได้ว่า CPU ช้าเต่ามากกกกกกก 27 นาทีพึ่ง process ไปได้ 57 รูป เหลือไปเห็น เวลา estimate 7 ชั่วโมง แม่เจ้าาา พอ ๆ

เมื่อไปเช็ค laptop ของผมใช้เป็น nVidia MX150 น่าจะพอมี GPU อยู่บ้าง เอาหล่ะ ลง tensorflow-gpu ซะเลย

conda install tensorflow-gpu

คำสั่งเดียว จบ … แต่พอลองรัน แง่วววว driver ไม่ support เดี๋ยวไปลง driver มาใหม่

ตอนแรก ไปลงแบบตรง ๆ ไฟล์ exe โหลดมาจาก web nvidia ลงไม่ผ่าน!!! แต่พอไปลงอีกรอบผ่าน GForce Experience แม่งพอรันอีกที ได้เว้ย … อะไรว่ะ version ก็อันเดียวกัน หน้าเว็บก็ search ตามรุ่นแล้วแท้ ๆ … w_f ไม่เป็นไร รันได้แล้ววววววววววววว

แรมไม่พออออออออออ อ๊ากกกกกก อ๊ากกกกกกกกกกกกก ร้อน ฉันร้อนเหลือเกิน คุณพี่ ฉันร้อน เสียเวลาชิปหาย …. อันนี้เป็นขีดจำกัดสายเลือด คงต้องหันไปรันเครื่องใหญ ่GTX1070 แทน พอเอาไปรันอีกเครื่องก็ต้องเตรียม env ให้มันใหม่อีก กว่าจะรันได้ แต่ก็นะ ดูตรง ETA มันใช้เวลารันประมาณ 30 นาทีเอง รับได้ ๆ ประหยัดเวลาไปได้ 5 ชั่วโมง (สองชั่วโมงเป็นการ setup)

ผลลัพท์ที่ได้ก็ประมาณนี้

ยังหรอกนะ มันยังไม่จบ 5555 แค่เตรียมรูปนี่ก็หลาย part อยู่ ติดตามชมตอนต่อไป … ขอไปซักผ้ากับไปโลตัสก่อน (เรื่องทั้งหมดนี้เกิดตอนบ่าย ตอนนี้ก็ปาไปทุ่มครึ่งละ )