Kaggleに挑戦-3
課題:Pytorchで書かれたプログラム「6D-VNet」の理解とKerasへの変換にとりかかる。
*中間報告
0.課題が過大だったようだ。
1.GitHubを覗いてみたが、小さなパーツにもPyTorchが使われているので、Kerasへの変換は、PyTorchを知らず、Kerasも部分的にしか知らない自分には、到底、無理だ。
2.ResNetにmask R-CNNを接続してさらに、RoIAlignとbounding boxの情報から、正確な姿勢情報を得ることができるようにするための、接続方法、というものがあるのならそれを知りたいと思う。
*課題変更
課題:6D-VNetの概要をコードレベルで理解すること。
GitHubの6DVNetは工事中のようで(そうか、Kaggleの開催中のコンペへの影響が大きすぎるということかもしれないな)、指定されたサイトApolloScape_InstanceSegに移動し、そこにある学習プログラム、train_net_step.pyが読み込んでいるモデルgeneralized_RCNN(nn.module)が、求めているプログラムのようである。
metrixのところでquaternionsが、RoIのところでRoIAlignが出てくるけど、どういう処理がされ、どう機能しているのか、さっぱりわからん。
砂をかむ、茨の道を歩む、なんて言葉が思い浮かぶな!
quaternionsは、/lib/modeling/car_3d_pose_heads.pyにおいて、回転行列とオイラー角との変換式が示されている。表記方法の問題だけだからこれ以上追求する必要はない。
RoIAlignは、/lib/modeling/roi_xfrom/roi_align/functions/roi_align.pyにおいて定義されているが、これも、メインやサブのプログラムの中で適宜呼び出して使われるだけなので、定義式を見ていても、こんなものかと思うだけ。
*さてどうしたものか。
コンペサイトに行ってこよう。
・みなさん、苦労されているのがよくわかる。
・先が見えないな。
金属表面の異物検査のコンペのときも、結局、位置検出のソフトは動かさずに終わってしまった。GitHubでもっと学んで、動かせるソフトの種類を増やしながら、コードを読み、作る力を養おう。
*課題変更
課題:6DVNetを目標に、第一段階として、Faster R-CNNを体験すること。