전 세계적으로 약 45 억 5 천만 명의 인터넷 사용자 (2020 년 6 월)가 전례없는 양의 컨텐츠를 생성하면 컨텐츠 중재를 최적화하기위한 접근 방식을 찾는 충동이 증가합니다. 그리고이 작업은 활성 사용자의 수가 끊임없이 가파르게되며 콘텐츠 볼륨도 기하 급수적으로 증가하고 머신 러닝 및 AI는 매우 비싸고 수동 중재는 시간이 지연되고 시간이 지연됩니다.
이제 우리는 사용자 생성 컨텐츠를 허용하는 모든 플랫폼이 비슷한 문제에 직면하고있는 시점에 있습니다. 운 좋게도 기계 학습은 컴퓨터 처리 성능, 스토리지, 데이터 도구, 웹 등의 발전으로 인해 머신 러닝 기술이 점점 더 저렴 해지는 시점까지 이미 성숙해졌습니다. 혁신을위한 끊임없는 노력으로 Sashido의 팀은 오픈 소스 도구 및 라이브러리만으로 구축 된이 간단하고 우아한 완벽한 기능적 컨텐츠 중재 서비스를 만들었습니다. 이미지 분류 REST API, 자동화 엔진 및 관리자 패널의 세 가지 주요 구성 요소로 구성되며,이 패널은 모든 구문 분석 서버 Node.js 프로젝트에 별도로 통합되어 어디에서나 호스팅 할 수 있습니다.
데스크탑 및 모바일 친화적 인 관리자 패널의 간단한 환상. 여기에서 전체 데모를 확인하십시오.
관리 앱에서 승인을 위해 표시되는 이미지는 특정 기준에 따라 자동화 엔진의 수동 중재를 위해 표시된 이미지입니다.
다음은 특정 클래스의 사진이 나머지 API로 분류되는 방법에 대한 몇 가지 예입니다.
이미지 소스 | 이미지 소스 | 이미지 소스 |
---|---|---|
분류 결과 | 분류 결과 | 분류 결과 |
[{ "ClassName": "중립", "확률": 0.93821 }, { "ClassName": "Drawing", "확률": 0.05473 }, { "ClassName": "섹시", "확률": 0.00532 }, { "ClassName": "Hentai", "확률": 0.00087 }, { "ClassName": "포르노", "확률": 0.00085 }] | [{ "ClassName": "섹시", "확률": 0.99394 }, { "ClassName": "중립", "확률": 0.00432 }, { "ClassName": "포르노", "확률": 0.00164 }, { "ClassName": "Drawing", "확률": 0.00006 }, { "ClassName": "Hentai", "확률": 0.00001 }] | [{ "ClassName": "Drawing", "확률": 0.96063 }, { "ClassName": "중립", "확률": 0.03902 }, { "ClassName": "Hentai", "확률": 0.00032 }, { "ClassName": "섹시", "확률": 0.00001 }, { "ClassName": "포르노", "확률": 0.00005 }] |
중립 데모 | 섹시한 데모 | 드로잉 데모 |
이 서비스는 Mongo DB 및 Parse Server와 함께 Node.js로 내장되어 있습니다. 표준 Express 앱에서 사용할 수 있지만 Repo의 파일 구조는 구문 분석됩니다. 코드는 src
폴더로 구성되며 src/cloud/main.js
서비스의 루트 파일입니다. 반응 Vizualization Logic은 각각 scr/react
폴더에 배치됩니다.
REST API는 Tensorflow 미리 훈련 된 모델을 사용하는 NSFW.JS Classification에서 작동합니다. URL이 주어지면 이미지가 그리기, 중립, 섹시, 포르노 및 헨타이 등 각 클래스에 얼마나 영향을 미치는지 예측을 반환합니다. 이 블로그 게시물에서 찾을 수있는 Behind and Stack 사용 된 논리에 대한 자세한 내용.
API는 표현 경로에서 또는 구문 분석 SDK 또는 구문 분석 REST API를 사용하여 클라우드 코드 기능에서 직접 이미지를 분류하기위한 두 가지 접근 방식을 제공합니다.
Express 엔드 포인트에서 분류하십시오
curl http://localhost:1337/api/image/classify?url=https://nsfw-demo.sashido.io/sexy.png
NSFWIMAGECLASSIFY 클라우드 코드 기능 - API 예제로 분류하십시오.
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
자동화 엔진의 목적은 특정 이미지의 분류가 프로젝트에 안전한 것으로 설정된 매개 변수에 어떻게 해당하는지 확인하는 것입니다. 프로세스는 구문 분석 후 사후 트리거로 자동화됩니다.
처음에는 5 개의 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
미만의 모든 이미지를 승인합니다.
프로젝트의 매개 변수를 미세 조정하는 방법에 대한 자세한 내용은 여기에서 기사에서 찾을 수 있습니다.
중재 환경 설정은 생산 응용 프로그램의 ModerationsCores 구성 매개 변수 로 저장되므로 필요한 경우 즉시 수정할 수 있습니다.
애프터ve 트리거는 사용자 생성 컬렉션에 연결되어 새로 업로드 된 사진을 자동으로 확인하고 안전, 삭제 또는 중재로 표시합니다. 애프터 안전에는 이미지의 API 분류가 정의 된 중재 환경 설정에 해당하는 방법과 일치하는 논리가 포함되어 있습니다. 전달 된 모든 데이터를 기반으로 결정이 내려지고 결과는 데이터베이스에 저장됩니다.
REST API 예측 및 자동화 엔진 결과에 대한 깔끔한 레코드를 유지하려면 사용자 생성 컨텐츠를 보유하는 데이터베이스 컬렉션에 몇 개의 열을 추가 해야합니다.
userimagecollection에 다음 열을 추가해야합니다
min
미만인 경우 isSafe - true
로 표시됩니다.deleted - true
대로 표시합니다. 해당 사진은 파일 스토리지에서 자동으로 삭제되지 않습니다.AfterSave는 자동으로 화재를 일으키지 만 이미지가 청중에게 독성이있는 경우 Manualy를 확인 해야하는 경우 추가 API 엔드 포인트를 추가했습니다.
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
몽고 DB
구문 분석 서버
레포를 복제하십시오 :
git clone https://github.com/SashiDo/content-moderation-application.git
cd content-moderation-application
Env.example을 .env 파일로 복사하고 좋아하는 편집기와 함께 지역 환경의 환경 변수를 설정하십시오.
cp env.example .env
mongodb uri 및 파일 URL을 배치하십시오. 앱이 Sashido에서 호스팅되면 Sashido 프로젝트의 자격 증명을 사용할 수 있습니다. App의 대시 보드 -> 앱 설정에서 모든 키와 URL을 찾을 수 있습니다.
NB! 수동 중재가 필요한 이미지를 관리 애플리케이션에 로컬로로드하려면 실제 APP_ID도 배치해야합니다!
이것은 완전한 기능을 갖춘 예이므로 모든 종속성은 package.json에 존재합니다. 실행하면됩니다.
npm install
npm run dev
프로덕션 서버의 다음 구문 분석을 설정하십시오.
ModerationsCores 객체는 구문 분석으로 저장되어야하므로 선호도를 즉시 업데이트 할 수 있습니다.
컨텐츠 중재 자동화를 활성화/비활성화 할 수있는 부울 유형의 조정 항평 옵션 .
제작하려면 NSFW 모델 URL , NSFW 모델 모양 크기 및 자동화 구성 캐싱 변수를 설정해야합니다.
모델 URL | 크기 | 모양 크기 | 정확성 |
---|---|---|---|
https://ml.files-sashido.cloud/models/nsfw_inception_v3/ | 거대한 | 299 | 93% |
https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/90/ | 2.6MB | 224 | 90% |
https://ml.files-sashido.cloud/models/nsfw_mobilenet_v2/93/ | 4.2MB | 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
이 섹션을 봐 주셔서 감사합니다. 우리는 멋진 아이디어에 개방되어 있으므로, 당신이 하나가 있고 기꺼이 공유 할 의향이 있다면 - repo를 포크하고, 변경 사항을 적용하고 풀 요청을 열십시오. :)
Copyright © 2020, Cloudstrap AD. 자세한 내용은 라이센스를 참조하십시오.