すべてのために:箱入り製品を開発する際の困難な悪循環を断ち切る方法

ビデオ分析機能を備えたビデオ監視システム用のソフトウェアを作成していますが、これは箱入りの製品です。 同じ形式の箱入り製品は、多くのユーザーがすぐに利用でき、すべてのユーザーがそのまま使用します。

多くの人のためにユニバーサル製品を作るか、特定のユーザー向けに個別に開発するかは問題になりますか? ビデオ分析に関しては、単に基本的に重要です。

理解しましょう


NとMの2つの会社を取ります。N社が「個別の」ソフトウェア製品を開発し、Mがボックス版を開発するようにします。 N社は、特定の場所で使用するために、注文する製品を開発しています。 そして、製品が開発されている条件で機能します。 そして、箱入り製品を製造するM社は、さまざまな条件のさまざまなユーザーにターゲットパラメーター(たとえば、精度のため)を提供するような方法で開発する必要があります。

箱入りビデオ分析ソフトウェア製品には、2つの要素が有効です。

1.適用の最も多様な条件。
2.新しいユーザーがアルゴリズムを調整および調整できないたび。

したがって、開発中に次の2つの条件を満たす必要があります。

1.アルゴリズムは自動モードで動作するはずです。 つまり、何かを「ねじって」特定の場所に設置できる人が参加する必要はありません。
2.条件は非常に異なる場合があります。 また、すべてのパラメーターを使用して、製品は、たとえば正確に目標値を提供する必要があります。

撮影条件とビデオ分析に関して、可能なパラメーターの範囲は非常に広く、これらはシャープネス、コントラスト、彩度、光学ノイズレベル、構造レベル、ノイズの動きの時空間分布、カメラの設置角度、演色パラメーター、背景(シーン)の複雑さなどです。 d。

スマートブックは何を書いていますか?


科学記事を取り上げると、たとえば、移動するオブジェクトを検出するための次のような図を見ることができます。



ご覧ください! それはただ不毛なものです:ここに2つの写真があります-これは動くオブジェクトです。 そして、もちろん、そのような状況では、すべてを完全に設計します。
しかし、これらは非現実的で理想的な条件です。

同じ科学作品のすべてが実例をより現実に近づける場合、それらは次のとおりです。



これは実際のカメラのフレームです。 しかし、条件はまだ非常に良好です。

しかし、実際にはどうですか?


しかし、実際には何に遭遇しますか? 私たちは、このような条件でアルゴリズムが機能するという事実に直面しています。



そしてそのような



そしてそのような



これは、箱入り製品でビデオ分析アルゴリズムを使用する現実です。条件はまったく異なります。 さらに、時間とともに変化する可能性があります。 それにもかかわらず、各アルゴリズムはそのようなすべての条件でうまく機能し、精度の目標を提供する必要があります。

したがって、箱入り製品を開発するときは、特別な非自明なアプローチを探す必要があります。

そして、それだけではありません


特定の開発には別の非常に難しいタスクがあります。
アルゴリズムが開発されると、フレームまたはビデオのサンプルが作成されます。ビデオが準備され、その上で作業が追跡されます。 開発者は、非常に異なる撮影条件とパラメーターを使用して、非常に異なるビデオを準備しようとしています。 しかし、実際には、これらのビデオは入力条件のかなり狭い領域に何らかの形で分類されることがわかりました。



また、サンプルでうまく機能するアルゴリズムがまったく異なる条件で使用される場合、非常に不十分に機能するか、まったく機能しない可能性があります。 開発全体が実行されたため、これらの狭い入力条件に調整しました。
そして、これは世界的な問題です。

しかし、さらに大きな問題は、実際には、この「条件の空間」が上のグラフのように2次元ではないことです。 多次元です。 そして、すべてのパラメーターは広い範囲内で変化します。 そして、箱入り製品を検討しているという事実を考慮すると、そのアルゴリズムは国境を越えて正しく正確に機能するはずです。



したがって、条件とパラメーターの巨大な多次元空間を取得します。 そして、アルゴリズムを開発する際のタスクは、この空間に入力ポイントをほぼ均等に配置し、エリアを見逃さないことです。

どうやってやるの?


普遍的な方法はありません。 ここで推奨できる唯一のことは、実際のオブジェクトから実際のカメラの実際のビデオのサンプルを取りに行くことです。 そして、それらがパラメーターのスペース全体をカバーするようにしてください。
同時に、アルゴリズムは何らかの方法でこれらの入力サンプルクリップの特定の条件に適応します。

