今週のKaggle-Thu:Severstal : Steel Defect Detection
(過去のコンペ):鋼板表面の欠陥検出:欠陥が存在する場所を検出し、その欠陥の種類を分類することを目的とするもの。
*今日は、入力(input)から出力(predict)まで、全体の流れを把握する。
*完走しているプログラムの構成を先頭からみていく。
1.学習済みのUnetの読み込み
2.numpy, pandas, torch, sklearn, matplotlib, albumentations, などのimport
3.マスクimageをstringに変換する関数を用意する。
4.元画像にマスクをつくる関数を用意する。
5.元画像とマスクを合わせたデータセットをつくるクラスを用意する。
6.水平方向にフリップする関数を用意する。
7.学習用のデータを供給する関数を用意する。
8.予測する関数を用意する。
9.評価関数を用意する。
10.IoUとF値を計算するクラスを用意する。
11.エポック毎にF値とIoUを表示する関数を用意する。
12.IoUを計算する関数を用意する。
13.バッチ単位でIoUの平均を求める関数を用意する。
14.モデル:Unetを初期化する。
15.trainとvalidationを行うクラスを用意する。
*ここまで、関数とクラスを、意味も分からず、順に書いただけ。
*何をどのように記述すれば、プログラムの全体の流れや概要がわかるのか。
*Trainerというクラスの中を追ってみようか。
・追いかけてみた。
・まず、この完走プログラムは、classとdefで、しっかりまとめられている。
・trainerクラスが呼び出されて、データが初期化され、provider関数が呼び出され、dataset関数が呼び出され、・・・start関数が呼び出され、iterate関数が呼び出され、meterクラスが呼び出され、・・・、こんな感じて、計算が進んでいく。
・クラスと関数で、しっかり構成されているので、クラス内部、関数内部をじっくりながめて、変数、引数、戻り値などを、実行される順番に従ってフォローしていけば、理解が進みそうである。
・実行される順に追いかけながら、なぜその順番なのかということを考えながら、フォローしていくことが大切だろうなと感じた。
*明日は、プログラムコードを、実行される順に、きっちりと、追いかけてみる。
つづく