Deep Learning Model with TouchDesigner and TDNeuron Framework

April 28, 2021
TouchDesigner
Machine Learning

การใช้ TDNeuron สำหรับหรับการทำ Deep Leaning Model จะสามารถทำให้เราเห็นทุกๆกระบวนการที่เกิดขึ้นออกมาเป็นรูปภาพ และสามารถแสดงผลได้แบบ Realtime ซึ่งเป็นความสามารถของโปรแกรม TouchDesiner ที่ผมเห็นว่าจะมีประโยชน์อย่างมากต่อการศึกษาและทำความเข้าใจเกี่ยวกับความรู้ด้าน Deep Learning ครับ

TDNeuron

TD Neuron เป็นเสมือน Framework สำหรับการทำ Deep Learning โดยมีการใช้ TouchDesigner ในการพัฒนาและนั่นหมายความว่าเราสามารถ Visual Operator ต่างๆ ของกระบวนการ Deep Learning ออกมาได้เช่น ตัวอย่างการทำ Gradient Descent ก็ได้ถูกรวมไว้ใน Framework นี้แล้วเช่นเดียวกัน ซึ่งผมเห็นว่านี่เป็นเครื่องมือหนึ่งที่ดีมากๆในการเรียนรู้และทำความเข้าใจ ตลอดจนการประยุกต์ใช้งาน ดังนั้น TD Neuron จึงเป็นหนึ่งในเครื่องมือของ TouchDesigner ให้ผู้ที่มีความสนใจด้าน Deep Learning ได้ลองทำการศึกษา ทดลองเปลี่ยน parameter ต่างๆ แล้วมองดูผลลัพธ์ที่เกิดขึ้น ซึ่งทุกคนสามารถเข้าไปลองเล่น TDNeuronได้ที่ GitHub ด้านล่างได้เลยครับ โดยภายใน Repository ด้านบนมีตัวอย่างหนึ่งในการใช้ TouchDesigner ในการทำ Deep Learning Model สามารถเปิดไฟล์ Appendix09_NeuralParticles.toe ซึ่งเป็นหนึ่งในตัวอย่างที่ผมจะยกมาอธิบายถึงการสร้าง Deep Learning Model ด้วยโปรแกรม TouchDesigner ครับ

files tdneuron

Pipeline

Pipeline ของ Model
Pipeline ของ Model

สำหรับ Pipeline ด้านบนจะเป็น flow ทั้งหมดที่เราจะมาจำลองกันผ่านโปรแกรม Touchdesigner นะครับโดยเราจะทำการ Classify data point ซึ่งแต่ละจุดจะอยู่ในแกน (x, y, z) และเราจะให้ Network (Deep Learning Model) ของเราเรียนรู้เพื่อที่จะหาค่า Weight ออกมาเพื่อทำการจำแนกแต่ละ data point ของเราให้ถูกต้องตาม Label (GroudTruth ) นั่นเองครับ โดย Pipeline ทั้งหมดและ Network ในโปรแกรม TouchDesigner จะได้ออกมาดังภาพด้านล่างครับ

network
Network ใน Touchdesigner ซึ่งเป็น Network ที่มาพร้อมกับ TDNeuron ให้เราสามารถเรียนรู้เกี่ยวกับ Process ต่างๆของการนำ Deep Learing มาใช้ในการทำ Classification

Dataset

Dataset ที่จะใช้ก็จะมีทั้งหมด 3 features (X, Y, Z) 3 dimensions โดยให้มองว่าข้อมูลแต่ละแถวจะสามารถถูกนำไป Plot ในแกน X, Y, Z ซึ่งเดี๋ยวจะแสดงให้เห็นครับว่าลักษณะของข้อมูลจะออกมาเป็นอย่างไรใน feature space ครับ

dataset
data set

โดยข้อมูลแต่ละจุดจะมีการ labels มาให้แล้วนะครับโดยข้อมูลชุดนี้มี class อยู่ทั้งหมด 6 Classes คือ (0 , 1 , 2, 3, 4, 5 )

label
label

ซึ่งเราก็สามารถแสดงภาพของ data บน feature space ทำให้เราเห็นภาพได้ชัดเจนยิ่งขึ้น โดยความสามารถในการ Visulize สิ่งต่างๆนั้นก็ถือเป็นประโยชน์ของโปรแกรม TouchDesigner ที่จะเข้ามาช่วยในการเรียนรู้ด้าน Deep Learing ของเราให้เห็นภาพได้มากยิ่งขึ้นครับ

space
Each data point in feature space.

Data Preprocess

เราสามารถนำข้อมูล Input ของเรามาแสดงออกเป็นแต่ละ Channel คือ X, Y, Z ซึ่งเราจะสังเกตเห็นว่า Scale ของข้อมูลทั้ง 3 features อยู่คนละ Scale กันแสดงได้ตามภาพด้านล่างเลยครับ

data preprocessing
X อยู่ในช่วง [-10, 10] , Y อยู่ในช่วง [-10, 10] ในขณะที่ Z อยู่ในช่วง [-5, 5]

เราก็จะทำการปรับ Scale ของข้อมูลเพื่อทำ Data Preprocess ก่อนนำข้อมูลเข้า Model ของเรากันก่อนนะครับ ซึ่งเราสามารถลองทั้งการปรับ Scale ไม่ปรับ Scale แล้วดูผลที่เกิดขึ้นกับ Model ของเราได้แบบ Realtime เลยครับ

สำหรับใครที่อยากเป็นภาพชัดเจนขึ้นว่าภายใน Opearator Data Preprocess เกิดอะไรขึ้นบ้างสามารถเข้าไปในแต่ละ Operator (กด i ที่ Operator ) เพื่อดู process ต่างๆที่เกิดขึ้นภายในได้เลยครับ

