実用的なCNN畳み込みニューラルネットワークは、99.5%の精度で検証コードを認識します

実用的なCNN畳み込みニューラルネットワークは、99.5%の精度で検証コードを認識します

1. 背景

2年間運営してきた個人プロジェクトですが、最近対象サイトがスキャンコードログインに変更になったため、技術共有として発表しました。このプロジェクトは、私の女神が参加したサインイン活動から始まりました。彼女は長い間粘りましたが、後で面倒だと感じました。途中で諦めるのは残念だったので、プログラムに自動ログイン+サインインを実装できないかと私に尋ねました。ウェブサイトを開いて、Python + Selenium で実現できることを知りましたが、完全に自動化したいため、検証コードの自動認識の難しさを克服する必要があります。技術進歩の原動力は常に怠惰ですが、私はマシンビジョン自体にも興味があります。この数年間、住宅団地やユニットの入り口にナンバープレート認識が導入されており、この機会にこの技術が何であるかを探ってみたいと思います。

まず、ここに 2 枚の写真があります。1 枚は精度の統計で、もう 1 枚は実際の戦闘のスクリーンショットです。アニメーション画像は認証コードの認識のみを行うもので、ログイン操作は行われません。効果を示すためにのみ使用されます。この記事では、技術的な詳細や理論的な原理についてはあまり詳しく説明しません。ただ、個人がさまざまなシナリオで使用できる、高機能な人工知能 + 機械学習 + コンピューター ビジョンを紹介するだけです。この効果に興味がある方は、引き続き下をご覧ください:

2. 検証コードの分析:

あるウェブサイトの認証コードは非常に複雑です。テンプレートは4セットあります。干渉線があるもの、ドットマトリックスを使用して文字を構成するもの、さまざまな方法で歪んでいるもの、カラフルな色でレンダリングされているものなどがあります。

まずはネットで既製のホイールがあるかどうか調べてみましょう。方法はいろいろありますが、簡単な方法で実現できるのであれば、わざわざ手間をかける必要はありません。

1.まずGoogleのtesseractとpytesser3を試してください。これらは同じもので、コードは非常に簡潔で、結果は2〜3行で得られ、かろうじて受け入れられます。通常の文字の認識率はかなり高いですが、少し変形すると、結果はまったく無関係になります。

2. すべてをシンプルに保つという原則に沿って、私は引き続き pytesser3 に依存し、適切なデータを入力し、検証コードをグレースケールに変換し、2 値化、フィルタリング、ノイズの低減を行い、ぼかし方法を組み合わせて使用​​することを計画しています。また、4 桁の検証コードを 4 つの小さな画像に分割して、単一文字認識の形で精度を向上させることもテストしました。しかし、どんな手段を使って挨拶しても、認識効果は決して良いとは言えません。

3. 究極のトリック、機械学習+畳み込みニューラルネットワークのみを使用できます。この穴に入る前に、長い間心理的な準備をしました。CNNのこのような大きな穴から抜け出すことができますか?1週間以上の学習の後、カバー写真の効果を使い果たし、2年間安定して実行しています。一般的なデバッグプロセスを簡単に共有できます。

3. 開発とデバッグのプロセス

CNN モデルのトレーニングには、トレーニング セットとテスト セットが必要です。コンピューターは、この 2 つのデータ セットの答えを知っている必要があります。では、答えを知っているデータはどこから来るのでしょうか?

1. まず、対象の Web サイトから 200 個の確認コードを収集し、手動でラベルを付け、その回答を確認コードの画像ファイル名の最初の 4 文字として使用するスクリプトを作成します。

2. 手作業によるラベル付けの効率が低すぎます。ラベル付けにお金をかける? そんなことはありません。楽しみのためにサインインするための小さなプログラムを書くことができます。投資したいですか? それなら自分でバッチを生成してください。対象ウェブサイトの検証コードを観察してください。歪み、ぼかし、線の追加などの手法は、Google のオープンソース検証コード開発キットと非常によく似ています。次回は戻ってシミュレーションしてみましょう。パッケージは Java です。Eclipse に少し変更を加えると、1 回のランチタイムで 500,000 個の検証コードと回答が生成されました。これと同様に、ファイル名の最初の 4 文字が答えになります。

3. トレーニング セットができたので、トレーニングと展開の環境を構築します。シンプルさと汎用性を考慮して、検証コード イメージは切り取られず、そのままマシンに投入されてトレーニングされます。

4. 検証効果

収穫の時期です。プログラムを調整した後、仕事が終わった直後にトレーニング セットとテスト セットをプログラムに投入しました。CPU では 6W のデータを実行するのに一晩かかりましたが、GPU では 20 分しかかかりませんでした。私の GPU では、500,000 個のデータ ポイントをトレーニングするのに半夜しかかかりませんでした。以下は、翌朝の実験環境のデータです。実験環境とは、トレーニング セット、テスト セット、検査セットがすべて同じシステムによって生成された環境を指します。精度は97.3%に達します。

