NAME

AI::MXNet:Image - Read individual image files and perform augmentations.

imread

Read and decode an image to an NDArray.

Note: `imread` uses OpenCV.
MXNet must have been built with USE_OPENCV=1 for `imdecode` to work.

Parameters
----------
$filename : str
    Name of the image file to be loaded.
:$flag : int
    0 for grayscale. 1 for colored.
:$to_rgb : int
    0 for BGR format (OpenCV default). 1 for RGB format (MXNet default).
:$out : NDArray
    Output buffer. Do not specify for automatic allocation.

Returns
-------
An NDArray containing the image.

Example
-------
>>> mx->img->imread("flower.jpg");
<NDArray 224x224x3 @cpu(0)>

Set `flag` parameter to 0 to get grayscale output

>>> mx->img->imdecode("flower.jpg", flag=>0);
<NDArray 224x224x1 @cpu(0)>

Set `to_rgb` parameter to 0 to get output in OpenCV format (BGR)

>>> mx->img->imdecode($str_image, to_rgb=>0);
<NDArray 224x224x3 @cpu(0)>

imdecode

Decode an image from string. Requires OpenCV to work.

Parameters
----------
$buf : str, array ref, pdl, ndarray
    Binary image data.
:$flag : int
    0 for grayscale. 1 for colored.
:$to_rgb : int
    0 for BGR format (OpenCV default). 1 for RGB format (MXNet default).
:$out : NDArray
    Output buffer. Do not specify for automatic allocation.

scale_down

Scale down crop size if it's bigger than the image size.

Parameters:
-----------
Shape $src_size
Shape $size

Returns:
--------
($w, $h)

resize_short

Resize shorter edge to the size.

Parameters:
-----------
AI::MXNet::NDArray $src
Int                $size
Int                $interp=2

Returns:
--------
AI::MXNet::NDArray $resized_image

fixed_crop

Crop src at fixed location, and (optionally) resize it to the size.

Parameters:
-----------
AI::MXNet::NDArray $src
Int                $x0
Int                $y0
Int                $w
Int                $h
Maybe[Shape]       $size=
Int                $interp=2

Returns:
--------
AI::MXNet::NDArray $cropped_image

random_crop

Randomly crop src with size. Upsample result if src is smaller than the size.

Parameters:
-----------
AI::MXNet::NDArray $src
Shape              $size=
Int                $interp=2

Returns:
--------
($cropped_image, [$x0, $y0, $new_w, $new_h])

center_crop

Randomly crop src with size around the center. Upsample result if src is smaller than the size.

Parameters:
-----------
AI::MXNet::NDArray $src
Shape              $size=
Int                $interp=2

Returns:
--------
($cropped_image, [$x0, $y0, $new_w, $new_h])

color_normalize

Normalize src with mean and std.

Parameters:
-----------
AI::MXNet::NDArray $src
Num|AI::MXNet::NDArray $mean
Maybe[Num|AI::MXNet::NDArray] $std=
Int $interp=2

Returns:
--------
AI::MXNet::NDArray $normalized_image

random_size_crop

Randomly crop src with size. Randomize area and aspect ratio.

Parameters:
-----------
AI::MXNet::NDArray $src
Shape              $size
Num                $min_area
ArrayRef[Int]      [$from, $to] # $ratio
Maybe[Int]         $interp=2

Returns:
--------
($cropped_image, [$x0, $y0, $new_w, $new_h])

ResizeAug

Makes "resize shorter edge to size augumenter" closure.

Parameters:
-----------
Shape              $size
Int                $interp=2

Returns:
--------
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns [__PACKAGE__->resize_short($src, $size, $interp)]

RandomCropAug

Makes "random crop augumenter" closure.

Parameters:
-----------
Shape              $size
Int                $interp=2

Returns:
--------
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns [(__PACKAGE__->random_crop($src, $size, $interp))[0]]

RandomSizedCropAug

Makes "random crop augumenter" closure.

Parameters:
-----------
Shape              $size
Num                $min_area
ArrayRef[Num]      $ratio
Int                $interp=2

Returns:
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns [(__PACKAGE__->random_size_crop($src, $size, $min_area, $ratio, $interp))[0]]

CenterCropAug

Makes "center crop augumenter" closure.

Parameters:
-----------
Shape              $size
Int                $interp=2

Returns:
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns [(__PACKAGE__->center_crop($src, $size, $interp))[0]]

RandomOrderAug

Makes "Apply list of augmenters in random order" closure.

Parameters:
-----------
ArrayRef[CodeRef]  $ts

Returns:
--------
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns ArrayRef[AI::MXNet::NDArray]

RandomOrderAug

Makes "Apply random brightness, contrast and saturation jitter in random order" closure

Parameters:
-----------
Num $brightness
Num $contrast
Num $saturation

Returns:
--------
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns ArrayRef[AI::MXNet::NDArray]

LightingAug

Makes "Add PCA based noise" closure.

Parameters:
-----------
Num $alphastd
PDL $eigval
PDL $eigvec

Returns:
--------
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns ArrayRef[AI::MXNet::NDArray]

ColorNormalizeAug

Makes "Mean and std normalization" closure.

Parameters:
-----------
PDL $mean
PDL $std

Returns:
--------
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns [__PACKAGE__->color_normalize($src, $mean, $std)]

HorizontalFlipAug

Makes "Random horizontal flipping" closure.

Parameters:
-----------
Num $p < 1

Returns:
--------
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns [$p > rand ? AI::MXNet::NDArray->flip($src, axis=1>) : $src]

CastAug

Makes "Cast to float32" closure.

Returns:
--------
CodeRef that accepts AI::MXNet::NDArray $src as input
and returns [$src->astype('float32')]

CreateAugmenter

Create augumenter list

Parameters:
-----------
Shape          :$data_shape,
Bool           :$resize=0,
Bool           :$rand_crop=0,
Bool           :$rand_resize=0,
Bool           :$rand_mirror=0,
Maybe[Num|PDL] :$mean=,
Maybe[Num|PDL] :$std=,
Num            :$brightness=0,
Num            :$contrast=0,
Num            :$saturation=0,
Num            :$pca_noise=0,
Int            :$inter_method=2

NAME

AI::MXNet::ImageIter - Image data iterator.

DESCRIPTION

Image data iterator with a large number of augumentation choices.
Supports reading from both .rec files and raw image files with image list.

To load from .rec files, please specify path_imgrec. Also specify path_imgidx
to use data partition (for distributed training) or shuffling.

To load from raw image files, specify path_imglist and path_root.

Parameters
----------
batch_size : Int
    Number of examples per batch
data_shape : Shape
    Data shape in (channels, height, width).
    For now, only RGB image with 3 channels is supported.
label_width : Int
    dimension of label
path_imgrec : str
    path to image record file (.rec).
    Created with tools/im2rec.py or bin/im2rec
path_imglist : str
    path to image list (.lst)
    Created with tools/im2rec.py or with custom script.
    Format: index\t[one or more label separated by \t]\trelative_path_from_root
imglist: array ref
    a list of image with the label(s)
    each item is a list [imagelabel: float or array ref of float, imgpath]
path_root : str
    Root folder of image files
path_imgidx : str
    Path to image index file. Needed for partition and shuffling when using .rec source.
shuffle : bool
    Whether to shuffle all images at the start of each iteration.
Can be slow for HDD.
part_index : int
    Partition index
num_parts : int
    Total number of partitions.
data_name='data' Str
label_name='softmax_label' Str
kwargs : hash ref with any additional arguments for augmenters