Sambungan Chrome percuma — potongan pada peranti

Asas pemprosesan imej Web Worker

Pengiraan berat pada benang utama menjadikan halaman lambat. Web Worker menjalankan inferens model pada benang berasingan supaya butang dan pratonton kekal berguna.

Bagi anda, editor masih bergerak balas sementara topeng dikira.

Benang utama mempunyai tugas antara muka pengguna

Halaman penyemak imbas biasanya menjalankan JavaScript pada urutan utama. Benang itu juga menyelaraskan susun atur, lukisan dan input. Jika satu pengiraan yang panjang menempatinya, klik mungkin terasa tertangguh, animasi boleh berhenti dan penyemak imbas mungkin memberi amaran bahawa halaman itu tidak bertindak balas.

Editor imej mempunyai banyak tanggungjawab utas utama sebelum inferens bermula:

Meletakkan kerja berangka model segmentasi pada urutan yang sama akan menjadikan tugasan tersebut bersaing secara langsung. Seorang pekerja mencipta sempadan yang lebih jelas.

Sempadan berasaskan mesej

Editor dan pekerja tidak berkongsi pembolehubah biasa. Mereka berkomunikasi dengan menghantar mesej. Aliran yang dipermudahkan kelihatan seperti ini:

  1. Editor mencipta atau menggunakan semula pekerja.
  2. Ia meminta pekerja untuk memulakan masa jalan dan model inferens.
  3. Ia menyediakan data imej dan menghantar permintaan inferens.
  4. Pekerja menukar data kepada input jangkaan model.
  5. Pekerja menjalankan model dan menghasilkan nilai topeng.
  6. Ia menghantar semula topeng atau data hasil.
  7. Editor menyusun pratonton dan membolehkan penghalusan atau eksport.

Mesej harus mengandungi konteks yang mencukupi untuk memadankan respons kepada permintaan yang betul. Ini penting jika pengguna memilih imej lain sebelum tugas sebelumnya selesai. Antara muka mesti mengelak daripada memaparkan hasil lama berbanding sumber baharu.

Menyalin dan memindahkan data imej

Menghantar mesej teks kecil adalah murah. Menghantar berjuta-juta nilai piksel boleh menjadi mahal jika penyemak imbas perlu menyalin keseluruhan penimbal. API Web boleh memindahkan pemilikan penimbal binari tertentu sebaliknya. Penampan yang dipindahkan menjadi tersedia kepada penerima tanpa mengekalkan pendua yang boleh digunakan di sebelah penghantar.

Pengoptimuman itu datang dengan kekangan reka bentuk: selepas pemindahan, pengirim tidak boleh terus menggunakan penimbal yang sama seolah-olah ia masih memiliki data. Editor boleh mengekalkan perwakilan paparan yang berasingan, mencipta penimbal inferens khusus atau membina semula perkara yang diperlukan kemudian.

Tidak setiap pelaksanaan menggunakan pemindahan di tempat yang sama. Pelajaran umum ialah pemisahan benang tidak membuat pergerakan data hilang. Dimensi imej, saiz penimbal dan bilangan penukaran masih mempengaruhi kependaman dan memori.

Apa yang Easy Background Remover letakkan pada pekerja

Easy Background Remover menggunakan Pekerja Web dengan masa jalan inferens penyemak imbas untuk pembahagian pada peranti. Langkah pemotongan automatik yang berat menghasilkan topeng. Editor kemudian memaparkan hasil gabungan dan menyokong penghalusan berus CPU-kanvas.

Pemisahan ini memberikan kegagalan sempadan yang lebih berguna. Jika pekerja tidak boleh memulakan atau ranap semasa inferens, antara muka boleh melaporkan ralat berkaitan pekerja dan bukannya bergantung pada tab beku kekal sebagai satu-satunya isyarat.

Ia juga memastikan tuntutan pemprosesan tempatan dapat difahami. Menghantar piksel dari halaman sambungan kepada pekerjanya sendiri ialah komunikasi dalam persekitaran penyemak imbas, bukan muat naik ke API potongan jauh. Sesi pertama boleh memuat turun aset model boleh guna semula secara berasingan; lihat Mengapa larian pertama memuat turun model.

