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/ms/5-retail/lessons/2-check-stock-device/wio-terminal-object-detecto...

5.3 KiB

Panggil pengesan objek anda dari peranti IoT - Wio Terminal

Setelah pengesan objek anda diterbitkan, ia boleh digunakan dari peranti IoT anda.

Salin projek pengelas imej

Sebahagian besar daripada pengesan stok anda adalah sama seperti pengelas imej yang anda cipta dalam pelajaran sebelumnya.

Tugasan - salin projek pengelas imej

  1. Sambungkan ArduCam anda ke Wio Terminal, mengikut langkah-langkah dari pelajaran 2 projek pembuatan.

    Anda juga mungkin ingin menetapkan kamera dalam satu kedudukan tetap, contohnya, dengan menggantung kabel di atas kotak atau tin, atau melekatkan kamera ke kotak menggunakan pita dua muka.

  2. Cipta projek Wio Terminal baru menggunakan PlatformIO. Namakan projek ini stock-counter.

  3. Ulangi langkah-langkah dari pelajaran 2 projek pembuatan untuk menangkap imej dari kamera.

  4. Ulangi langkah-langkah dari pelajaran 2 projek pembuatan untuk memanggil pengelas imej. Sebahagian besar kod ini akan digunakan semula untuk mengesan objek.

Tukar kod daripada pengelas kepada pengesan imej

Kod yang anda gunakan untuk mengelas imej sangat mirip dengan kod untuk mengesan objek. Perbezaan utama adalah URL yang dipanggil yang anda peroleh daripada Custom Vision, dan hasil panggilan tersebut.

Tugasan - tukar kod daripada pengelas kepada pengesan imej

  1. Tambahkan arahan include berikut di bahagian atas fail main.cpp:

    #include <vector>
    
  2. Tukar nama fungsi classifyImage kepada detectStock, termasuk nama fungsi dan panggilan dalam fungsi buttonPressed.

  3. Di atas fungsi detectStock, isytiharkan ambang (threshold) untuk menapis sebarang pengesanan yang mempunyai kebarangkalian rendah:

    const float threshold = 0.3f;
    

    Tidak seperti pengelas imej yang hanya mengembalikan satu hasil bagi setiap tag, pengesan objek akan mengembalikan pelbagai hasil, jadi mana-mana dengan kebarangkalian rendah perlu ditapis.

  4. Di atas fungsi detectStock, isytiharkan fungsi untuk memproses ramalan:

    void processPredictions(std::vector<JsonVariant> &predictions)
    {
        for(JsonVariant prediction : predictions)
        {
            String tag = prediction["tagName"].as<String>();
            float probability = prediction["probability"].as<float>();
    
            char buff[32];
            sprintf(buff, "%s:\t%.2f%%", tag.c_str(), probability * 100.0);
            Serial.println(buff);
        }
    }
    

    Fungsi ini mengambil senarai ramalan dan mencetaknya ke monitor bersiri.

  5. Dalam fungsi detectStock, gantikan kandungan gelung for yang mengulang ramalan dengan yang berikut:

    std::vector<JsonVariant> passed_predictions;
    
    for(JsonVariant prediction : predictions) 
    {
        float probability = prediction["probability"].as<float>();
        if (probability > threshold)
        {
            passed_predictions.push_back(prediction);
        }
    }
    
    processPredictions(passed_predictions);
    

    Gelung ini mengulang ramalan, membandingkan kebarangkalian dengan ambang. Semua ramalan yang mempunyai kebarangkalian lebih tinggi daripada ambang ditambahkan ke dalam list dan dihantar ke fungsi processPredictions.

  6. Muat naik dan jalankan kod anda. Arahkan kamera ke objek di rak dan tekan butang C. Anda akan melihat output di monitor bersiri:

    Connecting to WiFi..
    Connected!
    Image captured
    Image read to buffer with length 17416
    tomato paste:   35.84%
    tomato paste:   35.87%
    tomato paste:   34.11%
    tomato paste:   35.16%
    

    💁 Anda mungkin perlu melaraskan threshold kepada nilai yang sesuai untuk imej anda.

    Anda akan dapat melihat imej yang diambil, dan nilai-nilai ini dalam tab Predictions di Custom Vision.

    4 tin pes tomato di rak dengan ramalan untuk 4 pengesanan masing-masing 35.8%, 33.5%, 25.7% dan 16.6%

💁 Anda boleh menemui kod ini dalam folder code-detect/wio-terminal.

😀 Program pengesan stok anda berjaya!


Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.