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/fa/5-retail/lessons/2-check-stock-device/single-board-computer-objec...

7.4 KiB

فراخوانی آشکارساز اشیا از دستگاه IoT شما - سخت‌افزار مجازی IoT و رزبری پای

پس از انتشار آشکارساز اشیای شما، می‌توانید آن را از دستگاه IoT خود استفاده کنید.

کپی کردن پروژه طبقه‌بندی تصویر

بخش عمده‌ای از آشکارساز موجودی شما مشابه طبقه‌بندی‌کننده تصویری است که در درس قبلی ایجاد کردید.

وظیفه - کپی کردن پروژه طبقه‌بندی تصویر

  1. یک پوشه به نام stock-counter ایجاد کنید، یا روی کامپیوتر خود اگر از یک دستگاه IoT مجازی استفاده می‌کنید، یا روی رزبری پای خود. اگر از یک دستگاه IoT مجازی استفاده می‌کنید، مطمئن شوید که یک محیط مجازی تنظیم کرده‌اید.

  2. سخت‌افزار دوربین را تنظیم کنید.

    • اگر از رزبری پای استفاده می‌کنید، باید PiCamera را نصب کنید. همچنین ممکن است بخواهید دوربین را در یک موقعیت ثابت قرار دهید، برای مثال، با آویزان کردن کابل از روی یک جعبه یا قوطی، یا چسباندن دوربین به یک جعبه با نوار چسب دوطرفه.
    • اگر از یک دستگاه IoT مجازی استفاده می‌کنید، باید CounterFit و CounterFit PyCamera shim را نصب کنید. اگر قصد دارید از تصاویر ثابت استفاده کنید، تصاویری بگیرید که آشکارساز اشیای شما قبلاً ندیده است. اگر قصد دارید از وب‌کم استفاده کنید، مطمئن شوید که در موقعیتی قرار دارد که بتواند موجودی مورد نظر شما را ببیند.
  3. مراحل درس ۲ از پروژه تولید را برای گرفتن تصاویر از دوربین تکرار کنید.

  4. مراحل درس ۲ از پروژه تولید را برای فراخوانی طبقه‌بندی‌کننده تصویر تکرار کنید. بخش عمده‌ای از این کد برای آشکارسازی اشیا مجدداً استفاده خواهد شد.

تغییر کد از یک طبقه‌بندی‌کننده به یک آشکارساز تصویر

کدی که برای طبقه‌بندی تصاویر استفاده کردید، بسیار شبیه به کدی است که برای آشکارسازی اشیا استفاده می‌شود. تفاوت اصلی در متدی است که روی Custom Vision SDK فراخوانی می‌شود و نتایج این فراخوانی.

وظیفه - تغییر کد از یک طبقه‌بندی‌کننده به یک آشکارساز تصویر

  1. سه خط کدی که تصویر را طبقه‌بندی می‌کند و پیش‌بینی‌ها را پردازش می‌کند حذف کنید:

    results = predictor.classify_image(project_id, iteration_name, image)
    
    for prediction in results.predictions:
        print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
    

    این سه خط را حذف کنید.

  2. کد زیر را برای آشکارسازی اشیا در تصویر اضافه کنید:

    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 را روی پیش‌بینی‌کننده فراخوانی می‌کند تا آشکارساز اشیا را اجرا کند. سپس تمام پیش‌بینی‌هایی که احتمال آن‌ها بالاتر از یک آستانه است را جمع‌آوری کرده و آن‌ها را در کنسول چاپ می‌کند.

    برخلاف یک طبقه‌بندی‌کننده تصویر که تنها یک نتیجه برای هر برچسب بازمی‌گرداند، آشکارساز اشیا چندین نتیجه بازمی‌گرداند، بنابراین هر نتیجه‌ای با احتمال پایین باید فیلتر شود.

  3. این کد را اجرا کنید تا یک تصویر گرفته شود، آن را به آشکارساز اشیا ارسال کند و اشیای شناسایی‌شده را چاپ کند. اگر از یک دستگاه 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 ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه انسانی حرفه‌ای استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.