Seorang pekerja tidak membuat pengiraan segera

Pekerja meningkatkan daya tindak balas, bukan keupayaan peranti mentah. Model masih menggunakan CPU, GPU atau sumber masa jalan lain mengikut perkara yang boleh disediakan oleh penyemak imbas. Input yang besar masih boleh mengambil masa yang lebih lama dan memerlukan lebih banyak memori daripada yang kecil.

Beberapa had kekal:

Memulakan lima pekerja inferens untuk lima imej tidak secara automatik lima kali lebih pantas. Pekerja berkongsi mesin yang sama. Pekerjaan selari boleh bersaing untuk jalur lebar memori dan sumber pelaksanaan, manakala setiap contoh model mungkin membawa kos memorinya sendiri.

Pelaporan kemajuan adalah bekerjasama

Pekerja boleh menghantar mesej status, tetapi ia tidak secara automatik mengetahui peratusan kemajuan yang akan dirasakan tepat. Muat turun model, permulaan masa jalan, penyediaan input, inferens, penukaran topeng dan pemaparan pratonton adalah fasa berasingan dengan pemasaan yang berbeza.

Sesetengah fasa mempunyai kiraan bait yang boleh diukur. Pelaksanaan model tunggal hanya boleh mendedahkan “dimulakan” dan “selesai”. Oleh itu, peratusan lancar yang maju secara seragam boleh menjadi kosmetik dan bukannya ukuran yang tepat.

UI kemajuan berguna menamakan fasa apabila boleh: menyediakan model, memproses imej atau hasil binaan. Ia juga mengendalikan kegagalan dan pembatalan dan bukannya meninggalkan pemutar tanpa penjelasan.

Pembatalan adalah lebih daripada menyembunyikan pemutar

Jika pengguna menutup imej atau memulakan semula, antara muka boleh mengabaikan respons akhirnya daripada permintaan yang sudah lapuk. Menghentikan pengiraan asas dengan serta-merta mungkin memerlukan sokongan tambahan daripada masa jalan atau menamatkan dan mencipta semula pekerja.

Menamatkan pekerja adalah penting, tetapi ia membuang keadaan permulaannya. Kerja seterusnya mungkin perlu memuatkan dan memulakan model sekali lagi. Untuk operasi yang singkat, menandakan hasil basi boleh menjadi lebih murah daripada meruntuhkan segala-galanya.

Pilihan yang betul bergantung pada tekanan memori, tempoh operasi dan keupayaan masa jalan. Dari perspektif pengguna, peraturan penting ialah kerja basi tidak boleh menimpa suntingan semasa.

Ralat perlu melepasi sempadan juga

Pengecualian di dalam pekerja tidak menjadi pengecualian utas utama biasa. Pekerja mesti melaporkan ralat yang boleh digunakan dan editor harus mendengar kegagalan peringkat pekerja.

Pengendalian ralat yang baik membezakan sekurang-kurangnya:

Ini lebih boleh diambil tindakan daripada “sesuatu telah berlaku” generik terutamanya apabila persediaan jalan pertama dan pemprosesan imej biasa mempunyai penyelesaian yang berbeza.

Keluaran pekerja masih hanya topeng pertama

Seni bina benang tidak menambah baik kelebihan yang tidak jelas dengan sendirinya. Pekerja boleh memulangkan topeng sah dari segi teknikal yang masih terlepas bulu, bahan lutsinar, tali sempit atau bayang yang diingini. Itu adalah soalan segmentasi dan niat.

Tugas editor disambung semula selepas inferens: skala topeng ke dalam sistem koordinat yang berfungsi, gubah pratonton, biarkan pengguna memperhalusinya dan mengeksport keadaan semasa. Resolusi topeng vs saiz pratonton menerangkan sebab sistem koordinat tersebut tidak boleh dikelirukan.

Model mental yang ringkas

Fikirkan pekerja itu sebagai pakar tempatan di sebalik tetingkap mesej:

Untuk paparan model terhadap piksel itu sendiri, teruskan dengan Apa yang dilihat oleh model potongan pada peranti. Untuk gambaran keseluruhan praktikal hujung ke hujung, lihat Cara pengalihan keluar latar belakang setempat berfungsi.

Teruskan meneroka

Menarik