w43322

Kuku's blog desu

Zensoku zenshin... Yousoro!
github
twitter
steam
email
telegram
bilibili
discord server

OpenCVへのコードの貢献経験を記録する:なぜ公式ドキュメントに文法エラーが発生するのか(私のミス)

起因#

年初のインターンシップで、インターネット企業で働いていました。その時、Android アプリで OpenCV の Guided Filter を使用するシーンがありました。ある日、上司がFast Guided Filterを実装して、Guided Filterと比べてどれだけ速くなるか試してみるように言いました。

準備#

短い調査の後、OpenCV には Fast Guided Filter が組み込まれていないことがわかりました。インターネット上には OpenCV 用の Fast Guided Filter を作成した人もいましたが、これらの「プラグイン」は多くのサードパーティのコードを導入する必要があり、私には優雅ではないと思いました。

截屏 2024-09-02 00.56.41

その後、Fast Guided Filter の論文を読んでみると、Guided Filter との違いは、ダウンサンプリングとアップサンプリングのプロセスが追加されているだけであることがわかりました。そして、OpenCV の Guided Filter の実装は Fast Guided Filter よりも早い時期に行われたため、含まれていないのは理解できます。ただし、何年も経ってもなぜ誰も OpenCV にこの機能を提供していないのかは不思議です。

進行#

2024.01 コードの提出#

截屏 2024-09-02 01.00.37

そのため、私は直接 OpenCV の Guided Filter のインターフェースにscaleというパラメータを追加しました。これはリサンプリングの倍数を表しています。すぐにコードを修正し、テストを行った結果、期待通りの結果が得られました。アルゴリズム全体の時間計算量がO(N)O(N)からO(N/s2)O(N/s^2)に減少しました。

その日のうちに、Pull Requestを OpenCV の GitHub リポジトリに送信しました。いくつかのパイプラインを実行してみましたが、すべて合格したので、当然のことながらこの問題を忘れました。

2024.02 レビュー#

截屏 2024-09-02 01.04.51

1 週間後、まだ PR に変化がなかったので、他のいくつかの PR を見てみました。他の人の PR は新しいパイプラインで実行され、私のパイプラインは再実行中にタイムアウトしました。少し嫉妬しました(INFP パーソナリティが発動しました)ので、パイプラインを起動した人にメンションしました。

截屏 2024-09-02 01.05.20

さらに 1 週間後、春節の間に、やっと誰かが私に返信しました。彼はいくつかの簡単な修正意見を提案しましたが、私はすぐに修正しました。主な問題は、テストが非常に難しいことでした。生成された画像が予想通りかどうかを定量化するための簡単な手段がなかなか見つかりませんでした。

截屏 2024-09-02 01.07.48

截屏 2024-09-02 01.08.04

長い考えの後、私は最終的に妥協案を採用しました。ラプラシアンフィルタを適用した画像の分散を評価基準とし、Fast Guided Filter の結果はダウンサンプリングとアップサンプリングを行った結果よりも大きくなるはずです(つまり、Fast Guided Filter は Naive な方法よりも詳細を保持します)。また、Fast Guided Filter の結果は Guided Filter の結果とあまり変わらないはずです(つまり、詳細をあまり失わない)。ここで、パラメータを調整することは、何度も失敗した後に適当に決めた値です... レビュアーが詳しく追求してこなかったのは幸運でした。

2024.05 統合#

截屏 2024-09-02 01.19.56

その後数ヶ月間、返信がなかったので、私はこの問題を忘れました。5 月のある日、この PR が突然統合されました。それで、公式ウェブサイトを見てみたら、最新のドキュメントに誤字があることがわかりました。

截屏 2024-09-02 01.23.55

截屏 2024-09-02 01.27.50

なんてこった、なぜ scale の説明を間違えてto speeds upと書いてしまったのだろう?ああ、最初にspeeds upと書いて、後でto speed upに変更しようとして、完全に変更し忘れたのだ... 本当に血を吐いています。OpenCV のメンテナーはほとんどがロシア人で、おそらくこのような細かい点には気づいていなかったのでしょう。

結果#

したがって、OpenCV には Fast Guided Filter が使えるようになりました。ソースコードのソースコードに適切なコメントを書くだけで、適切なドキュメントが自動生成され、Python の API ドキュメントまで生成されるという OpenCV のドキュメントシステムに感心しています。どのような魔法のツールを使用しているのかはわかりません。

全体的に、この経験は非常に良かったです。唯一の欠点は、PR が統合されるのが遅いことと、最後に自分のミスによって公式ウェブサイトにタイポがあることです。ただし、OpenCV のメンテナーは人手が不足しているように見えるので、これは理解できます。

截屏 2024-09-02 01.32.29

したがって、私は OpenCV のContributorタグを手に入れました!!!

うれしいです~

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。