1 ポイント 投稿者 GN⁺ 2024-11-30 | 1件のコメント | WhatsAppで共有

紹介

  • このプロジェクトは、機械学習と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件のコメント

 
GN⁺ 2024-11-30
Hacker Newsの意見
  • JSONスクリプトを使って可視化データをパースするのは複雑な作業だ
    • 4chanがメール認証を要求し始めた
  • KerasとTensorflow.jsの相互運用性の問題は、Tensorflowに典型的な問題だ
    • TFは統合された製品というより、関連ツールの寄せ集めのように感じられる
    • Googleのすべてのオープンソースライブラリ/ツールが似たような印象を与える
  • 人々が歪んだテキストベースのCAPTCHAを避けたがるのには理由がある
    • コンピューターが人間よりもうまく解けるレベルに達している
    • 関連する興味深い論文がある
  • 驚くべきことに、多くのテキストベースCAPTCHAは数行のシェルスクリプトで解ける
    • imagemagikを使ってグレースケールに変換した後、teserractで処理できる
  • 2captcha.netのようなサイトも存在する
    • CAPTCHAは最小限の努力を要求するものにすぎない
  • CAPTCHAを装ってユーザーの行動やタイミングを分析するほうがよいのではないかと思う
    • AIを訓練して相手が人間かどうかを判断する「逆チューリングテスト」を発明できるかもしれない
  • Silk Road CAPTCHAに関する2014年の分析がある
  • 4chanの適切な対応は、人間の作業を単純化することだ
    • 複雑なCAPTCHAは人間の不便を増やすだけで、機械による解決可能性を下げない
  • 4chan CAPTCHAの文字選択は、人種差別的/過激なスローガンを作れるよう意図されていた可能性がある
    • 特定の文字が頻繁に使われる
    • ランダムに見えるが、特定のパターンがよく発生する
  • 4chan CAPTCHAを解くプロジェクトが存在する
  • 4chanを使おうとしたが、CAPTCHAを通過できなかった経験がある
  • 4chanがGoogle CAPTCHAのようにボット行動検知をしているのか気になる