【问题标题】:How to train YOLO (Darknet) on 16 bit depth image files?如何在 16 位深度图像文件上训练 YOLO(暗网)?
【发布时间】:2018-01-31 01:29:17
【问题描述】:

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 位通道上进行训练?谢谢。

【问题讨论】:

  • 您能否继续使用 16 位数据?我在看 (yolov3),它需要 rgb 数据。我添加了读取 16 位 .pgm 灰度文件的支持。但是,如果您将通道设置为 1,并加载 16 位数据,注释掉对 rgbgr_image() 的调用,它将在训练期间在 distort_image 中断言,因为预计有 3 个通道会出现失真。好像我要掉进兔子洞了。

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


【解决方案1】:

检测器似乎需要 3 个通道 (rgb)。我还可以通过禁用失真增强来训练它,并更新硬编码为 3 个通道的代码区域,即 load_data_seg()。就我而言,我使用的是 opencv 并加载 16 位 pgm 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多