Skip to content

Instantly share code, notes, and snippets.

@tomthetrainer
Created October 2, 2017 04:55
Show Gist options
  • Save tomthetrainer/cf2373ae1e2d6cca7715934e22f53527 to your computer and use it in GitHub Desktop.
Save tomthetrainer/cf2373ae1e2d6cca7715934e22f53527 to your computer and use it in GitHub Desktop.
DataVec Image Pipeline demo
package org.deeplearning4j.examples.dataexamples;
import org.datavec.api.records.reader.RecordReader;
import org.datavec.api.split.FileSplit;
import org.datavec.api.split.InputSplit;
import org.datavec.api.util.ClassPathResource;
import org.datavec.image.loader.BaseImageLoader;
import org.datavec.image.loader.NativeImageLoader;
import org.datavec.image.recordreader.ImageRecordReader;
import org.datavec.image.transform.*;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.Random;
//import org.datavec.image.transform.PipelineImageTransform;
public class ImagePipelineExample3 {
protected static final Logger log = LoggerFactory.getLogger(ImagePipelineExample3.class);
//Images are of format given by allowedExtension -
protected static final String [] allowedExtensions = BaseImageLoader.ALLOWED_FORMATS;
protected static final long seed = 12345;
public static final Random rng = new Random(seed);
protected static int height = 50;
protected static int width = 50;
protected static int channels = 3;
protected static int numExamples = 80;
protected static int outputNum = 4;
public static void main(String[] args) throws Exception {
File file = new ClassPathResource("/animals/bear/Grizzly_Bear_in_Yellowstone_National_Park.jpg").getFile();
InputSplit inputSplit = new FileSplit(file);
//RecordReader recordReader = new ImageRecordReader()
//recordReader.initialize(new FileSplit(new ClassPathResource("iris.txt").getFile()));
// rotate image slightly
ImageTransform transform1 = new PipelineImageTransform(seed, false, new RotateImageTransform(null, 80, 120, 25, 1).borderMode(1), new ShowImageTransform("transformed"));
// Flip the image
ImageTransform transform2 = new PipelineImageTransform(seed, false, new FlipImageTransform(-1), new ShowImageTransform("transformed2"));
// Adjust levels and contrast
ImageTransform transform3 = new PipelineImageTransform(seed, false, new EqualizeHistTransform(), new ShowImageTransform("transformed3"));
// Warp the image
ImageTransform transform4 = new PipelineImageTransform(seed, false, new WarpImageTransform(20).borderMode(1), new ShowImageTransform("transformed4"));
// Apply multiples in order
ImageTransform transform5 = new PipelineImageTransform(seed, false, new WarpImageTransform(20).borderMode(1),new FlipImageTransform(-1), new EqualizeHistTransform(), new ShowImageTransform("transformed5"));
// Apply multiples randomize order
ImageTransform transform6 = new PipelineImageTransform(seed, true, new WarpImageTransform(20).borderMode(1),new FlipImageTransform(-1), new EqualizeHistTransform(), new ShowImageTransform("transformed6"));
//ImageTransform transform5 = new PipelineImageTransform(seed, false, new WarpImageTransform(rng,5), new ShowImageTransform("transformed4"));
ImageTransform transform7 = new PipelineImageTransform.Builder()
.addImageTransform(new WarpImageTransform(20).borderMode(1), .50)
.addImageTransform(new FlipImageTransform(-1), .30)
.addImageTransform(new EqualizeHistTransform(),.50)
.build();
RecordReader recordReader = new ImageRecordReader(172,241,3,transform1);
recordReader.initialize(inputSplit);
//RecordWriter fileRecordWriteriter= new FileRecordWriter(new File("/tmp/my_image"));
//recordWriter.write(recordReader.next()
System.out.println("### IMAGE DATA ### ");
NativeImageLoader loader = new NativeImageLoader(172,241,3);
INDArray image = loader.asMatrix(file);
System.out.println(image);
// Rotate and all the pixels are the same
NativeImageLoader loader1 = new NativeImageLoader(172, 241, 3, transform1);
INDArray image1 = loader1.asMatrix(file);
//System.out.println(image1);
// Flip Image works
NativeImageLoader loader2 = new NativeImageLoader(172, 241, 3, transform2);
INDArray image2 = loader2.asMatrix(file);
//System.out.println(image2);
//color conversion
NativeImageLoader loader3 = new NativeImageLoader(172, 241, 3, transform3);
INDArray image3 = loader3.asMatrix(file);
NativeImageLoader loader4 = new NativeImageLoader(172, 241, 3, transform4);
INDArray image4 = loader4.asMatrix(file);
NativeImageLoader loader5 = new NativeImageLoader(172, 241, 3, transform5);
INDArray image5 = loader5.asMatrix(file);
NativeImageLoader loader6 = new NativeImageLoader(172, 241, 3, transform6);
INDArray image6 = loader6.asMatrix(file);
NativeImageLoader loader7 = new NativeImageLoader(172, 241, 3, transform6);
INDArray image7 = loader7.asMatrix(file);
//System.out.println(image);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment