Deep Learning กับ nvidia jetson nano ตอนที่ 1

ตอนนี้ เราจะมาทดลองรันโปรแกรมบน jetbot กัน โดยจะเป็น examples ที่มากับตัว install 2 ตัวอย่างแรกจะเป็นการแนะนำการเขียนโปรแกรมเพื่อควบคุม jetbot ทั้งด้วย widgets และจอย

โปรแกรมตัวอย่างเขียนด้วย jupyter notebook และระบบที่รัน jetbot ก็ลงมาให้เรียบร้อยแล้ว เราสามารถรันแบบรีโมทผ่านบราวเซอร์จากเครื่องคอมเราได้เลย โดยเราก็รัน jetbot ด้วย power bank ทีติดตั้งไว้แล้ว เพื่อไม่ให้เป็นอุปสรรคในการเคลื่อนที่ของ jetbot การทดลองรันก็เพียงแค่เปิดไฟล์ ขึ้นมาแล้วให้มันรัน จะทีละส่วน(เค้าเรียกว่า cell)เพื่อทำความเข้าใจ หรือสั่งรันทั้งหมดเลยก็ได้ แต่ไม่แนะนำ เพราะ cell ท้ายๆ อาจจะเป็นการสั่งหยุดการทำงาน

ตัวอย่างถัดมา เริ่มน่าตื้นเต้นและปวดหัวขึ้นมาบ้างแล้ว เพราะจะเริ่มใช้งาน deep learning โดยตัวอย่างนี้จะเป็นการทำให้เคลื่อนที่หลบสิ่งกีดขวางได้ โดยจะแบ่งโค้ดเป็น 3 ไฟล์ 3 ขั้นตอน โดย

1. ขั้นตอนแรก จะเป็นการเก็บ samples โดยโค้ดจะทำการเก็บภาพและให้เราแยกว่าภาพไหนคือ blocked หุ่นจะไปต่อไม่ได้ หรือ ภาพไหนคือ free หุ่นสามารถเคลื่อนที่ไปได้ เพื่อจะนำไป train
2. ทำการ train ขั้นตอนนี้ยุ่งยากหน่อย ผมพบว่า หากเก็บ samples จำนวนมาก (> 100) จะทำการ train บน jetbot ไม่สำเร็จ มีอาการดับไปซะเฉยๆ (เรื่องนี้ เดี๋ยวว่ากันอีกที) ดังนั้นจึงต้องทำการ train บนเครื่อง pc แทน ซึ่งใช้เป็น ubuntu 18.04 ก็ต้องไปทำการ install โปรแกรมที่จำเป็นทั้งหมด เรียกว่า ก็ต้องให้เหมือนบน jetbot นั่นเอง
หลังจากงมอยู่นาน จึงได้ขั้นตอนการ install ดังนี้

  • ลง anaconda ก็จะได้ python มาด้วย
  • ลง pytorch โดยเลือกได้ว่าจะใช้ cuda หรือไม่ ซึ่งบางคนใช้การ์ดจอ nvidia อาจอยากใช้ gpu ในการคำนวณ ก็ต้องไปลง driver cuda ก่อนนะ
  • ลง jupyter (อันนี้ไม่แน่ใจว่าตอนลง anaconda มันลงให้เลยอัตโนมัติแล้วหรือเปล่า)

*** ข้อที่ต้องระวังคือ เวอร์ชั่นของ pytorch บนเครื่องที่ใช้เทรนกับบน jetbot จะต้องเหมือนกัน ไม่งั้นจะโหลดโมเดลที่เทรนมาไม่ได้ ของผมใช้วิธีอัพเกรด jetpack เป็น เวอร์ชั่น 4.4 และอัพเกรด pytorch ไปเป็นเวอร์ชั่น 1.6

3. คือการนำ model ที่เทรนได้มาใช้งาน ซึ่งตอนนี้เจอปัญหาว่า แค่ออกตัวก็ดับตายสนิท ฮ่าๆ จากที่ลองหาข้อมูลในฟอรั่มดู น่าจะเป็นจังหวะมอเตอร์เริ่มหมุน พร้อมๆกับการที่กล้องทำงานจับภาพ น่าจะกินกระแสแบบพุ่งขึ้นทันทีทันใดก็เลยดับไป ลองใช้วิธีเขียนโค้ดให้มอเตอร์หมุนไปสักแป๊บนึงก่อนค่อยเริ่มจับภาพ ก็ใช้ได้ผลนะ

*เดี๋ยวจะลองเปลี่ยนไปใช้กล้อง USB ดูบ้างว่าอาการจะแตกต่างกันมั้ย

ทีนี้ เมื่อสามารถรันตัวอย่างนี้ได้แล้ว หมายความว่าเราพอจะรู้ขั้นตอนของการใช้งาน deep learning บ้างแล้ว ในตอนต่อไป เราก็ควรจะต้องรู้หลักการสักหน่อย เพื่อให้สามารถทำการปรับปรุงโมเดลของเราได้ เพื่อเพิ่มประสิทธิภาพการของทำงาน หรือการเคลื่อนที่ของหุ่นให้ดียิ่งขึ้น

ใส่ความเห็น