You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/th/5-retail/lessons/2-check-stock-device/README.md

191 lines
27 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "1c9e5fa8b7be726c75a97232b1e41c97",
"translation_date": "2025-08-27T21:37:00+00:00",
"source_file": "5-retail/lessons/2-check-stock-device/README.md",
"language_code": "th"
}
-->
# ตรวจสอบสต็อกจากอุปกรณ์ IoT
![ภาพสเก็ตโน้ตของบทเรียนนี้](../../../../../translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.th.jpg)
> สเก็ตโน้ตโดย [Nitya Narasimhan](https://github.com/nitya) คลิกที่ภาพเพื่อดูเวอร์ชันขนาดใหญ่
## แบบทดสอบก่อนเรียน
[แบบทดสอบก่อนเรียน](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/39)
## บทนำ
ในบทเรียนก่อนหน้านี้ คุณได้เรียนรู้เกี่ยวกับการใช้งานการตรวจจับวัตถุในธุรกิจค้าปลีก รวมถึงการฝึกตัวตรวจจับวัตถุเพื่อระบุสต็อกสินค้า ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีการใช้งานตัวตรวจจับวัตถุจากอุปกรณ์ IoT เพื่อการนับสต็อกสินค้า
ในบทเรียนนี้เราจะครอบคลุม:
* [การนับสต็อก](../../../../../5-retail/lessons/2-check-stock-device)
* [เรียกใช้งานตัวตรวจจับวัตถุจากอุปกรณ์ IoT](../../../../../5-retail/lessons/2-check-stock-device)
* [กรอบสี่เหลี่ยม (Bounding boxes)](../../../../../5-retail/lessons/2-check-stock-device)
* [ฝึกโมเดลใหม่](../../../../../5-retail/lessons/2-check-stock-device)
* [นับสต็อก](../../../../../5-retail/lessons/2-check-stock-device)
> 🗑 นี่เป็นบทเรียนสุดท้ายในโปรเจกต์นี้ ดังนั้นหลังจากที่คุณทำบทเรียนและงานที่มอบหมายเสร็จแล้ว อย่าลืมล้างข้อมูลบริการคลาวด์ของคุณ คุณจะต้องใช้บริการเหล่านี้เพื่อทำงานที่มอบหมายให้เสร็จ ดังนั้นอย่าลืมทำงานให้เสร็จก่อน
>
> ดูคำแนะนำใน [คู่มือการล้างข้อมูลโปรเจกต์](../../../clean-up.md) หากจำเป็นสำหรับคำแนะนำในการดำเนินการนี้
## การนับสต็อก
ตัวตรวจจับวัตถุสามารถใช้ในการตรวจสอบสต็อกสินค้าได้ ไม่ว่าจะเป็นการนับจำนวนสินค้าหรือการตรวจสอบว่าสินค้าอยู่ในตำแหน่งที่ควรจะอยู่ อุปกรณ์ IoT ที่มีกล้องสามารถติดตั้งได้ทั่วทั้งร้านเพื่อเฝ้าดูสต็อกสินค้า โดยเริ่มจากจุดที่สำคัญ เช่น พื้นที่ที่มีสินค้ามูลค่าสูงในจำนวนที่จำกัด
ตัวอย่างเช่น หากกล้องชี้ไปที่ชั้นวางที่สามารถวางกระป๋องซอสมะเขือเทศได้ 8 กระป๋อง และตัวตรวจจับวัตถุตรวจพบเพียง 7 กระป๋อง นั่นหมายความว่ามี 1 กระป๋องหายไปและต้องเติมสต็อก
![กระป๋องซอสมะเขือเทศ 7 กระป๋องบนชั้นวาง](../../../../../translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.th.png)
ในภาพด้านบน ตัวตรวจจับวัตถุได้ตรวจพบกระป๋องซอสมะเขือเทศ 7 กระป๋องบนชั้นวางที่สามารถวางได้ 8 กระป๋อง ไม่เพียงแต่อุปกรณ์ IoT จะสามารถส่งการแจ้งเตือนเกี่ยวกับความจำเป็นในการเติมสต็อก แต่ยังสามารถระบุตำแหน่งของสินค้าที่หายไป ซึ่งเป็นข้อมูลสำคัญหากคุณใช้หุ่นยนต์ในการเติมสต็อกสินค้า
> 💁 ขึ้นอยู่กับร้านค้าและความนิยมของสินค้า การเติมสต็อกอาจไม่เกิดขึ้นหากสินค้าหายไปเพียง 1 ชิ้น คุณจะต้องสร้างอัลกอริทึมที่กำหนดเวลาการเติมสต็อกตามประเภทสินค้า ลูกค้า และเกณฑ์อื่น ๆ
✅ ในสถานการณ์อื่น ๆ คุณสามารถรวมการตรวจจับวัตถุและหุ่นยนต์ได้อย่างไร?
บางครั้งสินค้าที่ไม่ถูกต้องอาจอยู่บนชั้นวาง ซึ่งอาจเกิดจากความผิดพลาดของมนุษย์ในการเติมสต็อก หรือจากลูกค้าที่เปลี่ยนใจและวางสินค้ากลับในตำแหน่งที่ใกล้ที่สุด หากเป็นสินค้าที่ไม่เน่าเสีย เช่น อาหารกระป๋อง นี่อาจเป็นเรื่องน่ารำคาญ แต่หากเป็นสินค้าที่เน่าเสีย เช่น สินค้าที่ต้องแช่แข็งหรือแช่เย็น อาจหมายความว่าสินค้านั้นไม่สามารถขายได้อีกต่อไป เนื่องจากไม่สามารถบอกได้ว่าสินค้านั้นอยู่นอกตู้แช่แข็งนานแค่ไหน
การตรวจจับวัตถุสามารถใช้ในการตรวจจับสินค้าที่ไม่คาดคิด และแจ้งเตือนมนุษย์หรือหุ่นยนต์ให้คืนสินค้านั้นไปยังตำแหน่งที่ถูกต้องทันทีที่ตรวจพบ
![กระป๋องข้าวโพดอ่อนบนชั้นวางซอสมะเขือเทศ](../../../../../translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.th.png)
ในภาพด้านบน กระป๋องข้าวโพดอ่อนถูกวางบนชั้นวางข้างซอสมะเขือเทศ ตัวตรวจจับวัตถุได้ตรวจพบสิ่งนี้ ทำให้อุปกรณ์ IoT สามารถแจ้งเตือนมนุษย์หรือหุ่นยนต์ให้คืนกระป๋องไปยังตำแหน่งที่ถูกต้อง
## เรียกใช้งานตัวตรวจจับวัตถุจากอุปกรณ์ IoT
ตัวตรวจจับวัตถุที่คุณฝึกในบทเรียนก่อนหน้านี้สามารถเรียกใช้งานจากอุปกรณ์ IoT ของคุณได้
### งาน - เผยแพร่การทำงานของตัวตรวจจับวัตถุ
การเผยแพร่การทำงานจะทำผ่านพอร์ทัล Custom Vision
1. เปิดพอร์ทัล Custom Vision ที่ [CustomVision.ai](https://customvision.ai) และลงชื่อเข้าใช้หากคุณยังไม่ได้เปิด จากนั้นเปิดโปรเจกต์ `stock-detector` ของคุณ
1. เลือกแท็บ **Performance** จากตัวเลือกด้านบน
1. เลือกการทำงานล่าสุดจากรายการ *Iterations* ด้านข้าง
1. กดปุ่ม **Publish** สำหรับการทำงานนั้น
![ปุ่มเผยแพร่](../../../../../translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.th.png)
1. ในหน้าต่าง *Publish Model* ตั้งค่าทรัพยากร *Prediction resource* เป็นทรัพยากร `stock-detector-prediction` ที่คุณสร้างในบทเรียนก่อนหน้า ตั้งชื่อเป็น `Iteration2` และกดปุ่ม **Publish**
1. เมื่อเผยแพร่เสร็จแล้ว กดปุ่ม **Prediction URL** ซึ่งจะแสดงรายละเอียดของ API การทำนาย และคุณจะต้องใช้ข้อมูลเหล่านี้เพื่อเรียกใช้งานโมเดลจากอุปกรณ์ IoT ของคุณ ส่วนล่างที่มีข้อความ *If you have an image file* คือข้อมูลที่คุณต้องการ คัดลอก URL ที่แสดง ซึ่งจะมีลักษณะดังนี้:
```output
https://<location>.api.cognitive.microsoft.com/customvision/v3.0/Prediction/<id>/detect/iterations/Iteration2/image
```
โดย `<location>` จะเป็นตำแหน่งที่คุณใช้เมื่อสร้างทรัพยากร Custom Vision และ `<id>` จะเป็นรหัสยาวที่ประกอบด้วยตัวอักษรและตัวเลข
นอกจากนี้ คัดลอกค่าของ *Prediction-Key* ซึ่งเป็นคีย์ที่ปลอดภัยที่คุณต้องส่งเมื่อเรียกใช้งานโมเดล มีเพียงแอปพลิเคชันที่ส่งคีย์นี้เท่านั้นที่สามารถใช้โมเดลได้ แอปพลิเคชันอื่น ๆ จะถูกปฏิเสธ
![หน้าต่าง API การทำนายที่แสดง URL และคีย์](../../../../../translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.th.png)
✅ เมื่อมีการเผยแพร่การทำงานใหม่ จะมีชื่อที่แตกต่างกัน คุณคิดว่าคุณจะเปลี่ยนการทำงานที่อุปกรณ์ IoT ใช้อย่างไร?
### งาน - เรียกใช้งานตัวตรวจจับวัตถุจากอุปกรณ์ IoT
ทำตามคำแนะนำที่เกี่ยวข้องด้านล่างเพื่อใช้งานตัวตรวจจับวัตถุจากอุปกรณ์ IoT ของคุณ:
* [Arduino - Wio Terminal](wio-terminal-object-detector.md)
* [คอมพิวเตอร์บอร์ดเดี่ยว - Raspberry Pi/อุปกรณ์เสมือน](single-board-computer-object-detector.md)
## กรอบสี่เหลี่ยม (Bounding boxes)
เมื่อคุณใช้งานตัวตรวจจับวัตถุ คุณจะได้รับผลลัพธ์ที่ไม่เพียงแค่แสดงวัตถุที่ตรวจพบพร้อมแท็กและความน่าจะเป็น แต่ยังรวมถึงกรอบสี่เหลี่ยมที่ระบุตำแหน่งที่ตัวตรวจจับวัตถุตรวจพบวัตถุด้วยความน่าจะเป็นที่กำหนด
> 💁 กรอบสี่เหลี่ยมคือกรอบที่กำหนดพื้นที่ที่มีวัตถุที่ตรวจพบ เป็นกรอบที่กำหนดขอบเขตของวัตถุ
ผลลัพธ์ของการทำนายในแท็บ **Predictions** ใน Custom Vision จะมีกรอบสี่เหลี่ยมที่วาดบนภาพที่ส่งไปเพื่อการทำนาย
![กระป๋องซอสมะเขือเทศ 4 กระป๋องบนชั้นวางพร้อมการทำนาย](../../../../../translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.th.png)
ในภาพด้านบน มีการตรวจพบกระป๋องซอสมะเขือเทศ 4 กระป๋อง ในผลลัพธ์จะมีกรอบสีแดงที่วางทับสำหรับแต่ละวัตถุที่ตรวจพบในภาพ ซึ่งแสดงกรอบสี่เหลี่ยมสำหรับภาพนั้น
✅ เปิดการทำนายใน Custom Vision และตรวจสอบกรอบสี่เหลี่ยม
กรอบสี่เหลี่ยมถูกกำหนดด้วยค่าทั้งหมด 4 ค่า ได้แก่ top, left, height และ width ค่าต่าง ๆ นี้อยู่ในช่วง 0-1 ซึ่งแสดงตำแหน่งเป็นเปอร์เซ็นต์ของขนาดภาพ จุดเริ่มต้น (ตำแหน่ง 0,0) คือมุมบนซ้ายของภาพ ดังนั้นค่าด้านบนคือระยะห่างจากด้านบน และด้านล่างของกรอบสี่เหลี่ยมคือค่าด้านบนบวกกับความสูง
![กรอบสี่เหลี่ยมรอบกระป๋องซอสมะเขือเทศ](../../../../../translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.th.png)
ภาพด้านบนมีความกว้าง 600 พิกเซลและความสูง 800 พิกเซล กรอบสี่เหลี่ยมเริ่มต้นที่ 320 พิกเซลลงมา ซึ่งให้ค่าด้านบนเป็น 0.4 (800 x 0.4 = 320) จากด้านซ้าย กรอบสี่เหลี่ยมเริ่มต้นที่ 240 พิกเซล ซึ่งให้ค่าด้านซ้ายเป็น 0.4 (600 x 0.4 = 240) ความสูงของกรอบสี่เหลี่ยมคือ 240 พิกเซล ซึ่งให้ค่าความสูงเป็น 0.3 (800 x 0.3 = 240) ความกว้างของกรอบสี่เหลี่ยมคือ 120 พิกเซล ซึ่งให้ค่าความกว้างเป็น 0.2 (600 x 0.2 = 120)
| ค่าพิกัด | ค่า |
| -------- | ---: |
| Top | 0.4 |
| Left | 0.4 |
| Height | 0.3 |
| Width | 0.2 |
การใช้ค่าร้อยละจาก 0-1 หมายความว่าไม่ว่าภาพจะถูกปรับขนาดเป็นเท่าใด กรอบสี่เหลี่ยมจะเริ่มต้นที่ 0.4 ของความยาวและความสูง และมีขนาด 0.3 ของความสูงและ 0.2 ของความกว้าง
คุณสามารถใช้กรอบสี่เหลี่ยมร่วมกับความน่าจะเป็นเพื่อประเมินความแม่นยำของการตรวจจับ ตัวอย่างเช่น ตัวตรวจจับวัตถุสามารถตรวจพบวัตถุหลายชิ้นที่ทับซ้อนกัน เช่น การตรวจพบกระป๋องหนึ่งกระป๋องอยู่ในอีกกระป๋องหนึ่ง โค้ดของคุณสามารถตรวจสอบกรอบสี่เหลี่ยม เข้าใจว่าสิ่งนี้เป็นไปไม่ได้ และละเว้นวัตถุใด ๆ ที่มีการทับซ้อนกันอย่างมีนัยสำคัญกับวัตถุอื่น ๆ
![กรอบสี่เหลี่ยมสองกรอบทับซ้อนกันบนกระป๋องซอสมะเขือเทศ](../../../../../translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.th.png)
ในตัวอย่างด้านบน กรอบสี่เหลี่ยมหนึ่งแสดงกระป๋องซอสมะเขือเทศที่มีความน่าจะเป็น 78.3% กรอบสี่เหลี่ยมที่สองมีขนาดเล็กกว่าเล็กน้อย และอยู่ภายในกรอบแรกด้วยความน่าจะเป็น 64.3% โค้ดของคุณสามารถตรวจสอบกรอบสี่เหลี่ยม เห็นว่ามันทับซ้อนกันทั้งหมด และละเว้นความน่าจะเป็นที่ต่ำกว่า เนื่องจากไม่มีทางที่กระป๋องหนึ่งจะอยู่ในอีกกระป๋องหนึ่งได้
✅ คุณคิดว่าสถานการณ์ใดที่การตรวจพบวัตถุหนึ่งอยู่ในอีกวัตถุหนึ่งเป็นสิ่งที่ถูกต้อง?
## ฝึกโมเดลใหม่
เช่นเดียวกับตัวจำแนกภาพ คุณสามารถฝึกโมเดลของคุณใหม่โดยใช้ข้อมูลที่จับได้จากอุปกรณ์ IoT ของคุณ การใช้ข้อมูลจริงนี้จะช่วยให้โมเดลของคุณทำงานได้ดีเมื่อใช้งานจากอุปกรณ์ IoT
แตกต่างจากตัวจำแนกภาพ คุณไม่สามารถแท็กภาพได้โดยตรง แต่คุณต้องตรวจสอบกรอบสี่เหลี่ยมที่ตรวจพบโดยโมเดลทุกกรอบ หากกรอบนั้นอยู่รอบสิ่งที่ผิด คุณต้องลบออก หากอยู่ในตำแหน่งที่ผิด คุณต้องปรับแก้ไข
### งาน - ฝึกโมเดลใหม่
1. ตรวจสอบให้แน่ใจว่าคุณได้จับภาพหลากหลายรูปแบบโดยใช้อุปกรณ์ IoT ของคุณ
1. จากแท็บ **Predictions** เลือกภาพ คุณจะเห็นกรอบสีแดงที่แสดงกรอบสี่เหลี่ยมของวัตถุที่ตรวจพบ
1. ทำงานผ่านกรอบสี่เหลี่ยมแต่ละกรอบ เลือกกรอบนั้นก่อน และคุณจะเห็นป๊อปอัปที่แสดงแท็ก ใช้ที่จับที่มุมของกรอบสี่เหลี่ยมเพื่อปรับขนาดหากจำเป็น หากแท็กผิด ให้ลบออกด้วยปุ่ม **X** และเพิ่มแท็กที่ถูกต้อง หากกรอบสี่เหลี่ยมไม่ครอบคลุมวัตถุ ให้ลบออกด้วยปุ่มถังขยะ
1. ปิดตัวแก้ไขเมื่อเสร็จสิ้น และภาพจะย้ายจากแท็บ **Predictions** ไปยังแท็บ **Training Images** ทำซ้ำกระบวนการสำหรับการทำนายทั้งหมด
1. ใช้ปุ่ม **Train** เพื่อฝึกโมเดลของคุณใหม่ เมื่อฝึกเสร็จแล้ว เผยแพร่การทำงานใหม่และอัปเดตอุปกรณ์ IoT ของคุณให้ใช้ URL ของการทำงานใหม่
1. ปรับใช้โค้ดของคุณใหม่และทดสอบอุปกรณ์ IoT ของคุณ
## นับสต็อก
โดยใช้การผสมผสานระหว่างจำนวนวัตถุที่ตรวจพบและกรอบสี่เหลี่ยม คุณสามารถนับสต็อกสินค้าบนชั้นวางได้
### งาน - นับสต็อก
ทำตามคำแนะนำที่เกี่ยวข้องด้านล่างเพื่อการนับสต็อกโดยใช้ผลลัพธ์จากตัวตรวจจับวัตถุจากอุปกรณ์ IoT ของคุณ:
* [Arduino - Wio Terminal](wio-terminal-count-stock.md)
* [คอมพิวเตอร์บอร์ดเดี่ยว - Raspberry Pi/อุปกรณ์เสมือน](single-board-computer-count-stock.md)
---
## 🚀 ความท้าทาย
คุณสามารถตรวจจับสินค้าที่ไม่ถูกต้องได้หรือไม่? ฝึกโมเดลของคุณกับวัตถุหลายประเภท จากนั้นอัปเดตแอปของคุณเพื่อแจ้งเตือนคุณหากตรวจพบสินค้าที่ไม่ถูกต้อง
หรืออาจพัฒนาไปอีกขั้นโดยตรวจจับสินค้าที่วางอยู่ข้างกันบนชั้นวางเดียวกัน และดูว่ามีสิ่งใดถูกวางผิดตำแหน่งโดยการกำหนดขอบเขตบนกรอบสี่เหลี่ยม
## แบบทดสอบหลังเรียน
[แบบทดสอบหลังเรียน](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/40)
## ทบทวนและศึกษาด้วยตนเอง
* เรียนรู้เพิ่มเติมเกี่ยวกับการออกแบบระบบตรวจจับสต็อกสินค้าครบวงจรจาก [คู่มือรูปแบบการตรวจจับสินค้าหมดที่ขอบระบบบน Microsoft Docs](https://docs.microsoft.com/hybrid/app-solutions/pattern-out-of-stock-at-edge?WT.mc_id=academic-17441-jabenn)
* เรียนรู้วิธีอื่น ๆ ในการสร้างโซลูชันค้าปลีกครบวงจรโดยผสมผสานบริการ IoT และคลาวด์หลากหลายรูปแบบผ่านการรับชม [เบื้องหลังโซลูชันค้าปลีก - Hands On! วิดีโอบน YouTube](https://www.youtube.com/watch?v=m3Pc300x2Mw)
## งานที่มอบหมาย
[ใช้งานตัวตรวจจับวัตถุของคุณที่ขอบระบบ](assignment.md)
---
**ข้อจำกัดความรับผิดชอบ**:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้