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
Ý kiến trên Hacker News