본문 바로가기

컴터생각

딥러닝 파이썬 코드로 외설 사진 판별하기

 

업무상 필요한 코드가 있는데 아마도 오픈소스에 이미 있을 것 같아서, 찾아봤더니 역시나 이미 있다.

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에서만 돌려야 합니다. 
남친 노트북, 여친 노트북, 애들 노트북에서 돌리며 안됩니다. 싸움납니다.

곧 다운로드 링크 올릴 예정입니다.


테스트를 위해서 야한 사진 구하는게 제일 어렵네요 ㅠㅠ

 

 

 

가상화폐 코인, 투기 말고 무슨 용도가 있나 - 불법은 아닌 도박장

두나무 합법적(?) 도박판인 암호화폐 거래소 업비트로 영업이익 국내 정상급 현금 보유 이 정도 벌면 얼른 수수료 내려야죠. 이제 사회적 책임도 좀 지세요. 암호화폐, 가상화폐 승자는 거래소일

madchick.tistory.com

 

애드센스 영구정지 계정 복구 이야기 - 불가능 이라 생각하자

결론부터 말하면 영구정지 먹으면 구글은 정말로 안 풀어 줍니다. 영구정지는 정말 평생인가? - 10년 기다리면 풀어주긴 하더라 왜 정지를 당하나? 내 광고는 절대로 클릭하면 안됩니다. 모바일

madchick.tistory.com

 

넷플릭스 본능의 질주 시즌5, 쿠팡 플레이 F1 레이스 독점 생중계

넷플릭스 본능의 질주, F1의 세계를 알려준 정말 훌륭한 작품. 왜 국내에서는 F1 중계를 안해주나 싶었는데, 드디어 나선 용자, 쿠팡 플레이 !! 독점 생중계라니, 멋지다 쿠팡아 넷플릭스 본능의

madchick.tistory.com

 

탑건 매버릭 - 전작을 능가하는 후속작, 뱅기 좋아하면 이건 봐야지

친구 녀석과 개봉하면 같이 보러 가기로 했지만, 산다는게 다 그런거지 ㅎㅎ 구글 영화에서 구매해서 이제야 봄 36년만에 나온 후속작 - 제대로 만들기 위해서 이렇게 오래 걸렸나 다들 미쳤나

madchick.tistory.com

 

초보 입문 코딩 배워야 하나? 배울거면 스파르타 코딩클럽에서

인생사진 쏙쏙 코딩네컷 | 스파르타코딩클럽 무료특강 1시간 만에 코딩을 무료로 배워 인생사진을 모아 추억을 기록하는 네컷사진으로 만들어보세요. spartacodingclub.kr 온라인 강의는 꽤 들어 봤

madchick.tistory.com

 

플러터 앱 개발 초보 기본 입문 - 구글플레이, 앱스토어 배포, 애드몹 - dear abby, kdrama

리액트 네이티브가 나쁘진 않지만, 저는 두가지 이유로 플러터를 선호 합니다 UI를 구성하면, 무조건 aos와 ios에서 동일하게 보인다. (플러터 프레임워크가 OS 기본 컨트롤을 사용하지 않음) aos, io

madchick.tistory.com

728x90