過去10年間、世界から疎外された人だけがコンピュータービジョンの開発に注意を払っていません。 パターン認識テクノロジーは、ディープラーニングにその栄誉を負っています。 車の成果は素晴らしいです。
- 2012年には、画像分類競争が行われ、ディープニューラルネットワークが2位からの大差で勝ちます。
- 3年後、マシンは 1000クラスの写真を人間よりも高い精度で分類します。
- 手書き文字と道路標識の認識は、人々の精度を上回っていました。
- 自動運転車の目-LIDAR、レーダー、カメラは、環境、路面標示、車両、車、歩行者の性別や年齢を認識することができます。
- Google DeepMindとOxford Universityによって訓練されたネットワークによる読唇の正確さは、人間以上のものです。
- 年齢と性別の認識-精度は人間を上回りました。
- マシンビジョンテクノロジーの最も発展している分野の1つは、安全性を確保するためのこのテクノロジーの需要が高まっているため、生体認証に重点を置いた顔認識です。 いくつかの国では、屋外ビデオ監視システムで顔認識技術を使用しています。 彼らのおかげで、犯罪者さえ捕まった。
これは、コンピュータビジョンアルゴリズムの氷山の一角にすぎません。 芸術、医学、ゲーム、キティジェネレーターなどの印象的な生成モデルの成果は、言及されずに残されました。 猫のおかげで、脳の視覚皮質を作成した自然からの畳み込みニューラルネットワークのアイデアを借りることができたという情報源もあります。
未来の世界の一部としてのコンピュータービジョン
パターン認識を必要とするタスクを自動化する技術は、政府やハイテク企業のサービスで需要があります。 彼らは助けを必要とする人々-農民と環境保護主義者-の問題の解決を助けます。 MicrosoftのSeeing AIアプリは、視覚障害者の世界を説明しています。 そして、若い開発者は、農家の親のために野菜の選別を行い、作業を容易にしました。
私たちは長い間、技術の発展を追ってきました。 機械学習の可能性は、一般の人々の日常的なタスクを解決するために、当社の製品で有望な技術のアプリケーションを探すように促します。 2016年、漁師のためのソーシャルネットワークに取り組みながら、私たちは愛する趣味をより便利にするだけでなく、より面白くするために最善を尽くすことにしました。
問題の目的と説明
現代の漁業コミュニティは、2000年代初頭に構築されたフォーラムにまだ住んでいます。 釣りに最適な場所、漁具、漁獲物の写真に関する話を含むトピックが最も活発です。 人々は、フォーラムに投稿することで、スマートフォンでキャプチャした魚を共有します。 腕を組んでいる兄弟(この場合は釣り竿)が獲物について話し合い、より大きなカワカマスを捕まえた互いに競い合います。 私たちは、このような暖かい競争の雰囲気を壊したくありませんでした。 それどころか、少なくともこの面では、釣りをよりアクティブに、より便利に、もう少しモダンにするために。
今日、世界中の約5億人が釣りを好みます。 最大のコミュニティの1つの代表者は、釣りのために長い間スマートフォンを持ち歩いてきましたが、誰もがFacebookの時代遅れのフォーラムやグループに座っています。 驚くべきことに、漁師向けの現代的なリソースやアプリケーションはほとんどありません。 私たちは、この厄介な省略をテクノロジーによって修正したかったのです。
作成したアプリケーションは、漁師が魚の種類と長さを決定するだけでなく、トロフィーを名誉委員会に残すのにも役立ちます。 すべての漁師は自分のコレクションで獲物を見たいと思っています。 キャプチャをスキャンすることにより、アプリケーションはそれをプロファイルに追加し、ユーザーが友人とキャッチを自慢できるようにします。 おそらく、この活動を趣味以上のことと考えているほとんどの漁師は、競争的な興奮の感覚を持っています。 特に彼らのために、評価を追加することも決めました。 キャッチの多いユーザーがランキングのトップになり、残りのインセンティブになります。 「そんな魚を捕まえた」などの話は真剣に受け止められません。 アプリケーションは、漁師が誰を捕まえたか、どれくらいの期間かを知ることができます。
写真をフォーラムにアップロードし、魚の種類とサイズを決定することで人が気を散らされることはなくなります-機械学習がすべてを行います。 あなたの好きな娯楽を楽しむためだけに残っています-魚に。
魚を捕まえるためのネットワークを学ぶ
強力なビデオカードに加えて、魚の長さと種類を認識するようにネットワークを教えるために、次のものが必要でした。
- データを収集します。
- 魚のマークされた美しい写真のきれいなセットに処理します。
- 適切なアーキテクチャを選択します。
- 学習と検証。
- エラーを修正して再試行してください。
データ収集
魚や箱の種類がその位置でマークされたオープンデータセットは実質的にありません。 ImageNetおよび個々の研究所でデータを見つけることができますが、画像のボリューム、品質、およびレイアウトには、多くの要望があります。
漁獲物の最初の100枚の写真を最初に見るだけで、世界中の漁師が高品質の写真ではなく、魚を自撮りするのを好むことを理解できます。
釣りの写真や動画には必要なデータが含まれていますが、いくつかの重大な欠点があります。
- 低品質〜40%のデータセット:
- 魚は写真のごく一部を占めているか、遠くから撮影された非常にぼやけています。
- 漁師の手は魚の大部分を覆っています。
- 魚は部分的に見えており、フレームに収まらず、画像内でトリミングまたはオーバーラップしています。
- フレームは分類できません:
写真にはいくつかのタイプがあり、画像ごとに1つのクラスを定義します。
漁師はよく似た種を混同し、データを「汚染」しています。
ディープネットワークは、ボリュームを要求し、品質を要求しません。 しかし、生の釣りの写真は不適切です。
私たちの方法論により、データ収集とデータクリーニングといういくつかの問題を一度に解決することができました。 それは、品質、モデル、データの一貫した向上で構成されています。
1つの種の再訓練を避けるために、いくつかの異なる種の魚の境界を手動でマークします。 たとえば、ヒラメ、カワカマス、コイです。 数日間の作業で数千枚の写真が作成されます。
検出するアーキテクチャを選択します 。 大量のデータを処理するための高速で正確な。 R-FCNは適切と思われました。
最初に検出するために、魚と非魚(バックグラウンド)を区別するようにネットワークをトレーニングします。 漁師のメディア資料を推測するためのウェブインターフェースを作成します。 Webインターフェースにビデオへのリンクを挿入できます。これは、検出モデルを介してフレームごとに駆動されます。 魚を含むすべてのフレームが画面に表示され、重複やエラーが削除されます...
この管理パネルを使用すると、ターゲットビューのデータを収集し、ネットワークで処理し、次の目的で使用する人によって検証できます。
- 検出モデルの再トレーニング。 新しいタイプで成功した作業の例を選択して、より多くのタイプに移行し、モデルの精度と品質を向上させます。
- 写真から魚で断片を切り取る-出口で、良いフレームのフィルターに高い信頼度のしきい値を設定すると、1つの魚で大きく高品質のフレームが得られます。 分類モデルのトレーニングに必要なもの! この方法で処理された高品質の画像は、約60%です。
分類トレーニング
認識可能な種の数を増やすつもりであるため、ImageNetで1000クラスを予測するネットワークの中から分類アーキテクチャを選択しました。 サイズと精度の最適な比率として、Inception-ResNet-2が選択されました。
トレーニングには、TensorFlow、EVGA GeForce GTX 1080 Ti、およびEVGA GeForce GTX 1080を使用しました。
モデルの完全なトレーニングは、ImageNetモデルの完全に接続されたレイヤーのトレーニングよりも高い精度をもたらしました。 最も可能性が高いのは、ネットワークがスケールパターンなどの低レベルパターンを学習したためです。 トレーニングには2枚のビデオカードで80時間以上かかりました。
最初の結果は素晴らしかったです!
誰もがニューロンをアニメーション化された抽象化のレベルまで仕上げたという事実を賞賛したが、一部はネットワークが再学習されたという疑いに苦しめられた。
しかし、無駄なことに、カメラは中央で典型的なケリーを捕らえ、その後すべてが整然としています。
結果のソリューションは、同様のビューで大きなエラーに悩まされました。 画像は伝説的な理想とチャブを描写し、熱心な漁師だけが区別できます。
状況はトラウトでさらに悪化します。
12種類以上の人気のあるマスとサーモンは、素人を混乱させるだけでなく、生涯にわたって信じられないほど変化に富んでいます。 幼虫段階から産卵まで、年齢、季節、さらには水の組成に応じて、彼らは色と形を根本的に変えます。 すべての人が数年の間隔で1つのマスの同じ種を認識するわけではありません。 ギンザケやチヌックサーモンなどの種は、説明によってさえ人にとって区別が困難です。 人為的ミスのため、データは混同されており、各クラスについて、モデルは80%以上の精度のために少なくとも1000枚の写真を必要とし、数十のビューがそのようなボリュームをリソース集中的に手動で表示します。
私たちの解決策は、モデル自体を使用してマークアップエラーからデータセットを繰り返しクリアすることでした。 独自のデータセットでモデルを実行すると、モデルの予測とマークアップが一致しないすべての写真が見つかります。 これらの写真のほとんどは、後者のエラーであることが判明しました。 それらを除外し、モデルを再トレーニングして、検証データセットで高いメトリックを取得します。 その結果、類似種であっても90 +%以上のモデル精度を得ることができました。 このネットワークは、8種類の類似のトラウトとサーモン、および1ダース以上のとまり木をほぼ正確に区別できます。 ただし、まれに、ネットワークがまだ誤っていることがあります。 理由は明確に示す方が良いです:
漁獲量を測定する
キャッチを再評価することは、タンパク質ニューラルネットワークの非常に重要な機能です。 正確な測定を行うには、写真に写っている魚の境界を把握し、デュアルカメラを備えた新しいスマートフォンのように距離計を使用する必要があります。
私たちの目標は、電話を向けるだけで、漁師に正確な漁獲量を自動的に提供することです。 アプリケーションは、フレーム内の魚がいつ分類およびローカライズされるかを判断できる必要があります。 魚の長さは、いくつかの異なる基準に従って測定する必要があります。 Inception-ResNet-2を備えたFaster RCNNアーキテクチャは、対応するものよりも優れているため、R-FCNから分類を転送します。
同様のデータの結果は、それ自体を物語っています。
それにもかかわらず、この測定方法は私たちには適していません。なぜなら、ボックスは水平位置と垂直位置についてのみ長さと幅を正しく決定し、任意の位置には適さず、湾曲した魚の長さを推定できないためです。
漁獲量をより正確に測定する
数千枚の写真にキーポイントを付けて、さまざまな基準に従ってすべての測定方法をカバーしています。
キーポイントで回帰のモデルをトレーニングしています。これにより、長さの測定精度が向上し、電話に適合できるようになります。 検出結果をデバイスに転送すると、魚のいるトリミング済みの領域を分類に送信できます。これにより、信頼性が向上し、サーバーの負荷が軽減されます。 電話は魚を検出したときにのみリクエストを送信します。 残念ながら、ポイント回帰モデルでは魚と非魚を区別できないため、デバイスにそのようなバイナリ分類子のモデルが必要です。
キーポイントによる回帰では、ImageNetで事前にトレーニングされたResNet50アーキテクチャから「頭」を取り、14個の変数の回帰に2つの完全に接続されたレイヤー(すべてのポイントの座標)を追加します。 損失関数MAE。 モデル重量〜メガバイト。
拡張:水平/垂直反転、明るさ、ランダムクロップ(十分に入力)、スケール。 ポイントのすべての座標は[-1、1]に正規化されました
バイナリ分類子を作成するには、AlexNetに似た独自のモデルを作成します。 私たちは魚と非魚で訓練します。
ここではすべてが標準です:バイナリクロスエントロピー、増強、精度メトリック(サンプルはバランスが取れています)
将来的には、認識可能な種の数を増やし、人体モデルの精度を超えて、モデルをデバイスに完全に転送する予定です。 私たちの目標は、漁師のための普遍的なツールを作成するだけでなく、すべてのコミュニティを単一のプロジェクトに統合することです。