Kenyataannya bahwa ada sekitar 4,54 miliar pengguna Internet (Juni 2020) di seluruh dunia yang menghasilkan jumlah konten yang belum pernah terjadi sebelumnya hanya meningkatkan keinginan menemukan pendekatan untuk mengoptimalkan moderasi konten. Dan tugas ini semakin berat dengan fakta bahwa jumlah pengguna aktif terus-menerus merendahkan, volume konten juga tumbuh secara eksponensial, pembelajaran mesin dan AI bisa sangat mahal dan moderasi manual sangat memakan waktu dan tertunda dalam waktu.
Jadi sekarang kita berada pada titik di mana platform apa pun yang memungkinkan konten yang dibuat pengguna menghadapi masalah yang sama. Untungnya, pembelajaran mesin telah matang ke titik di mana kemajuan dalam daya pemrosesan komputer, penyimpanan, alat data, web, dll membuat teknologi pembelajaran mesin menjadi semakin terjangkau. Ini dan upaya konstan untuk inovasi, tim Sashido LED untuk membuat layanan moderasi konten yang sederhana dan elegan ini dibangun dengan hanya alat dan perpustakaan open-source . Ini terdiri dari tiga komponen utama - API REST Klasifikasi Gambar, Mesin Otomasi dan Panel Admin, yang dapat diintegrasikan secara terpisah atau sama sekali ke dalam proyek Parse Server Node.js dan di -host di mana saja.
Illustartion sederhana dari desktop dan panel admin ramah seluler kami. Periksa demo lengkapnya di sini.
Gambar yang ditampilkan untuk disetujui di aplikasi admin adalah yang ditandai untuk moderasi manual dari mesin otomasi berdasarkan kriteria spesifik Anda.
Berikut adalah beberapa contoh bagaimana gambar dari kelas tertentu diklasifikasikan oleh API REST.
Sumber gambar | Sumber gambar | Sumber gambar |
---|---|---|
Hasil klasifikasi | Hasil klasifikasi | Hasil klasifikasi |
[{ "classname": "netral", "Probabilitas": 0,93821 }, { "classname": "menggambar", "Probabilitas": 0,05473 }, { "classname": "seksi", "Probabilitas": 0,00532 }, { "classname": "hentai", "Probabilitas": 0,00087 }, { "classname": "porno", "Probabilitas": 0,00085 }] | [{ "classname": "seksi", "Probabilitas": 0,99394 }, { "classname": "netral", "Probabilitas": 0,00432 }, { "classname": "porno", "Probabilitas": 0,00164 }, { "classname": "menggambar", "Probabilitas": 0,00006 }, { "classname": "hentai", "Probabilitas": 0,00001 }] | [{ "classname": "menggambar", "Probabilitas": 0,96063 }, { "classname": "netral", "Probabilitas": 0,03902 }, { "classname": "hentai", "Probabilitas": 0,00032 }, { "classname": "seksi", "Probabilitas": 0,00001 }, { "classname": "porno", "Probabilitas": 0,00005 }] |
Demo netral | Demo seksi | Demo Menggambar |
Layanan ini dibangun di Node.js dengan Mongo DB dan Parse Server. Anda dapat menggunakannya dalam aplikasi Express standar, tetapi perlu diingat bahwa struktur file repo spesifik parse. Kode ini diatur dalam folder src
dan src/cloud/main.js
adalah file root untuk layanan. Reaksi visualisasi logika ada masing -masing ke dalam folder scr/react
.
REST API bekerja dengan klasifikasi NSFW.JS, yang menggunakan model pra-terlatih TensorFlow. Diberi URL, ia mengembalikan prediksi seberapa besar kemungkinan gambar termasuk dalam masing -masing kelas - menggambar, netral, seksi, porno dan hentai. Rincian lebih lanjut tentang logika di belakang dan tumpukan yang dapat Anda temukan di posting blog ini.
API menawarkan dua pendekatan untuk mengklasifikasikan gambar - dari rute ekspres atau langsung dari fungsi kode cloud menggunakan salah satu Parse SDK atau Parse Rest API.
Klasifikasi dari titik akhir ekspres
curl http://localhost:1337/api/image/classify?url=https://nsfw-demo.sashido.io/sexy.png
Klasifikasi dari fungsi kode cloud NSFWIMAGECLASSIFY - Contoh API REST.
curl -X POST
-H "X-Parse-Application-Id: myAppId"
-H "X-Parse-REST-API-Key: myRestApiKey"
--data-urlencode "{"url":"https://nsfw-demo.sashido.io/sexy.png"}"
http://localhost:1337/functions/nsfwImageClassify
Tujuan mesin otomatisasi adalah untuk memeriksa bagaimana klasifikasi gambar tertentu sesuai dengan parameter yang telah Anda tetapkan sebagai aman untuk proyek Anda. Proses ini diotomatisasi dengan pemicu aftersave server parse.
Pada awalnya, penting untuk menentukan mana dari lima kelas dan nilai NSFW dapat berisi gambar beracun dan mana yang aman. Semua kelas yang mungkin mengganggu untuk audiens Anda harus dimasukkan dalam preferensi moderasi.
Untuk mengilustrasikan apa ide dan pengaturannya, mari kita bayangkan kita perlu mengatur kriteria untuk aplikasi kencan orang dewasa. Sebagai aplikasi kencan apa pun, pengguna memiliki foto profil dan diizinkan untuk mengunggah foto yang berbeda. Kita dapat mengasumsikan jenis foto harus terutama netral ... dan mungkin beberapa foto seksi juga akan diizinkan. Jadi kami akan menambahkan semua kelas lain ke preferensi moderasi kami. Sesuatu seperti:
{
"Sexy": { "min": 0.6, "max": 1 },
"Drawing": { "min": 0.5, "max": 0.8 },
"Porn": { "min": 0.4, "max": 0.8 },
"Hentai": { "min": 0.2, "max": 0.8 }
}
Mesin otomatisasi akan secara otomatis membuat semua gambar yang diklasifikasikan di atas batas max
yang ditetapkan dalam preferensi kami dan menyetujui semua yang berada di bawah nilai min
.
Rincian lebih lanjut tentang cara menyempurnakan parameter untuk proyek Anda yang dapat Anda temukan di artikel di sini.
Preferensi moderasi akan disimpan ke dalam parameter konfigurasi Moderationscores untuk aplikasi produksi, karena itu akan memungkinkan Anda untuk memodifikasinya dengan cepat jika diperlukan.
Pemicu AfterSave terhubung ke koleksi yang dihasilkan pengguna secara otomatis memeriksa foto yang baru diunggah dan menandai mereka sebagai aman, dihapus atau untuk moderasi. AfterSafe berisi logika untuk mencocokkan bagaimana klasifikasi API suatu gambar sesuai dengan preferensi moderasi yang ditentukan. Berdasarkan semua data yang disahkan, keputusan dibuat dan hasilnya disimpan ke database Anda.
Untuk menyimpan catatan yang rapi dari prediksi API REST dan hasil mesin otomatisasi, Anda perlu menambahkan beberapa kolom ke koleksi database Anda yang memiliki konten yang dibuat pengguna .
Anda harus menambahkan kolom berikut ke UserimageCollection
min
dari preferensi moderasi Anda, itu ditandai isSafe - true
.deleted - true
. Gambar -gambar itu tidak akan dihapus secara otomatis dari penyimpanan file.Aftersave api secara otomatis, tetapi kami telah menambahkan titik akhir API tambahan, jika Anda perlu memeriksa manual jika gambar beracun untuk audiens Anda.
curl http://YOUR_PARSE_SERVER_URL/api/image/is_safe?url=https://nsfw-demo.sashido.io/sexy.png
Sentuhan akhir adalah aplikasi admin berbasis reaksi polos. Ini memiliki fitur login/logout sederhana dan hanya moderator yang disetujui yang diberikan akses.
Gambar -gambar yang ditandai oleh mesin otomasi sebagai moderationRequired=true
ditampilkan ke dalam aplikasi. Kami telah memastikan untuk membangun antarmuka pengguna desktop dan ramah seluler, sehingga Anda dapat menyetujui atau menolak gambar dengan mudah bahkan dari ponsel Anda saat bepergian.
Tes sendiri bermain -main dengan gambar di demo kami!
Node.js> = 10.2.1
Mongo DB
Server parse
Kloning repo:
git clone https://github.com/SashiDo/content-moderation-application.git
cd content-moderation-application
Salin env.example ke file .env dan atur variabel lingkungan untuk lingkungan lokal Anda dengan editor favorit Anda:
cp env.example .env
Tempatkan URI MongoDB Anda dan URL File. Jika aplikasi Anda di -host di Sashido, Anda dapat menggunakan kredensial proyek Sashido Anda. Anda dapat menemukan semua kunci dan URL di dasbor aplikasi -> Pengaturan Aplikasi.
NB! Untuk memuat gambar yang membutuhkan moderasi manual ke dalam aplikasi admin secara lokal, Anda harus menempatkan juga app_id yang sebenarnya!
Karena ini adalah contoh fitur lengkap, semua dependensi hadir pada paket.json. Anda hanya perlu menjalankan:
npm install
npm run dev
Atur parse.configs berikut untuk server produksi Anda.
Objek Moderationscores harus disimpan sebagai parse.config, sehingga preferensi dapat diperbarui dengan cepat.
Opsi ModerationAutomation dari tipe boolean yang memungkinkan mengaktifkan/menonaktifkan otomatisasi moderasi konten.
Untuk produksi, Anda perlu mengatur URL model NSFW , ukuran bentuk dan variabel model NSFW untuk caching konfigurasi otomatisasi .
URL Model | Ukuran | Ukuran bentuk | Ketepatan |
---|---|---|---|
https://ml.files-sashido.cloud/models/nsfw_inseption_v3/ | Sangat besar | 299 | 93% |
https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/90/ | 2.6 MB | 224 | 90% |
https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/93/ | 4.2 MB | 224 | 93% |
Harap perhatikan model Inception_V3 yang digunakan untuk proyek ini memiliki konsumsi RAM/CPU yang tinggi. Sementara dua model MobileNet jauh lebih ringan.
TF_MODEL_URL = MODEL_URL
TF_MODEL_INPUT_SHAPE_SIZE = MODEL_SHAPE_SIZE
CONFIG_CACHE_MS = CONFIG_CAHE_IN_MILISECONDS
# Example
TF_MODEL_URL = " https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/93/ "
TF_MODEL_INPUT_SHAPE_SIZE = 224
CONFIG_CACHE_MS = 10000
Hubungkan aplikasi Sashido Anda dengan GitHub dan selanjutnya kode dapat dengan mudah digunakan dengan dua perintah sederhana untuk menambahkan cabang jarak jauh dan mendorong perubahan.
git remote add production [email protected]:parsegroundapps/<your-pg-app-your-app-repo>.git
git push -f production master
Terima kasih telah melihat bagian ini. Kami terbuka untuk ide -ide keren apa pun, jadi jika Anda memilikinya dan bersedia berbagi - garpu repo, terapkan perubahan dan buka permintaan tarik. :)
Hak Cipta © 2020, AD Cloudstrap. Lihat lisensi untuk perincian lebih lanjut.