gusucode.com > vision工具箱matlab源码程序 > vision/+vision/+internal/+rcnn/batchReadAndCropForBBoxRegression.m
function [miniBatchData, miniBatchResponse, miniBatchLabels] = batchReadAndCropForBBoxRegression(... imds, trainingSamples, regionResizer, randomSelector, ... start, stop, miniBatchSize, numPosSamples) networkImageSize = regionResizer.ImageSize; % gather samples numImages = stop - start; posSamples = cell(numImages,1); posResponse = cell(numImages,1); posLabels = cell(numImages,1); k = 1; for i = start:stop-1 I = readimage(imds, i); I = localConvertImageToMatchNumberOfNetworkImageChannels(I, networkImageSize); posSamples{k} = regionResizer.cropAndResize(I, trainingSamples.Boxes{i}); % regression response posResponse{k} = trainingSamples.Targets{i}; % labels posLabels{k} = trainingSamples.Labels{i}; k = k + 1; end posSamples = cat(4, posSamples{:}); posResponse = vertcat(posResponse{:}); posLabels = vertcat(posLabels{:}); % There may be more positive samples than we need, randomly % sample enough to fill mini-batch. pidx = randomSelector.randperm(numPosSamples, min(miniBatchSize, numPosSamples)); miniBatchData = cat(4,posSamples(:,:,:,pidx)); miniBatchResponse = posResponse(pidx,:); miniBatchLabels = posLabels(pidx); %-------------------------------------------------------------------------- function I = localConvertImageToMatchNumberOfNetworkImageChannels(I, imageSize) isNetImageRGB = numel(imageSize) == 3 && imageSize(end) == 3; isImageRGB = ~ismatrix(I); if isImageRGB && ~isNetImageRGB I = rgb2gray(I); elseif ~isImageRGB && isNetImageRGB I = repmat(I,1,1,3); end