# ตรวจสอบคุณภาพผลไม้จากอุปกรณ์ IoT ![ภาพรวมของบทเรียนนี้ในรูปแบบ sketchnote](../../../../../translated_images/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.th.jpg) > Sketchnote โดย [Nitya Narasimhan](https://github.com/nitya) คลิกที่ภาพเพื่อดูเวอร์ชันขนาดใหญ่ ## แบบทดสอบก่อนเรียน [แบบทดสอบก่อนเรียน](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/31) ## บทนำ ในบทเรียนที่ผ่านมา คุณได้เรียนรู้เกี่ยวกับตัวจำแนกภาพ และวิธีการฝึกให้สามารถตรวจจับผลไม้ที่ดีและไม่ดีได้ เพื่อใช้งานตัวจำแนกภาพนี้ในแอปพลิเคชัน IoT คุณจำเป็นต้องสามารถจับภาพโดยใช้กล้องบางประเภท และส่งภาพนี้ไปยังคลาวด์เพื่อทำการจำแนก ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับเซ็นเซอร์กล้อง และวิธีการใช้งานร่วมกับอุปกรณ์ IoT เพื่อจับภาพ นอกจากนี้คุณยังจะได้เรียนรู้วิธีการเรียกใช้งานตัวจำแนกภาพจากอุปกรณ์ IoT ของคุณ ในบทเรียนนี้เราจะครอบคลุม: * [เซ็นเซอร์กล้อง](../../../../../4-manufacturing/lessons/2-check-fruit-from-device) * [จับภาพโดยใช้อุปกรณ์ IoT](../../../../../4-manufacturing/lessons/2-check-fruit-from-device) * [เผยแพร่ตัวจำแนกภาพของคุณ](../../../../../4-manufacturing/lessons/2-check-fruit-from-device) * [จำแนกภาพจากอุปกรณ์ IoT ของคุณ](../../../../../4-manufacturing/lessons/2-check-fruit-from-device) * [ปรับปรุงโมเดล](../../../../../4-manufacturing/lessons/2-check-fruit-from-device) ## เซ็นเซอร์กล้อง เซ็นเซอร์กล้อง ตามชื่อของมัน คือกล้องที่คุณสามารถเชื่อมต่อกับอุปกรณ์ IoT ของคุณได้ กล้องเหล่านี้สามารถถ่ายภาพนิ่งหรือบันทึกวิดีโอแบบสตรีมมิ่งได้ บางรุ่นจะส่งข้อมูลภาพดิบ ในขณะที่บางรุ่นจะบีบอัดข้อมูลภาพเป็นไฟล์ภาพ เช่น JPEG หรือ PNG โดยทั่วไปกล้องที่ใช้งานร่วมกับอุปกรณ์ IoT จะมีขนาดเล็กและความละเอียดต่ำกว่าที่คุณคุ้นเคย แต่คุณสามารถหากล้องที่มีความละเอียดสูงซึ่งเทียบเท่ากับโทรศัพท์ระดับสูงได้ นอกจากนี้ยังมีกล้องที่สามารถเปลี่ยนเลนส์ได้หลายแบบ กล้องหลายตัว กล้องอินฟราเรด หรือกล้อง UV ![แสงจากฉากผ่านเลนส์และถูกโฟกัสบนเซ็นเซอร์ CMOS](../../../../../translated_images/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.th.png) เซ็นเซอร์กล้องส่วนใหญ่ใช้เซ็นเซอร์ภาพที่แต่ละพิกเซลเป็นโฟโตไดโอด เลนส์จะโฟกัสภาพลงบนเซ็นเซอร์ภาพ และโฟโตไดโอดนับพันหรือหลายล้านตัวจะตรวจจับแสงที่ตกลงบนแต่ละตัว และบันทึกเป็นข้อมูลพิกเซล > 💁 เลนส์จะพลิกภาพกลับด้าน และเซ็นเซอร์กล้องจะพลิกภาพกลับมาให้ถูกต้อง เช่นเดียวกับในดวงตาของคุณ - สิ่งที่คุณเห็นจะถูกตรวจจับกลับด้านที่ด้านหลังของดวงตา และสมองของคุณจะปรับให้ถูกต้อง > 🎓 เซ็นเซอร์ภาพเรียกว่า Active-Pixel Sensor (APS) และประเภท APS ที่ได้รับความนิยมมากที่สุดคือเซ็นเซอร์ CMOS (Complementary Metal-Oxide Semiconductor) คุณอาจเคยได้ยินคำว่าเซ็นเซอร์ CMOS ใช้สำหรับเซ็นเซอร์กล้อง เซ็นเซอร์กล้องเป็นเซ็นเซอร์ดิจิทัลที่ส่งข้อมูลภาพในรูปแบบดิจิทัล โดยปกติจะใช้ไลบรารีที่ช่วยในการสื่อสาร กล้องเชื่อมต่อโดยใช้โปรโตคอล เช่น SPI เพื่อส่งข้อมูลจำนวนมาก - ภาพมีขนาดใหญ่กว่าตัวเลขเดี่ยวจากเซ็นเซอร์ เช่น เซ็นเซอร์วัดอุณหภูมิ ✅ ข้อจำกัดเกี่ยวกับขนาดภาพในอุปกรณ์ IoT มีอะไรบ้าง? ลองคิดถึงข้อจำกัดโดยเฉพาะในฮาร์ดแวร์ไมโครคอนโทรลเลอร์ ## จับภาพโดยใช้อุปกรณ์ IoT คุณสามารถใช้อุปกรณ์ IoT ของคุณเพื่อจับภาพและนำไปจำแนกได้ ### งาน - จับภาพโดยใช้อุปกรณ์ IoT ทำตามคู่มือที่เกี่ยวข้องเพื่อจับภาพโดยใช้อุปกรณ์ IoT ของคุณ: * [Arduino - Wio Terminal](wio-terminal-camera.md) * [คอมพิวเตอร์บอร์ดเดี่ยว - Raspberry Pi](pi-camera.md) * [คอมพิวเตอร์บอร์ดเดี่ยว - อุปกรณ์เสมือน](virtual-device-camera.md) ## เผยแพร่ตัวจำแนกภาพของคุณ คุณได้ฝึกตัวจำแนกภาพในบทเรียนที่ผ่านมา ก่อนที่คุณจะใช้งานมันจากอุปกรณ์ IoT คุณจำเป็นต้องเผยแพร่โมเดล ### การทำซ้ำของโมเดล เมื่อโมเดลของคุณกำลังฝึกในบทเรียนที่ผ่านมา คุณอาจสังเกตเห็นว่าแท็บ **Performance** แสดงการทำซ้ำทางด้านข้าง เมื่อคุณฝึกโมเดลครั้งแรก คุณจะเห็น *Iteration 1* ในการฝึก เมื่อคุณปรับปรุงโมเดลโดยใช้ภาพการทำนาย คุณจะเห็น *Iteration 2* ในการฝึก ทุกครั้งที่คุณฝึกโมเดล คุณจะได้การทำซ้ำใหม่ นี่เป็นวิธีการติดตามเวอร์ชันต่าง ๆ ของโมเดลที่ฝึกด้วยชุดข้อมูลต่าง ๆ เมื่อคุณทำ **Quick Test** จะมีเมนูแบบเลื่อนลงที่คุณสามารถใช้เลือกการทำซ้ำ เพื่อเปรียบเทียบผลลัพธ์ระหว่างการทำซ้ำหลายครั้ง เมื่อคุณพอใจกับการทำซ้ำ คุณสามารถเผยแพร่เพื่อให้ใช้งานได้จากแอปพลิเคชันภายนอก วิธีนี้คุณสามารถมีเวอร์ชันที่เผยแพร่ซึ่งใช้งานโดยอุปกรณ์ของคุณ และทำงานกับเวอร์ชันใหม่ในหลายการทำซ้ำ จากนั้นเผยแพร่เมื่อคุณพอใจกับมัน ### งาน - เผยแพร่การทำซ้ำ การทำซ้ำจะถูกเผยแพร่จากพอร์ทัล Custom Vision 1. เปิดพอร์ทัล Custom Vision ที่ [CustomVision.ai](https://customvision.ai) และลงชื่อเข้าใช้หากคุณยังไม่ได้เปิด จากนั้นเปิดโปรเจกต์ `fruit-quality-detector` ของคุณ 1. เลือกแท็บ **Performance** จากตัวเลือกด้านบน 1. เลือกการทำซ้ำล่าสุดจากรายการ *Iterations* ทางด้านข้าง 1. เลือกปุ่ม **Publish** สำหรับการทำซ้ำ ![ปุ่มเผยแพร่](../../../../../translated_images/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.th.png) 1. ในกล่อง *Publish Model* ตั้งค่าทรัพยากร *Prediction resource* เป็นทรัพยากร `fruit-quality-detector-prediction` ที่คุณสร้างในบทเรียนที่ผ่านมา ปล่อยชื่อไว้เป็น `Iteration2` และเลือกปุ่ม **Publish** 1. เมื่อเผยแพร่แล้ว ให้เลือกปุ่ม **Prediction URL** ซึ่งจะแสดงรายละเอียดของ API การทำนาย และคุณจะต้องใช้สิ่งนี้เพื่อเรียกโมเดลจากอุปกรณ์ IoT ของคุณ ส่วนล่างจะมีป้ายกำกับ *If you have an image file* และนี่คือรายละเอียดที่คุณต้องการ คัดลอก URL ที่แสดงซึ่งจะมีลักษณะดังนี้: ```output https://.api.cognitive.microsoft.com/customvision/v3.0/Prediction//classify/iterations/Iteration2/image ``` โดยที่ `` จะเป็นตำแหน่งที่คุณใช้เมื่อสร้างทรัพยากร Custom Vision และ `` จะเป็น ID ยาวที่ประกอบด้วยตัวอักษรและตัวเลข นอกจากนี้ให้คัดลอกค่าของ *Prediction-Key* ซึ่งเป็นคีย์ที่ปลอดภัยที่คุณต้องส่งเมื่อเรียกโมเดล แอปพลิเคชันที่ส่งคีย์นี้เท่านั้นที่ได้รับอนุญาตให้ใช้โมเดล แอปพลิเคชันอื่น ๆ จะถูกปฏิเสธ ![กล่อง API การทำนายที่แสดง URL และคีย์](../../../../../translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.th.png) ✅ เมื่อมีการเผยแพร่การทำซ้ำใหม่ จะมีชื่อที่แตกต่างกัน คุณคิดว่าคุณจะเปลี่ยนการทำซ้ำที่อุปกรณ์ IoT ใช้อย่างไร? ## จำแนกภาพจากอุปกรณ์ IoT ของคุณ ตอนนี้คุณสามารถใช้รายละเอียดการเชื่อมต่อเหล่านี้เพื่อเรียกตัวจำแนกภาพจากอุปกรณ์ IoT ของคุณได้แล้ว ### งาน - จำแนกภาพจากอุปกรณ์ IoT ของคุณ ทำตามคู่มือที่เกี่ยวข้องเพื่อจำแนกภาพโดยใช้อุปกรณ์ IoT ของคุณ: * [Arduino - Wio Terminal](wio-terminal-classify-image.md) * [คอมพิวเตอร์บอร์ดเดี่ยว - Raspberry Pi/อุปกรณ์ IoT เสมือน](single-board-computer-classify-image.md) ## ปรับปรุงโมเดล คุณอาจพบว่าผลลัพธ์ที่คุณได้รับเมื่อใช้กล้องที่เชื่อมต่อกับอุปกรณ์ IoT ของคุณไม่ตรงกับที่คุณคาดหวัง การทำนายไม่ได้แม่นยำเสมอไปเมื่อใช้ภาพที่อัปโหลดจากคอมพิวเตอร์ของคุณ นี่เป็นเพราะโมเดลถูกฝึกด้วยข้อมูลที่แตกต่างจากที่ใช้ในการทำนาย เพื่อให้ได้ผลลัพธ์ที่ดีที่สุดสำหรับตัวจำแนกภาพ คุณต้องการฝึกโมเดลด้วยภาพที่คล้ายกับภาพที่ใช้ในการทำนายมากที่สุด หากคุณใช้กล้องโทรศัพท์ของคุณเพื่อจับภาพสำหรับการฝึก ตัวอย่างเช่น คุณภาพของภาพ ความคมชัด และสีจะต่างจากกล้องที่เชื่อมต่อกับอุปกรณ์ IoT ![ภาพกล้วย 2 ภาพ ภาพความละเอียดต่ำที่มีแสงไม่ดีจากอุปกรณ์ IoT และภาพความละเอียดสูงที่มีแสงดีจากโทรศัพท์](../../../../../translated_images/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.th.png) ในภาพด้านบน ภาพกล้วยทางซ้ายถูกถ่ายโดยใช้กล้อง Raspberry Pi ส่วนภาพทางขวาถูกถ่ายจากกล้วยเดียวกันในตำแหน่งเดียวกันโดยใช้ iPhone มีความแตกต่างของคุณภาพที่เห็นได้ชัด - ภาพ iPhone คมชัดกว่า มีสีสว่างกว่า และมีความคอนทราสต์มากกว่า ✅ อะไรอีกบ้างที่อาจทำให้ภาพที่จับโดยอุปกรณ์ IoT ของคุณมีการทำนายที่ไม่ถูกต้อง? ลองคิดถึงสภาพแวดล้อมที่อุปกรณ์ IoT อาจถูกใช้งาน ปัจจัยใดบ้างที่สามารถส่งผลต่อภาพที่ถูกจับ? เพื่อปรับปรุงโมเดล คุณสามารถฝึกใหม่โดยใช้ภาพที่จับจากอุปกรณ์ IoT ### งาน - ปรับปรุงโมเดล 1. จำแนกภาพหลายภาพของผลไม้ที่สุกและไม่สุกโดยใช้อุปกรณ์ IoT ของคุณ 1. ในพอร์ทัล Custom Vision ฝึกโมเดลใหม่โดยใช้ภาพในแท็บ *Predictions* > ⚠️ คุณสามารถอ้างอิง [คำแนะนำสำหรับการฝึกตัวจำแนกภาพใหม่ในบทเรียนที่ 1 หากจำเป็น](../1-train-fruit-detector/README.md#retrain-your-image-classifier) 1. หากภาพของคุณดูแตกต่างจากภาพต้นฉบับที่ใช้ในการฝึก คุณสามารถลบภาพต้นฉบับทั้งหมดโดยเลือกในแท็บ *Training Images* และเลือกปุ่ม **Delete** เพื่อเลือกภาพ ให้เลื่อนเคอร์เซอร์ของคุณไปที่ภาพและเครื่องหมายถูกจะปรากฏขึ้น เลือกเครื่องหมายถูกนั้นเพื่อเลือกหรือยกเลิกการเลือกภาพ 1. ฝึกการทำซ้ำใหม่ของโมเดลและเผยแพร่โดยใช้ขั้นตอนด้านบน 1. อัปเดต URL ของ endpoint ในโค้ดของคุณ และรันแอปใหม่ 1. ทำซ้ำขั้นตอนเหล่านี้จนกว่าคุณจะพอใจกับผลลัพธ์ของการทำนาย --- ## 🚀 ความท้าทาย ความละเอียดของภาพหรือแสงมีผลต่อการทำนายมากแค่ไหน? ลองเปลี่ยนความละเอียดของภาพในโค้ดอุปกรณ์ของคุณและดูว่ามันส่งผลต่อคุณภาพของภาพหรือไม่ นอกจากนี้ลองเปลี่ยนแสงดู หากคุณต้องการสร้างอุปกรณ์สำหรับการผลิตเพื่อขายให้กับฟาร์มหรือโรงงาน คุณจะทำอย่างไรเพื่อให้มั่นใจว่ามันให้ผลลัพธ์ที่สม่ำเสมอตลอดเวลา? ## แบบทดสอบหลังเรียน [แบบทดสอบหลังเรียน](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/32) ## ทบทวนและศึกษาด้วยตนเอง คุณได้ฝึกโมเดล Custom Vision ของคุณโดยใช้พอร์ทัล ซึ่งต้องอาศัยการมีภาพอยู่ - และในโลกจริงคุณอาจไม่สามารถหาข้อมูลการฝึกที่ตรงกับสิ่งที่กล้องบนอุปกรณ์ของคุณจับได้ คุณสามารถแก้ไขปัญหานี้โดยการฝึกโดยตรงจากอุปกรณ์ของคุณโดยใช้ API การฝึก เพื่อฝึกโมเดลโดยใช้ภาพที่จับจากอุปกรณ์ IoT ของคุณ * อ่านเพิ่มเติมเกี่ยวกับ API การฝึกใน [การเริ่มต้นใช้งาน Custom Vision SDK](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/image-classification?WT.mc_id=academic-17441-jabenn&tabs=visual-studio&pivots=programming-language-python) ## งานที่ได้รับมอบหมาย [ตอบสนองต่อผลลัพธ์การจำแนก](assignment.md) --- **ข้อจำกัดความรับผิดชอบ**: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่เป็นมืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้