Open5

Pytorch lightningでF1 scoreを算出したい

polyphepolyphe

Kaggleの評価指標がDice coefficientだったので算出しようと思ったところ、色々と問題があったのでやったことをまとめます。スマホから記事作れなかったのでスクラップというやつを使ってみます。最終的に算出までできるようになったら、記事にまとめようと思います。

•あらすじ
Dice coefficientについては以下がわかりやすいかなと思います。似た比較対象としてIoUがありますが、
IoUの方が厳密な推論結果の評価ができるようですね。だから最近はIoUが主流なのか、、、
https://tech-blog.optim.co.jp/entry/2019/03/18/173000

polyphepolyphe

ということでPytorch lightningでDice coefficientを算出してみようと思います。算出に使用するモジュールはtorchmetricsです。普通にpip install torchmetricsでインストールできました。使用方法は以下の通りです。複数次元なのでmdmc_averageを設定する必要がありました。今回はglobalとしてみました。次元を1次元に置き換えて算出していると思われます。
https://torchmetrics.readthedocs.io/en/v0.8.2/classification/f1_score.html

polyphepolyphe

上記を行うとCPU、GPUの変数でtensor計算しているというエラーが発生。以下を参考にGPU指定で動かすよう設定しました。
torch.set_default_tensor_type('torch.cuda.FloatTensor')
そうすると以下のエラーが発生。マルチスレッドで実行はしてないのだが、、、
'''
RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the 'spawn' start method
'''

polyphepolyphe

時間が空いてしまいましたが、結果的には算出できました。Xへの投稿に対するpytorch-lightning公式からの返信で、最新バージョンへのアップデートを勧められましたが、依存関係によりインストールできず諦め、結局は上記方法で算出まで辿り着きました。Segformerを使用した学習、推論は完成したので、どこかのタイミングで記事作ろうと思います。今は時間がない、、、