紹介
- このプロジェクトは、機械学習と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でも同じ性能を示した。
結論
- このプロジェクトを通じて、機械学習とコンピュータビジョンについて多くを学んだ。
- 目標を達成し、満足のいく結果を得た。
1件のコメント
Hacker Newsの意見
imagemagikを使ってグレースケールに変換した後、teserractで処理できる