HI, team
after i import rgb train model in yuv model. i get the same output as rgb.
while i read Y and uv ad the model input on EMA there has no obj detected.
my read data code like:
vx_size input_sizes_Y[3];
vx_size input_sizes_UV[3];
vx_map_id map_id_Y;
vx_map_id map_id_UV;
vx_size start[4];
vx_size input_strides_Y[4];
vx_size input_strides_UV[4];
start[0] = start[1] = start[2] = 0;
input_sizes_Y[0] = obs_handle.ioBufDesc.inWidth[0] + obs_handle.ioBufDesc.inPadL[0] +
obs_handle.ioBufDesc.inPadR[0];
input_sizes_Y[1] = obs_handle.ioBufDesc.inHeight[0] + obs_handle.ioBufDesc.inPadT[0] +
obs_handle.ioBufDesc.inPadB[0];
input_sizes_Y[2] = obs_handle.ioBufDesc.inNumChannels[0];
input_sizes_UV[0] = obs_handle.ioBufDesc.inWidth[1] + obs_handle.ioBufDesc.inPadL[1] +
obs_handle.ioBufDesc.inPadR[1];
input_sizes_UV[1] = obs_handle.ioBufDesc.inHeight[1] + obs_handle.ioBufDesc.inPadT[1] +
obs_handle.ioBufDesc.inPadB[1];
input_sizes_UV[2] = obs_handle.ioBufDesc.inNumChannels[1];
printf("y[w%d h%d c%d] uv[w%d h%d c%d]\n", input_sizes_Y[0], input_sizes_Y[1], input_sizes_Y[2],
input_sizes_UV[0], input_sizes_UV[1], input_sizes_UV[2]);
input_strides_Y[0] = sizeof(vx_uint8);
input_strides_Y[1] = input_sizes_Y[0] * input_strides_Y[0];
input_strides_Y[2] = input_sizes_Y[1] * input_strides_Y[1];
input_strides_UV[0] = sizeof(vx_uint8);
input_strides_UV[1] = input_sizes_UV[0] * input_strides_UV[0];
input_strides_UV[2] = input_sizes_UV[1] * input_strides_UV[1];
void *input_buffer_Y = NULL;
void *input_buffer_UV = NULL;
f = fopen(filenames[m].c_str(), "rb");
if (f == NULL)
{
printf("xcb_obs: Fail to open %s!\n", filenames[m].c_str());
continue;
}
status = tivxMapTensorPatch(obs_handle.input_tensors[0], 3, start, input_sizes_Y,
&map_id_Y, input_strides_Y, &input_buffer_Y,
VX_WRITE_ONLY, VX_MEMORY_TYPE_HOST);
status = tivxMapTensorPatch(obs_handle.input_tensors[1], 3, start, input_sizes_UV,
&map_id_UV, input_strides_UV, &input_buffer_UV,
VX_WRITE_ONLY, VX_MEMORY_TYPE_HOST);
if (VX_SUCCESS != status)
{
printf("xcb_slots: Fail to map tensor!\n");
}
else
{
// size_t sz = fread(imgdata, 1, imgsize, f);
size_t sz = fread(input_buffer_Y, input_strides_Y[2] * input_sizes_Y[2], 1, f);
if (sz == 1)
{
cv::Mat Ymat(input_sizes_Y[1], input_sizes_Y[0], CV_8UC1, input_buffer_Y);
cv::resize(Ymat, gray, cv::Size(1280, 1280));
// Ymat.copyTo(gray);
}
sz = fread(input_buffer_UV, input_strides_UV[2] * input_sizes_UV[2], 1, f);
status = tivxUnmapTensorPatch(obs_handle.input_tensors[0], map_id_Y);
status = tivxUnmapTensorPatch(obs_handle.input_tensors[1], map_id_UV);
fclose(f);
the tensor 0 is Y plane ,tensor 1 is UV plane.
if i give the model wrong input?
i check all vision_apps/dl_demos there are no demo are directly use yuv as tivxTIDLNode input.
if you can provide me a demo which use yuv data as tivxTIDLNode input directly. it would be great appreciate.