Created
October 2, 2017 04:55
-
-
Save tomthetrainer/cf2373ae1e2d6cca7715934e22f53527 to your computer and use it in GitHub Desktop.
DataVec Image Pipeline demo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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