ทำนาย Covid-19 จากแผ่นฟิล์ม x-ray ด้วย PyTorch #2 สร้าง model

Original article can be found here (source): Artificial Intelligence on Medium

เนื่องจากผมกะจะใช้ CNN มาทำเป็น model ประมวลผล เลยกินทรัพยากรเครื่องพอสมควร ผมเลยไม่ได้ทำการ train บน cpu ธรรมดาๆ หรือสร้าง model แบบ from scratch เลย

ในบทความนี้ผมเลยเลือกที่จะใช้ pre-trained model ที่มีมาให้ของ PyTorch ครับ ตัวที่ผมเลือกใช้ก็คือ ResNet18 (ถ้าใครมาลองทำตามแล้วอยากลองใช้ตัวอื่นแทนก็ได้ครับ)

ที่ใช้ pre-trained model เพราะว่าการมาเริ่มสร้างโมเดล CNN แบบ from scratch เป็นอะไรที่ยุ่งยากพอสมควรครับ บวกกับว่า datasets ที่เรามีค่อนข้างจะจำกัด เลยเลือกที่จะใช้ model ที่ train มาแล้วจะง่ายกว่า

แล้วผมก็ใช้วิธีการที่เรียกว่า transfer learning ในการทำโมเดลทำนายฟิล์มครับ

การสร้าง model ตัวนี้ผมเลือกที่จะอ้างอิงจาก best practice ใน document ของ pytorch เนื่องมาจากว่าการเขียน pytorch เนี่ยค่อนข้างจะยืดหยุ่น(บางทีก็เกินไป 😂) พอสมควร สามารถเข้าไปอ่าน doc ข้างล่างได้เลยครับ

1. Load ข้อมูล

เริ่มต้นจากโหลดข้อมูลที่เราเตรียมไว้มาก่อนครับ เนื่องจากว่า model ที่เราใช้เนี่ยเป็น model ที่ pretrain มาเราเลยจะต้องปรับข้อมูลให้เป็นเหมือนกันกับ model ต้นทางด้วยก่อนที่จะป้อนเข้าไป

2.สร้าง function train

ขั้นตอนนี้เราจะสร้างฟังค์ชันที่นำมาใช้เทรน model ของเราครับ

การทำ transfer learning จะมีหลักๆอยู่ 2 วิธีการ 1.คือการ Finetuning ให้ convnet ใหม่ 2.คือเอา convnet ตัวเดิมมาเป็น feature extracter แล้วเทรนใหม่แค่ layer สุดท้