退屈な作業に別れを告げ、ModelArts はワンクリックでナンバープレート番号認識の問題を解決します。

この記事は、Huawei Cloud Community「ModelArtsに基づく車両ナンバープレート番号のターゲット認識」(著者:玉山島)から共有されたものです。

序文

車のナンバー プレートは、車の固有のアイデンティティであり、車の種類、色、位置などの情報を提供することができ、交通管理、安全監視、スマート旅行などの分野で重要な応用価値があります。コンピューター ビジョン テクノロジーの発展に伴い、車両のナンバー プレートの自動検出と認識が人気の研究テーマとなっており、成熟した商用製品やオープンソース プロジェクトが数多く存在します。

車のナンバー プレートの検出と認識の技術原理と応用シナリオに非常に興味があります。実践を通じて画像処理と機械学習の能力を向上させたいと考えています。また、いくつかの実際的な問題を解決するための新しい方法やアイデアを模索したいと考えています。そこで、私は Huawei Cloud の ModelArts プラットフォームを選択し、それが提供するデータ処理、モデルトレーニング、モデル管理、モデル展開などのフルプロセスサポートを利用して、車両ナンバープレートのターゲット検出モデルを実装しました。

このブログでは、データセットの準備、モデルの選択と変更、トレーニングパラメータとその結果、展開方法と効果など、ModelArts プラットフォームを使用したプロセスと経験、および遭遇した問題や問題点を詳しく紹介します。解決。このブログを通じて、興味のある読者と情報を共有し、コミュニケーションをとりたいと考えています。貴重なコメントや提案を歓迎します。

予備作業

まず、Huawei Cloud アカウントのアクティベーションと認証が完了し、ModelArts を使いやすくするためにユーザーのアクセス キーが追加されていることを確認してください。

データセットの準備

CCPD (中国都市駐車場データセット) は、2018 年に中国科学技術大学によってオープンソース化された国内の大規模駐車場ナンバー プレート データセットであり、上記のナンバー プレート データの欠点を補っています。写真は、安徽省合肥市のさまざまな路側駐車場から収集されています。収集者はそれぞれ、担当する路上の天候に関係なく、朝の 7 時 30 分から夕方 22 時まで作業を行います。確認できない撮影場所、撮影角度、照明の撮影、天気の撮影、背景の撮影、街路の撮影など。

このデータの 2020 年の新しいバージョンを github から取得しました

cke_120.png

OBS バケットとオブジェクトの作成

OBS は、データ ストレージ、モデルのバックアップ、スナップショットを目的として ModelArts が提供するオブジェクト ストレージ サービスです。この実験でトレーニング データ セットを作成する前に、OBS バケットを作成し、トレーニング ファイルを保存するフォルダーを OBS バケット内に作成する必要があります。

OBSバケットの作成

サービス リストを入力し、ストレージ サービス項目を見つけて、オブジェクト ストレージ サービス OBS をクリックします。

cke_121.png

OBS管理コンソールにログインし、バケットリストページの右上隅にある「バケットの作成」をクリックしてOBSバケットを作成します。

パラメータを入力します。

「地域」 : 中国北部 - 北京 IV、後続の地域は OBS バケットと一致するように選択する必要があります。 

「バケット名」:「carlic-detect」というバケット名を作成します(名前が同じ場合はサフィックスを追加できます)。 

「データ冗長ストレージ戦略」 : マルチ AZ ストレージ 

「デフォルトのストレージタイプ」 : 標準ストレージ 

その他の値はデフォルト値を使用し、問題がないことを確認したら、右下の「今すぐ作成」をクリックします。

cke_122.png

OBSバケット内のオブジェクトの作成

バケット リスト ページでバケット名をクリックして、バケットの概要ページに移動します。概要ページの左側のナビゲーションで「オブジェクト」をクリックし、「オブジェクト」ページで「新規フォルダー」をクリックして、OBS フォルダーを作成します。ここでは 2 つのフォルダーを作成します。1 つはデータ セットの入力用、もう 1 つはデータ セットの出力用です。

データセット入力フォルダー「carlic-input」

cke_123.png

データセット出力フォルダー「carlic-output」

cke_124.png

ModelArts自動​​学習プロジェクト作成

ModelArts 自動学習バージョンを入力し、物体検出プロジェクトを作成する

cke_125.png

物体検出プロジェクトのデータセットを作成する

この時点で、データ セットがないことが判明したため、データ セットを作成する必要があります。ここで「データセットの作成」をクリックします

cke_126.png

クリックすると、次のインターフェイスが表示されます。パラメータは次のとおりです。

• "データセット名" : carlicense

・「データの種類」:画像

• 「データソース」:OBS

• 「インポートパス」:OBSバケット作成時に作成したcarlic-inputフォルダーを選択します。

• 「データ注釈ステータス」:注釈が付けられていない

• 「データ出力場所」 : 以前に OBS を作成したときに作成した carlic-output フォルダーを選択します。

