# ฝึกสร้างตัวตรวจจับสินค้าในสต็อก ![ภาพรวมของบทเรียนนี้ในรูปแบบสเก็ตโน้ต](../../../../../translated_images/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.th.jpg) > สเก็ตโน้ตโดย [Nitya Narasimhan](https://github.com/nitya) คลิกที่ภาพเพื่อดูเวอร์ชันขนาดใหญ่ วิดีโอนี้ให้ภาพรวมเกี่ยวกับการตรวจจับวัตถุด้วยบริการ Azure Custom Vision ซึ่งเป็นบริการที่จะครอบคลุมในบทเรียนนี้ [![Custom Vision 2 - Object Detection Made Easy | The Xamarin Show](https://img.youtube.com/vi/wtTYSyBUpFc/0.jpg)](https://www.youtube.com/watch?v=wtTYSyBUpFc) > 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอ ## แบบทดสอบก่อนเรียน [แบบทดสอบก่อนเรียน](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/37) ## บทนำ ในโปรเจกต์ก่อนหน้านี้ คุณได้ใช้ AI เพื่อฝึกโมเดลจำแนกภาพ ซึ่งเป็นโมเดลที่สามารถบอกได้ว่าภาพนั้นมีอะไรอยู่ เช่น ผลไม้สุกหรือผลไม้ดิบ อีกประเภทหนึ่งของโมเดล AI ที่สามารถใช้กับภาพได้คือการตรวจจับวัตถุ โมเดลเหล่านี้ไม่ได้จำแนกภาพด้วยแท็ก แต่ถูกฝึกให้รู้จักวัตถุ และสามารถค้นหาวัตถุในภาพได้ ไม่เพียงแค่ตรวจจับว่ามีวัตถุอยู่ในภาพ แต่ยังสามารถบอกตำแหน่งของวัตถุในภาพได้ด้วย สิ่งนี้ช่วยให้คุณสามารถนับจำนวนวัตถุในภาพได้ ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับการตรวจจับวัตถุ รวมถึงวิธีการใช้งานในธุรกิจค้าปลีก นอกจากนี้คุณยังจะได้เรียนรู้วิธีการฝึกตัวตรวจจับวัตถุในระบบคลาวด์ ในบทเรียนนี้เราจะครอบคลุม: * [การตรวจจับวัตถุ](../../../../../5-retail/lessons/1-train-stock-detector) * [การใช้การตรวจจับวัตถุในธุรกิจค้าปลีก](../../../../../5-retail/lessons/1-train-stock-detector) * [การฝึกตัวตรวจจับวัตถุ](../../../../../5-retail/lessons/1-train-stock-detector) * [การทดสอบตัวตรวจจับวัตถุ](../../../../../5-retail/lessons/1-train-stock-detector) * [การฝึกตัวตรวจจับวัตถุใหม่](../../../../../5-retail/lessons/1-train-stock-detector) ## การตรวจจับวัตถุ การตรวจจับวัตถุเกี่ยวข้องกับการตรวจจับวัตถุในภาพโดยใช้ AI แตกต่างจากโมเดลจำแนกภาพที่คุณฝึกในโปรเจกต์ก่อนหน้า การตรวจจับวัตถุไม่ได้เกี่ยวกับการทำนายแท็กที่ดีที่สุดสำหรับภาพทั้งหมด แต่เกี่ยวกับการค้นหาวัตถุหนึ่งหรือมากกว่าในภาพ ### การตรวจจับวัตถุ vs การจำแนกภาพ การจำแนกภาพเกี่ยวกับการจำแนกภาพทั้งหมด - ความน่าจะเป็นที่ภาพทั้งหมดจะตรงกับแต่ละแท็ก คุณจะได้รับค่าความน่าจะเป็นสำหรับทุกแท็กที่ใช้ฝึกโมเดล ![การจำแนกภาพของเม็ดมะม่วงหิมพานต์และมะเขือเทศบด](../../../../../translated_images/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.th.png) ในตัวอย่างด้านบน มีการจำแนกภาพสองภาพโดยใช้โมเดลที่ฝึกเพื่อจำแนกกระปุกเม็ดมะม่วงหิมพานต์หรือกระป๋องมะเขือเทศบด ภาพแรกเป็นกระปุกเม็ดมะม่วงหิมพานต์ และมีผลลัพธ์ดังนี้: | แท็ก | ความน่าจะเป็น | | -------------- | ----------: | | `เม็ดมะม่วงหิมพานต์` | 98.4% | | `มะเขือเทศบด` | 1.6% | ภาพที่สองเป็นกระป๋องมะเขือเทศบด และผลลัพธ์คือ: | แท็ก | ความน่าจะเป็น | | -------------- | ----------: | | `เม็ดมะม่วงหิมพานต์` | 0.7% | | `มะเขือเทศบด` | 99.3% | คุณสามารถใช้ค่าความน่าจะเป็นเหล่านี้ร่วมกับเปอร์เซ็นต์เกณฑ์เพื่อทำนายสิ่งที่อยู่ในภาพ แต่ถ้าภาพมีหลายกระป๋องมะเขือเทศบด หรือมีทั้งเม็ดมะม่วงหิมพานต์และมะเขือเทศบด? ผลลัพธ์อาจไม่ให้สิ่งที่คุณต้องการ นี่คือจุดที่การตรวจจับวัตถุเข้ามามีบทบาท การตรวจจับวัตถุเกี่ยวข้องกับการฝึกโมเดลให้รู้จักวัตถุ แทนที่จะให้ภาพที่มีวัตถุและบอกว่าภาพแต่ละภาพเป็นแท็กใดแท็กหนึ่ง คุณจะเน้นส่วนของภาพที่มีวัตถุเฉพาะ และแท็กนั้น คุณสามารถแท็กวัตถุเดียวในภาพหรือหลายวัตถุ วิธีนี้โมเดลจะเรียนรู้ว่าตัววัตถุมีลักษณะอย่างไร ไม่ใช่แค่ภาพที่มีวัตถุมีลักษณะอย่างไร เมื่อคุณใช้โมเดลเพื่อทำนายภาพ แทนที่จะได้รับรายการแท็กและเปอร์เซ็นต์ คุณจะได้รับรายการวัตถุที่ตรวจจับได้ พร้อมกับกรอบสี่เหลี่ยมรอบวัตถุและความน่าจะเป็นที่วัตถุนั้นตรงกับแท็กที่กำหนด > 🎓 *กรอบสี่เหลี่ยม* คือกรอบรอบวัตถุ ![การตรวจจับวัตถุของเม็ดมะม่วงหิมพานต์และมะเขือเทศบด](../../../../../translated_images/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.th.png) ภาพด้านบนมีทั้งกระปุกเม็ดมะม่วงหิมพานต์และกระป๋องมะเขือเทศบดสามกระป๋อง ตัวตรวจจับวัตถุตรวจจับเม็ดมะม่วงหิมพานต์ โดยคืนกรอบสี่เหลี่ยมที่มีเม็ดมะม่วงหิมพานต์พร้อมเปอร์เซ็นต์ความน่าจะเป็นที่กรอบสี่เหลี่ยมมีวัตถุ ในกรณีนี้คือ 97.6% ตัวตรวจจับวัตถุยังตรวจจับกระป๋องมะเขือเทศบดสามกระป๋อง และให้กรอบสี่เหลี่ยมแยกกันสามกรอบสำหรับแต่ละกระป๋องที่ตรวจจับได้ และแต่ละกรอบมีเปอร์เซ็นต์ความน่าจะเป็นที่กรอบสี่เหลี่ยมมีกระป๋องมะเขือเทศบด ✅ ลองคิดถึงสถานการณ์ต่าง ๆ ที่คุณอาจต้องการใช้โมเดล AI ที่ใช้ภาพ คุณคิดว่าสถานการณ์ใดต้องการการจำแนกภาพ และสถานการณ์ใดต้องการการตรวจจับวัตถุ? ### การทำงานของการตรวจจับวัตถุ การตรวจจับวัตถุใช้โมเดล ML ที่ซับซ้อน โมเดลเหล่านี้ทำงานโดยแบ่งภาพออกเป็นหลายเซลล์ จากนั้นตรวจสอบว่าจุดศูนย์กลางของกรอบสี่เหลี่ยมตรงกับจุดศูนย์กลางของภาพที่ตรงกับภาพที่ใช้ฝึกโมเดล คุณสามารถคิดว่านี่เหมือนกับการรันโมเดลจำแนกภาพในส่วนต่าง ๆ ของภาพเพื่อค้นหาความตรงกัน > 💁 นี่เป็นการอธิบายแบบง่าย ๆ มาก ๆ มีเทคนิคมากมายสำหรับการตรวจจับวัตถุ และคุณสามารถอ่านเพิ่มเติมเกี่ยวกับเทคนิคเหล่านี้ได้ใน [หน้าการตรวจจับวัตถุบน Wikipedia](https://wikipedia.org/wiki/Object_detection) มีโมเดลหลายแบบที่สามารถทำการตรวจจับวัตถุได้ หนึ่งในโมเดลที่มีชื่อเสียงคือ [YOLO (You only look once)](https://pjreddie.com/darknet/yolo/) ซึ่งมีความเร็วสูงและสามารถตรวจจับวัตถุได้ 20 ประเภท เช่น คน สุนัข ขวด และรถยนต์ ✅ อ่านเพิ่มเติมเกี่ยวกับโมเดล YOLO ที่ [pjreddie.com/darknet/yolo/](https://pjreddie.com/darknet/yolo/) โมเดลตรวจจับวัตถุสามารถฝึกใหม่ได้โดยใช้การเรียนรู้แบบถ่ายโอนเพื่อตรวจจับวัตถุที่กำหนดเอง ## การใช้การตรวจจับวัตถุในธุรกิจค้าปลีก การตรวจจับวัตถุมีการใช้งานหลากหลายในธุรกิจค้าปลีก ตัวอย่างเช่น: * **การตรวจสอบและนับสินค้าในสต็อก** - การตรวจจับเมื่อสินค้าบนชั้นวางมีน้อยเกินไป หากสินค้ามีน้อยเกินไป สามารถส่งการแจ้งเตือนไปยังพนักงานหรือหุ่นยนต์เพื่อเติมสินค้า * **การตรวจจับหน้ากาก** - ในร้านค้าที่มีนโยบายหน้ากากในช่วงเหตุการณ์ด้านสาธารณสุข การตรวจจับวัตถุสามารถตรวจจับคนที่สวมหน้ากากและคนที่ไม่ได้สวมหน้ากาก * **การเรียกเก็บเงินอัตโนมัติ** - การตรวจจับสินค้าที่หยิบออกจากชั้นวางในร้านค้าอัตโนมัติและเรียกเก็บเงินจากลูกค้าอย่างเหมาะสม * **การตรวจจับอันตราย** - การตรวจจับสิ่งของที่แตกบนพื้น หรือของเหลวที่หก และแจ้งเตือนทีมทำความสะอาด ✅ ทำการค้นคว้า: มีการใช้งานอื่น ๆ สำหรับการตรวจจับวัตถุในธุรกิจค้าปลีกอีกหรือไม่? ## การฝึกตัวตรวจจับวัตถุ คุณสามารถฝึกตัวตรวจจับวัตถุโดยใช้ Custom Vision ในลักษณะเดียวกับที่คุณฝึกโมเดลจำแนกภาพ ### งาน - สร้างตัวตรวจจับวัตถุ 1. สร้าง Resource Group สำหรับโปรเจกต์นี้ชื่อ `stock-detector` 1. สร้างทรัพยากรการฝึก Custom Vision ฟรี และทรัพยากรการทำนาย Custom Vision ฟรีใน Resource Group `stock-detector` ตั้งชื่อว่า `stock-detector-training` และ `stock-detector-prediction` > 💁 คุณสามารถมีทรัพยากรการฝึกและการทำนายฟรีได้เพียงหนึ่งเดียว ดังนั้นตรวจสอบให้แน่ใจว่าคุณได้ล้างโปรเจกต์จากบทเรียนก่อนหน้าแล้ว > ⚠️ คุณสามารถอ้างอิง [คำแนะนำในการสร้างทรัพยากรการฝึกและการทำนายจากโปรเจกต์ 4 บทเรียน 1 หากจำเป็น](../../../4-manufacturing/lessons/1-train-fruit-detector/README.md#task---create-a-cognitive-services-resource) 1. เปิดพอร์ทัล Custom Vision ที่ [CustomVision.ai](https://customvision.ai) และลงชื่อเข้าใช้ด้วยบัญชี Microsoft ที่คุณใช้สำหรับบัญชี Azure 1. ทำตาม [ส่วนการสร้างโปรเจกต์ใหม่ในเอกสาร Build an object detector quickstart บน Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/get-started-build-detector?WT.mc_id=academic-17441-jabenn#create-a-new-project) เพื่อสร้างโปรเจกต์ Custom Vision ใหม่ UI อาจเปลี่ยนแปลงได้ และเอกสารเหล่านี้เป็นข้อมูลอ้างอิงที่อัปเดตที่สุดเสมอ ตั้งชื่อโปรเจกต์ของคุณว่า `stock-detector` เมื่อคุณสร้างโปรเจกต์ของคุณ ตรวจสอบให้แน่ใจว่าได้ใช้ทรัพยากร `stock-detector-training` ที่คุณสร้างไว้ก่อนหน้านี้ ใช้ประเภทโปรเจกต์ *Object Detection* และโดเมน *Products on Shelves* ![การตั้งค่าของโปรเจกต์ Custom Vision โดยตั้งชื่อเป็น fruit-quality-detector ไม่มีคำอธิบาย ทรัพยากรตั้งเป็น fruit-quality-detector-training ประเภทโปรเจกต์ตั้งเป็น classification ประเภทการจำแนกตั้งเป็น multi class และโดเมนตั้งเป็น food](../../../../../translated_images/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.th.png) ✅ โดเมน Products on Shelves ถูกออกแบบมาโดยเฉพาะสำหรับการตรวจจับสินค้าบนชั้นวาง อ่านเพิ่มเติมเกี่ยวกับโดเมนต่าง ๆ ใน [เอกสาร Select a domain บน Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/select-domain?WT.mc_id=academic-17441-jabenn#object-detection) ✅ ใช้เวลาสำรวจ UI ของ Custom Vision สำหรับตัวตรวจจับวัตถุของคุณ ### งาน - ฝึกตัวตรวจจับวัตถุของคุณ ในการฝึกโมเดลของคุณ คุณจะต้องมีชุดภาพที่มีวัตถุที่คุณต้องการตรวจจับ 1. รวบรวมภาพที่มีวัตถุที่ต้องการตรวจจับ คุณจะต้องมีภาพอย่างน้อย 15 ภาพที่มีวัตถุแต่ละชนิดที่ต้องการตรวจจับจากมุมต่าง ๆ และในสภาพแสงที่แตกต่างกัน แต่ยิ่งมีมากยิ่งดี ตัวตรวจจับวัตถุนี้ใช้โดเมน *Products on Shelves* ดังนั้นลองจัดวางวัตถุเหมือนกับว่ามันอยู่บนชั้นวางสินค้า คุณจะต้องมีภาพบางส่วนเพื่อทดสอบโมเดลด้วย หากคุณตรวจจับวัตถุมากกว่าหนึ่งชนิด คุณจะต้องมีภาพทดสอบที่มีวัตถุทั้งหมด > 💁 ภาพที่มีวัตถุหลายชนิดนับรวมในขั้นต่ำ 15 ภาพสำหรับวัตถุทั้งหมดในภาพ ภาพของคุณควรเป็น png หรือ jpeg และมีขนาดเล็กกว่า 6MB หากคุณสร้างภาพด้วย iPhone ตัวอย่างเช่น ภาพอาจเป็นภาพ HEIC ความละเอียดสูง ดังนั้นจะต้องแปลงและอาจลดขนาดลง ยิ่งมีภาพมากยิ่งดี และคุณควรมีจำนวนภาพของวัตถุที่สุกและดิบใกล้เคียงกัน โมเดลนี้ออกแบบมาสำหรับสินค้าบนชั้นวาง ดังนั้นลองถ่ายภาพวัตถุบนชั้นวาง คุณสามารถค้นหาภาพตัวอย่างที่คุณสามารถใช้ได้ใน [โฟลเดอร์ images](../../../../../5-retail/lessons/1-train-stock-detector/images) ของเม็ดมะม่วงหิมพานต์และมะเขือเทศบดที่คุณสามารถใช้ได้ 1. ทำตาม [ส่วน Upload and tag images ในเอกสาร Build an object detector quickstart บน Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/get-started-build-detector?WT.mc_id=academic-17441-jabenn#upload-and-tag-images) เพื่ออัปโหลดภาพการฝึกของคุณ สร้างแท็กที่เกี่ยวข้องตามประเภทของวัตถุที่คุณต้องการตรวจจับ ![หน้าต่างอัปโหลดแสดงการอัปโหลดภาพกล้วยสุกและกล้วยดิบ](../../../../../translated_images/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.th.png) เมื่อคุณวาดกรอบสี่เหลี่ยมรอบวัตถุ ให้วาดให้แน่นรอบวัตถุ การวาดกรอบสี่เหลี่ยมทั้งหมดอาจใช้เวลานาน แต่เครื่องมือจะตรวจจับสิ่งที่คิดว่าเป็นกรอบสี่เหลี่ยม ทำให้เร็วขึ้น ![การแท็กมะเขือเทศบด](../../../../../translated_images/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.th.png) > 💁 หากคุณมีภาพมากกว่า 15 ภาพสำหรับวัตถุแต่ละชนิด คุณสามารถฝึกหลังจาก 15 ภาพแล้วใช้ฟีเจอร์ **Suggested tags** ฟีเจอร์นี้จะใช้โมเดลที่ฝึกแล้วเพื่อตรวจจับวัตถุในภาพที่ยังไม่ได้แท็ก คุณสามารถยืนยันวัตถุที่ตรวจจับได้ หรือปฏิเสธและวาดกรอบสี่เหลี่ยมใหม่ สิ่งนี้สามารถช่วยประหยัดเวลาได้มาก 1. ทำตาม [ส่วน Train the detector ในเอกสาร Build an object detector quickstart บน Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/get-started-build-detector?WT.mc_id=academic-17441-jabenn#train-the-detector) เพื่อฝึกตัวตรวจจับวัตถุของคุณบนภาพที่แท็กไว้ คุณจะได้รับตัวเลือกประเภทการฝึก เลือก **Quick Training** ตัวตรวจจับวัตถุจะเริ่มฝึก และจะใช้เวลาสองสามนาทีเพื่อให้การฝึกเสร็จสมบูรณ์ ## ทดสอบตัวตรวจจับวัตถุของคุณ เมื่อคุณฝึกตัวตรวจจับวัตถุเสร็จแล้ว คุณสามารถทดสอบได้โดยให้ภาพใหม่เพื่อให้ตรวจจับวัตถุในภาพ ### งาน - ทดสอบตัวตรวจจับวัตถุของคุณ 1. ใช้ปุ่ม **Quick Test** เพื่ออัปโหลดภาพทดสอบและตรวจสอบว่าวัตถุถูกตรวจจับ ใช้ภาพทดสอบที่คุณสร้างไว้ก่อนหน้านี้ ไม่ใช่ภาพที่คุณใช้สำหรับการฝึก ![กระป๋องมะเขือเทศบด 3 กระป๋องที่ตรวจจับได้พร้อมความน่าจะเป็น 38%, 35.5% และ 34.6%](../../../../../translated_images/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.th.png) 1. ลองใช้ภาพทดสอบทั้งหมดที่คุณมีและสังเกตค่าความน่าจะเป็น ## ฝึกตัวตรวจจับวัตถุใหม่ เมื่อคุณทดสอบตัวตรวจจับวัตถุของคุณ อาจไม่ให้ผลลัพธ์ตามที่คุณคาดหวัง เช่นเดียวกับโมเดลจำแนกภาพในโปรเจกต์ก่อนหน้า คุณสามารถปรับปรุงตัวตรวจจับวัตถุของคุณโดยการฝึกใหม่ด้วยภาพที่โมเดลตรวจจับผิดพลาด ทุกครั้งที่คุณทำการทำนายโดยใช้ตัวเลือก Quick Test ภาพและผลลัพธ์จะถูกบันทึกไว้ คุณสามารถใช้ภาพเหล่านี้เพื่อฝ [แบบทดสอบหลังการบรรยาย](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/38) ## ทบทวนและศึกษาด้วยตนเอง * เมื่อคุณฝึกตัวตรวจจับวัตถุ คุณจะเห็นค่าต่าง ๆ เช่น *Precision*, *Recall*, และ *mAP* ซึ่งเป็นการประเมินผลโมเดลที่ถูกสร้างขึ้น ลองอ่านเพิ่มเติมเกี่ยวกับค่าต่าง ๆ เหล่านี้ได้ที่ [ส่วน Evaluate the detector ใน Build an object detector quickstart บน Microsoft docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/get-started-build-detector?WT.mc_id=academic-17441-jabenn#evaluate-the-detector) * อ่านเพิ่มเติมเกี่ยวกับการตรวจจับวัตถุได้ที่ [หน้าการตรวจจับวัตถุบน Wikipedia](https://wikipedia.org/wiki/Object_detection) ## งานที่ได้รับมอบหมาย [เปรียบเทียบโดเมน](assignment.md) --- **ข้อจำกัดความรับผิดชอบ**: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามอย่างเต็มที่เพื่อให้การแปลมีความถูกต้อง โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่เป็นมืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้