では、実際の環境ではどのような効果があるのでしょうか。実際の環境とはトレーニング セットを指し、テスト セットは作成したコードによって生成されます。テスト セットは対象の Web サイトから収集され、手動でラベル付けされます。

実際の環境は 85% しかありません。これは少し低いですね。すべてのエラーを見つけて、その理由を調べてください。

このような間違いは私の誤認が原因です。機械が答えが間違っていることを指摘し、私は恥ずかしく思いました。でも、素晴らしい気分です。

こんなケースもあります。とても明白なのに、どうして人間の認識が間違えるのでしょうか? 後でキーボードを見ると、7とUが近すぎたので、手が滑ったに違いありません。これらの手動識別エラーを除くと、実際の環境での精度率は 90% に達します。基本的には自動ログインの要件を満たしています。

5. 精度を向上させる方法

その後、さらに考えてみました。もっと精度を上げる方法はないのでしょうか?実験環境と実環境の違いはなんでしょう?なぜ7%もの差があるのでしょうか?私が気づかなかった対象サイトの微調整があるに違いありません。たとえば、次のようになります。

左側の 6 つの画像はシミュレートされた検証コードであり、右側の画像は対象の Web サイトから手動で入力されたコードです。肉眼では非常によく似ていますが、フォントに若干の違いがあるようで、実験環境と実際の環境の間に 7% の精度誤差が生じます。この問題を解決するには、次の 2 つの方法があります。

1. 十分な数のコードを手動で入力し、再トレーニング用のテスト セットとして使用します。効果は良いはずですが、欠点も明らかです。手動でぼかす時間がある人がいるでしょうか?あるいは、時間はあるけれど単に怠け者なので、問題を解決するためにテクノロジーを使う必要があるかもしれません。言ってみれば、解決策はあるようです。Apple の最初の AI は、この種の怠惰を解消するように設計されています。解決策 2 をご覧ください。

2. キーワード: simgan。関連する2つの論文を注意深く研究した後、何か得られるものがあると感じたので、試してみることにしました。

6. 精度を向上させるための高度な実験

10日以上の実験(1回のトレーニングでは長すぎる)を経て、SimGANの原理をより深く理解することができました。SimGAN-Captchaの実験も完全に再現し、その後、サンプル強化のために自分の環境に拡張して適用しました。実験プロセスは次のとおりです。

まず、SimGAN-Captcha プロセスを再現します。次に、グレースケール画像を RGB に変更し、ラベルなしの実際のデータとラベル付きのシミュレーション データを使用して SimGAN-Captcha をトレーニングし、トレーニング済みのモデルを使用して前述の 500,000 + 10,000 のシミュレーション トレーニング データを改良し、改良されたデータを使用してキャプチャ認識モデルを再トレーニングし、精度を比較します。しかし、効果はイマイチ。肉眼で拡大してもピクセルレベルで違いがわかりません。シミュレーションが非常にリアルになっているとも言えますし、Refine の効果がないとも言えます。 SimGAN-Captcha が機能するかどうかさえ疑問視されるようになります。そこで、別の CAPTCHA ジェネレーターを使用してまったく異なる CAPTCHA を生成し、SimGAN-Captcha でピクセル レベルで新しい CAPTCHA を強化して、Refine が機能していることを証明しました。

50 時間以上のトレーニングを経て、SimGAN-Captcha は大幅な強化効果を発揮します。例:

便宜上、左から順にNo.1、No.2、No.3、No.4と呼びます。 1 番は、まったく異なるアルゴリズム X によって生成された検証コードであり、見た目が非常に醜いです。 3番と4番は、上記対象ウェブサイトの異なる形式の実際の検証コードです。アルゴリズムXで生成されたタイプ1の検証コードを合成データセットとし、タイプ3およびタイプ4に類似した検証コードを実データセットとし、改良された合成検証コードをタイプ2とする。サンプル 2 をよく見ると、サンプル 3 と 4 の多くの特徴がすでに備わっていることがわかります。たとえば、1. 灰色ではなく、より明るくなり、P、K、H 間の色のコントラストがより顕著になっています。2. 干渉線には色付きのブレークポイントがあり、サンプル 3 を非常によくシミュレートしています。3. 文字 P と E には、サンプル 4 と同様のドット マトリックス効果があり、ドット マトリックスのシミュレートは SimGAN の得意分野です。干渉線を歪めるのは難しいでしょう。

