업무상 필요한 코드가 있는데 아마도 오픈소스에 이미 있을 것 같아서, 찾아봤더니 역시나 이미 있다.
https://github.com/notAI-tech/NudeNet
사진, 동영상 모두 판별해 주는 괜찮은 딥러닝, 인공지능 코드로 보인다.
잘 동작하는지 여부는 직접 이용해서 코드를 짜보는 수 밖에 없다. 다른 사람들이 뭐라고 해도, 내 용도와는 다를 수 있고, 내가 직접 판단하는게 가장 확실하니까.
아, 근데 테스트용 데이터 찾는 것도 귀찮은 일이다.
하지만, 그동안 클리앙 오늘의 추천글 열심히 읽은 덕분에 비교적 쉽게 구할 수 있었다.
https://www.clien.net/service/board/park/16125336
클리앙에 올라오는 야한 사진들을 구글에서 검색해서 모아보는 팁을 누군가 올려줬다. 글 올려주신 분 땡큐.
이 검색 결과를 크롤링 해서 이미지 다운로드 받는 파이썬 코드를 작성했다. 이미지 다운로드 시키는 코드는 이전에 작성해 놨던거 자꾸 수정을 해야한다. 구글 애들 참 부지런하기도 하지, 이미지 검색 결과 화면을 계속해서 변경한다.
검색결과 다시 또 분석해서 코드 수정한 후에 이미지를 460개 정도 다운로드 받을 수 있었다. 좀 더 다운로드 받게 하고 싶었지만, 귀찮으니.. 뭐 이정도면 테스트 하기엔 충분하다.
깃헙 소스 설치하고, 샘플 코드 짜서 테스트 시작.
간단하게 unsafe 확율이 조금이라도 더 높게 나오면 unsafe로 분류.
결과는 그럭저럭 만족할만 하긴 하지만, 이 정도는 unsafe로 분류해야 할 것 같은데 맘에 안드는 것도 좀 있었고, 반대의 경우도 있었다.
구글링을 좀 더 해봤더니, 이게 생각보다 쉽지 않은 일 이라네.
PORN: YOU KNOW IT WHEN YOU SEE IT, BUT CAN A COMPUTER?
https://www.theverge.com/2019/1/30/18202474/tumblr-porn-ai-nudity-artificial-intelligence-machine-learning
텀블러가 외설물 방치한다고 하도 욕 쳐먹어서, 인공지능 코드를 적용하여 모든 포스트들을 자동으로 차단해 버렸는데 수많은 정상적인 글들도 모조리 차단이 되어 버렸고, 텀블러는 적절한 대처를 못하고 있는 상황이라네.
대표적으로 아기 사진이 많이 블럭 당했는데, 현재 기술로는 구별해 내지 못할 것 같긴 하다.
그래서 테스트를 좀 해봤다. 아, 아기 사진 다운로드 받으려니 아까 작성했던 코드 또 고쳐야 한다. 구글 애들 참 사악하게 만들어 놨다. 아무래도 검색어에 따라서 검색 결과 화면 구성의 엘리먼트 클래스 이름을 그때 그때 다르게 해놨나 보다.
귀찮긴 하지만, 금방 고칠 수 있어서 큰 문제는 아니지만 어차피 코드 수정해서 돌릴텐데 뭐하러 이리 해놨는지. 어떻게든 서버 부하 줄이려면 내가 구글 개발자라도 그렇게 했을 것 같기는 하다. 거저 먹는 내가 참아야지.
아기사진은 좀 더 많이 다운로드 받을 수 있었다. 780개 다운로드 받았다.
자, 그럼 돌려보자. 780개 이미지 판별하는데 3분 2초 걸렸다.
결과는 생각보다 괜찮다. 위의 기사 읽고서는 처참한 결과가 나올 줄 알았는데, 780개 중 92개만 외설로 분류되었다. 780개 중 외설물은 없을 것으로 예상되니 오탐율은 11%.
마지막으로 얼굴 사진으로 검색을 해봤다. 얼굴 사진은 좀 다 많이 검색이 되었네. 999개 다운로드 성공.
999개 판독하는데 3분 29초, 외설로 오탐한 갯수는 60개. 999개 중 외설사진은 없을 것으로 보이니 오탐율은 6%.
수영복 사진이나, 예술작품, 아기사진, 얼굴사진 등은 오탐으로 외설로 분류될 가능성이 높긴 하지만, 그래도 성인물을 차단하는게 더 필요한 기능이니 결론은 잘만 사용하면 쓸만 할 것 같다.
이제 이 코드를 폰에서 사용할 수 있도록 포팅하면 된다. 파이썬 코드를 안드로이드에서 돌리려면 어떻게 해야하나. 뭐, 이런 생각을 한 사람이 내가 처음은 아닐 것이니, 분명 이것도 누가 만들어 둔게 있겠지.
아, 맞다. 포르노 사진들 구해서 놓치는 사진들이 있는지 테스트 해봐야 하는데. 쩝, 이건 테스트용 이미지를 어떻게 구해야 하나. 직접 하나 하나 만들 수도 없고. 이거 참 난감하구만.
테스트 해봤던 내용으로 윈도우용 앱을 만들어 봅니다.
처음엔 폰에 넣어볼까 했는데, 용량도 너무 크고 폰에 이식하는 방법을 아직 못 찾았습니다. ㅠㅠ
분명 누군가는 파이썬 코드를 안드로이드와 아이폰에 심는 방법을 만들어 놨을 것 같은데 마음에 드는 방법을 찾는게 쉽지 않네요. 가장 좋은건 FastAPI 혹은 Flask로 서버를 만들고, 폰에서 호출하는건데. 사실 개인이 AWS에 서버 만들어 돌리기엔 비용이 걱정 됩니다.
광고 붙여서 서버 운영비 뽑을만한 아이템 생각나면 돌려보기로 하고 우선은 데스크탑용으로 먼저 만드는 중 입니다.
하는 김에 macOS용 앱도 함 만들어볼 계획입니다. (물론, 계획입니다. macOS용 앱은 공부하면서 만들어야 해서 언제 완성될지는...)
과연 언제 다운로드 링크를 걸 수 있을지는 모르겠지만 곧 올려보겠습니다.
추석 연휴중에 완료 하려고 했는데, 연휴라고 해도 온전한 내 시간은 얼마 안되네요.
내 PC안에 야한(?) 사진 및 동영상 찾아주는 프로그램인데, 잘 못 인식하는 경우를 얼마나 줄일 수 있을지, 요즘 하드디스크 용량이 하도 커서 얼마나 빠르게 만들 수 있을지가 관건 입니다. 하긴, 내가 만드는 코드는 얼마 안되고 거의 대부분 오픈소스 엔진이 해주는거라 오탐과 속도 개선은 내 능력으로는 한계가 있기도 합니다.
속도 좀 나오면 동영상 까지 하고, 속도 안나오면 사진만 하려고 합니다.
꼭 내 PC에서만 돌려야 합니다.
남친 노트북, 여친 노트북, 애들 노트북에서 돌리며 안됩니다. 싸움납니다.
곧 다운로드 링크 올릴 예정입니다.
테스트를 위해서 야한 사진 구하는게 제일 어렵네요 ㅠㅠ