ผมไม่ได้ใช้ Keras มานานมากครับ แล้วประมาณไม่นานมานี้ (2–3 วันก่อน) มีโอกาสเข้าไปอ่าน Docs ของ Keras เล่นๆแล้วก็ไปเจอ Pre-trained model ตัวนึงน่าสนใจมากๆชื่อ Mobilenet (อาจจะมีนานแล้วแต่ผมพึ่งเห็นครับ)
MobileNet มีจุดประสงค์ตามชื่อเลยครับ มันออกแบบให้ใช้งานได้ โดยไม่ใช้ทรัพยากรมากนัก แต่ก็แลกกับประสิทธิภาพที่อาจจะน้อยลงถ้าเทียบกับ model ตัวอื่นๆ (พวก Inception, Resnet) แต่ประสิทธิภาพก็อยู่ในเกณฑ์ที่พอรับได้ครับ
จะเห็นว่า MobileNet ทำคะแนน Top-1, Top-5 ได้ 0.665 กับ 0.871 ตามลำดับซึ่งน้อยกว่าโมเดลตัวอื่นๆแต่ก็ถือว่าทำงานได้ดีพอสมควร
สำหรับโครงสร้าง หรือข้อมูลเชิงลึกผมไม่ได้มีความรู้มากเท่าไรแต่ถ้าสนใจสามารถหาดูใน Google ได้ครับ
ส่วนนี้คือโค้ดของโปรแกรม บรรทัดที่ 1–4 เป็นการ Import สิ่งที่เราต้องการใช้
การสร้าง model อยู่ที่บรรทัดที่ 6 จะเห็นว่าเราไม่จำเป็นต้องมาสร้างโครงสร้างตัวโมเดลเองเลย เพราะ Keras ทำให้หมดแล้ว ที่ต้องทำก็แค่ประกาศโมเดล MobileNet เท่านั้น แล้วก็ได้ model เลย
ส่วนบรรทัดที่ 11 เป็นบรรทัดที่เราจะบอกตัวโปรแกรมว่าจะให้มัน predict ภาพไหนสามารถใส่ชื่อภาพไปเลยครับ (picture.jpg หรือ path ไปที่ภาพนั้น) บรรทัดที่12 ไปจนถึง 16 เป็นการ preprocess
บรรทัดที่ 17 เป็นการใช้ Model มา Predict เป็น feature (เพราะโมเดล CNN จะ predict ได้ผลลัพธ์ออกมาเป็น feature ของรูปนั้นๆ) เมื่อเราได้ feature เราก็เอามา decode เพื่อที่จะได้รู้ว่ามันเป็นภาพอะไร
top ที่ผ่านเข้าไปใน decode_predictions มีไว้เพื่อบอกว่าเราจะเอาคำตอบกี่คำตอบ เรียงจากคำตอบที่มีคะแนนสูงสุดครับ
ผลที่ได้เมื่อผมรันโมเดลกับภาพ
จากคำตอบคือ
(‘n02504458’, ‘African_elephant’, 0.8246917)
(‘n01871265’, ‘tusker’, 0.16709311)
(‘n02504013’, ‘Indian_elephant’, 0.00812793)
(‘n03743016’, ‘megalith’, 2.5114545e-05)
(‘n01704323’, ‘triceratops’, 1.8894641e-05)
จะเห็นว่าได้ผลค่อนข้างน่าพอใจครับ
Medium ที่ 20
ปีนี้ผมตั้งใจว่าจะเขียน Medium ให้ได้เดือนละ 4–5 Medium ครับ สิ้นปีก็จะมี 52 Medium เท่ากับจำนวนสัปดาห์ใน 1 ปีพอดี ไม่รู้จะทำได้มั้ย แต่ก็ถือเป็น Passion เล็กๆน้อยๆของผมครับ 5555
ผมเขียนบทความหลายแนวแล้วแต่ว่าอยากเขียนยังไง ถ้าอยากให้กำลังใจช่วยกด Clap ให้ซักที สองทีด้วยนะครับ :D
เจอกันบทความหน้าครับ