次に、右下隅にある [送信] をクリックすると、データ セットが正常に作成されます。

cke_127.png

このとき、物体検出プロジェクトの各種パラメータ情報を入力します。

• “名称”:carlicense-detect

• 「データセット」:作成したばかりのデータセット「carlicense」を選択します。

• 「出力パス」:作成したOBSバケット内のデータ出力フォルダー「carlic-output」を選択します。

• 「トレーニング仕様」:期間限定で無料となる仕様を選択します。

次に、右下隅にある「プロジェクトの作成」をクリックします。

cke_128.png

プロジェクトを作成すると、次のインターフェイスが表示されます。

cke_129.png

データのアップロードとアノテーション

このインターフェイスは、インスタンスにラベルを付ける必要があることを示しています。クリックしてインスタンスの詳細を入力します。

cke_130.png

データアップロード

データ セットが空であるため、ページには画像が見つからなかったことが表示されます。この時点で、[データの追加] をクリックします。

cke_131.png

インポート データのパラメーターは次のとおりです。

• 「データソース」:ローカルアップロード(ダウンロードされたデータはすべてローカルであり、OBSにアップロードされないため)

• 「アップロードデータ保存パス」:前に作成したOBSバケット内のデータ入力フォルダー「carlic-input」を選択します

• 「データのラベル付けステータス」 : ラベルなし (データセット内のすべてのデータがラベルなし)

次に、[ファイルのアップロード] をクリックし、ローカル ファイルをフォルダーにアップロードして作成された OBS バケットにデータを入力します。

cke_132.png

[ファイルの追加] をクリックして、ローカル トレーニング データ ファイルをアップロードします。

cke_133.png

アップロードが完了した後、OBS ストレージをクリックすると、この時点での入力フォルダーに使用済みのデータが既に含まれていることがわかります。

cke_134.png

ただし、現時点では強度の詳細にデータ情報がないため、[データ ソースの同期] をクリックして、OBS バケットにアップロードされたすべてのデータをデータ セットに同期する必要があります。

cke_135.png

結果は次のとおりです

cke_136.png

データの注釈

次に、データセット内のデータに注釈を付ける必要があります。

最初に手動アノテーションを実行します

cke_137.png

cke_138.pngcke_139.png

20 を超えるサンプルに注釈を付けた後、ModelArts が提供するツールであるインテリジェント注釈を使用できます。これは、注釈が付けられたサンプルから自動的に学習して、自動注釈を実現することを意味します。

cke_140.png

この時点で、クリックしてスマート注釈を開始します

パラメータの選択は次のとおりです。

• 「インテリジェントなアノテーション タイプ」 : アクティブ ラーニング (システムは、半教師あり学習、難しい例のスクリーニング、およびその他の方法を自動的に使用してインテリジェントなアノテーションを実行し、手動によるアノテーションの量を減らし、ユーザーが難しい例を見つけやすくします)

• 「アルゴリズムの種類」 : 正確

・「計算ノード仕様」:任意のノードを選択できます。

cke_141.png

「送信」をクリックすると、次のインターフェースが表示されます。

cke_142.png

スマートアノテーションが完了したら、スマートアノテーションの情報が正しいかどうかを確認する必要がありますが、スマートアノテーション後に確認する必要があるインターフェースは次のとおりです。

cke_143.png

次に、クリックして特定の確認インターフェイスに入ります

cke_144.png

ズームインすると、このケースのスマート注釈が表示されます

cke_145.png

この写真のナンバー プレートのインテリジェント アノテーションは非常に正確ですが、すべての写真が非常に正確であるというわけではありません。複数の写真のインテリジェント アノテーションを確認した結果、誤ったアノテーションが発生しやすいいくつかの一般的な現象が見つかりました。大きな車のロゴ、車体に貼られたナンバープレートに似た長方形の広告ステッカー、地面に貼られたナンバープレートによく似た長方形の数字など。

cke_146.png

大きすぎる車のロゴ

cke_147.png

車体に貼られた小さな長方形の広告-

cke_148.png

地面にある長方形のナンバープレートはナンバープレートとよく似ています

手動による確認と修正の後、最終的なラベル付きデータセットが取得されます。

cke_149.png

次に、アノテーション データのクイック レビューを実行し、[クイック レビュー] をクリックすると、次のインターフェイスが表示されます。明らかに車のロゴではないアノテーション情報がいくつかあることがわかりました。

cke_150.png

いずれかをクリックすると、次の画像の注釈が表示されます

cke_151.png

これは、注釈を確認するプロセスでエラーが発生したことを意味します。その後、これらの誤った注釈を変更または削除するだけで済みます。

ワークフローに入る

データに正常にラベルを付けたら、ワークフロー フローに入って作業を開始できます。

1 つ目はデータセットのバージョンのリリースです

cke_152.png

続いてデータ検証です

cke_153.png

同時に、バックグラウンドで作業記録を表示し、ワークフローの進行状況を追跡することができます。

