YOLOで学習中のlossのグラフchart.png を100iteretion毎に保存する

YOLOにはlossのグラフを100iteration毎に保存してくれる機能がある

しかし毎回chart.pngという名前で上書きされてしまうので、過去の状態を見たくなった時にちょっと困る

そこで、グラフが上書き保存されないように書き換える

使ったリポジトリはこれ

AlexeyAB/darknet
YOLOv4 - Neural Networks for Object Detection (Windows and Linux version of Darknet ) - AlexeyAB/darknet

image_opencv.cppの1110行目あたり

save_mat_png(img, "chart.png");

関数の定義は890行目あたりに書いてある

void save_mat_png(cv::Mat img_src, const char *name)
{
    cv::Mat img_rgb;
    if (img_src.channels() >= 3) cv::cvtColor(img_src, img_rgb, cv::COLOR_RGB2BGR);
    stbi_write_png(name, img_rgb.cols, img_rgb.rows, 3, (char *)img_rgb.data, 0);
}

保存するファイル名の引数は const char *name になっているので、対応したファイル名を毎回指定すれば出来そう

例えば

char save_name[256];
sprintf(save_name, "chart_%d.png", current_batch);
save_mat_png(img, save_name);

save_nameという配列を新たに定義し、sprintfで文字列を結合してsave_mat_png()に渡してみた

いい感じ

 

コメント

タイトルとURLをコピーしました