コンピューター ビジョンを使用した無人航空機の検出
アブストラクト
テクノロジーの革新により、セキュリティは対処すべき最大の問題になりつつあります。指数関数的に増加するドローンのアクセス可能性は、一般的なセキュリティに大きな脅威をもたらしています.ここ数年、UAV の使用が増加しています。ここでセキュリティの問題を念頭に置いて、解決策を提案します。まず、UAV を検出し、その経路を追跡します。
オブジェクト検出には、コンピューター ビジョンのディープ ラーニング アルゴリズムが非常に効果的です。入力は、リアルタイムの物体検出と追跡に使用されるニューラル ネットワークである YOLO によって処理されます。
2.1 UAV の概念を理解する
「コンピューター ビジョンを使用した UAV の検出と追跡」というタイトルの通り、UAV (無人航空機) パイロットのいない航空機で、リモートまたはオンボードコンピューターで制御できます。
UAV は、農業、科学研究、天気予報、輸送と配達、救助活動、医療などの有益な目的に使用できます。攻撃、ミサイル攻撃、標的殺害などの災害目的に使用できます。
2.2 コンピュータ ビジョンとは
コンピューター ビジョン 人間の視覚と同じようにコンピューターに画像を認識させ、識別させ、処理させ、適切な出力を提供させる科学の分野です。コンピュータ ビジョンは、ほぼすべての分野で使用されています。例:
<ウル>
オブジェクト、顔検出
ロボット手術と医療診断
画像処理
農業
宇宙技術 (NASA の火星探査機には、惑星の地形をモデル化し、進路上の障害物を検出し、パノラマ画像をつなぎ合わせる機能が含まれています) コンピュータ ビジョンのアプリケーションを図 1.4 に示します。
2.3 画像処理技術とは
画像処理 技術は、さまざまなタスクを実行するためにコンピューター ビジョンによって使用されます。画像の品質を改善するため、または画像スタックとして取得された後に特定の結果を得るために実行される操作および適用される方法は、画像処理と呼ばれます。
画像処理は、今日の情報技術で最も急速に進化している分野の 1 つであると考えられており、ビジネスのあらゆる分野で応用が拡大しています。画像処理の用途:
画像処理のユースケース
画像処理は次の分野で使用できます:
<ウル>
ロボット工学
医療
パターン認識
ビデオ処理
顔検出
2.4 ソフトウェア要件
<ウル>
アナコンダ
スパイダー
パイソン
Open-CV ライブラリ
3.オブジェクト検出のアルゴリズム
オブジェクト検出には多くのアルゴリズムが存在します。それらのいくつかは次のとおりです:
<ウル>
出来上がりとジョーンズ
畳み込みニューラル ネットワーク (CNN)
You Only Look Once (YOLO)
単発検出器 (SSD)
領域畳み込みニューラル ネットワーク (R-CNN)
表 3.1:検出アルゴリズム
アルゴリズム | 説明 | 強さ | 弱点 |
VOILA AND JONES (ヴィオラ・ジョーンズ
アルゴリズムは 2001 年に Paul Viola と Michael Jones によって設計されました) | 主な目的は、顔と物体の検出でした。リアルタイムでオブジェクトを検出できます。
画像を与えると、アルゴリズムはより小さな部分領域を調べ、各部分領域の特別な特徴を見てオブジェクトを見つけようとします。
Viola and Jones アルゴリズムは、Haar のような機能を使用してオブジェクトを検出します | <オール> 堅牢
非常に高い検出率。
画像の異なる部分を見るたびに異なる分類器を使用する
速い
エッジとラインの検出が得意
| <オール> 傾いた顔や向きを変えた顔を検出できません。
照明条件に敏感です
動く物体を検出できません
|
1980 年に福島邦彦によって導入された CNN (畳み込みニューラル ネットワーク) | 真の検出、認識、セグメンテーションを実行するようにトレーニングできる、生物学に着想を得た階層モデル。
これは基本的に深層学習アルゴリズムであり、画像を入力として受け取り、画像内に存在するオブジェクトに学習可能な重みとバイアスを割り当て、一方と他方を区別します | <オール> トレーニングによって特徴を決定します (したがって自由度が高くなります)。
画像全体を見る単一の分類を使用します。
行列演算を適用します。
正確。
| <オール> 大規模なデータセットが必要です
高い。
|
YOLO(一度だけ見る) | リアルタイム検出アルゴリズムです。画像にニューラル ネットワーク アルゴリズムを適用し、画像を S x S グリッドに分割して画像の周囲に境界を作成し、境界ごとに可能性を予測する回帰を使用します。 | <オール> 同じ画像内の複数のオブジェクトを検出できます。
リアルタイム実行
超高速
高性能
バックグラウンド エラーなし
| 1.グリッド セルごとに 1 つのオブジェクトを検出します。
2. 精度よりも高いパフォーマンスを優先する。 |
SSD (シングル ショット検出器) | この メソッドは、複数のオブジェクトを検出するために 1 回のショットしか実行しません。このメソッドは非常に高速です。リアルタイム実装用に設計されています。 2 つのコンポーネント バックボーンと SSD ヘッドが含まれています。 | <オール> 計算時間の増加
高精度
正確性のトレードオフは中程度
| <オール> 大きなサイズのオブジェクトではうまく機能しますが、小さなサイズのオブジェクトでは少し落ちます
エンドツーエンドの検出が遅すぎる。
計算コストが高い。
|
表>
ここでは、Yolo ニューラル ネットワーク アルゴリズムが使用されます。このアルゴリズムは、リアルタイムの実装では非常に高速です。ニューラル ネットワーク アルゴリズムを使用し、画像を S x S グリッドに分割し、画像の周囲に境界を作成して、各境界の可能性を予測します。検出のアルゴリズムを表 4.4 に示します。
3.1 追跡のアルゴリズム
オブジェクトを検出した後、次の焦点は軌道に乗っています。検出されたオブジェクトが凧または鳥である場合、追跡の必要はありませんが、検出されたオブジェクトがドローンである場合、ターゲットは追跡されます。
物体追跡には多くのアルゴリズムが使用されています。しかし、このアルゴリズムは高速かつ正確であり、ターゲットがカメラの範囲外に移動するまで検出して追跡できるため、追跡には YOLO が使用されます。
4. 提案された設計の実装
提案された設計の実装は次のとおりです。ソフトウェアでプロジェクトを実行するために必要なすべての手順が実行されます。
4.1 初期段階
<オール> 画像処理には適切な CPU/GPU が必要です。CPU を選択してください。 Web サイトから anaconda をインストールする Anaconda のインストールを図 4.1 に示します。
Anaconda Navigator のインストール後、環境ダイアログ ボックスを使用して環境を作成し、python バージョンを選択します。
環境を正常に作成したら、次のステップは使いやすい Spyder をインストールすることです。次に、コマンド pip install cv2 を使用してオープン CV をインストールします。
4.2 データセットを準備中
<オール> ドローン、鳥、飛行機、ヘリコプター、凧、気球など、さまざまな空中物体の画像を多数収集します。
注: データ セットを作成することは、画像を収集するだけではありません。画像の名前を付け、各画像内のこれらの特定のオブジェクトの位置も伝えます。そのために、Labelmg というソフトウェアを使用できます を使用して、画像をテキスト ファイルに変換します。図 4.6 に示すように
<オール> すべてのオブジェクトの Txt ファイルが作成されたら。すべての画像とテキスト ファイルを zip ファイルに入れます。また、含まれるクラスの名前ファイル。
4.3 YOLO 構成
構成については、次の手順に従います。
<オール> YOLO v3 でダークネットをインストールします。
YOLO を構成するには、以前に作成したデータセットのすべての画像と .txt ファイルを含むフォルダーを darknet/data に作成します。
カスタム構成ファイルを作成するには、クラスとステップに関してバッチ、サブディビジョン、および最大バッチを調整して、cfg の YOLO v3 で必要な変更を行います。
クラス数を入力するときは、YOLO の上の畳み込み層を変更します。また、random を 1 に設定します。cfg パラメータを表 4.1 に示します
表 4.1:CFG パラメータ
名前 | 説明 |
バッチ | フォワード パスで勾配を計算し、バックプロパゲーション法によって重みを更新するために使用される画像とラベルの数。 |
サブディビジョン | バッチは多くの「ブロック」に分割されます。ブロックの画像は並行して実行されます。 |
歩数 | 500,1000:500 および 1000 バッチの後に学習率を調整します。 |
レイヤー (フィルター) | 層にある畳み込みカーネルの数 |
レイヤー (ランダム) | YOLO レイヤーを入れます。 1 に設定すると、オブジェクトのサイズを一般化するために使用される、いくつかのバッチごとに異なるサイズに画像のサイズを変更することにより、データの拡張が行われます。 |
表> <オール> data/obj.names を介してカスタム オブジェクト フォルダーを作成します。このフォルダーには、ドローン、UAV、鳥、凧など、検出したいすべての名前が書き込まれます。
obj.data には、class の数、train.txt、valid、names、weights フォルダが含まれて保存されます。
train.txt には、すべてのデータと画像の名前が保存されます。
4.4 データセットでの YOLO のトレーニング
カスタマイズされたデータ セットに対する YOLO のトレーニングも、ダークネットを通じて行われます。クローンを作成してダークネットを有効にし、オープン CV を有効にします。上記で作成した ZIP フォルダー、.cfg ファイル、.names ファイル、obj.data ファイル、train.txt ファイルを使用して、YOLO v3 のトレーニング用にダークネット ネットワークを構成し、実行をカウントします。
CPUパワーに基づいて約2時間かかるかもしれない数千回の反復の後、トレーニングされたデータセットを使用してシステムと統合し、平均損失を伝える準備が整います.
4.5 画像およびビデオ入力でのコードのテスト
カスタマイズされたデータセットの YOLO をトレーニングした後、YOLO 重みと呼ばれるトレーニング済みデータ セットでコードのテストを開始します。この場合、4 つのクラスがあります。
別の YOLO 検出を試してください。大きなウェイトは精度の点では優れていますが、1 秒あたりのフレーム数が少ないため、処理が少し遅くなります。 UAV、鳥のビデオを作成し、このデータをコードへの入力として与えます。すべてのオブジェクトは、fps としきい値が指定されたラベルで正常に検出および追跡されます。
これで、Web カメラのリアルタイム入力を使用して、コードをリアルタイム シナリオでテストできます。カメラの範囲を変更し、結果を記録して UAV を飛行させました。必要に応じて出力が表示されます。「UAV の検出と追跡」。