海外FXガイド

株の基礎知識

株の基礎知識
  • 改めてクロップした画像を見ていたところ、写ってる範囲が違う画像ペアだとクロップしても無駄な領域があることに気付きました
  • 例えば↓みたいな画像ペアの場合、左の画像は右の画像よりも写っている範囲が広いので、建物部分だけをクロップしても無駄な領域が残ります

どんなコンペ?

ざっくり言うと、同じ建物を撮影した2枚の画像が与えられたときに、それぞれの画像を撮影したカメラの相対位置関係(F行列)の推定精度を競うコンペでした。
F行列を求める方法はいくつかありますが、基本的には2つの画像のマッチング点(同じ物体がそれぞれの画像に映る点)を求めて、RANSACで外れ値を除去して妥当なF行列を計算するという流れになります。外れ値の除去やF行列の計算はOpenCVの cv2.findFundamentalMat で行うことができるので、いかに上手くマッチング点を求めるかというところがこのコンペでは重要な部分になっていました。
もっと詳しいコンペの解説は@fam_taroさんが公開してくださっているQiitaの記事がとても分かりやすいので、興味がある方はぜひそちらの記事を見ることをオススメします。

1stソリューションの要点

  1. 通常画像でマッチング
  2. 得られたマッチング点をクラスタリングして2枚の画像の共通部分をクロップ
  3. クロップした画像同士で再マッチング
  4. 1で得られた通常画像のマッチング点と3で得られたクロップ画像のマッチング点を連結してF行列を計算
  • 共通部分のクロップ(mkpt crop)
  • 複数モデル(LoFTR、SuperGlue、DKM)のアンサンブル
  • 入力解像度を複数使用

コンペ参戦記

  • 前置きが長くなりましたが、ここからがこの記事を書いた目的になります
  • 最終的なソリューションはすでに紹介した通りですが、コンペ中にどんなことを考えて試行錯誤していたか紹介できればと思います

