📑[Note]Keras & Line Messaging API
Image Classification & Flask 🚀 🎃
Project : Image Classification API
จากบทความที่แล้วเป็นการติดตั้งและทดสอบ line-bot-sdk-python เมื่อทดสอบเสร็จเรียบร้อยแล้ว ในบทความนี้เราจะมาลองทำ Image Classification API ด้วย Keras, Scikit-learn กันก่อน เพื่อเป็นพื้นฐานไปทำ Object Detection API ในบทความถัดไป
Knowledge Base
- Python
- OpenCV
- Create Model (Keras, Scikit-learn, TensorFlow, PyTorch)
- Line Messaging API
Create Model
เนื่องจากบทความนี้จะไม่สอนสร้างโมเดล (model)เพราะไม่รู้ว่าผู้อ่านมีความสนใจหรือความเชี่ยวชาญใน Deep Learning Frameworks ตัวใดและชนิดของ model หรือ Algorithm ที่เลือกใช้ให้เหมาะสมกับโปรเจคที่ทำเป็นแบบไหน เพื่อความสะดวกเราจะมาใช้ model ที่มีนักพัฒนาทำไว้แล้วด้วย Keras , Scikit-learn , OpenCV ตามตัวอย่างในบทความนี้
ถ้าผู้อ่านยังไม่มีพื้นฐานในด้านนี้อาจจะลองทำความเข้าใจบทความข้างต้นก่อน แต่ถ้าพร้อมแล้วเข้าไปโหลด Code มาลองได้เลย!!

จากนั้นมาลองทดสอบ model กัน โดย model นี้จะเป็นการทำ Image Classification เพื่อตรวจสอบว่าใช่ Santa หรือไม่? โดยใช้คำสั่งตามบทความได้เลย โดยไม่ต้องสั่ง train network ใหม่หรือผู้อ่านจะลองทดสอบการเรียนรู้หลายๆ model เทียบกันก็ได้



Integration
- นำไฟล์ทั้งหมดมาไว้ในโปรเจคจากบทความที่แล้ว

- import packages จาก test_network.py มาเพิ่มใน app.py ดังรูป

- บทความนี้จะเน้นการไปที่การจัดการกับรูปภาพเป็นหลักดังนั้น เราจะข้ามไปที่ส่วน MessageEvent ที่เป็นรูปภาพ แก้ไขดังรูป
@handler.add(MessageEvent, message=(ImageMessage, VideoMessage, AudioMessage))
- dist_path คือรูปภาพที่ผู้ใช้ส่งเข้ามา
- ข้อควรระวัง load_model() รองรับไฟล์ .h5 , .model , .ckpt
(model check point is not a frozen graph, not convenient for inference) - ขั้นตอนการทำงานจะคล้ายการทดสอบ model แต่เราจะเปลี่ยนจากที่แสดงรูปภาพผลลัพธ์มาเป็นสร้างไฟล์รูปภาพแล้วบันทึกไว้แทน จากนั้นจะทำการส่งรูปภาพที่บันทึกไว้คืนไปให้ผู้ใช้พร้อมผลการตรวจสอบ Image Classification



Result

Append
- MessageEvent ส่วนอื่นๆจะขอข้ามไป โดยส่วนนี้จะเป็นการแนะนำการทำงานของ FileMessage โดยส่วนนี้จะทำงานโดย เมื่อมีไฟล์เข้ามาจะทำการบันทึกไฟล์เก็บไว้ ซึ่งเป็นข้อดีในด้าน Big Data เพื่อนำไปวิเคราะห์หรือนำไปทำ model ตัวใหม่ต่อไป ซึ่งอาจช่วยในการปรับปรุง business model ให้ดีขึ้นต่อไป
@handler.add(MessageEvent, message=FileMessage)

Code
นำค่า channel_secret และ channel_access_token มาใส่
👹เจอกันบบทความถัดไป 👉 บายยยยยย ✋