YOLOにはlossのグラフを100iteration毎に保存してくれる機能がある
しかし毎回chart.pngという名前で上書きされてしまうので、過去の状態を見たくなった時にちょっと困る
そこで、グラフが上書き保存されないように書き換える
使ったリポジトリはこれ
GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet )
YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet ) - AlexeyAB/...
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()に渡してみた
いい感じ
コメント