Toma0916 / GlobalWheatDetection

3 stars 0 forks source link

predict用pipelineを実装 #138

Closed Toma0916 closed 4 years ago

Toma0916 commented 4 years ago

nms, softnms, wbfそれぞれにベイズ最適化するところまで、singleモデルでもensembleでも出来る。 もうちょっと綺麗にする

Toma0916 commented 4 years ago

@kminoda

ensembleするときってそういう手順でboxを統合している?

kminoda commented 4 years ago

https://www.kaggle.com/minomonter/gwd-multi-model-inference これ見れます? 質問の意味がよくわからんが、ensembled_model(models, configs)でensembledのモデルを定義して、中身では

for model in models:
    outputs = model(images)
    outputs_all.append(outputs)
return outputs

みたいなことをしている

Toma0916 commented 4 years ago

一応読んだんですけど、全部予測をconcatして後処理を一括でみたいなイメージですよねこれ?

kminoda commented 4 years ago

yes

Toma0916 commented 4 years ago

スクリーンショット 2020-06-02 15 55 07 valid_sample train_sample

一応結果を計算するところまで

挙動確認しつつ綺麗にしますわ

Toma0916 commented 4 years ago

↑は3モデルのアンサンブル + wbfの最適化で、最適化の際はtrain使ってやってるからvalidも一緒に上がってることは確認出来た

Toma0916 commented 4 years ago

今は一切pseudo labelには触れてないけどどういう形にしましょうかね、

後処理最適化パートは

みたいな感じ

どの処理をするかはいずれjsonで書けるようにするけど、pseudo label入れるなら

- 一旦それぞれでtrain valid予測して結果を突っ込んでおく

の手前かな?

kminoda commented 4 years ago

モデル読み込む手前が良いですねPLは

kminoda commented 4 years ago

間違えた 予測する手前

Toma0916 commented 4 years ago

ふむう

コメントとかもあるけど一旦最低限のパイプラインできたのでチェックしてマージでお願いしてええですか?

predict_config.jsonの中身、俺のモデルで直書きしてるけどそっちのに合わせて変えれば動くはず

スクリーンショット 2020-06-02 18 30 20

kminoda commented 4 years ago

あざす!!!!!!!!!!!! 明日になるかも

kminoda commented 4 years ago

exp10, 12, 14でdebug=falseで回したらこんなエラー出た

predicting train...
【1/3】
 36%|██████████████████████████████████████████████████████▏                                                                                               | 974/2698 [02:01<03:35,  8.01it/s]
Traceback (most recent call last):
  File "predict.py", line 223, in <module>
    train_predicts, original_train_metrics, valid_predicts, original_valid_metrics = predict_original(loaded_models, train_data_loader, valid_data_loader)
  File "predict.py", line 125, in predict_original
    train_predicts, train_metrics = predict_original_for_loader(loaded_models, train_data_loader)
  File "predict.py", line 105, in predict_original_for_loader                                                                                                                         [0/3959]
    for images, targets, image_ids in tqdm.tqdm(dataloader):
  File "/home/minoda/venv/pytorch-env/lib/python3.6/site-packages/tqdm/std.py", line 1129, in __iter__
    for obj in iterable:
  File "/home/minoda/venv/pytorch-env/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 345, in __next__
    data = self._next_data()
  File "/home/minoda/venv/pytorch-env/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 841, in _next_data
    idx, data = self._get_data()
  File "/home/minoda/venv/pytorch-env/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 808, in _get_data
    success, data = self._try_get_data()
  File "/home/minoda/venv/pytorch-env/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 761, in _try_get_data
    data = self._data_queue.get(timeout=timeout)
  File "/usr/lib/python3.6/multiprocessing/queues.py", line 113, in get
    return _ForkingPickler.loads(res)
  File "/home/minoda/venv/pytorch-env/lib/python3.6/site-packages/torch/multiprocessing/reductions.py", line 294, in rebuild_storage_fd
    fd = df.detach()
  File "/usr/lib/python3.6/multiprocessing/resource_sharer.py", line 58, in detach
    return reduction.recv_handle(conn)
  File "/usr/lib/python3.6/multiprocessing/reduction.py", line 182, in recv_handle
    return recvfds(s, 1)[0]
  File "/usr/lib/python3.6/multiprocessing/reduction.py", line 161, in recvfds
    len(ancdata))
RuntimeError: received 0 items of ancdata
Toma0916 commented 4 years ago

debug trueだと動くの?

kminoda commented 4 years ago

動くね とうまの手元だとdebug falseでも動きました?

Toma0916 commented 4 years ago

俺の手元だと動きますわね

つまりどういうエラーなんだろう

Toma0916 commented 4 years ago

ちなみにdebug falseだと全部の最適化に30分くらいかかるはず

Toma0916 commented 4 years ago

特定の状況で再現するみたいな文章を読んでいる

Toma0916 commented 4 years ago

@kminoda

dataloader のnum_workersをどっちもnum_workers=0にしてみてくれませんか!

Toma0916 commented 4 years ago

こっちから修正版コミットするわ

試してみて

Toma0916 commented 4 years ago

どうだろう

kminoda commented 4 years ago

動いたので大丈夫そうですね、マージして良さそう。 てかこれスコアめっちゃ上がるな笑

Toma0916 commented 4 years ago

リークはしてないはずだから大丈夫だと思われる。

2個くらい混ぜても5個くらい混ぜても手元のvalidだとあまり変わらんけどテストの方だといい感じにつよつよになってくれるといいな

Toma0916 commented 4 years ago

138