1. コンペ参加〜基礎知識の勉強(4/25〜4/27)

    株の基礎知識
  • 4月末まで参加してたコンペが終わって、次のコンペを漁っている時にたまたま見つけました
    • 画像マッチングは未知の領域でしたが、たまたま興味が湧いていたのと、言っても画像分野なのである程度戦えるだろうと思い、勉強の一環として参加することにしました
    • 特にこちらのQiita記事がとても分かりやすく、F行列のイメージをつかむことができました。

    2. CV検証環境の準備〜初サブミット(4/28〜5/5)

    • 原因は参考にしていたノートブックに足りない処理(リサイズした画像同士で求めたマッチング点をリスケールせずにF行列計算していた)があったことでした
    • 当時はすぐに気づけず色んな実験を繰り返してディスカッションに投げてました
    • その時のやり取りはここで見れるので、興味のある方はご覧ください
    • ここでだいぶ時間を使ってしまいましたが、マッチング結果を確認する簡易UIとか、その後の検証でも使えるコードを整備できたので、このタイミングで色々実験していたのは結果的に良かったと思います
    • あまり期待していませんでいたが、当時の銀圏スコアが出て喜んでました
    • ここで運よく良いスコアが出たので本腰を入れて取り組み始めました

    3. 仮説を立てる(5/6〜5/7)

    仮説1: スコアが低い画像はマッチングの誤対応が多い → (結果△)

    • スコアが低い画像ペアには何かしら共通点があるだろうという見込みから簡単な仮説を立てました
    • スコアごとに画像ペアを集めてマッチング点を一つずつ目視で確認して検証をしました
    • 結果は微妙で、たしかに誤対応もありましたが割合はそれほど多くなかったです(ただ、この発見は後々のアイデアに活きてきて優勝のキーになりました)
    • 実際のマッチング結果を見てもスコアの良し悪しと結果の差が自分には分からなかったので、スコアが低いペアから共通点を見出すのは一旦諦めました

    仮説2: 誤対応点を削除すればスコアが上がる → (結果○)株の基礎知識

    • 仮説1の検証の結果、スコアの大小に関わらず誤対応をしているケースは見受けられたので、手動で誤対応点を削除してスコアをいくつか出してみました
    • 結果は例外はあるものの基本的には不要なマッチング点を削除するとスコアが上がる傾向を示しました

    4. 仮説に基づいて改善案を検討〜高速化(5/8〜5/15)

    改善案1: スコアが低いマッチング点を足切り → (結果×)

      株の基礎知識
    • 当時使用していたマッチングモデル(LoFTR)は各マッチング点の信頼度も出力していたのですが、外れ値は信頼度が低いと仮定して、信頼度の低い点を削除してみました
    • 結果は全然ダメでスコアが下がりました
      • そのあとの検証で分かりましたが、信頼度と外れ値かどうかにはあまり相関が無かったので、LoFTRの信頼度をベースに改善をするのは悪手だったと思います

      改善案2: NMSでマッチング点を間引き → (結果×)

      • まだ信頼度の検証をする前で、再び信頼度ベースの改善を試してました
      • 改善案1と同じ理由で上手くいかなかったです

      改善案3: セグメンテーションでクロップ → (結果○)

      • 改めてマッチング結果を確認してみて、誤対応している多くは空や道路、人など本来一致しないはずの領域にマッチングしているパターンが多いことに気付きました
        • セグメンテーションして不要な領域をあらかじめ除外すれば誤対応を抑制できるのではと考えます
        • 全体的にかなり適当な実装をしていたので、一旦ここで最適化することにしました
        • ボトルネックになってそうなところを片っ端から潰していったら約3倍くらい高速になりました
        • ちなみにこの段階でRANSACのパラメータも精度がなるべく変わらずに高速になるよう調整したのですが、その後の検証も高速に回せるようになったので早めに調整して良かったと感じてます
        • ただ、最初からスコアアップしたわけではなく、いくつか調整が必要でした
        • 最初は不要な領域にマスクをかけた画像でマッチングをしてみたのですが、これだと大幅にスコアが下がっていました。おそらく、マスクをかけた時にオブジェクトのエッジ部分の情報を欠落させてしまったためだと思われます。
        • そこで不要領域をマスクした画像ではなく、建物部分だけをクロップした画像でマッチングする方式に切り替えてスコアアップを実現しました
        • ちなみに最終ソリューションでも採用しているオリジナル画像のマッチング結果もアンサンブルするというアイデアはこの時点で思い付きました
          • 小さかったり複雑な形状をしているオブジェクトは上手くセグメンテーションできないことは学習データに対する結果で分かっていました
          • セグメンテーション自体の性能向上をすることも考えましたが、少し試してみて一筋縄ではいかなそうなこと、そもそもコンペの本質から外れる気がしたのでこの方針は早々に止めました
          • オリジナル画像のマッチング点を加えると誤対応点が増えるので仮説の方針と反するとも思いましたが、クロップ画像のマッチング点のおかげで正常対応点の割合が増えるので多少の誤対応は RANSACが弾いてくれるのでは?と思い、オリジナル画像のマッチング点を加えることを試してみました
          • 結果、だいぶスコアが良くなったのでオリジナル画像を組み合わせる方針を採用していました

          5. アンサンブル導入〜金圏突入(5/16〜5/19)

          • セグメンテーションクロップの調整がひと段落して手持ちのアイデアが無くなったので、ディスカッションで紹介されていたIMC2021の上位者が公開している論文を読み漁ってました
          • その中で紹介されていたLoFTRのマッチングにSuperPointを組み込む工夫が気になって実装にチャレンジしました
            • が、上手く実装できずLoFTRにSuperPointを組み込むのは早々に諦めます
            • ただ、実装に挑戦してる中でSuperPoint+SuperGlueの公開ノートブックを読み込んでいたので、せっかくなのでモデルをアンサンブルしてみることにしました
            • このアンサンブルがかなり効果を発揮して当時のギリギリ金圏スコアを出せました(0.816くらい)
            • 下手に金圏に入ったことで「順位を落としたくない」という心理が働いてパラメータ調整に執心していましたが、今思い返すとこれは悪手だったかなと思います
            • 基本的にパラメータ調整で可能な上げ幅はたかが知れてるので、最上位と越えられない壁を感じたら自分が気づいていない何かがあるはずなので、それを探すことに注力した方が建設的だったかなと思います

            6. 新たな改善案検討〜金圏復帰(5/20〜5/26)

            パラメータ調整に必死になっていると、案の定銀圏に落ちました。
            「最後に上位にいることが大事」と自分に言い聞かせて、新たな改善案の検討に着手します。
            改めてマッチング結果や今までの実験結果を振り返って、2つの課題を洗い出しました。

            課題1: クロップしても無駄な領域が多い

            • 改めてクロップした画像を見ていたところ、写ってる範囲が違う画像ペアだとクロップしても無駄な領域があることに気付きました
            • 例えば↓みたいな画像ペアの場合、左の画像は右の画像よりも写っている範囲が広いので、建物部分だけをクロップしても無駄な領域が残ります

            失敗事例から学ぶ自社株対策の基礎知識|オンラインセミナー|アタックスグループ

            たとえば次のような誤った対策選びをすることがないよう、様々な対策のリスクや留意点を確認していきます。
            ・自社において、「何が問題なのか」「何が問題となり得るのか」は把握せずに、対策の検討を始めてしまっている
            ・金融機関やコンサル会社からの提案、セミナーで聞いてきた手法が自社の問題解決に相応しいのかを検討せずに、その手法で対策を進めてしまっている
            ・自社株の評価額が高いので株価を引き下げるためだけの対策を進めてしまっている
            ・その対策を実行することによって新たな問題が発生することはないのか、という視点での検討をせずに、対策を進めてしまっている
            ・デメリットや留意事項を検討せずに、事業承継税制「納税猶予制度」による自社株の承継を進めてしまっている

            村井 克行

            アタックスグループ パートナー
            アタックス税理士法人 代表社員 税理士
            講師:村井 克行

            アタックスグループ パートナー
            アタックス税理士法人 代表社員 税理士
            講師:村井 克行
            株の基礎知識

            1987年 南山大学卒。「会計税務の知の集結と事例の体系化」を確立すべく立ち上げた「ナレッジセンター室長」を務めた後、現在は、組織再編や相続対策など、最新の税法・会社法の知識を生かした永続企業のための総合的な支援業務に従事。 その実務家としての誠実で緻密な仕事ぶりは、多くのクライアントやオーナー経営者から、高い評価を得ている。また、講演、執筆の依頼も多く、専門的な用語を、平易な言葉で分かりやすく解説することにおいても定評がある。
            講師詳細 »

            セミナー内容

            (1) 新聞報道より (2) 金融機関等の提案より

            (1) 相続税・贈与税の基本的な仕組み (2) 株主の権利 (3) 税務上の自社株評価 (4) 自社株の承継方法

            (1) 事例1 (2) 事例2 (3) 事例3

            お申し込み要領

            ◆受講に必ず必要なもの
            1.パソコン(一人一台)
            2.スピーカー
            3.ネット環境

            ※ウェビナー形式ではカメラ・マイクは使用しません。
            ※周りを気にせずに受講ができ、音もクリアに聴こえるヘッドセットやイヤホンのご利用を推奨します。
            ※1人1台のPC、スマホ、タブレットでご受講ください。

            ◆Zoomの接続テスト
            事前に接続確認や音声テストを行いたい場合は、こちらよりテストを実施してください。
            ※スマホからの接続の場合は、アプリのダウンロードが必要です。

            ◆通信環境の推奨
            有線LANまたはWiFi接続を推奨します。
            インターネット通信速度20Mbps~30Mbpsが維持できる安定した環境でご受講ください。
            以下よりご自身の通信環境をご確認いただくことが可能です。事前に受講場所で測定ください。
            インターネット回線の速度テスト

            ◆開催2営業日前
            開催の2営業日前を目途に、受講者様宛てにZoom使用方法及び注意事項のご案内をメールでお送りいたします。 また、セミナーによってはテキストも一緒にメールでお送りいたします。

            ◆開催前日
            開催の1営業日前に、参加URLとパスワードをメールでお送りいたします。
            参加URLをお申込みいただいている受講者以外へ共有・流用する行為は固くお断りしております。お申込みのない方の入室が発見された場合は、ご退出いただきますので、メールの取り扱いについては、十分にご留意くださいますようお願いいたします。

            最低催行人数 5名
            ※天災、人災、動乱、通信障害または講師の急な疾病等不測の事情により休講または中断する場合があります。予めご承知おきくださいますようお願い致します。
            ※本セミナーは一般企業向けのため、弊社と同業・類似業の方のお申込みはお受けできませんのでご了承ください。 株の基礎知識
            ※営業・セールスを目的としたご参加はご遠慮ください。営業活動または営利を目的とする行為(宣伝、勧誘、販売等)を一切禁止します。


            お問い合わせ先 アタックス・ビジネス・セミナー事務局
            TEL 052-586-8829

            セミナー受講料

            メルマガ会員 2,200円(税込) 一般 5,500円(税込)

            受講料について 【オンライン講座のキャンセルについて】
            オンライン講座につきましては、受講料が発生する場合において、 株の基礎知識
            キャンセル受付期限(開催の3営業日前の17時まで)以降の
            お客様都合によるキャンセル・ご連絡のない当日欠席は、受講料の全額を申し受けます。
            ご了承ください。

            どんなコンペ?

            ざっくり言うと、同じ建物を撮影した2枚の画像が与えられたときに、それぞれの画像を撮影したカメラの相対位置関係(F行列)の推定精度を競うコンペでした。
            F行列を求める方法はいくつかありますが、基本的には2つの画像のマッチング点(同じ物体がそれぞれの画像に映る点)を求めて、RANSACで外れ値を除去して妥当なF行列を計算するという流れになります。外れ値の除去やF行列の計算はOpenCVの cv2.findFundamentalMat で行うことができるので、いかに上手くマッチング点を求めるかというところがこのコンペでは重要な部分になっていました。
            もっと詳しいコンペの解説は@fam_taroさんが公開してくださっているQiitaの記事がとても分かりやすいので、興味がある方はぜひそちらの記事を見ることをオススメします。 株の基礎知識

            1stソリューションの要点

            1. 通常画像でマッチング
            2. 得られたマッチング点をクラスタリングして2枚の画像の共通部分をクロップ
            3. クロップした画像同士で再マッチング
            4. 1で得られた通常画像のマッチング点と3で得られたクロップ画像のマッチング点を連結してF行列を計算
            • 共通部分のクロップ(mkpt crop)
            • 複数モデル(LoFTR、SuperGlue、DKM)のアンサンブル
            • 入力解像度を複数使用

            コンペ参戦記

            • 前置きが長くなりましたが、ここからがこの記事を書いた目的になります
            • 最終的なソリューションはすでに紹介した通りですが、コンペ中にどんなことを考えて試行錯誤していたか紹介できればと思います

            1. コンペ参加〜基礎知識の勉強(4/25〜4/27)

            • 4月末まで参加してたコンペが終わって、次のコンペを漁っている時にたまたま見つけました
              • 画像マッチングは未知の領域でしたが、たまたま興味が湧いていたのと、言っても画像分野なのである程度戦えるだろうと思い、勉強の一環として参加することにしました
              • 特にこちらのQiita記事がとても分かりやすく、F行列のイメージをつかむことができました。

              2. CV検証環境の準備〜初サブミット(4/28〜5/5)

              • 原因は参考にしていたノートブックに足りない処理(リサイズした画像同士で求めたマッチング点をリスケールせずにF行列計算していた)があったことでした
              • 当時はすぐに気づけず色んな実験を繰り返してディスカッションに投げてました
              • その時のやり取りはここで見れるので、興味のある方はご覧ください
              • ここでだいぶ時間を使ってしまいましたが、マッチング結果を確認する簡易UIとか、その後の検証でも使えるコードを整備できたので、このタイミングで色々実験していたのは結果的に良かったと思います
              • あまり期待していませんでいたが、当時の銀圏スコアが出て喜んでました
              • ここで運よく良いスコアが出たので本腰を入れて取り組み始めました

              3. 仮説を立てる(5/6〜5/7)

              仮説1: スコアが低い画像はマッチングの誤対応が多い → (結果△)

              • スコアが低い画像ペアには何かしら共通点があるだろうという見込みから簡単な仮説を立てました
              • スコアごとに画像ペアを集めてマッチング点を一つずつ目視で確認して検証をしました
              • 結果は微妙で、たしかに誤対応もありましたが割合はそれほど多くなかったです(ただ、この発見は後々のアイデアに活きてきて優勝のキーになりました)
              • 実際のマッチング結果を見てもスコアの良し悪しと結果の差が自分には分からなかったので、スコアが低いペアから共通点を見出すのは一旦諦めました

              仮説2: 誤対応点を削除すればスコアが上がる → (結果○)

              • 仮説1の検証の結果、スコアの大小に関わらず誤対応をしているケースは見受けられたので、手動で誤対応点を削除してスコアをいくつか出してみました
              • 結果は例外はあるものの基本的には不要なマッチング点を削除するとスコアが上がる傾向を示しました

              4. 仮説に基づいて改善案を検討〜高速化(5/8〜5/15)

              改善案1: スコアが低いマッチング点を足切り → (結果×)

              • 当時使用していたマッチングモデル(LoFTR)は各マッチング点の信頼度も出力していたのですが、外れ値は信頼度が低いと仮定して、信頼度の低い点を削除してみました
              • 結果は全然ダメでスコアが下がりました
                • そのあとの検証で分かりましたが、信頼度と外れ値かどうかにはあまり相関が無かったので、LoFTRの信頼度をベースに改善をするのは悪手だったと思います

                改善案2: NMSでマッチング点を間引き → (結果×)

                • まだ信頼度の検証をする前で、再び信頼度ベースの改善を試してました
                • 改善案1と同じ理由で上手くいかなかったです

                改善案3: セグメンテーションでクロップ → (結果○)

                  株の基礎知識
                • 改めてマッチング結果を確認してみて、誤対応している多くは空や道路、人など本来一致しないはずの領域にマッチングしているパターンが多いことに気付きました
                  • セグメンテーションして不要な領域をあらかじめ除外すれば誤対応を抑制できるのではと考えます
                  • 全体的にかなり適当な実装をしていたので、一旦ここで最適化することにしました
                  • ボトルネックになってそうなところを片っ端から潰していったら約3倍くらい高速になりました
                  • ちなみにこの段階でRANSACのパラメータも精度がなるべく変わらずに高速になるよう調整したのですが、その後の検証も高速に回せるようになったので早めに調整して良かったと感じてます
                  • ただ、最初からスコアアップしたわけではなく、いくつか調整が必要でした
                  • 最初は不要な領域にマスクをかけた画像でマッチングをしてみたのですが、これだと大幅にスコアが下がっていました。おそらく、マスクをかけた時にオブジェクトのエッジ部分の情報を欠落させてしまったためだと思われます。
                  • そこで不要領域をマスクした画像ではなく、建物部分だけをクロップした画像でマッチングする方式に切り替えてスコアアップを実現しました
                  • ちなみに最終ソリューションでも採用しているオリジナル画像のマッチング結果もアンサンブルするというアイデアはこの時点で思い付きました
                    • 小さかったり複雑な形状をしているオブジェクトは上手くセグメンテーションできないことは学習データに対する結果で分かっていました
                    • セグメンテーション自体の性能向上をすることも考えましたが、少し試してみて一筋縄ではいかなそうなこと、そもそもコンペの本質から外れる気がしたのでこの方針は早々に止めました
                    • オリジナル画像のマッチング点を加えると誤対応点が増えるので仮説の方針と反するとも思いましたが、クロップ画像のマッチング点のおかげで正常対応点の割合が増えるので多少の誤対応は RANSACが弾いてくれるのでは?と思い、オリジナル画像のマッチング点を加えることを試してみました
                    • 結果、だいぶスコアが良くなったのでオリジナル画像を組み合わせる方針を採用していました

                    5. アンサンブル導入〜金圏突入(5/16〜5/19)

                    • セグメンテーションクロップの調整がひと段落して手持ちのアイデアが無くなったので、ディスカッションで紹介されていたIMC2021の上位者が公開している論文を読み漁ってました
                    • その中で紹介されていたLoFTRのマッチングにSuperPointを組み込む工夫が気になって実装にチャレンジしました
                      • が、上手く実装できずLoFTRにSuperPointを組み込むのは早々に諦めます
                      • ただ、実装に挑戦してる中でSuperPoint+SuperGlueの公開ノートブックを読み込んでいたので、せっかくなのでモデルをアンサンブルしてみることにしました
                      • このアンサンブルがかなり効果を発揮して当時のギリギリ金圏スコアを出せました(0.816くらい)
                      • 下手に金圏に入ったことで「順位を落としたくない」という心理が働いてパラメータ調整に執心していましたが、今思い返すとこれは悪手だったかなと思います
                      • 基本的にパラメータ調整で可能な上げ幅はたかが知れてるので、最上位と越えられない壁を感じたら自分が気づいていない何かがあるはずなので、それを探すことに注力した方が建設的だったかなと思います

                      6. 新たな改善案検討〜金圏復帰(5/20〜5/26)

                      パラメータ調整に必死になっていると、案の定銀圏に落ちました。
                      「最後に上位にいることが大事」と自分に言い聞かせて、新たな改善案の検討に着手します。
                      改めてマッチング結果や今までの実験結果を振り返って、2つの課題を洗い出しました。

                      課題1: クロップしても無駄な領域が多い

                      • 改めてクロップした画像を見ていたところ、写ってる範囲が違う画像ペアだとクロップしても無駄な領域があることに気付きました
                      • 例えば↓みたいな画像ペアの場合、左の画像は右の画像よりも写っている範囲が広いので、建物部分だけをクロップしても無駄な領域が残ります 株の基礎知識

                      どんなコンペ?

                      ざっくり言うと、同じ建物を撮影した2枚の画像が与えられたときに、それぞれの画像を撮影したカメラの相対位置関係(F行列)の推定精度を競うコンペでした。
                      F行列を求める方法はいくつかありますが、基本的には2つの画像のマッチング点(同じ物体がそれぞれの画像に映る点)を求めて、RANSACで外れ値を除去して妥当なF行列を計算するという流れになります。外れ値の除去やF行列の計算はOpenCVの cv2.findFundamentalMat で行うことができるので、いかに上手くマッチング点を求めるかというところがこのコンペでは重要な部分になっていました。
                      もっと詳しいコンペの解説は@fam_taroさんが公開してくださっているQiitaの記事がとても分かりやすいので、興味がある方はぜひそちらの記事を見ることをオススメします。

                      1stソリューションの要点

                      1. 通常画像でマッチング
                      2. 得られたマッチング点をクラスタリングして2枚の画像の共通部分をクロップ
                      3. クロップした画像同士で再マッチング
                      4. 1で得られた通常画像のマッチング点と3で得られたクロップ画像のマッチング点を連結してF行列を計算
                      • 共通部分のクロップ(mkpt crop)
                      • 複数モデル(LoFTR、SuperGlue、DKM)のアンサンブル
                      • 入力解像度を複数使用

                      コンペ参戦記

                      • 前置きが長くなりましたが、ここからがこの記事を書いた目的になります
                      • 最終的なソリューションはすでに紹介した通りですが、コンペ中にどんなことを考えて試行錯誤していたか紹介できればと思います

                      1. コンペ参加〜基礎知識の勉強(4/25〜4/27)

                      • 4月末まで参加してたコンペが終わって、次のコンペを漁っている時にたまたま見つけました
                        • 画像マッチングは未知の領域でしたが、たまたま興味が湧いていたのと、言っても画像分野なのである程度戦えるだろうと思い、勉強の一環として参加することにしました
                        • 特にこちらのQiita記事がとても分かりやすく、F行列のイメージをつかむことができました。

                        2. CV検証環境の準備〜初サブミット(4/28〜5/5)

                        • 原因は参考にしていたノートブックに足りない処理(リサイズした画像同士で求めたマッチング点をリスケールせずにF行列計算していた)があったことでした
                        • 当時はすぐに気づけず色んな実験を繰り返してディスカッションに投げてました
                        • その時のやり取りはここで見れるので、興味のある方はご覧ください
                        • ここでだいぶ時間を使ってしまいましたが、マッチング結果を確認する簡易UIとか、その後の検証でも使えるコードを整備できたので、このタイミングで色々実験していたのは結果的に良かったと思います
                        • あまり期待していませんでいたが、当時の銀圏スコアが出て喜んでました
                        • ここで運よく良いスコアが出たので本腰を入れて取り組み始めました

                        3. 仮説を立てる(5/6〜5/7)

                        仮説1: スコアが低い画像はマッチングの誤対応が多い → (結果△)

                        • スコアが低い画像ペアには何かしら共通点があるだろうという見込みから簡単な仮説を立てました
                        • スコアごとに画像ペアを集めてマッチング点を一つずつ目視で確認して検証をしました
                        • 結果は微妙で、たしかに誤対応もありましたが割合はそれほど多くなかったです(ただ、この発見は後々のアイデアに活きてきて優勝のキーになりました)
                        • 実際のマッチング結果を見てもスコアの良し悪しと結果の差が自分には分からなかったので、スコアが低いペアから共通点を見出すのは一旦諦めました

                        仮説2: 株の基礎知識 誤対応点を削除すればスコアが上がる → (結果○)

                        • 仮説1の検証の結果、スコアの大小に関わらず誤対応をしているケースは見受けられたので、手動で誤対応点を削除してスコアをいくつか出してみました
                        • 結果は例外はあるものの基本的には不要なマッチング点を削除するとスコアが上がる傾向を示しました

                        4. 仮説に基づいて改善案を検討〜高速化(5/8〜5/15)

                        改善案1: スコアが低いマッチング点を足切り → (結果×)

                        • 当時使用していたマッチングモデル(LoFTR)は各マッチング点の信頼度も出力していたのですが、外れ値は信頼度が低いと仮定して、信頼度の低い点を削除してみました
                        • 結果は全然ダメでスコアが下がりました
                          • そのあとの検証で分かりましたが、信頼度と外れ値かどうかにはあまり相関が無かったので、LoFTRの信頼度をベースに改善をするのは悪手だったと思います

                          改善案2: NMSでマッチング点を間引き → (結果×)

                          • まだ信頼度の検証をする前で、再び信頼度ベースの改善を試してました
                          • 株の基礎知識
                          • 改善案1と同じ理由で上手くいかなかったです

                          改善案3: セグメンテーションでクロップ → (結果○)

                          • 改めてマッチング結果を確認してみて、誤対応している多くは空や道路、人など本来一致しないはずの領域にマッチングしているパターンが多いことに気付きました
                            • セグメンテーションして不要な領域をあらかじめ除外すれば誤対応を抑制できるのではと考えます
                            • 全体的にかなり適当な実装をしていたので、一旦ここで最適化することにしました
                            • ボトルネックになってそうなところを片っ端から潰していったら約3倍くらい高速になりました
                            • ちなみにこの段階でRANSACのパラメータも精度がなるべく変わらずに高速になるよう調整したのですが、その後の検証も高速に回せるようになったので早めに調整して良かったと感じてます
                            • ただ、最初からスコアアップしたわけではなく、いくつか調整が必要でした
                            • 最初は不要な領域にマスクをかけた画像でマッチングをしてみたのですが、これだと大幅にスコアが下がっていました。おそらく、マスクをかけた時にオブジェクトのエッジ部分の情報を欠落させてしまったためだと思われます。
                            • そこで不要領域をマスクした画像ではなく、建物部分だけをクロップした画像でマッチングする方式に切り替えてスコアアップを実現しました
                            • ちなみに最終ソリューションでも採用しているオリジナル画像のマッチング結果もアンサンブルするというアイデアはこの時点で思い付きました
                              • 小さかったり複雑な形状をしているオブジェクトは上手くセグメンテーションできないことは学習データに対する結果で分かっていました
                              • セグメンテーション自体の性能向上をすることも考えましたが、少し試してみて一筋縄ではいかなそうなこと、そもそもコンペの本質から外れる気がしたのでこの方針は早々に止めました
                              • オリジナル画像のマッチング点を加えると誤対応点が増えるので仮説の方針と反するとも思いましたが、クロップ画像のマッチング点のおかげで正常対応点の割合が増えるので多少の誤対応は RANSACが弾いてくれるのでは?と思い、オリジナル画像のマッチング点を加えることを試してみました
                              • 結果、だいぶスコアが良くなったのでオリジナル画像を組み合わせる方針を採用していました

                              5. アンサンブル導入〜金圏突入(5/16〜5/19)

                              • セグメンテーションクロップの調整がひと段落して手持ちのアイデアが無くなったので、ディスカッションで紹介されていたIMC2021の上位者が公開している論文を読み漁ってました
                              • その中で紹介されていたLoFTRのマッチングにSuperPointを組み込む工夫が気になって実装にチャレンジしました
                                • が、上手く実装できずLoFTRにSuperPointを組み込むのは早々に諦めます
                                • ただ、実装に挑戦してる中でSuperPoint+SuperGlueの公開ノートブックを読み込んでいたので、せっかくなのでモデルをアンサンブルしてみることにしました
                                • このアンサンブルがかなり効果を発揮して当時のギリギリ金圏スコアを出せました(0.816くらい)
                                • 下手に金圏に入ったことで「順位を落としたくない」という心理が働いてパラメータ調整に執心していましたが、今思い返すとこれは悪手だったかなと思います
                                • 基本的にパラメータ調整で可能な上げ幅はたかが知れてるので、最上位と越えられない壁を感じたら自分が気づいていない何かがあるはずなので、それを探すことに注力した方が建設的だったかなと思います

                                6. 新たな改善案検討〜金圏復帰(5/20〜5/26)

                                パラメータ調整に必死になっていると、案の定銀圏に落ちました。
                                「最後に上位にいることが大事」と自分に言い聞かせて、新たな改善案の検討に着手します。
                                改めてマッチング結果や今までの実験結果を振り返って、2つの課題を洗い出しました。

                                課題1: クロップしても無駄な領域が多い

                                • 改めてクロップした画像を見ていたところ、写ってる範囲が違う画像ペアだとクロップしても無駄な領域があることに気付きました
                                • 例えば↓みたいな画像ペアの場合、左の画像は右の画像よりも写っている範囲が広いので、建物部分だけをクロップしても無駄な領域が残ります

                                動画解説「変異株の現状と最新状況の調べ方の基礎知識」(34分、2021年6月4日)

                                ★変異株に関する船橋市保健所での検査能力と、国立感染研・千葉県衛生研究所との協力体制に関して(朝倉解説)
                                新型コロナウイルスは様々な変異を繰り返しています。特に感染・伝播性の増加が危惧され、世界的に増加してるのが、イギリス型、南アフリカ型、ブラジル型です。3つの型とも、ウイルスがヒトの細胞に付着し侵入するための突起タンパク(Sタンパク、spike protein))のヒト細胞の受容体と結合する部位RBD(受容体結合部位、receptor binding domein)の変異などで感染・伝播性が増しています。3型ともスパイクタンパク質を構成する501番目のアミノ酸がN(アスパラギン)からY(チロシン)に変異するN501Y変異を持っています。南アフリカ型、ブラジル型はこれに加えて484番目のアミノ酸がE(グルタミン酸)からK(リシン)に変わるE484K変異を持ちます(イギリス型はもたない)。
                                まとめると イギリス型 N501Y変異 南アフリカ型 N501Y変異+E484K変異 ブラジル型 N501Y変異+E484K変異
                                (他にも変異箇所がありますが、最も代表的な2か所のみを取り上げての説明です)

                                したがって、N501Y変異がわかれば、3型のどれかであることまではわかります。PCR装置での検出の試薬を変えることでN501Y変異を検出する方法を国立感染研が開発していました。3月時点では船橋市保健所では採用されていませんでしたが、3月議会で私が強く質疑・要求し、4月12日から船橋市保健所での検査が実施され、本日(4月21日)累積13人の陽性者が報告されたものです。

                                更に3型のどれかを特定するためには、Sタンパクを指定するウイルスのRNAの塩基配列を解析しなければなりません。その機器(次世代シークセンサー・塩基配列解読装置)は船橋市保健所にはなく、陽性と確定された検体は、国立感染研か千葉県衛生研究所に送られ分析し確定されます。
                                しかしながら、3型のいずれかであることを(国立感染研か千葉県衛生研究所にある次世代シークエンサーでの分析の前に)、船橋市保健所で、迅速に把握・発表することは対策を早めることに有効です。
                                なお、衛生、感染防御の対処法は、これまでと同様(マスク着用、密を避ける、手洗いうがい、会食(前後)にマスクをはずした会話を避ける)です。
                                (また、ワクチンの効果が変異株に関してどうなるのかは現在様々検証がなされていますので、結論的なことは言えませんが、「まったく効果がなくなる」ということまではないと見られています)

                                【参考】船橋市保健所での検査にいたった経緯は1~3、変異株の詳しい解説4

                                1、2月24日朝倉幹晴質疑録画中継(変異株質疑は7分50秒~20分20秒、12分30秒)
                                2、3月18日、予算決算委員会で松戸市長に重ねて要請・市長答弁録画中継(1:27:00~1:32:25の5分25秒)
                                3、船橋市、変異株に関する検査スタート】(3月25日保健所理事から報告←2月24日・3月18日市議会質疑で強く要請)
                                4、動画「イギリス・南アフリカで発生したウイルス変異型の基礎知識」(37分)(2021年1月10日20時時点)

                                関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる