f2-nerfに位置微分を追加した
先週時点ではGridEncoderについての違う実装から位置に関する微分周りを移植してこようとしていたが、速度も精度も低下してしまったので、結局f2-nerfにもともとあったautogradの関数に位置に関する勾配計算も追加した。
学習には使っていないので精度はもちろん低下せず、速度低下は学習時間が8分が9分になるくらいで許容範囲内だった。
ただ、推論時のPose微分による自己位置最適化は、思ったほど完全に最適化されるという感じではなく、10FPSで回そうとするとそこまで良いものではなさそうだった。いったんやるところまでやれたのでNeRFに対するモチベーション自体が落ちてきた。
Autoware.universeにまともなプルリクエストを通した
ARタグベースの自己位置推定。今までもちょっとしたリファクタリングみたいなものは通していたけど、まともな機能追加はこれが初めて。4月に入社して、4ヶ月かかった。長々と研修(という名の自由研究)やるとは思っていなかったので、ちょっと意外ではある。OSS開発だとやっていることが表に出るので、それはまぁ良いことなのかな。
Dynalang
最近読んだ論文の中ではかなり惹かれる感触がある。現状出揃っているニューラルネットワーク系の技術で、僕の考える知能っぽさを持っていそうなのはこういう方針だと感じる。
系譜としては基本的にDreamerV3から来ているようなので、PlaNetのRSSMからVQ-VAEあたりを辿っていけば良さそう。まずは基本のVAEの実装あたりからC++で始めている。LibTorchの挙動に慣れていないところがあるのでバグを埋め込みまくっている。ここをもっと自在に使えるようになりたい。
余談だけどChatGPT4がわりと頭悪くなっている気がする。体感として1,2ヶ月前と比べた場合に、このあたりのコードに対するバグチェックみたいな質問に対して、全然まともな回答が来なくなった。LibTorchのポインタ的な構造体が多くて罠が生まれがちとか、連携時にメモリ配置でOpenCVとの兼ね合いでバグりがちとか、そのあたりサクッと答えてもらえると便利なんだけどなぁ。