이미지 업로드 - 이미지 인식 API 지원

SESTA/FOSTA 법은 소셜/포럼/UGC 웹사이트 운영자에게 제공되던 많은 보호 조치(섹션 230 안전 항만)를 사실상 제거하여, 웹사이트 운영자가 사용자의 행동에 대해 책임을 지게 합니다.

보호 기능을 강화하기 위한 해결책의 하나로, 이미지 인식 API 사용을 지원하는 것이 현명할 수 있습니다. 이를 통해 (위험한 콘텐츠, 알몸, 피비린내 나는 장면 등) 노골적인 콘텐츠 업로드를 자동으로 차단할 수 있습니다.

또한, 초안에 부적절한 이미지를 업로드한 후 이를 다른 곳에서 핫링크로 사용하는 등 악용되는 경우로부터의 보호도 강화해야 합니다. 이는 무료 익명 이미지 호스팅처럼 악용될 수 있습니다. Discourse에서 이것이 얼마나 악용될 수 있는지는 정확히 모르지만, 기본 설정에서는 초안 생성 후 180일 동안 웹마스터가 업로드된 내용을 알지 못한 채로 악용될 수 있는 것으로 보입니다(초안 생성 후 n일이 지난 초안 삭제).

일부 API:

4개의 좋아요

이것은 플러그인으로 시작해야 할 것이며, 코어 디스커스 기능으로 채택될 가능성은 낮습니다.

8개의 좋아요

Google Cloud Vision API를 통해 Discourse에 업로드된 모든 이미지를 검사하는 기능이 있다면, AdSense에서 안전을 유지하는 데 매우 유용할 것입니다. 이전 웹사이트에서는 이렇게 했으며, 노출이나 폭력적인 사진이 업로드되는 일이 전혀 없었습니다.

Google에서 제공하는 Ruby Gem이 있습니다:

잠재적인 플러그인은 모든 이미지(게시물, 아바타, 프로필 배경 등)에 대해 Discourse의 주요 이미지 업로드 프로세스에 연결되어야 하며, 허용되지 않는 콘텐츠를 포함하고 있는 이미지를 거부해야 합니다:

  puts "Adult:    #{safe_search.adult}"  puts "Spoof:    #{safe_search.spoof}"  puts "Medical:  #{safe_search.medical}"  puts "Violence: #{safe_search.violence}"  puts "Racy:     #{safe_search.racy}"
['UNKNOWN', 'VERY_UNLIKELY', 'UNLIKELY',        'POSSIBLE', 'LIKELY', 'VERY_LIKELY']

이러한 플러그인은 Discourse 코드베이스의 어디에 연결해야 하나요?

#marketplace를 통해 이를 개발하는 데 관심이 있는 사람이 있을까요?

2개의 좋아요

이것은 절대적으로 가능하지만, 제 생각에는 그렇게 하면 경험의 무결성(seamlessness)이 사라질 것입니다. 모델이 플러그인에 내장될 수 있는 방법이 있다면 정말 멋진 일이 될 것입니다.

혹시 비전 API 자체를 사용하셨나요?

@angus가 만든 이 플러그인은 시작점으로 활용할 수 있습니다. GitHub - angusmcleod/discourse-machine-learning · GitHub

2개의 좋아요

“무결성”이라는 말로 정확히 무엇을 의미하시나요?

1개의 좋아요

내 말은, 업로드 전에 이미지를 API에 POST로 보내서 녹색 신호를 받는 데 시간이 좀 걸리겠죠?

1개의 좋아요

솔직히 내 생각에는 인라인 이미지 업로드 프로세스는 이미 비동기(async)입니다. 그리고 Google API는 매우 빠릅니다.

한편, 사용자가 새로운 게시물을 작성한 후에 외부 웹훅(Discourse API)을 통해 이미지를 확인하고, 사용자의 게시물을 수정하는 것도 괜찮을 것 같습니다(예: 이미지를 변경하여 "관리자에 의해 이미지 삭제됨"이라는 텍스트로 대체). API를 사용하면 그런 부분이 가능해 보이지만, 그런 경우 API를 통해 실제로 “나쁜” 이미지를 삭제하는 방법에 대한 참조를 찾을 수 없습니다. 왜냐하면 나는 그런 이미지를 어딘가에 남아 있게 두는 것조차 원하지 않기 때문입니다.

2개의 좋아요

유료 작업으로 이 부분을 진행하는 데 기꺼이 참여할 수 있습니다. API 쪽, 즉 offensive content(부적절한 콘텐츠) 감지에 어떤 API가 사용되는지 같은 부분에 대해 도움을 주실 수 있을까요?

Ruby에 대해서는 여기에서 매우 잘 문서화되어 있습니다:

PHP에서는 이를 Drupal에 2시간도 채 걸리지 않아 구현했습니다.

3개의 좋아요

이건 2시간 정도면 괜찮을 것 같아요. 이 건에 대해 쪽지를 보내드릴까요?

3개의 좋아요

네, 그렇게 해 주세요. 정말 좋겠습니다.

1개의 좋아요

@Terrapop - 고려해 볼 가치가 있는 점은 인식의 정확도입니다. 차단된 콘텐츠 중 일부를 확인할 수 있으면 ‘POSSIBLE’, ‘LIKELY’, ‘VERY_LIKELY’ 기준으로 설정이 지나치게 엄격하지 않은지 확인할 수 있어 좋습니다. 오탐(False positive)과 미탐지(False negative)는 비교적 흔한 현상입니다.

특정 ‘possibly adult’ 수준 이상의 이미지를 포함하는 게시글을 검토 대기열로 보내는 것이 더 나은 구현 방식이라고 생각합니다. 이렇게 하면 게시글이 공개되지 않으면서도, 인식이 정확하지 않았다면 승인할 수 있습니다. 거기서 거부되면 이미지가 삭제되는데, 'clean_orphan_uploads_grace_period_hours’에 설정된 시간 경과 후에 삭제된다고 알고 있습니다.

이 방식을 사용하면 ‘POSSIBLY’ 감지 수준을 더 안심하고 사용할 수 있습니다.

2개의 좋아요

현재 웹사이트에서 API를 테스트해 보았고, 우리에게 잘 맞는 레벨을 알고 있습니다.

@fzngagan이 이 플러그인을 오픈 소스로 개발하고 있으므로, 완료되면 직접 거부하는 대신 모더레이션 큐로 전달하도록 하는 옵션을 수정하고 풀 리퀘스트를 제출할 수 있습니다.

3개의 좋아요

여기에 플러그인이 있습니다.

이미지가 게시물의 일부일 때, 확률을 리뷰 큐와 연결하는 아이디어를 좋아합니다. 이 부분에 대해 후원/PR을 기꺼이 수용하겠습니다. :slight_smile:

5개의 좋아요

그것이 선택 사항으로 추가된다면, 물론 그건 괜찮습니다.

우리는 이전 커뮤니티에서 해당 API를 꽤 오랫동안 사용해 왔으며, 우리에게 허용 가능한 수준을 잘 알고 있습니다. 그리고 대부분의 경우 API가 거부한 것이 정상이었고, 사용자는 단순히 덜 심각한 이미지를 다시 업로드했을 뿐이었습니다.

또한, 게시물뿐만 아니라 아바타와 프로필 배경 이미지 업로드도 검사되기를 원했습니다. 이러한 항목들에도 대기열 옵션이 가능한지 모르겠습니다.

2개의 좋아요