2

如何随机裁剪训练图像及其位置标签。

我正在为 caffe 输入预处理图像数据及其标签。我想在线随机裁剪我的训练图像(当 caffe 运行时),我知道 caffe 在随机裁剪层提供了一个随机裁剪参数。问题是我的每个对应图像的标签在图像转换时都是不同的。所以通过这种方式,我必须将我的标签与转换后的图像一起更改。我尝试长时间搜索我的问题,但没有用。然后我意识到也许有两种方法可以解决这些问题:

  1. 获取随机裁剪图像在原始图像上的偏移量。但我用谷歌搜索了它,没有任何答案。
  2. 我将在线指定随机偏移量,然后通过特定偏移量裁剪特定偏移量裁剪图像。但是如何在 caffe 训练时生成一个随机数。
  3. 我知道离线预处理随机裁剪图像及其标签可能是一种可行的方法。但是,它会占用相当大的磁盘空间,因为我的训练数据集太大了。

我的位置对应标签: 我将每个训练图像分割为10x10=100网格。标签是图像中特定关键点的网格索引。例如,当我的头部关键点位于<2th row, 1th col>图像网格的位置时,标签将为 11。

4

1 回答 1

0

正如您已经指出的那样,您可以使用一个"Python"图层来完成此任务(我想这是最简单的方法)。 如果你关心这个层的运行时间,你可以让它多线程:让层调用几个线程来裁剪图像并重新计算它们的标签。这些线程将在后台运行,并且应该能够及时为网络提供足够的数据以用于下一个小批量。

请参阅该类的pythonthreading模块。Thread您可能还会发现使用Queue类来同步线程和主输入层很方便。

于 2017-01-04T08:30:55.127 回答