cke_154.png

次にモデルのトレーニングです

cke_155.png

cke_156.png

モデルのトレーニング

次は機種登録作業です

cke_157.png

モデルの展開

最後に、モデルのデプロイ作業

モデルのデプロイメントのパラメーターは次のように選択されます。

• 「AI アプリケーション ソース」 : 私の AI アプリケーション

• 「リソースプール」 : パブリックリソースプール

• 「自動的に停止するかどうか」 : はい、1 時間後に運転を停止することを選択します。

他のパラメータはデフォルトのままにしておきます

cke_158.png

展開プロセス中に、いくつかの基本情報を表示し、展開イベントを追跡できます。

cke_159.png

デプロイが成功すると、正常にデプロイされた AI アプリケーションを表示できます。デプロイされた AI アプリケーションの情報は次のとおりです。

cke_160.png

同時に、AI アプリケーションのステータスが実行中になった後、車両のナンバー プレートのターゲット認識の練習を開始できます。

cke_161.png

結果の検出

ターゲット検出用のAIアプリに画像をアップロードすると、結果は以下のようになります

cke_162.png

おおよその検出位置は正しいことがわかりましたが、精度が高くなかったので、ナンバー プレートを検出する写真を数回アップロードしました。

cke_163.png

cke_164.png

cke_165.png

cke_166.png

まず、このモデルの検出結果は概ね正しいものの、精度が十分ではなく、モデルの精度が十分に高くなく、さらなる改善が必要であることを示しています。

この問題が発生する理由としては、次のような理由が考えられます。

1. データセットの問題

2. データ処理アルゴリズムの設計と実装の問題

3. アルゴリズムの設計と実装の問題

4. スーパーパラメータ設定問題

5. 環境問題

……

その後の実験では、モデルがさらに最適化され、新しいモデル バージョンとアプリケーション バージョンが開始されます。

リソースの解放

これで演習は完了です。次に、申請されたさまざまなリソースをリリースする必要があります。

作成したオンラインサービスを削除する

cke_167.png

作成した自動学習プロジェクトを削除する

cke_168.png

サービスの保存に使用される OBS バケット内のオブジェクトを削除します

cke_169.png

リソースの解放はここで終了し、この実践は完了です。

実践のまとめ

この記事では、ファーウェイのクラウド技術ModelArtsを活用して車両ナンバープレートの対象認識を実現する実践と、オンラインサービスの導入プロセスを紹介します。最初にナンバープレートターゲット検出の背景と意義を紹介し、次に ModelArts の特徴と利点、データセット管理、モデルのトレーニング、評価、展開に ModelArts を使用する方法を紹介しました。私は CCPD データセットを使用しました。これは、約 300,000 枚の中国のナンバー プレートの画像を含むデータセットであり、画像の複雑さに応じて 8 つのカテゴリに分類されています。ターゲット検出モデルとして YOLOv5 を使用しました。これは、PyTorch に基づいた軽量で効率的なターゲット検出フレームワークです。ModelArts でモデルをトレーニングおよび評価し、高い精度と再現率を実現しました。また、ModelArts のオンライン サービス機能を使用してモデルを呼び出し可能な API として展開し、ナンバー プレートのリアルタイム検出を実現する方法も示しました。

今回の実習を通じて、モデルアーツの威力と利便性を深く実感しました。ModelArts は、データセット管理、モデルのトレーニング、評価、展開のプロセス全体を統一インターフェイス上で完了できる、ワンストップのエンドツーエンドの機械学習プラットフォームを提供します。ModelArts は、豊富なプリセット アルゴリズムとモデル、高性能コンピューティング リソースとストレージ スペースも提供しており、モデルを迅速に構築して実行できるため、時間とコストを節約できます。ModelArts のオンライン サービス機能を使用すると、モデルを使用可能なサービスに簡単に変換でき、ナンバー プレート ターゲット検出のアプリケーション シナリオを実現できます。ModelArts は、機械学習の愛好家や開発者にとって非常に適したプラットフォームであり、機械学習のイノベーションと価値をさらに実現するのに役立ちます。

クリックしてフォローし、できるだけ早くHuawei Cloudの新しいテクノロジーについて学びましょう~

Alibaba Cloudが深刻な障害に見舞われ、全製品に影響(復旧済み) ロシアのオペレーティングシステム「Aurora OS 5.0」、新UIが Tumblrで公開 多くのインターネット企業がHongmengプログラマーを緊急採用 .NET 8が正式にGA、最新版LTS版 UNIX時間 17億時代に突入しようとしている(すでに突入) XiaomiはXiaomi Velaが完全にオープンソースであり、基盤となるカーネルは NuttX Linux上の.NET 8であることを公式に発表しました。独立したサイズは50%削減されます。FFmpeg 6.1」ヘビサイド」リリース Microsoft、新たな「Windowsアプリ」を発売
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4526289/blog/10143526