AI_ML_DL’s diary

人工知能、機械学習、ディープラーニングの日記

今週のKaggle-Thu

今週の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クラスが呼び出され、・・・、こんな感じて、計算が進んでいく。

・クラスと関数で、しっかり構成されているので、クラス内部、関数内部をじっくりながめて、変数、引数、戻り値などを、実行される順番に従ってフォローしていけば、理解が進みそうである。

・実行される順に追いかけながら、なぜその順番なのかということを考えながら、フォローしていくことが大切だろうなと感じた。

 

*明日は、プログラムコードを、実行される順に、きっちりと、追いかけてみる。 

 

 つづく 

 

f:id:AI_ML_DL:20200123085157p:plain

style 084

f:id:AI_ML_DL:20200123085240p:plain

DeepDream

f:id:AI_ML_DL:20200123085405p:plain

style 084 iteration=500