如何在16位深度图像文件上训练YOLO(Darknet)?

时间:2017-08-22 16:46:05

标签: neural-network computer-vision deep-learning object-detection darknet

yolo的当前实现支持8位深度,3通道png / jpg图像进行训练。我需要在16位,3通道png图像上训练yolo。我需要更改哪些代码?

我目前更改了以下代码:

在功能image load_image_stb(char *filename, int channels)中,更改了:

  • unsigned char *data = stbi_load(filename, &w, &h, &c, channels);unsigned short *data = stbi_load(filename, &w, &h, &c, channels);
  • im.data[dst_index] = (float)data[src_index]/255.;im.data[dst_index] = (float)data[src_index]/65536.;

在功能image load_image_cv(char *filename, int channels)中,将src = cvLoadImage(filename, flag)更改为src = cvLoadImage(filename, -1),因为-1标志要求opencv加载具有原始深度的图像。

在函数void ipl_into_image(IplImage* src, image im)中,更改了:

  • unsigned char *data = (unsigned char *)src->imageData;unsigned short *data = (unsigned short *)src->imageData;
  • im.data[k*w*h + i*w + j] = data[i*step + j*c + k]/255.;im.data[k*w*h + i*w + j] = data[i*step + j*c + k]/65536.;

我应该做些什么其他修改以确保yolo在16位频道上进行培训?谢谢。

1 个答案:

答案 0 :(得分:-1)

探测器似乎需要3个通道(rgb)。通过禁用失真增强,并更新硬编码为3个通道的代码区域,即load_data_seg(),我能够进行训练。在我的情况下,我使用opencv并加载16位pgm文件。