# អ្នកហៅឧបករណ៍រកឥវ៉ាន់ពីឧបករណ៍ IoT របស់អ្នក - ឧបករណ៍ IoT ពិតប្រាកដនិង Raspberry Pi ពេលដែលឧបករណ៍រកឥវ៉ាន់របស់អ្នកត្រូវបានផ្សព្វផ្សាយរួច វាអាចប្រើបានពីឧបករណ៍ IoT របស់អ្នក។ ## ចម្លងគម្រោងចាត់ថ្នាក់រូបភាព ភាគច្រើននៃឧបករណ៍រកឥវ៉ាន់របស់អ្នកមានស្រដៀងគ្នានឹងចាត់ថ្នាក់រូបភាពដែលអ្នកបានបង្កើតនៅមេរៀនមុន។ ### បុគ្គលិក - ចម្លងគម្រោងចាត់ថ្នាក់រូបភាព 1. បង្កើតថតឈ្មោះ `stock-counter` នៅលើកុំព្យូទ័ររបស់អ្នក ប្រសិនបើអ្នកកំពុងប្រើឧបករណ៍ IoT ពិតប្រាកដ ឬនៅលើ Raspberry Pi របស់អ្នក។ ប្រសិនបើអ្នកកំពុងប្រើឧបករណ៍ IoT ពិតប្រាកដ សូមបង្កើតបរិយាកាសមួយជាក់លាក់។ 1. ប្តូរឧបករណ៍កាមេរ៉ា។ * ប្រសិនបើអ្នកប្រើ Raspberry Pi អ្នកត្រូវតែដំឡើង PiCamera។ អ្នកអាចចង់កំណត់កាមេរ៉ា​នៅទីតាំងមួយចំនួនដូចជាដាក់ខ្សែមាន់លើប្រអប់ ឬកែង ឬក៏ដំឡើងកាមេរ៉ា​ជាមួយតាប័រពីរ​ផ្លូវនៅលើប្រអប់។ * ប្រសិនបើអ្នកប្រើឧបករណ៍ IoT ពិតប្រាកដ អ្នកត្រូវតែដំឡើង CounterFit និងកម្មវិធី CounterFit PyCamera។ ប្រសិនបើអ្នកប្រើរូបភាពឈរ សូមថតរូបភាពខ្លះដែលឧបករណ៍រកឥវ៉ាន់មិនធ្លាប់ឃើញទេ ប្រសិនបើអ្នកប្រើកាមេរ៉ាវែប សូមធ្វើឱ្យកាមេរ៉ានេះនៅទីតាំងដែលអាចឃើញឥវ៉ាន់ដែលអ្នកកំពុងរកឃើញ។ 1. ធ្វើឡើងវិញជំហានពី [មេរៀន 2 នៃគម្រោងផលិតកម្ម](../../../4-manufacturing/lessons/2-check-fruit-from-device/README.md#task---capture-an-image-using-an-iot-device) ដើម្បីថតរូបពីកាមេរ៉ា។ 1. ធ្វើឡើងវិញជំហានពី [មេរៀន 2 នៃគម្រោងផលិតកម្ម](../../../4-manufacturing/lessons/2-check-fruit-from-device/README.md#task---classify-images-from-your-iot-device) ដើម្បីហៅចាត់ថ្នាក់រូបភាព។ ភាគច្រើននៃកូដនេះនឹងត្រូវបានប្រើឡើងវិញសម្រាប់រកឥវ៉ាន់។ ## ប្តូរកូដពីចាត់ថ្នាក់ទៅឧបករណ៍រករូបភាព កូដដែលអ្នកប្រើសម្រាប់ចាត់ថ្នាក់រូបភាពស្រដៀងខ្លាំងនឹងកូដសម្រាប់រកឥវ៉ាន់។ ភាពខុសគ្នាគឺវិធីសាស្រ្តដែលហៅនៅលើ Custom Vision SDK ហើយលទ្ធផលនៃការហៅ។ ### បុគ្គលិក - ប្តូរកូដពីចាត់ថ្នាក់ទៅឧបករណ៍រករូបភាព 1. លុបបីបន្ទាត់កូដដែលបានចាត់ថ្នាក់រូបភាព និងដំណើរការព្យាករណ៍ជា៖ ```python results = predictor.classify_image(project_id, iteration_name, image) for prediction in results.predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%') ``` លុបបន្ទាត់ទាំងបីនេះ។ 1. បន្ថែមកូដដូចខាងក្រោមដើម្បីរកឥវ៉ាន់ក្នុងរូបភាព៖ ```python results = predictor.detect_image(project_id, iteration_name, image) threshold = 0.3 predictions = list(prediction for prediction in results.predictions if prediction.probability > threshold) for prediction in predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%') ``` កូដនេះហៅវិធីសាស្រ្ត `detect_image` នៅលើ predictor ដើម្បីដំណើរការ​ឧបករណ៍រកឥវ៉ាន់។ បន្ទាប់មកវាប្រមូលព្យាករណ៍ទាំងអស់ដែលមានស្ថានភាពលើសកម្រិតងាយទទួលបាន ហើយបោះពុម្ពពួកវាចេញនៅលើ console។ ផ្ទុយពីចាត់ថ្នាក់រូបភាព​ដែលបញ្ចេញលទ្ធផលតែមួយសម្រាប់ស្លាកមួយៗ អ្នករកឥវ៉ាន់អាចបញ្ចេញលទ្ធផលច្រើនបាន ដូច្នេះលទ្ធផលដែលមានស្ថានភាពទាបត្រូវបានតម្រងចេញ។ 1. បើកដំណើរការកូដនេះ វានឹងថតរូប ម្ដងទៀតផ្ញើរទៅឧបករណ៍រកឥវ៉ាន់ ហើយបោះពុម្ពឥវ៉ាន់ដែលបានរកឃើញ។ ប្រសិនបើអ្នកប្រើឧបករណ៍ IoT ពិតប្រាកដ សូមប្រាកដថាអ្នកមានរូបភាពត្រឹមត្រូវនៅក្នុង CounterFit ឬកាមេរ៉ាវែបត្រូវបានជ្រើសរើស។ ប្រសិនបើអ្នកប្រើ Raspberry Pi សូមប្រាកដថាកាមេរ៉ា​របស់អ្នកកំពុងបង្ហាញទៅកាន់ឥវ៉ាន់លើធ្នូ។ ```output pi@raspberrypi:~/stock-counter $ python3 app.py tomato paste: 34.13% tomato paste: 33.95% tomato paste: 35.05% tomato paste: 32.80% ``` > 💁 អ្នកអាចត្រូវការកែសម្រួល `threshold` ជាមួយតម្លៃសមរម្យសម្រាប់រូបភាពរបស់អ្នក។ អ្នកនឹងអាចមើលឃើញរូបភាពដែលបានថត និងតម្លៃទាំងនេះនៅក្នុងផ្ទាំង **Predictions** នៅក្នុង Custom Vision។ ![4 cans of tomato paste on a shelf with predictions for the 4 detections of 35.8%, 33.5%, 25.7% and 16.6%](../../../../../translated_images/km/custom-vision-stock-prediction.942266ab1bcca341.webp) > 💁 អ្នកអាចរកឃើញកូដនេះនៅក្នុងថត [code-detect/pi](../../../../../5-retail/lessons/2-check-stock-device/code-detect/pi) ឬ [code-detect/virtual-iot-device](../../../../../5-retail/lessons/2-check-stock-device/code-detect/virtual-iot-device) ។ 😀 កម្មវិធីរាប់ឥវ៉ាន់របស់អ្នកបានជោគជ័យ! --- **ការបដិសេធ**៖ ឯកសារ​នេះ​ត្រូវ​បាន​បកប្រែ​ជា​ភាសាដោយ​ប្រើ​សេវាកម្ម​បកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ នៅពេល​យើង​ព្យាយាម​ផ្តល់​នូវភាពត្រឹមត្រូវ សូម​ដឹងថាការបកប្រែ​ដោយ​ស្វ័យ​ប្រវត្តិ​អាចមាន​កំហុសឬ​ភាពមិនត្រឹមត្រូវ។ ឯកសារ​ដើម​ជា​ភាសាមួយ​ដើម​គួរត្រូវបាន​គេ​យក​ជា​ប្រភព​ដ៏អាព្យាយាម។ សម្រាប់​ព័ត៌​មាន​សំខាន់ៗ សូមផ្តល់អនុសាសន៍​ឱ្យ​ដំណើរការជាអ្នក​អាជីព​បកប្រែ​ដោយ​មនុស្ស។ យើង​មិន​មាន​ការទទួលខុសត្រូវ​ចំពោះ​ការ​យល់​ខុសឬ​ការ​ពន្យល់​ខុស​ដែល​មាន​ឡើង​ពីការ​ប្រើប្រាស់​បកប្រែ​នេះទេ។