data preprocessing
สามารถลองปรับค่า parameter สองตัวคือ Nomalize และ ทำ zero ceneter

X (Feature) and GroudTruth

หลังจากผ่านขั้นตอนการทำ Data Preprocess มาแล้วเราก็จะได้ข้อมูลออกมาในรูปแบบของ Matrix ขนาด 500*3 (500 samples) ซึ่งเราสามารถแสดงค่าต่างๆออกมาเป็นรูปภาพได้ ในที่นี้จะทำการ Map ค่าต่างๆให้เป็นภาพ GrayScale เพื่อให้เห็นเป็นภาพของแต่ละค่า (x, y, z ) ของ Data และภาพของ GroundTruth ซึ่งแสดง Class ต่างๆของข้อมูล

ซึ่งสิ่งที่ Neuron Network จะเข้ามาเรียนรู้ก็คือจะทำยังไงให้สามารถจับรูปแบบของค่า X, Y, Z ของแต่ละ data point ว่าลักษณะแบบนี้เป็นคลาสไหน ถึงตรงนี้ก่อนจะให้ Machine เรียนรู้ เราลองดูภาพด้านบนแล้วลองหา pattern ที่สัมพันธ์กับ class ดูก่อนก็ได้ครับว่าลักษณะแบบนี้น่าจะตอบคลาสนี้ ซึ่งน่าจะพอทำให้เห็นภาพว่าสิ่งที่ Deep Learning Model ของเราจะทำคืออะไร เพื่อแก้ปัญหาอะไร (ในที่นี้ก็คือทาย Class ต่างๆให้ถูกต้อง)

map class
ภาพที่เกิดจากการ map ค่า x, y, z ให้อยู่ใน grayscale และ map label class ต่างๆเป็น binary scale โดยสีขาวคือบอกว่าเป็นคลาสไหนนั่นเองครับ

Before Go to Neuron Network Operator

ก่อนเข้าสู่ส่วนของ Neuron Network ผมแนะนำให้เข้าไปทำความเข้าใจกับ Operator ต่างๆ ที่จะถูกนำไปใช้ใน Network ซึ่งแต่ละ Opeartor เราจะเห็นเป็นภาพได้ชัดเลยครับว่าแต่ละ องค์ประกอบใน Neuron Network ที่มักมีการพูดๆกันจะประกอบไปด้วยอะไรบ้างและมี flow การทำงานอย่างไรบ้าง ที่สำคัญแต่ละ opeartor มี code เขียนไว้ให้ได้ศึกษาด้วยครับซึ่งเป็นส่วนหนึ่งที่ผมคิดว่าจะเป็นประโยชน์อย่างมากครับ

operator
ตัวอย่าง Operator ต่างๆ

Neuron Network

neuron layer
src : https://i.pinimg.com/originals/b0/81/89/b08189699368cf0b71eed9931ee70881.png

network operator
Network Opeator

ภายใน Operator Network จะแสดงลักษณะเช่นเดียวกับ Neuron Network โดยทั่วไปซึ่งหลายๆคนที่ศึกษา Deep Learning น่าจะคุ้นเคยกันอยู่แล้ว เพียงแต่ว่าภายใน TDNeuron จะสามารถทำให้เราเห็นทุกอย่างๆที่เกิดขึ้นภายในการ Train Model ได้แบบ Realtime ซึ่งเมื่อเรากดเข้าไปใน Operator จะพบกับ Operator Network ที่แสดงการทำงานของ Neuron Network และได้เห็นกระบวนการทำ Forward และ Backward ได้เแบบ Realtime

train feature space
Feature space when traning model

ระหว่างที่เรากำลัง Train Model เมื่อเรากลับไปดูใน feature space ของเรา จะสามารถเห็นได้ว่า model ก็จะกำลังสร้าง space สำหรับ class ต่างๆ ลองสังเกตที่ red space ก็จะเห็นภาพได้อย่างชัดเจนครับ และสุดท้ายเมื่อ train เสร็จเราก็จะได้ space ออกมาดังภาพด้านล่างครับ

นี่เป็นเพียงแค่ตัวอย่างบางส่วนที่ผมยกมานำเสนอให้เห็นถึงความสามารถและการประยุกต์ใช้โปรแกรม Touchdesigner ภายใต้ concept Node-based visual programming นอกจากนี้ภายใน TDNeuron ยังมีตัวอย่างอื่นๆที่น่าสนใจเกี่ยวกับ Deep Leaning อีกหลายๆตัวอย่าง เช่น การทำ Image Classification, Custom Deep Learning Model หรือเราจะสร้าง Neuron Network ของเราขึ้นมาเองก็สามารถทำได้ สำหรับผู้ที่สนใจก็สามารถไปศึกษาเพิ่มเติมได้ตาม Github Repository ด้านล่างได้เลยนะครับ

Click : TDNeuron Github Repository

หวังว่าจะเป็นประโยชน์กับผู้ที่สนใจนะครับ โดยโปรแกรม TouchDesigner ยังสามารถนำไปประยุกต์ใช้กับงานอื่นๆได้อีกมากมายเลยครับ ซึ่งถ้าใครได้ลองนำโปรแกรม TouchDesigner ไปลองใช้หรือสร้างสรรค์ผลงานต่างๆออกมาก็อย่าลืมนำมาแชร์กันนะครับ ^^

Thanks For Reading. 💻
- Anu Wat -
Anu Wat
Junior Full-Stack Developer
Software Engineering | Data Technology | Interactive Art | Digital Media Technology