1 điểm bởi GN⁺ 2024-11-30 | 1 bình luận | Chia sẻ qua WhatsApp

Giới thiệu

  • Dự án này bắt đầu như một trải nghiệm học tập nhằm nâng cao kiến thức về machine learning và TensorFlow.
  • Mục tiêu là tạo ra một mô hình machine learning có thể giải CAPTCHA của 4Chan trong trình duyệt với độ chính xác trên 80%.

Thuật ngữ

  • CAPTCHA: Bài kiểm tra dùng để xác minh người dùng máy tính hoặc trang web là con người.
  • 4Chan: Một trang web bảng ảnh ẩn danh cung cấp các bảng thảo luận về nhiều chủ đề khác nhau.
  • CAPTCHA thông thường: CAPTCHA của 4Chan gồm 5~6 ký tự chữ và số.
  • CAPTCHA dạng thanh trượt: Một dạng CAPTCHA phức tạp trong đó ảnh nền và ảnh tiền cảnh chồng lên nhau.

Thu thập dữ liệu

  • Phần khó nhất trong các bài toán machine learning là thu thập dữ liệu.
  • Việc scrape CAPTCHA từ 4Chan và lấy đáp án là thách thức chính.

Scrape CAPTCHA từ 4Chan

  • Đã phát hiện cách trích xuất dữ liệu CAPTCHA ở định dạng JSON bằng cách phân tích các yêu cầu HTTP.
  • Cần điều chỉnh khoảng thời gian giữa các yêu cầu để quản lý độ khó của CAPTCHA.

Lấy đáp án

  • Đã sử dụng các dịch vụ giải CAPTCHA thương mại, nhưng độ chính xác thấp.
  • Cũng đã thử tự giải hoặc nhờ những người đáng tin cậy, nhưng cách này bị hạn chế.

Tạo dữ liệu tổng hợp

  • Tạo dữ liệu tổng hợp mô phỏng CAPTCHA của 4Chan.
  • Phát triển một thuật toán tạo CAPTCHA tổng hợp bằng cách tách nền và ký tự.

Tạo mô hình

  • Xây dựng mô hình bằng kiến trúc LSTM CNN.
  • Triển khai mô hình bằng Keras và TensorFlow.

Xử lý dữ liệu

  • Điều chỉnh tất cả ảnh CAPTCHA về kích thước 300x80 pixel để đưa vào mô hình.
  • Nhấn mạnh tầm quan trọng của tài liệu và cần cẩn thận để không bỏ sót các chi tiết trong tài liệu.

Huấn luyện mô hình

  • Huấn luyện mô hình bằng khoảng 500 ảnh làm thủ công và 50.000 ảnh tổng hợp.
  • Việc huấn luyện được thực hiện trên GPU NVIDIA RTX A4000.

Sử dụng mô hình trong TensorFlow.js

  • Chuyển đổi mô hình sang TensorFlow.js để có thể chạy trong trình duyệt.
  • Trong Python 3.12, script chuyển đổi không hoạt động.
  • Mô hình Keras 3 không được TensorFlow.js hỗ trợ.

Hiệu năng thực tế

  • Đạt tỷ lệ thành công trên 90% với CAPTCHA 4Chan thực tế.
  • Cũng cho hiệu năng tương tự với CAPTCHA 4 ký tự.

Kết luận

  • Thông qua dự án này, tác giả đã học được rất nhiều về machine learning và computer vision.
  • Đã đạt được mục tiêu và có được kết quả đáng hài lòng.

1 bình luận

 
GN⁺ 2024-11-30
Ý kiến trên Hacker News
  • Việc dùng script JSON để phân tích dữ liệu trực quan hóa là một công việc phức tạp
    • 4chan đã bắt đầu yêu cầu xác thực email
  • Vấn đề khả năng tương tác giữa Keras và Tensorflow.js là kiểu vấn đề điển hình của Tensorflow
    • TF tạo cảm giác giống một tập hợp các công cụ liên quan hơn là một sản phẩm thống nhất
    • Mọi thư viện/công cụ mã nguồn mở của Google đều cho cảm giác tương tự
  • Có lý do khiến mọi người tránh CAPTCHA dựa trên văn bản bị làm méo
    • Máy tính đã đạt đến mức có thể giải tốt hơn con người
    • Có một bài báo nghiên cứu thú vị liên quan đến việc này
  • Đáng ngạc nhiên là nhiều CAPTCHA dựa trên văn bản có thể được giải chỉ với vài dòng shell script
    • Có thể chuyển sang thang độ xám bằng imagemagik rồi xử lý bằng teserract
  • Các trang như 2captcha.net cũng tồn tại
    • CAPTCHA giống như việc đòi hỏi mức nỗ lực tối thiểu
  • Tò mò liệu việc ngụy trang thành CAPTCHA để phân tích hành vi và thời điểm thao tác của người dùng có tốt hơn không
    • Có thể phát minh ra một “bài kiểm tra Turing ngược” để huấn luyện AI phán đoán đối phương là người hay không
  • Có một phân tích từ năm 2014 về CAPTCHA của Silk Road
  • Phản ứng phù hợp của 4chan là đơn giản hóa công việc của con người
    • CAPTCHA phức tạp làm tăng sự bất tiện cho con người mà không làm giảm khả năng máy giải được
  • Có khả năng việc lựa chọn ký tự trong CAPTCHA của 4chan được cố ý để có thể tạo ra các khẩu hiệu phân biệt chủng tộc/cực đoan
    • Một số ký tự nhất định được dùng thường xuyên
    • Trông có vẻ ngẫu nhiên nhưng một số mẫu nhất định xuất hiện thường xuyên
  • Có một dự án giải CAPTCHA 4chan
  • Có trải nghiệm từng cố dùng 4chan nhưng không vượt qua được CAPTCHA
  • Tò mò liệu 4chan có phát hiện hành vi bot giống CAPTCHA của Google hay không