m/2018/yohei/experiments/dish
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
CENTER:&size(30){''料理画像の生成''};
----
#contents
----
#br
- コード: https://github.com/haru-256/face_dcgan.chainer
* dish data [#ma033dc4]
[[Google Drive:https://drive.google.com/drive/u/1/folders...
** clf_data [#u59af8f5]
- データの内訳
|学習用のラベル付きデータ|学習用のラベル無しデータ|テスト...
| 10000枚| 50000枚|10000枚|
*** 概要 [#p723bded]
画像のサイズはまちまちで,料理しか写ってないのもあれば文...
- 文字が入っている画像
--&ref(m/2018/yohei/train_13.jpg,67%);
- 手の混んだ画像(rice_sushi)
--&ref(m/2018/yohei/train_63.jpg,40%);
#br
----
#br
画像の大きさ(縦x横)の最大,最小,平均は以下の表のとおり.
|面積の最大値(shape)|面積の最小値(shape)|面積の平均|
|1778000 (1778, 1000)|12880 (160, 120)| 461380.4303482587|
#br
また,Axis Rate(縦/横)の最小から9つつの画像は以下の左の図...
|Axis Rate 最大|Axis Rate 最小|
|2.707143|0.246429|
|2.275000|0.470313|
|2.242857|0.489130|
|2.085973|0.500000|
|2.085409|0.536000|
|2.067857|0.542188|
|1.989000|0.555556|
|1.920000|0.556000|
|1.871429|0.560000|
|1.857143|0.560000|
CENTER:&ref(./axis_rate_min.jpg,67%);&ref(./axis_rate_max...
.
** dtc_data [#xedcfb73]
こちらも画像のサイズはまちまちで,文字も写っている画像も...
- データの内訳
|学習用の bounding box 付きデータ|テストデータ|
| 20000枚|10000枚|
** 画像データの評価 [#p18923cb]
画像のサイズはまちまちだが,面積を同じにしたデータを作る...
Detectionのデータなら位置合わせはbounding dataを使用する...
*** clf_train_images_labeled(合計10000枚)について [#bd102...
-面積の決定
|面積の最大値|面積の最小値|面積の平均|
|1778000|12880 | 461380.4303482587|
面積は平均の461380とする.リサイズにはopencvのresize()を...
全カテゴリーに対しての結果画像が以下のとおり.
CENTER:&ref(./eval_image.jpg,67%);
- 結論&br;
様々な角度,距離から料理を撮影しており,同じクラスでもか...
soup_misoやpasta_tomato, soup_potageはなんとなくわかる感...
***注意 [#y2e93ce8]
-clfのデータは中心で位置合わせしたものをカテゴリごとに平...
-dtcはデータからbounding boxで位置合わせしてカテゴリごと...
**データの前処理 [#s7dee6e2]
CENTER:%%まず,Axis Rate(縦/横)が大きいものの上位9個は画...
CENTER:↓ &br;
&color(red){データを眺めて,たまたまこういうのがあったか...
***aspect ratioの変換 [#z14004c8]
-[[コード:https://github.com/haru-256/dish_dcgan.chainer/...
- 画像の主な拡大縮小アルゴリズム: http://imagingsolution....
- 利点: 単に128x128にしてもある程度の画質であるならば,最...
- 欠点: 64x64だと画質がかなり粗い.
clf_train_images_labeled(合計10000枚)の,aspect ratio が...
aspect ratio の変換の仕方は,画像の評価(resizeして aspect...
+ 個々の画像に対して縦と横で大きい方のサイズに合わせる(例...
+ 全画像に対して,DCGANを適用するサイズ(128x128等)に合わ...
とりあえず,1. でやってみる.aspect ratio の変換方法は以下...
- 個々の画像に対して縦と横で長い方のサイズに合わせる(例 s...
変換にはcv2.resize()を補完には cv2.INTER_LINEAR([[bilinea...
次に 2. で変換.具体的な変換方法は以下の通り
- 全画像に対して128 x 128 のサイズに合わせる(例 shape=(10...
変換にはcv2.resize()を補完には cv2.INTER_CUBIC([[バイキュ...
*** center crop [#za33d935]
- 利点: [[m/2018/yohei/experiments/dish#bd1029e2]] より,...
余計な背景をなくしてから risize することで aspect ratio ...
また,背景を削除することで多少,学習しやすくなることが期...
- 欠点: 真ん中にない画像があると全然関係ない画像に変換し...
画像の縦横の長さが短い方を基準とし, 真ん中に合わせて sh...
例
- shape=(1024, 512) => shape=(512, 512)となるように真ん中...
resize 変換にはcv2.resize()を補完には cv2.INTER_CUBIC(バ...
*実験1 とりあえずDCGAN [#ydc403d6]
何も考えず,[[前処理(aspect ratioの変換):https://www-tlab...
ただし,画像データは-1~1の範囲に正規化する.
** 実験条件 [#i1743abb]
*** model [#s4417d2f]
モデルの条件はDCGANの論文に合わせる.
- 初期値はすべて正規分布(scale=0.02, mean=0)に従うよう...
- Generator
#pre{{
z: (N, 100)
↓
Dence: (N, 4*4*1024), ReLU, BN
↓
reshape: (N, 4, 4, 1024)
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
}}
- Discriminator
-- DiscriminatorをGeneratorの反転として捉えているのは間違...
#pre{{
image: (N, 128, 128, 3)
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 6...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 3...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 1...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 8...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 4...
↓
Convolution(kernel size: 1, padding: None, stride: 1): (N...
↓
Global Average pooling : (N, 1)
}}
*** その他の条件 [#x9310bf9]
- データ数: 10000枚
- batch size: 128
- epoch: 300
- optimizer: DCGANの論文に従いGenerator,Discriminatorと...
| | learning rate | beta1 | beta2|epsilon|
| Discriminator | 0.0002| 0.5| 0.999|1e-08,|
| Generator | 0.0002| 0.5| 0.999|1e-08,|
- seed: 1 (cuDNNを用いるため厳密には再現性なし)
- gpu: 0 (GeForce GTX1080)
**結果 [#n2729fd4]
- GneratorとDiscriminatorのLossの推移を以下に示す.
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
- epoch 1~300 までのGIF
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
* 実験2 とりあえず7万枚でDCGAN [#h69d59c9]
実験1 においてデータ数を
- clf_train_images_labeled: 1万枚
- clf_train_images_unlabeled: 5万枚
- clf_test_images: 1万枚
の合計7万枚とした実験.ただし前処理で resizeで128x128にし...
** 実験条件 [#g499d656]
データ数以外の実験条件は実験1と同じ.
- データ数:70000枚
** 結果 [#f706493f]
- lossの推移
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
- 1~300epochまでのgif
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
**考察 [#w6f8172e]
データ数を1万枚から7万枚に増やしても,生成画像はあまり...
GeneratorrのLossが実験1と比べてかなり大きくなっている....
実験1のLossの推移と比べ,推移がなめらかになった.
**結論 [#h64bd647]
seed1しか実験していないが,データ数を増やしたとしても,o...
*実験3 center crop [#f486b253]
clf_train_images_labeled データに対して,[[center crop:ht...
** 実験条件 [#adebd420]
***Model [#d3f58690]
実験1と同様
***その他の条件 [#fb94cfa8]
- center cropしたデータ10000枚を用いたこと以外は実験1と...
**結果 [#f9a0fc70]
-lossの推移
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
-epoch1~300までのgif
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
**結論 [#e4b009bf]
前処理を多少丁寧にしたとしても実験1とはそこまでの変化は...
*実験4 kernel size: 4x4 [#s8740a92]
実験1の構造を元に,Generatorのkernel sizeを4にした実験.~
カーネルサイズがあまりにも大きので,学習結果が油絵のよう...
**実験条件 [#rd78400f]
***モデル [#yb22d99f]
Generatorのkernel sizeを4x4に変更.
- Generator
#pre{{
z: (N, 100)
↓
Dence: (N, 4*4*1024), ReLU, BN
↓
reshape: (N, 4, 4, 1024)
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
}}
***その他の条件 [#v93b69cc]
- データ: clf_train_images_labeledに対して[[center crop:h...
- データ数: 10000枚
- batch size: 128
- epoch: 300
- optimizer: DCGANの論文に従いGenerator,Discriminatorと...
| | learning rate | beta1 | beta2|epsilon|
| Discriminator | 0.0002| 0.5| 0.999|1e-08,|
| Generator | 0.0002| 0.5| 0.999|1e-08,|
- seed: 0, 1, 2 (cuDNNを用いるため厳密には再現性なし)
- gpu: 0 (GeForce GTX1080) , 1 (GeForce GTX TITAN)
**結果 [#q736197a]
-epoch1~300までのgif
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
**結論 [#e1d9476f]
カーネルサイズを変更したとしてもさほど突出した変化はなか...
パラメータの削減ができたのでこれからの実験はカーネルサイ...
*実験5 minibatch discrimination, ks:4 [#f834934a]
実験4を元にDiscriminatorにMinibatch Discriminationを適用...
** 実験条件 [#k33462c3]
DiscriminatorにMinibatch Discriminationを適用した以外は実...
***Model [#p670e5ce]
- Discriminator
#pre{{
image: (N, 128, 128, 3)
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 6...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 3...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 1...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 8...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 4...
↓
Minibatch Discrimination(B:32, C:8): (N, 4*4*1024 + B*C),
↓
Dence: (N, 1)
}}
**結果 [#h3628433]
-epoch1~300までのgif
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
**結論 [#ge72ee42]
minibatch discriminationを適用したが,メリットはあまり感...
実験4と比較しても,実験4はもともとmode collapseが起きて...
face_dcganと同様,一度崩壊し再生といった現象がみられた.
*予定 [#ac370c8b]
+~コスト関数を変えるために論文を読む.minibatch discrimin...
+~顔画像と比べて,料理画像はかなり多様性がある.よって顔...
また,DCGANの論文ではGeneratorについてのみ書いてあり,Dis...
+~サイズ不変に対応するためDCGANのDiscriminatorをpatchGAN...
その場合,Generatorをどうするのかはまだ...
-%% [[m/2018/yohei/experiments/dish#p18923cb]]から見るに...
*質問 [#d8989ed1]
終了行:
CENTER:&size(30){''料理画像の生成''};
----
#contents
----
#br
- コード: https://github.com/haru-256/face_dcgan.chainer
* dish data [#ma033dc4]
[[Google Drive:https://drive.google.com/drive/u/1/folders...
** clf_data [#u59af8f5]
- データの内訳
|学習用のラベル付きデータ|学習用のラベル無しデータ|テスト...
| 10000枚| 50000枚|10000枚|
*** 概要 [#p723bded]
画像のサイズはまちまちで,料理しか写ってないのもあれば文...
- 文字が入っている画像
--&ref(m/2018/yohei/train_13.jpg,67%);
- 手の混んだ画像(rice_sushi)
--&ref(m/2018/yohei/train_63.jpg,40%);
#br
----
#br
画像の大きさ(縦x横)の最大,最小,平均は以下の表のとおり.
|面積の最大値(shape)|面積の最小値(shape)|面積の平均|
|1778000 (1778, 1000)|12880 (160, 120)| 461380.4303482587|
#br
また,Axis Rate(縦/横)の最小から9つつの画像は以下の左の図...
|Axis Rate 最大|Axis Rate 最小|
|2.707143|0.246429|
|2.275000|0.470313|
|2.242857|0.489130|
|2.085973|0.500000|
|2.085409|0.536000|
|2.067857|0.542188|
|1.989000|0.555556|
|1.920000|0.556000|
|1.871429|0.560000|
|1.857143|0.560000|
CENTER:&ref(./axis_rate_min.jpg,67%);&ref(./axis_rate_max...
.
** dtc_data [#xedcfb73]
こちらも画像のサイズはまちまちで,文字も写っている画像も...
- データの内訳
|学習用の bounding box 付きデータ|テストデータ|
| 20000枚|10000枚|
** 画像データの評価 [#p18923cb]
画像のサイズはまちまちだが,面積を同じにしたデータを作る...
Detectionのデータなら位置合わせはbounding dataを使用する...
*** clf_train_images_labeled(合計10000枚)について [#bd102...
-面積の決定
|面積の最大値|面積の最小値|面積の平均|
|1778000|12880 | 461380.4303482587|
面積は平均の461380とする.リサイズにはopencvのresize()を...
全カテゴリーに対しての結果画像が以下のとおり.
CENTER:&ref(./eval_image.jpg,67%);
- 結論&br;
様々な角度,距離から料理を撮影しており,同じクラスでもか...
soup_misoやpasta_tomato, soup_potageはなんとなくわかる感...
***注意 [#y2e93ce8]
-clfのデータは中心で位置合わせしたものをカテゴリごとに平...
-dtcはデータからbounding boxで位置合わせしてカテゴリごと...
**データの前処理 [#s7dee6e2]
CENTER:%%まず,Axis Rate(縦/横)が大きいものの上位9個は画...
CENTER:↓ &br;
&color(red){データを眺めて,たまたまこういうのがあったか...
***aspect ratioの変換 [#z14004c8]
-[[コード:https://github.com/haru-256/dish_dcgan.chainer/...
- 画像の主な拡大縮小アルゴリズム: http://imagingsolution....
- 利点: 単に128x128にしてもある程度の画質であるならば,最...
- 欠点: 64x64だと画質がかなり粗い.
clf_train_images_labeled(合計10000枚)の,aspect ratio が...
aspect ratio の変換の仕方は,画像の評価(resizeして aspect...
+ 個々の画像に対して縦と横で大きい方のサイズに合わせる(例...
+ 全画像に対して,DCGANを適用するサイズ(128x128等)に合わ...
とりあえず,1. でやってみる.aspect ratio の変換方法は以下...
- 個々の画像に対して縦と横で長い方のサイズに合わせる(例 s...
変換にはcv2.resize()を補完には cv2.INTER_LINEAR([[bilinea...
次に 2. で変換.具体的な変換方法は以下の通り
- 全画像に対して128 x 128 のサイズに合わせる(例 shape=(10...
変換にはcv2.resize()を補完には cv2.INTER_CUBIC([[バイキュ...
*** center crop [#za33d935]
- 利点: [[m/2018/yohei/experiments/dish#bd1029e2]] より,...
余計な背景をなくしてから risize することで aspect ratio ...
また,背景を削除することで多少,学習しやすくなることが期...
- 欠点: 真ん中にない画像があると全然関係ない画像に変換し...
画像の縦横の長さが短い方を基準とし, 真ん中に合わせて sh...
例
- shape=(1024, 512) => shape=(512, 512)となるように真ん中...
resize 変換にはcv2.resize()を補完には cv2.INTER_CUBIC(バ...
*実験1 とりあえずDCGAN [#ydc403d6]
何も考えず,[[前処理(aspect ratioの変換):https://www-tlab...
ただし,画像データは-1~1の範囲に正規化する.
** 実験条件 [#i1743abb]
*** model [#s4417d2f]
モデルの条件はDCGANの論文に合わせる.
- 初期値はすべて正規分布(scale=0.02, mean=0)に従うよう...
- Generator
#pre{{
z: (N, 100)
↓
Dence: (N, 4*4*1024), ReLU, BN
↓
reshape: (N, 4, 4, 1024)
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
↓
Transposed Convolution(kernel size: 6, padding: 2, stride...
}}
- Discriminator
-- DiscriminatorをGeneratorの反転として捉えているのは間違...
#pre{{
image: (N, 128, 128, 3)
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 6...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 3...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 1...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 8...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 4...
↓
Convolution(kernel size: 1, padding: None, stride: 1): (N...
↓
Global Average pooling : (N, 1)
}}
*** その他の条件 [#x9310bf9]
- データ数: 10000枚
- batch size: 128
- epoch: 300
- optimizer: DCGANの論文に従いGenerator,Discriminatorと...
| | learning rate | beta1 | beta2|epsilon|
| Discriminator | 0.0002| 0.5| 0.999|1e-08,|
| Generator | 0.0002| 0.5| 0.999|1e-08,|
- seed: 1 (cuDNNを用いるため厳密には再現性なし)
- gpu: 0 (GeForce GTX1080)
**結果 [#n2729fd4]
- GneratorとDiscriminatorのLossの推移を以下に示す.
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
- epoch 1~300 までのGIF
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
* 実験2 とりあえず7万枚でDCGAN [#h69d59c9]
実験1 においてデータ数を
- clf_train_images_labeled: 1万枚
- clf_train_images_unlabeled: 5万枚
- clf_test_images: 1万枚
の合計7万枚とした実験.ただし前処理で resizeで128x128にし...
** 実験条件 [#g499d656]
データ数以外の実験条件は実験1と同じ.
- データ数:70000枚
** 結果 [#f706493f]
- lossの推移
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
- 1~300epochまでのgif
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
**考察 [#w6f8172e]
データ数を1万枚から7万枚に増やしても,生成画像はあまり...
GeneratorrのLossが実験1と比べてかなり大きくなっている....
実験1のLossの推移と比べ,推移がなめらかになった.
**結論 [#h64bd647]
seed1しか実験していないが,データ数を増やしたとしても,o...
*実験3 center crop [#f486b253]
clf_train_images_labeled データに対して,[[center crop:ht...
** 実験条件 [#adebd420]
***Model [#d3f58690]
実験1と同様
***その他の条件 [#fb94cfa8]
- center cropしたデータ10000枚を用いたこと以外は実験1と...
**結果 [#f9a0fc70]
-lossの推移
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
-epoch1~300までのgif
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
**結論 [#e4b009bf]
前処理を多少丁寧にしたとしても実験1とはそこまでの変化は...
*実験4 kernel size: 4x4 [#s8740a92]
実験1の構造を元に,Generatorのkernel sizeを4にした実験.~
カーネルサイズがあまりにも大きので,学習結果が油絵のよう...
**実験条件 [#rd78400f]
***モデル [#yb22d99f]
Generatorのkernel sizeを4x4に変更.
- Generator
#pre{{
z: (N, 100)
↓
Dence: (N, 4*4*1024), ReLU, BN
↓
reshape: (N, 4, 4, 1024)
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
↓
Transposed Convolution(kernel size: 4, padding: 2, stride...
}}
***その他の条件 [#v93b69cc]
- データ: clf_train_images_labeledに対して[[center crop:h...
- データ数: 10000枚
- batch size: 128
- epoch: 300
- optimizer: DCGANの論文に従いGenerator,Discriminatorと...
| | learning rate | beta1 | beta2|epsilon|
| Discriminator | 0.0002| 0.5| 0.999|1e-08,|
| Generator | 0.0002| 0.5| 0.999|1e-08,|
- seed: 0, 1, 2 (cuDNNを用いるため厳密には再現性なし)
- gpu: 0 (GeForce GTX1080) , 1 (GeForce GTX TITAN)
**結果 [#q736197a]
-epoch1~300までのgif
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
**結論 [#e1d9476f]
カーネルサイズを変更したとしてもさほど突出した変化はなか...
パラメータの削減ができたのでこれからの実験はカーネルサイ...
*実験5 minibatch discrimination, ks:4 [#f834934a]
実験4を元にDiscriminatorにMinibatch Discriminationを適用...
** 実験条件 [#k33462c3]
DiscriminatorにMinibatch Discriminationを適用した以外は実...
***Model [#p670e5ce]
- Discriminator
#pre{{
image: (N, 128, 128, 3)
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 6...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 3...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 1...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 8...
↓
Convolution(kernel size: 5, padding: 2, stride: 2): (N, 4...
↓
Minibatch Discrimination(B:32, C:8): (N, 4*4*1024 + B*C),
↓
Dence: (N, 1)
}}
**結果 [#h3628433]
-epoch1~300までのgif
#ref(https://raw.github.com/wiki/haru-256/dish_dcgan.chai...
**結論 [#ge72ee42]
minibatch discriminationを適用したが,メリットはあまり感...
実験4と比較しても,実験4はもともとmode collapseが起きて...
face_dcganと同様,一度崩壊し再生といった現象がみられた.
*予定 [#ac370c8b]
+~コスト関数を変えるために論文を読む.minibatch discrimin...
+~顔画像と比べて,料理画像はかなり多様性がある.よって顔...
また,DCGANの論文ではGeneratorについてのみ書いてあり,Dis...
+~サイズ不変に対応するためDCGANのDiscriminatorをpatchGAN...
その場合,Generatorをどうするのかはまだ...
-%% [[m/2018/yohei/experiments/dish#p18923cb]]から見るに...
*質問 [#d8989ed1]
ページ名: