1P by neo 15일전 | favorite | 댓글 1개

소개

  • 이 프로젝트는 머신러닝과 TensorFlow에 대한 지식을 향상시키기 위한 학습 경험으로 시작되었음.
  • 목표는 브라우저에서 4Chan CAPTCHA를 80% 이상의 정확도로 해결할 수 있는 머신러닝 모델을 만드는 것이었음.

용어

  • CAPTCHA: 컴퓨터나 웹사이트 사용자가 인간인지 확인하기 위한 테스트.
  • 4Chan: 다양한 주제의 토론 게시판을 제공하는 익명 이미지 게시판 웹사이트.
  • 일반 CAPTCHA: 5~6개의 영숫자 문자로 구성된 4Chan CAPTCHA.
  • 슬라이더 CAPTCHA: 배경 이미지와 전경 이미지가 겹쳐져 있는 복잡한 형태의 CAPTCHA.

데이터 수집

  • 머신러닝 문제에서 가장 어려운 부분은 데이터를 수집하는 것임.
  • 4Chan에서 CAPTCHA를 스크래핑하고 솔루션을 얻는 것이 주요 과제였음.

4Chan에서 CAPTCHA 스크래핑

  • HTTP 요청을 분석하여 CAPTCHA 데이터를 JSON 형식으로 추출하는 방법을 발견함.
  • 요청 간격을 조절하여 CAPTCHA의 난이도를 관리해야 했음.

솔루션 얻기

  • 상업적인 CAPTCHA 해결 서비스를 이용했으나, 정확도가 낮았음.
  • 직접 해결하거나 신뢰할 수 있는 사람에게 부탁하는 방법도 시도했으나, 제한적이었음.

합성 데이터 생성

  • 4Chan CAPTCHA를 모방하여 합성 데이터를 생성함.
  • 배경과 문자를 분리하여 합성 CAPTCHA를 생성하는 알고리즘을 개발함.

모델 생성

  • LSTM CNN 아키텍처를 사용하여 모델을 구축함.
  • Keras와 TensorFlow를 사용하여 모델을 구현함.

데이터 처리

  • 모든 CAPTCHA 이미지를 300x80 픽셀로 조정하여 모델에 입력함.
  • 문서의 중요성을 강조하며, 문서의 세부 사항을 놓치지 않도록 주의해야 함.

모델 훈련

  • 약 500개의 수작업 이미지와 50,000개의 합성 이미지를 사용하여 모델을 훈련함.
  • 훈련은 NVIDIA RTX A4000 GPU에서 수행되었음.

TensorFlow.js에서 모델 사용

  • TensorFlow.js로 모델을 변환하여 브라우저에서 실행 가능하도록 함.
  • Python 3.12에서는 변환 스크립트가 작동하지 않음.
  • Keras 3 모델은 TensorFlow.js에서 지원되지 않음.

실제 성능

  • 실제 4Chan CAPTCHA에서 90% 이상의 성공률을 보임.
  • 4자 CAPTCHA에서도 동일한 성능을 보임.

결론

  • 이 프로젝트를 통해 머신러닝과 컴퓨터 비전에 대해 많은 것을 배웠음.
  • 목표를 달성하여 만족스러운 결과를 얻었음.
Hacker News 의견
  • JSON 스크립트를 사용하여 시각화 데이터를 파싱하는 것은 복잡한 작업임
    • 4chan이 이메일 인증을 요구하기 시작함
  • Keras와 Tensorflow.js 간의 상호 운용성 문제는 Tensorflow의 전형적인 문제임
    • TF는 통합된 제품보다는 관련 도구들의 모음처럼 느껴짐
    • 모든 오픈 소스 Google 라이브러리/도구가 비슷한 느낌을 줌
  • 왜 사람들이 왜곡된 텍스트 기반 캡차를 피하는지 이유가 있음
    • 컴퓨터가 인간보다 더 잘 풀 수 있는 수준에 도달함
    • 관련된 흥미로운 논문이 있음
  • 놀랍게도 많은 텍스트 기반 캡차는 몇 줄의 쉘 스크립트로 해결 가능함
    • imagemagik을 사용하여 그레이스케일로 변환 후 teserract로 처리 가능함
  • 2captcha.net 같은 사이트도 존재함
    • 캡차는 최소한의 노력을 요구하는 것과 같음
  • 캡차를 가장하여 사용자 행동과 타이밍을 분석하는 것이 더 나을지 궁금함
    • AI를 훈련시켜 상대방이 인간인지 아닌지를 판단하는 '역 튜링 테스트'를 발명할 수 있음
  • Silk Road CAPTCHA에 대한 2014년 분석이 있음
  • 4chan의 적절한 대응은 인간의 작업을 단순화하는 것임
    • 복잡한 캡차는 인간의 불편함을 증가시키고 기계의 해결 가능성을 줄이지 않음
  • 4chan 캡차의 문자 선택이 인종차별적/극단적 슬로건을 만들 수 있도록 의도되었을 가능성이 있음
    • 특정 문자들이 자주 사용됨
    • 무작위로 보이지만 특정 패턴이 자주 발생함
  • 4chan 캡차를 해결하는 프로젝트가 존재함
  • 4chan을 사용하려 했으나 캡차를 통과하지 못한 경험이 있음
  • 4chan이 Google 캡차처럼 봇 행동 감지를 하는지 궁금함