为 yolo 预训练网络预处理图像
Preprocessing a image for yolo pretrained net
我目前正在做一个项目,我需要使用 yolo3_mobilenet1.0_coco
但输入图像需要从格式 (300,300,3)
预处理到 (1,3,300,300)
这是不可能的通过 im.resize((1,3,300,300))
但在 gluoncv
class 中有一些特定的函数如 data.transforms.presets.ssd.load_test("string_containing_image_file name", short=512)
但它们都将 "string of image file name"
作为输入参数但我想传递具有原始变量的变量图像作为输入。
是否有任何功能可以让我这样做。因为它必须是我将传递的变量,因为我不会获取图像文件名。
我已经试过了
x, img = data.transforms.presets.ssd.load_test(im_fname, short=512)
其中 im_fname
是 (300,300,3)
格式的图像文件名。
但我无法传递文件名,因为图像将从 ImageDataGenerator
进入将使用此 yolo 网络的预处理函数。
使用 numpy
,您可以使用以下代码简单地将图像从最后一个频道更改为第一个频道:
import numpy as np
img = np.random.randn(300, 300, 3) # creating random image
print(img.shape) #Out: (300, 300, 3)
img_channel_first = np.moveaxis(img, -1, 0)
print(img_channel_first.shape) #Out: (3, 300, 300)
img_in = img_channel_first[np.newaxis,:]
print(img_in.shape) #Out: (1, 3, 300, 300)
我目前正在做一个项目,我需要使用 yolo3_mobilenet1.0_coco
但输入图像需要从格式 (300,300,3)
预处理到 (1,3,300,300)
这是不可能的通过 im.resize((1,3,300,300))
但在 gluoncv
class 中有一些特定的函数如 data.transforms.presets.ssd.load_test("string_containing_image_file name", short=512)
但它们都将 "string of image file name"
作为输入参数但我想传递具有原始变量的变量图像作为输入。
是否有任何功能可以让我这样做。因为它必须是我将传递的变量,因为我不会获取图像文件名。
我已经试过了
x, img = data.transforms.presets.ssd.load_test(im_fname, short=512)
其中 im_fname
是 (300,300,3)
格式的图像文件名。
但我无法传递文件名,因为图像将从 ImageDataGenerator
进入将使用此 yolo 网络的预处理函数。
使用 numpy
,您可以使用以下代码简单地将图像从最后一个频道更改为第一个频道:
import numpy as np
img = np.random.randn(300, 300, 3) # creating random image
print(img.shape) #Out: (300, 300, 3)
img_channel_first = np.moveaxis(img, -1, 0)
print(img_channel_first.shape) #Out: (3, 300, 300)
img_in = img_channel_first[np.newaxis,:]
print(img_in.shape) #Out: (1, 3, 300, 300)