SimGAN は確かに効果があるようです。シミュレートされたサンプルをピクセルレベルで実際のサンプルにできるだけ近づけることができます。ただし、変換が「より類似」しても、精度の向上には役立たないようです。 GoogleのCAPTCHAで生成された検証コードを合成データセットとして使用し、対象ウェブサイトの検証コードをトレーニング用の実データセットとして使用します。次に、このようなモデルを使用してCNNのトレーニングセットとテストセットを生成し、対象ウェブサイトの検証コードをテストします。精度率は0.5%未満向上します。前述のアルゴリズムXで生成された検証コードを合成データセットとして使用し、対象ウェブサイトの検証コードをトレーニング用の実データセットとして使用します。そして、このようなモデルを使用してCNNのトレーニングセットとテストセットを生成し、CNNをトレーニングします。Xアルゴリズムを直接使用してトレーニングしたトレーニングセットとテストセットと比較すると、CNNモデルの精度はわずか0.1%向上します。上記のプロセスを言葉で説明するのはすでに非常に複雑です。実際にトレーニングするときは、夕方または週末に行うようにしてください。私はトレーニングに合計 400 ~ 500 時間を費やしました。これほど膨大な時間を費やして、わずかな進歩しか得られないのは価値がありません。長い散歩の後、スタート地点に戻り、CNN トレーニングを強化してみました。要件を引き上げ、精度が 99% ではなく 200% に達したときにのみトレーニングを停止しました (while 1 ループと同様)。たった 1 回のランチタイムで、精度は 2.2% 向上しました。同じ 600 の実験データを比較すると、前回の記事での精度は 97.33% でしたが、今回は上の図に示すように 99.5% に向上しました。検証コードの認識では、正しいパスで一生懸命トレーニングすることが重要です。SimGAN にはそれほど良い効果はありません。

SimGANには独自の得意分野があるはずです。検証コードの強化がうまくいかない場合、画像の強化はうまくいくでしょうか?前述のAppleのAIデビューに関する論文では、目で制御された画像のサンプル強化を行っており、かなりの効果があるようです。私も再現しましたが、効果は非常に良好です。機会があれば皆さんと共有します。


<<:  人工知能 (AI) プロジェクトの失敗: 人材不足に対処する方法

>>:  人工知能業界における「人材獲得競争」をどう打破するか?

ブログ    
ブログ    
ブログ    

推薦する

...

人工知能は多くの仕事を置き換えるでしょう。将来の子供たちの競争力は成績とは全く関係ないかもしれません。

[[379145]]昨日、家で強宝と一緒に『様々な職業』という本を読んでいました。突然思いついて、...

ハイテク大手の新たな戦場:ロボットの時代が始まる

人類の生産性の発展の歴史をみると、肉体労働の時代、機械化の時代、電化の時代、自動化の時代を経て、現在...

TikTok買収事件、主要アルゴリズムが焦点に 英国メディア:買収候補は4つの選択肢を提示

ロイター通信が2日報じたところによると、TikTokの買収候補らは、主要アルゴリズムを伴わない買収を...

8 月の Github のトップ 10 ディープラーニング プロジェクト、あなたはどれを選びますか?

ビッグデータダイジェスト制作編集者: CoolBoyみなさん、こんにちは! 先月のトップ 10 の機...

マイクロソフトのハリー・シャムがGitHub、データの信念、そしてコンピューティングの未来について語る

1 月 20 日、マイクロソフトのグローバル エグゼクティブ バイスプレジデントであるハリー シャム...

フェムテック:女性が期待できること

フェムテックとは、女性の健康に焦点を当てたテクノロジーツールに適用される用語です。この分野には、不妊...

機械学習の理論的基礎はどの程度しっかりしているのでしょうか?

機械学習の分野では、いくつかのモデルが非常に効果的ですが、その理由は完全にはわかっていません。逆に、...

Android Things と TensorFlow を使用して IoT に機械学習を適用する方法

Android Things を Tensorflow と統合する方法と、機械学習を IoT システ...

CPUのみを使用して自律航行船を開発、実際に実現

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

一言で女の子がN着の服を着替えてくれた。Googleが動画生成を新たな高みへ。ネットユーザー「競争が激化」

Google はたった 1 つの動きで、AI ビデオ生成を新たなレベルに引き上げました。文章からビ...

ChatGPT を使ってデータを分析する 6 つの方法

翻訳者 |ブガッティレビュー | Chonglouここ数か月で、リリースされる AI ツールの数は増...

...

機械学習の課題:ブラックボックスモデルはこれら3つの問題に直面している

[[441689]] 01 機械学習の課題2016年3月、ディープラーニングアルゴリズムに基づくAl...

畳み込みニューラルネットワークが分かりませんか?怖がらないでください、このかわいい写真を​​見ればわかりますよ!

この記事では、畳み込みニューラル ネットワーク (CNN) の基本原理を、関連する数学理論を省き、最...