このような調整を回避する方法は、異なるビデオセットで基本的に精度をテストおよび測定することです。一部のビデオで開発し、他のビデオでテストします。 テスト中に開発されたアルゴリズムでアルゴリズムが機能しない場合、調整が行われないため、チャンスが増えます。

しかし、それだけではありません:)いくつかで開発し、他でテストし、それがあなたのために機能しないか、十分に機能しないことがわかります。 それがうまくいかない理由を理解し始め、理由を理解し、何かを変えて、テスト動画で良い仕事を提供します。 しかし、この場合、すでに新しい調整が行われています...彼らのために。

この終わりのない一連の調整から抜け出す方法は?


1つの方法-常に新しいビデオでテストします。

これは非常に効果的ですが、非常に面倒です。 私を信じて、入力サンプリングとテストのために実際のオブジェクトからビデオを収集することは非常に困難です(セキュリティビデオシステムについて話しているためを含む)。 また、アルゴリズムのテストは1日に数回行われる場合があるため、非現実的な量のビデオを用意する必要があります。
このアプローチは成功の可能性を高め、調整のリスクを減らしますが、非常にリソースを消費します。

2つの方法-テスト中に動作しない理由を開発者が確認しないようにするため

開発者にアルゴリズムを書かせると、外部の人が新しいビデオでそれをテストし、正確性が達成されたかどうか、何か改善する必要があるかどうかを簡単に伝えます。 これらのビデオの開発者は、修正の調整を除外するために見るべきではありません。

しかし、この場合、開発者はアルゴリズムを変更する必要があります。何かがうまく機能しない理由を理解しないでください...

どちらの方法も現実的ではありません。 何らかの妥協を探す必要があるたびに。 開発をリードする人は、このバランスを正しく維持する必要があります。一方で、調整のリスクを最小限に抑えるために、テストごとに新しいテストビデオのセットを取得するほど人生を複雑にしない方法。 または、テスト中の動画をデベロッパーに見せないで、同時に、何がなぜなぜうまくいかないのかを知らせてください。

そして、これが私たちが開発している現実です。

しかし、それだけではありません


開発には劣化の概念があります。開発者がアルゴリズムの何かを改善すると、同時に何かが悪化します。 これは正常な現象です。 したがって、アルゴリズムの変更は、他のパラメーターに劣化を導入するためのテストに合格する必要があります。

非常に多くの労力が必要です。 手動で実行して多くの時間と労力を費やすことも、プロセスを自動化することもできます。 しかし、これは再び微調整の問題を引き起こします:自動化するとき、あなたはビデオの有限セットのためにすべてを微調整します。 「自動的に」とは、すべてがマークアップされたときです。このビデオには、このような条件とパラメーターがあり、このビデオにはこれがあると言われています。
繰り返しますが、劣化をテストするときはバランスを探す必要があります...

自分ではなく、ユーザーにフレームを駆動するには?


これらはすべて、ある種の悪循環のように見えます。あらゆる条件で高い精度を達成しますが、それに非現実的な時間と労力を費やすか、製品の汎用性を犠牲にして、より速く簡単に開発します。

この状況から抜け出すための簡単な方法は1つあるようです(先を見て、単純な方法ではなく、抜け道がないとしましょう:))。

幅広いパラメーターがある場合、このアルゴリズムが機能する条件をユーザーに明確に定式化することができます。 プログラム、モジュール、またはビデオ分析アルゴリズムは、規定された精度が得られる作業条件を推奨しています。

ただし、このアプローチでは、これを理解する必要があります。

1.特定のパラメーターを提供する必要があることをユーザーに伝えることができますが、実際にはすべてのパラメーターに準拠することは単に不可能です。 そして、箱入りの製品になると、実際の状態で動作するはずです...

2.ただし、主な問題は、ユーザーが推奨されるすべての条件を順守しても、正式化が難しいことが多いことです。

たとえば、コントラストを記述することができます(ただし、画像全体のコントラストは1でも構いませんが、分析している特定の領域では異なります)。 しかし、たとえば背景の複雑さを形式化する方法は? そのような不十分なデジタル化されたものに関して、どのような条件を守らなければならないのかをユーザーに伝える方法は?

「悪魔はそれほどひどくない...」


これらの状況がどれほど複雑で絶望的であろうと、これは私たちや他の企業がこれを成功裏に進め、開発し、実行する現実です。 実際の条件で機能するビデオ分析用の箱入り製品の開発は、数桁から複雑さのプラスになることを理解し、受け入れなければなりません。

複雑で矛盾するタスクを解決する方法に関係なく、ユーザーとユーザーが製品を使用する実際の状況に密接に関連して開発およびテストする必要があります。

Source: https://habr.com/ru/post/J342592/


All Articles