من الواقع أن هناك ما يقرب من 4.54 مليار مستخدم للإنترنت (يونيو 2020) في جميع أنحاء العالم يولد كمية غير مسبوقة من المحتوى يزيد فقط من الرغبة في إيجاد نهج لتحسين معهد المحتوى. وهذه المهمة تزداد أثقل من خلال الحقائق التي مفادها أن عدد المستخدمين النشطين ينحدر باستمرار ، كما أن أحجام المحتوى تنمو بشكل كبير ، والتعلم الآلي ويمكن أن يكون الذكاء الاصطناعي باهظ الثمن وأن الاعتدال اليدوي يستغرق وقتًا طويلاً وتأخيرًا في الوقت المناسب.
لذا ، نحن الآن في مرحلة يواجه فيها أي منصة تسمح للمحتوى الذي تم إنشاؤه بواسطة المستخدم مشكلة مماثلة. لحسن الحظ ، نضج التعلم الآلي بالفعل إلى النقطة التي تقدم فيها التقدم في طاقة معالجة الكمبيوتر ، والتخزين ، وأدوات البيانات ، ويب ، وما إلى ذلك ، أن تصبح تقنيات التعلم الآلي أكثر فأكثر. هذا و The Constate Conster for Innovation ، قاد فريق Sashido لإنشاء هذه الخدمة البسيطة والأنيقة للاعتدال الوظيفي بالكامل المصممة باستخدام أدوات ومكتبات مفتوحة المصدر فقط . وهو يتألف من ثلاثة مكونات رئيسية - API لتصنيف الصور ، ومحرك الأتمتة ولوحة المسؤول ، والتي يمكن دمجها بشكل منفصل أو كليًا في أي مشروع خادم Parse Node.js واستضافته في أي مكان.
Allustartion البسيط من لوحة المكتب الخاصة بنا ولوحة المشرف الصديقة للهاتف المحمول. تحقق من العرض التوضيحي الكامل هنا.
الصور المعروضة للموافقة على تطبيق المسؤول هي تلك التي يتم وضع علامة على الاعتدال اليدوي من محرك الأتمتة بناءً على معاييرك المحددة.
فيما يلي بعض الأمثلة على كيفية تصنيف الصور من فصول محددة بواسطة API REST.
مصدر الصورة | مصدر الصورة | مصدر الصورة |
---|---|---|
نتيجة التصنيف | نتيجة التصنيف | نتيجة التصنيف |
[{ "classname": "محايد" ، "الاحتمال": 0.93821 } ، { "classname": "الرسم" ، "الاحتمال": 0.05473 } ، { "classname": "مثير" ، "الاحتمال": 0.00532 } ، { "classname": "Hentai" ، "الاحتمال": 0.00087 } ، { "ClassName": "Porn" ، "الاحتمال": 0.00085 }] | [{ "classname": "مثير" ، "الاحتمال": 0.99394 } ، { "classname": "محايد" ، "الاحتمال": 0.00432 } ، { "ClassName": "Porn" ، "الاحتمال": 0.00164 } ، { "classname": "الرسم" ، "الاحتمال": 0.00006 } ، { "classname": "Hentai" ، "الاحتمال": 0.00001 }] | [{ "classname": "الرسم" ، "الاحتمال": 0.96063 } ، { "classname": "محايد" ، "الاحتمال": 0.03902 } ، { "classname": "Hentai" ، "الاحتمال": 0.00032 } ، { "classname": "مثير" ، "الاحتمال": 0.00001 } ، { "ClassName": "Porn" ، "الاحتمال": 0.00005 }] |
العرض التوضيحي المحايد | التوضيح مثير | الرسم التجريبي |
تم تصميم هذه الخدمة في Node.js مع Mongo DB وخادم Parse. يمكنك استخدامه في تطبيق Standard Express ، ولكن ضع في اعتبارك أن بنية ملف REPO محلية محددة. يتم تنظيم الكود في مجلد src
و src/cloud/main.js
هو ملف الجذر للخدمة. React Fizualization Logic يضع على التوالي في مجلد scr/react
.
تعمل API REST مع تصنيف NSFW.JS ، والذي يستخدم نماذج TensorFlow مسبقًا. بالنظر إلى عنوان URL ، فإنه يعيد التنبؤات مدى احتمال أن تقع الصورة في كل فئة من الفصول - الرسم ، المحايدة ، المثيرة ، الإباحية والهرتاي. مزيد من التفاصيل حول المنطق وراء والمكدس المستخدمة يمكنك العثور عليها في منشور المدونة هذا.
يقدم واجهة برمجة التطبيقات نهجين لتصنيف الصور - من طريق صريح أو مباشرة من وظيفة رمز السحابة باستخدام أي من Parse SDKs أو Parse Rest API.
تصنيف من نقطة النهاية السريعة
curl http://localhost:1337/api/image/classify?url=https://nsfw-demo.sashido.io/sexy.png
تصنيف من وظيفة رمز السحابة NSFWimAclassify - مثال على 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
الغرض من محرك الأتمتة هو التحقق من كيفية تصنيف صورة معينة مع المعلمات التي قمت بتعيينها على أنها آمنة لمشروعك. العملية تلقائية مع تشغيل خادم Parse Aftersave.
في البداية ، من الضروري تحديد أي من فئات وقيم NSFW الخمسة التي يمكن أن تحتوي على صور سامة والتي تكون آمنة. يجب تضمين جميع الفصول التي قد تكون مزعجة لجمهورك في تفضيلات الاعتدال.
لتوضيح الفكرة والإعداد ، دعنا نتخيل أننا بحاجة إلى تعيين معايير تطبيق المواعدة للبالغين. كأي تطبيق مواعدة ، يكون لدى المستخدمين صورة ملف تعريف ويُسمح لهم بتحميل صور مختلفة. يمكننا أن نفترض أن نوع الصور يجب أن يكون محايدًا بشكل أساسي ... وربما يُسمح أيضًا ببعض الصور المثيرة. لذلك سوف نضيف جميع الفصول الأخرى إلى تفضيلات الاعتدال لدينا. شيء مثل:
{
"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 }
}
سيقوم محرك الأتمتة بإعادة إلغاء جميع الصور التي يتم تصنيفها فوق الحد max
المحدد في تفضيلاتنا والموافقة على كل ما هو أقل من قيمة min
.
مزيد من التفاصيل حول كيفية ضبط المعلمات لمشروعك يمكنك العثور عليها في المقالة هنا.
سيتم حفظ تفضيلات الاعتدال في معلمة Config MosterationsCores لتطبيق الإنتاج ، حيث سيتيح لك ذلك تعديلها أثناء الطيران إذا لزم الأمر.
يتم توصيل المشغل اللاحق للمجموعة التي تم إنشاؤها بواسطة المستخدم تلقائيًا الصور التي تم تحميلها حديثًا وتضعها إما على أنها آمنة أو محذوفة أو للاعتدال. يحتوي AfterSafe على منطق لمطابقة كيفية تصنيف API لصورة ما مع تفضيلات الاعتدال المحددة. بناءً على جميع البيانات التي تم تمريرها ، يتم اتخاذ القرار ويتم حفظ النتيجة في قاعدة البيانات الخاصة بك.
للحفاظ على سجل أنيق لتنبؤات REST API ونتائج محرك الأتمتة ، ستحتاج إلى إضافة بعض الأعمدة إلى مجموعة قاعدة البيانات الخاصة بك التي تحمل محتوى تم إنشاؤه بواسطة المستخدم .
يجب عليك إضافة الأعمدة التالية إلى userimagecollection
min
لتفضيلات الاعتدال الخاصة بك ، فهي محددة isSafe - true
.deleted - true
. لن يتم حذف هذه الصور تلقائيًا من تخزين الملف.يطلق النار على Aftersave تلقائيًا ، لكننا أضفنا نقطة نهاية API إضافية ، في حالة حاجة إلى التحقق من Manualy إذا كانت صورة سامة لجمهورك.
curl http://YOUR_PARSE_SERVER_URL/api/image/is_safe?url=https://nsfw-demo.sashido.io/sexy.png
اللمسة النهائية هي تطبيق المسؤول القائم على ReactJS. إنه يحتوي على ميزة تسجيل الدخول/تسجيل الدخول البسيطة ويتم منح المشرفين المعتمدين فقط الوصول.
يتم عرض الصور التي تم وضع علامة عليها بواسطة محرك الأتمتة كما moderationRequired=true
في التطبيق. لقد حرصنا على إنشاء كل من واجهة مستخدم لسطح المكتب والهواتف المحمولة ، بحيث يمكنك الموافقة على الصور أو رفضها بسهولة حتى من هاتفك أثناء السفر.
اختبر بنفسك اللعب مع الصور في العرض التوضيحي الخاص بنا!
node.js> = 10.2.1
Mongo DB
خادم تحليل
استنساخ الريبو:
git clone https://github.com/SashiDo/content-moderation-application.git
cd content-moderation-application
انسخ Env.Example إلى ملف .env وقم بتعيين متغيرات البيئة لبيئتك المحلية مع المحرر المفضل لديك:
cp env.example .env
ضع عنوان URL الخاص بك MongoDB URI وملفات. إذا تم استضافة تطبيقك في Sashido ، فيمكنك استخدام بيانات اعتماد مشروع Sashido الخاص بك. يمكنك العثور على جميع المفاتيح وعناوين URL على إعدادات تطبيق التطبيق -> إعدادات التطبيق.
ناب لتحميل الصور التي تتطلب الاعتدال اليدوي في تطبيق المسؤول محليًا ، ستحتاج إلى وضع App_id الفعلي أيضًا!
نظرًا لأن هذا مثال كامل الميزة ، فإن جميع التبعيات موجودة على package.json. تحتاج فقط إلى الجري:
npm install
npm run dev
اضبط Parse.configs لخادم الإنتاج الخاص بك.
يجب حفظ كائن MODERATINSCORES كحاجز.
خيار experyautomation من نوع منطقي يسمح بتمكين/تعطيل أتمتة اعتدال المحتوى.
بالنسبة للإنتاج ، تحتاج إلى تعيين عنوان URL لنموذج NSFW ، وحجم شكل نموذج NSFW ومتغير لتشكيلات الأتمتة في التخزين المؤقت .
نموذج عنوان URL | مقاس | حجم الشكل | دقة |
---|---|---|---|
https://ml.files-sashido.cloud/models/nsfw_inception_v3/ | ضخم | 299 | 93 ٪ |
https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/90/ | 2.6 ميغابايت | 224 | 90 ٪ |
https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/93/ | 4.2 ميغابايت | 224 | 93 ٪ |
يرجى ملاحظة أن نموذج Inception_V3 المستخدم في هذه المشاريع يحتوي على استهلاك عالي RAM/CPU. في حين أن طرازين Mobilenet خفيفة الوزن أكثر بكثير.
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
قم بتوصيل تطبيق Sashido الخاص بك مع Github وبعد ذلك يمكن نشر الكود بسهولة مع اثنين من الأمرين البسيطين لإضافة فرع بعيد ودفع التغييرات.
git remote add production [email protected]:parsegroundapps/<your-pg-app-your-app-repo>.git
git push -f production master
شكرا للنظر في هذا القسم. نحن منفتحون على أي أفكار رائعة ، لذلك إذا كان لديك واحدة وترغب في مشاركة - تافز الريبو ، وتطبيق التغييرات وفتح طلب سحب. سائدا
حقوق الطبع والنشر © 2020 ، إعلان Cloudstrap. انظر الترخيص لمزيد من التفاصيل.