FastAI踩坑

  • 五一一直在调 Fast.AI

训 SSD 的时候遇到了灵异事件,

遇到了个似乎问题差不多的老哥 https://stackoverflow.com/questions/48595240/map-decreasing-with-training-tensorflow-object-detection-ssd 但是我调了它说的这个参数,并没有什么效果。然后我发现同样的 model,用 pytorch 有这个问题,但是封进 fastai 的版本就没有这个毛病。

然后由于不满足与只 train 不 valid,然后加了 validation,然后就进入了 6h 一个 epoch 然后发现 valid 炸了的状态,后来发帖才知道可以 learn.validate() (然而这个函数对数据的 type 也有一些奇怪的隐含要求.. doc 写得不太清楚)

哦读入的时候也很坑,搞了好久那个 databunch,因为看它 doc 里写说什么如果用 pytorch 的 vanilla dataset,有些 fastai 的函数不滋兹(x然而后来也没用上)。用的那个 ObjectItemList,然后它 get_label_from_func 之后竟然会把 bounding box 的坐标给 norm 成 [-1,1] 之间的.. 然后我转成 [0..1] 的时候又翻车了一万次.. 因为我之前搞成一个 list 就可以,但是 fastai 它不爽,要用个 bb_pad_collate 给封成一个 torch tensor= =

其实 doc 里有写.. 但我总是之后才找到..

然后有个坑是那个 ImageBBox 的坐标默认顺序是 (top, left, bottom, right),和我之前的也不一样= =,然后就翻车了.. 倒也没炸掉,只是 loss 奇高,but really time consuming

现在能顺利 run 起来了,除了偶尔它莫名其妙 out of memory (也可能是服务器上别的 process 搞得,说不好)以外没啥毛病(#flag)

这几天在 forum 开了一万个帖子.. 感觉自己太 push 了((

可是 fastai 的文档看着是真的不舒服.. 习惯了 pytorch 那种简明扼要 example 充足的..

fastai 的东西封装得很细,但是不会用就只能炸炸炸..

惨惨 QAQ

我记得好像还没有用 FastAI 写 Object Detection 的指南,如果有空可以整理一下 code(