ブリッジサマリーを認識するために必要なニューロンの数は?

私がサンクトペテルブルクのデカブリストの島に住むようになったとき、物語は始まりました。 橋が照らされた夜、この島はヴァシリエフスキーとともに本土から完全に隔離されます。 さらに、ブリッジはしばしばスケジュールよりも早く、時には公開されたスケジュールよりも1時間早くなりますが、これに関する運用情報はどこにもありません。







橋への2回目の「遅延」の後、私は橋の初期の編集に関する情報源について考えました。 思いついたオプションの1つは、公開Webカメラからの情報でした。 MIPT とYandexの MLに特化したこのデータと残留知識を武器に、私は問題を「正面から」解決しようとすることにしました。







0、宮殿

まず、カメラ



サンクトペテルブルクのウェブカメラはあまり多くないので、ブリッジに向けた2台のライブカメラのみを見つけることができました。vpiter.comロシア国立医科大学からです。 数年前にSkylinkのカメラがありましたが、現在は利用できません。 一方、vpiter.comだけでPalace Bridgeの情報が役立つ場合もあります。 そして、それは私が予想したよりも有用であることが判明しました-仲間の救急隊員は、橋に関する運用情報のために彼の救急隊が、1週間で2人のピーターズバーグ人と1人のスウェーデン人の「プラス」を救ったと言いました。







より多くのカメラが落ちて、ビデオストリームストリームを厄介なflv形式で提供する機能がありますが、完成したキューブを使用してこれを行うのは非常に簡単です。 文字通り、ビデオストリームからのシェルスクリプトの2行で、5秒ごとに分類される一連のフレームを取得します。







while true; do curl --connect-timeout $t --speed-limit $x --speed-time $y http://url/to | \ ffmpeg -loglevel warning -r 10 -i /dev/stdin -vsync 1 -r 0.2 -f image2 $(date +%s).%06d.jpeg done
      
      





確かに、今のところ分類はありません。 最初に、マークアップされたデータをソーセージマシンに配置する必要があります。そのため、スクリプトを1週間夜間に動作させ、オプションでマントラ#VPiterPitに従い、画像がロードされていることを確認します。







 x = io.imread(fname)
      
      





1、フレーム







第二に-画像処理



何らかの方法で、私の手と写真を半分にフォルダに分割する方法をばらばらにした後、私はマークされた選択を得ました。 Andrew Eun は、彼のコースで、 「画像内のオブジェクトAとオブジェクトBを区別できる場合、ニューラルネットワークにチャンスがある」という優れたヒューリスティックを提案しました。 この経験則をUnの単純なテストと呼びます。







まず、画像をトリミングして、跳ね橋部分のみが表示されるようにするのが妥当と思われます。 テレビ塔は美しいですが、実用的ではありません。 少なくとも画像処理に関係するコードの最初の行を書きましょう:







 lambda x: x[40:360, 110:630]
      
      





2、ブリッジ







私の耳から、本当の専門家はOpenCVを使い、機能を抽出し、まともな品質を得ると聞きました。 しかし、OpenCVのドキュメントを読み始めたとき、私は悲しく感じました。「数晩でプロトタイプを作成する」という設定された制限でOpenCVに追い付かないことにすぐに気付きました。 しかし、featureによると、skimageライブラリにはjpegの読み取りに使用されるものもありました。 希釈ブリッジと縮小ブリッジの違いは何ですか? 空に対して輪郭。 さて、 skimage.feature.canny



を使用して、 オペレーター skimage.feature.canny



どのように機能するかについてのプロトタイプの後にノートブックで読むタスクを書き留めましょう。







 lambdax x: feature.canny(color.rgb2gray(x[40:360, 110:630]))
      
      





3、キャニー







日陰の水の上を移動するトロリーバスはかなりきれいに見えます。 おそらくこの美しさを見逃しているので、 mkot彼がサンクトペテルブルクから引っ越したこと後悔しているが 、この写真はウナの素朴なテストにひどく合格していない-それは視覚的にうるさく見える。 関数の最初の引数を超えてドキュメントを読む必要があります。 境界線が多すぎる場合、提案されたガウスフィルターを使用して画像を塗りつぶすことができるのは論理的なようです。 デフォルト値は1



、増やしてみてください。







 lambdax x: feature.canny(color.rgb2gray(x[40:360, 110:630]), sigma=2)
      
      





4、シグマ







これは、単純な鉛筆を使ったストロークよりもデータに似ています。 しかし、別の問題があります。この画像には166400ピクセルがあり、1晩に数千個のフレームが取得されます。 ノートパソコンのディスク容量は無限ではありません。 確かに、これらのバイナリピクセルをそのまま使用すると、分類器は単純に再学習します。 「額」方式を再度適用します-20回圧縮します。







 lambda x: transform.downscale_local_mean(feature.canny(color.rgb2gray(x[40:360, 110:630]), sigma=2), (20, 20))
      
      





5、機能







橋のように見えますが、画像は16x26、416ピクセルになりました。 このような多数の機能上に数千のフレームを配置することは、クロスバリデーションを研究および実施するのにそれほど怖いものではありません。 ここで、ニューラルネットワークのトポロジを選択するとよいでしょう。 かつて私たちにマットの講義をしてくれたセルゲイ・ミハイロヴィチ・ドブロヴォルスキー。 分析では、1つのニューロンで米国大統領選挙の結果を予測するのに十分であると冗談を言いました。 ブリッジはそれほど複雑な構造ではないようです。 ロジスティック回帰モデルを訓練しようとしました。 予想通り、ブリッジは選挙よりもそれほど複雑ではなく、モデルはあらゆる種類の異なるメトリックで2つまたは3つの9でかなりまともな品質を提供します 。 このような結果は疑わしいように見えますが(確かに、データの多重共線性ではすべてが悪いです)。 良い副作用は、モデルがクラス自体ではなく、クラスの確率を予測することです。 これにより、パレスブリッジの配線プロセスがロボットの「ニューロン」に対してどのように見えるかをリアルタイムで面白いグラフで描くことができます。







6、配線







この設計プッシュ通知と、分類器が失敗した場合に目でブリッジを見ることを可能にするいくつかのインターフェースに留まることは残っています。 最初は、@ SpbBridgeチャネルに通知を送信するTelegramボットを使用して行うのが最も簡単であることが判明しました。 2番目-松葉杖、ブートストラップ、jqueryからライブWebマズルを作成します。







なぜこれをすべて書いたのですか?



各問題には単純で理解しやすい間違った解決策がありますが、それでも実用的である可能性があることを思い出したかったのです。







それでも、このテキストを書いている間、雨がvpiter.tvサーバーでパレスブリッジを見たカメラをネヴァに流し去ったようです。







7、ノーモアカム







フォールトトレランスという名のなかで跳ね橋を見るWebカメラを共有したい場合、私は喜んでいます。 突然、たとえば、あなたはサンクトペテルブルク州立大学「GMC」で働いています。







PS:そして、これはニューロンの数がわずかに多いバージョンですが、より自動の特徴抽出です。








All Articles