7.4 KiB
فراخوانی آشکارساز اشیا از دستگاه IoT شما - سختافزار مجازی IoT و رزبری پای
پس از انتشار آشکارساز اشیای شما، میتوانید آن را از دستگاه IoT خود استفاده کنید.
کپی کردن پروژه طبقهبندی تصویر
بخش عمدهای از آشکارساز موجودی شما مشابه طبقهبندیکننده تصویری است که در درس قبلی ایجاد کردید.
وظیفه - کپی کردن پروژه طبقهبندی تصویر
-
یک پوشه به نام
stock-counter
ایجاد کنید، یا روی کامپیوتر خود اگر از یک دستگاه IoT مجازی استفاده میکنید، یا روی رزبری پای خود. اگر از یک دستگاه IoT مجازی استفاده میکنید، مطمئن شوید که یک محیط مجازی تنظیم کردهاید. -
سختافزار دوربین را تنظیم کنید.
- اگر از رزبری پای استفاده میکنید، باید PiCamera را نصب کنید. همچنین ممکن است بخواهید دوربین را در یک موقعیت ثابت قرار دهید، برای مثال، با آویزان کردن کابل از روی یک جعبه یا قوطی، یا چسباندن دوربین به یک جعبه با نوار چسب دوطرفه.
- اگر از یک دستگاه IoT مجازی استفاده میکنید، باید CounterFit و CounterFit PyCamera shim را نصب کنید. اگر قصد دارید از تصاویر ثابت استفاده کنید، تصاویری بگیرید که آشکارساز اشیای شما قبلاً ندیده است. اگر قصد دارید از وبکم استفاده کنید، مطمئن شوید که در موقعیتی قرار دارد که بتواند موجودی مورد نظر شما را ببیند.
-
مراحل درس ۲ از پروژه تولید را برای گرفتن تصاویر از دوربین تکرار کنید.
-
مراحل درس ۲ از پروژه تولید را برای فراخوانی طبقهبندیکننده تصویر تکرار کنید. بخش عمدهای از این کد برای آشکارسازی اشیا مجدداً استفاده خواهد شد.
تغییر کد از یک طبقهبندیکننده به یک آشکارساز تصویر
کدی که برای طبقهبندی تصاویر استفاده کردید، بسیار شبیه به کدی است که برای آشکارسازی اشیا استفاده میشود. تفاوت اصلی در متدی است که روی Custom Vision SDK فراخوانی میشود و نتایج این فراخوانی.
وظیفه - تغییر کد از یک طبقهبندیکننده به یک آشکارساز تصویر
-
سه خط کدی که تصویر را طبقهبندی میکند و پیشبینیها را پردازش میکند حذف کنید:
results = predictor.classify_image(project_id, iteration_name, image) for prediction in results.predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
این سه خط را حذف کنید.
-
کد زیر را برای آشکارسازی اشیا در تصویر اضافه کنید:
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
را روی پیشبینیکننده فراخوانی میکند تا آشکارساز اشیا را اجرا کند. سپس تمام پیشبینیهایی که احتمال آنها بالاتر از یک آستانه است را جمعآوری کرده و آنها را در کنسول چاپ میکند.برخلاف یک طبقهبندیکننده تصویر که تنها یک نتیجه برای هر برچسب بازمیگرداند، آشکارساز اشیا چندین نتیجه بازمیگرداند، بنابراین هر نتیجهای با احتمال پایین باید فیلتر شود.
-
این کد را اجرا کنید تا یک تصویر گرفته شود، آن را به آشکارساز اشیا ارسال کند و اشیای شناساییشده را چاپ کند. اگر از یک دستگاه IoT مجازی استفاده میکنید، مطمئن شوید که یک تصویر مناسب در CounterFit تنظیم شده است یا وبکم شما انتخاب شده است. اگر از رزبری پای استفاده میکنید، مطمئن شوید که دوربین شما به سمت اشیای روی قفسه قرار دارد.
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 مشاهده کنید.
💁 میتوانید این کد را در پوشه code-detect/pi یا code-detect/virtual-iot-device پیدا کنید.
😀 برنامه شمارش موجودی شما موفقیتآمیز بود!
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه انسانی حرفهای استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.