7.6. Anatomi predict¶
Model.predict(inputs, *, callback=None) adalah tempat objek model yang dimuat benar-benar melakukan pekerjaan. Di antara input yang masuk dan hasil yang keluar, tiga tahap berjalan secara berurutan: pra-proses, dispatch engine, pasca-proses. Dua dari tiga mengambil parameter yang dikontrol langsung oleh skrip; engine di tengah ditentukan oleh kamera.
Tiga tahap dari predict(). Pra-proses dan pasca-proses mengambil parameter yang dikontrol skrip; engine di tengah ditetapkan oleh kamera.¶
7.6.1. Pra-proses¶
Tahap pra-proses mengubah setiap input menjadi tensor padat yang diharapkan oleh jaringan. Input yang paling umum adalah image.Image, diambil dalam RGB565. Tahap ini memotong dan mengubah ukurannya ke input_shape jaringan, mengkonversi dari RGB565 ke format saluran yang dilatih jaringan (RGB888 untuk sebagian besar jaringan visi), menerapkan skala dan offset per-saluran, dan -- ketika jaringan mengharapkan input integer -- mengkuantisasi ke input_dtype model dalam satu pass yang sama. Jaringan yang dilatih untuk input float melewati langkah kuantisasi dan menerima hasil skala-dan-offset secara langsung.
Default ml.preprocessing.Normalization membaca dtype input model dan menjalankan transformasi yang tepat secara otomatis. Normalization yang disesuaikan mengesampingkan nilai skala, mean, dan stdev untuk model yang dilatih terhadap statistik saluran kustom (mean dan deviasi standar turunan ImageNet adalah kasus yang umum). Callable biasa mengesampingkan tahap sepenuhnya -- berguna ketika input bukan merupakan citra sama sekali atau ketika aplikasi sudah menghasilkan tensor padat itu sendiri.
7.6.2. Dispatch engine¶
Tahap engine menjalankan jaringan. Engine mana yang di-dispatch sudah ditetapkan oleh kamera: H7 dan RT1062 menjalankan TFLM (interpreter TensorFlow Lite for Microcontrollers, men-dispatch kernel CMSIS-NN yang dioptimalkan ARM di mana tersedia); AE3 menjalankan interpreter TFLM yang sama dengan fallback Cortex-M55 dan NPU Ethos-U yang menangani operator mana pun yang ditandai oleh compiler Vela offline untuk akselerator; N6 menjalankan STAI, runtime ST untuk NPU khusus N6.
Skrip tidak memilih engine. Engine yang dikirimkan bersama kamera menjalankan setiap model yang dimuat kamera.
7.6.3. Pasca-proses¶
Tahap pasca-proses mengubah tensor output mentah jaringan kembali menjadi hasil yang dapat digunakan. Perilaku default adalah mende-kuantisasi setiap tensor output ke floating point (atau meneruskannya tanpa perubahan untuk jaringan dengan output float) dan mengembalikannya sebagai daftar objek ndarray. Sebagian besar aplikasi mendaftarkan post-processor -- callable yang mengetahui tata letak output jaringan -- untuk mendekode tensor menjadi bentuk hasil yang ditindaklanjuti aplikasi: daftar kotak pembatas, daftar titik kunci, daftar kelas.
Skrip mengontrol tahap ini dengan dua cara. Kata kunci postprocess= pada konstruktor mendaftarkan post-processor yang berjalan pada setiap panggilan. Kata kunci callback= pada predict() mengesampingkan post-processor yang terdaftar hanya untuk satu panggilan -- berguna untuk beralih antara beberapa decoder tanpa memuat ulang model. Kedua bentuk menerima (model, inputs, outputs) dan mengembalikan apa pun yang diharapkan aplikasi.
7.6.4. Yang dikontrol skrip¶
Pra-proses dan pasca-proses adalah dua pegangan skrip. Pre-processor default menangani sebagian besar model visi; post-processor yang tepat untuk keluarga jaringan tertentu dipilih dari katalog di bawah ml.postprocessing. Engine di tengah ditentukan oleh build dan berjalan dengan cara yang sama terlepas dari apa yang diminta skrip.