FC2カウンター FPGAの部屋 カーブ、直線用白線間走行用畳み込みニューラルネットワーク4(学習画像を増やす)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

カーブ、直線用白線間走行用畳み込みニューラルネットワーク4(学習画像を増やす)

カーブ、直線用白線間走行用畳み込みニューラルネットワーク3(画像の加工)”の続き。

前回は、白黒変換して 0.075 倍 ( 1/13.33333... ) にした後で、56 ピクセル X 10 行の画像を 25 枚切り出してみた。それでも、( 41 + 18 + 18 ) x 25 = 1925 枚なので、元画像を加工して増やしてみようと思う。

白線追従走行用畳み込みニューラルネットワークの製作10(画像を増やす)”と同様に、imagemagic を使ってバッチ・ファイルを起動して、画像を増やしているが、17倍に増やしている。元の画像が1組あるので、直進が 41 X 18 = 738 枚になる。右旋回と左旋回は 18 X 18 = 324 枚になる予定だ。

imagemagic を使ったバッチ・ファイル increase_image2 を示す。

#!/bin/bash
# increase_images2

straight_max=41
lr_turn_max=18

# contrast
for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp -contrast straight$(expr $i + $straight_max).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp -contrast left_turn$(expr $i + $lr_turn_max).bmp
    convert right_turn$i.bmp -contrast right_turn$(expr $i + $lr_turn_max).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp -contrast -contrast straight$(expr $i + $straight_max \* 2).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp -contrast -contrast left_turn$(expr $i + $lr_turn_max \* 2).bmp
    convert right_turn$i.bmp -contrast -contrast right_turn$(expr $i + $lr_turn_max \* 2).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp -contrast -contrast -contrast straight$(expr $i + $straight_max \* 3).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp -contrast -contrast -contrast left_turn$(expr $i + $lr_turn_max \* 3).bmp
    convert right_turn$i.bmp -contrast -contrast -contrast right_turn$(expr $i + $lr_turn_max \* 3).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp +contrast straight$(expr $i + $straight_max \* 4).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp +contrast left_turn$(expr $i + $lr_turn_max \* 4).bmp
    convert right_turn$i.bmp +contrast right_turn$(expr $i + $lr_turn_max \* 4).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp +contrast +contrast straight$(expr $i + $straight_max \* 5).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp +contrast +contrast left_turn$(expr $i + $lr_turn_max \* 5).bmp
    convert right_turn$i.bmp +contrast +contrast right_turn$(expr $i + $lr_turn_max \* 5).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp +contrast +contrast +contrast straight$(expr $i + $straight_max \* 6).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp +contrast +contrast +contrast left_turn$(expr $i + $lr_turn_max \* 6).bmp
    convert right_turn$i.bmp +contrast +contrast +contrast right_turn$(expr $i + $lr_turn_max \* 6).bmp
done

# blur
for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp -blur 10x1.5 straight$(expr $i + $straight_max \* 7).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp -blur 10x1.5 left_turn$(expr $i + $lr_turn_max \* 7).bmp
    convert right_turn$i.bmp -blur 10x1.5 right_turn$(expr $i + $lr_turn_max \* 7).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp -blur 10x2 straight$(expr $i + $straight_max \* 8).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp -blur 10x2 left_turn$(expr $i + $lr_turn_max \* 8).bmp
    convert right_turn$i.bmp -blur 10x2 right_turn$(expr $i + $lr_turn_max \* 8).bmp
done

# gaussian-blur
for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp -blur 10x1.5 straight$(expr $i + $straight_max \* 9).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp -gaussian-blur 10x1.5 left_turn$(expr $i + $lr_turn_max \* 9).bmp
    convert right_turn$i.bmp -blur 10x1.5 right_turn$(expr $i + $lr_turn_max \* 9).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp -blur 10x2 straight$(expr $i + $straight_max \* 10).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp -gaussian-blur 10x2 left_turn$(expr $i + $lr_turn_max \* 10).bmp
    convert right_turn$i.bmp -blur 10x2 right_turn$(expr $i + $lr_turn_max \* 10).bmp
done

#gamma
for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp -gamma 1.5 straight$(expr $i + $straight_max \* 11).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp -gamma 1.5 left_turn$(expr $i + $lr_turn_max \* 11).bmp
    convert right_turn$i.bmp -gamma 1.5 right_turn$(expr $i + $lr_turn_max \* 11).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp -gamma 0.75 straight$(expr $i + $straight_max \* 12).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp -gamma 0.75 left_turn$(expr $i + $lr_turn_max \* 12).bmp
    convert right_turn$i.bmp -gamma 0.75 right_turn$(expr $i + $lr_turn_max \* 12).bmp
done

#noise
for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp +noise Gaussian straight$(expr $i + $straight_max \* 13).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp +noise Gaussian left_turn$(expr $i + $lr_turn_max \* 13).bmp
    convert right_turn$i.bmp +noise Gaussian right_turn$(expr $i + $lr_turn_max \* 13).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp +noise Impulse straight$(expr $i + $straight_max \* 14).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp +noise Impulse left_turn$(expr $i + $lr_turn_max \* 14).bmp
    convert right_turn$i.bmp +noise Impulse right_turn$(expr $i + $lr_turn_max \* 14).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp +noise Gaussian straight$(expr $i + $straight_max \* 15).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp +noise Gaussian left_turn$(expr $i + $lr_turn_max \* 15).bmp
    convert right_turn$i.bmp +noise Gaussian right_turn$(expr $i + $lr_turn_max \* 15).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp +noise Impulse straight$(expr $i + $straight_max \* 16).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp +noise Impulse left_turn$(expr $i + $lr_turn_max \* 16).bmp
    convert right_turn$i.bmp +noise Impulse right_turn$(expr $i + $lr_turn_max \* 16).bmp
done

for ((i=0; i < $straight_max; i++)); do
    convert straight$i.bmp +noise Laplacian straight$(expr $i + $straight_max \* 17).bmp
done
for ((i=0; i < $lr_turn_max; i++)); do
    convert left_turn$i.bmp +noise Laplacian left_turn$(expr $i + $lr_turn_max \* 17).bmp
    convert right_turn$i.bmp +noise Laplacian right_turn$(expr $i + $lr_turn_max \* 17).bmp
done


ircrease_image2 を実行すると、画像が 1,386 枚に増えた。トレーニング用として画像を切り出すときに 25 倍に増えるので、 34,650 枚になるはずだ。学習用画像の規模としては十分ではないか?と思う。
curve_tracing_cnn_24_171204.jpg
  1. 2017年12月05日 05:19 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/3993-6f6b0e39
この記事にトラックバックする(FC2ブログユーザー)