This task has been depricated and renamed to TrainTensorFlowPixelModel.
This task trains a mask-based TensorFlow model. The model can be untrained or previously trained.
This task is part of ENVI Deep Learning, which requires a separate license and installation.
Example
Sample data files are available on our ENVI Tutorials web page. Click the "Deep Learning" link in the ENVI Tutorial Data section to download a .zip file containing the data. Extract the contents to a local directory. Files are located in the tornado directory.
This example builds label rasters from four input rasters and ROIs. It trains a deep learning model using three of the label rasters as training rasters and one as a validation raster. Follow these steps:
- Copy and paste the code below into a new file in the IDL Editor.
- Change the Path variable to the directory on your computer that contains the tutorial data.
- Save the file as TrainTensorFlowMaskModelExample.pro.
- Compile and run the program.
e = ENVI()
LabelRasterList = List()
Path = 'C:\MyTutorialFiles\'
FOR i = 1,4 DO BEGIN
File = Path + 'TrainingRaster' + StrTrim(i,2) + '.dat'
Raster = e.OpenRaster(File)
ROIFile = Path + 'TrainingRaster' + StrTrim(i,2) + 'ROIs.xml'
ROI = e.OpenROI(ROIFile)
LabelTask = ENVITask('BuildLabelRasterFromROI')
LabelTask.INPUT_RASTER = Raster
LabelTask.INPUT_ROI = ROI
LabelTask.CLASS_NAMES = ['Roof Damage', $
'Structural Damage', 'Rubble', 'Blue Tarps']
LabelTask.Execute
LabelRasterList.Add, LabelTask.OUTPUT_RASTER
ENDFOR
LabelRasters = LabelRasterList.ToArray()
TrainingRasters = LabelRasters[0:2]
ValidationRasters = LabelRasters[3]
Task = ENVITask('TrainTensorFlowMaskModel')
Task.TRAINING_RASTERS = TrainingRasters
Task.VALIDATION_RASTERS = ValidationRasters
Task.BLUR_DISTANCE = [1,10]
Task.CLASS_WEIGHT = [0,2]
Task.EPOCHS = 20
Task.PATCH_SAMPLING_RATE = 16
Task.SOLID_DISTANCE = [0]
Task.LOSS_WEIGHT = 0.8
Task.Execute
Print, Task.OUTPUT_MODEL, /IMPLIED_PRINT
END
Syntax
Result = ENVITask('TrainTensorFlowMaskModel')
Input properties (Set, Get): AUGMENT_ROTATION, AUGMENT_SCALE, BLUR_DISTANCE, CLASS_NAMES, CLASS_WEIGHT, EPOCHS, INPUT_MODEL, LOSS_WEIGHT, OUTPUT_LAST_MODEL_URI, OUTPUT_MODEL_URI, PATCH_SAMPLING_RATE, PATCHES_PER_BATCH, PATCHES_PER_EPOCH, SOLID_DISTANCE, TRAINING_RASTERS, VALIDATION_RASTERS
Output properties (Get only): COMPLETED_EPOCHS, OUTPUT_LAST_MODEL, OUTPUT_MODEL, VALIDATION_F1, VALIDATION_LOSS, VALIDATION_PRECISION, VALIDATION_RECALL
Properties marked as "Set" are those that you can set to specific values. You can also retrieve their current values any time. Properties marked as "Get" are those whose values you can retrieve but not set.
Methods
This task inherits the following methods from ENVITask. See the ENVITask topic in ENVI Help.
- AddParameter
- Execute
- Parameter
- ParameterNames
- RemoveParameters
Properties
This task inherits the following properties from ENVITask:
COMMUTE_ON_DOWNSAMPLE
COMMUTE_ON_SUBSET
DESCRIPTION
DISPLAY_NAME
NAME
REVISION
See the ENVITask topic in ENVI Help for details.
This task also contains the following properties:
AUGMENT_ROTATION (optional)
Specify whether to rotate training inputs during data augmentation. See Data Augmentation.
AUGMENT_SCALE (optional)
Specify whether to scale training inputs during data augmentation. See Data Augmentation.
BLUR_DISTANCE (optional)
Specify a [2, *] double-precision array with the minimum and maximum distance in pixels to expand feature (non-background) areas beyond the solid distance expansion. The area expanded is blurred, diminishing from the edges of the feature areas to the blur distance. The maximum blur distance is used at the beginning of training and decreased to the minimum blur distance at the end of training. If not set, the value will be read from INPUT_MODEL if it was previously trained; otherwise, the value will default to [10.0,0.0]. The number of elements in the array should be twice the number of classes in CLASS_NAMES. If you specify only one set of minimum and maximum distance values, those values will be used for all classes associated with CLASS_NAMES.
CLASS_NAMES (optional)
Specify a string array with the list of class names the model will be trained to find. Training and validation rasters will be checked for consistency against this list.
CLASS_WEIGHT (optional)
Specify a double-precision array with the minimum and maximum weights for having a more even balance of classes (including background) during patch selection. Balancing of patch selection is weighted by the maximum value at the beginning of training and decreased to the minimum value at the end of training. In general, set the maximum higher for sparser training sets. The useful range for the maximum value is between 0.0 and 3.0. If not set, the value will be read from INPUT_MODEL if it was previously trained; otherwise, the value will default to [2.0,0.0].
COMPLETED_EPOCHS
This is the number of training epochs completed by this task.
EPOCHS (optional)
An epoch is a full pass of the entire training dataset through the algorithm's learning process. Specify the number of Epochs to run. Training inputs are adjusted at the end of each epoch.
INPUT_MODEL (required)
Specify the mask-based ENVITensorFlowModel to be trained. The model can be untrained or previously trained.
LOSS_WEIGHT (optional)
Specify the weight of feature (non-background) pixels when calculating how well the model is fitting the training data. The useful range is between 0.0 and 3.0. If not set, the value will be read from INPUT_MODEL if it was previously trained; otherwise, the value will default to 1.0.
OUTPUT_LAST_MODEL
This is a reference to the last trained ENVITensorFlowModel.
OUTPUT_LAST_MODEL_URI (optional)
Specify a string with the fully qualified filename and path of the output HDF5 file that will contain the trained model from the last epoch.
OUTPUT_MODEL
This is the ENVITensorFlowModel extracted from the URI.
OUTPUT_MODEL_URI (optional)
Specify a string with the fully qualified filename and path of the output HDF5 file that will contain the best trained model according to validation loss.
PATCH_SAMPLING_RATE (optional)
Specify the average number of patches that each pixel in TRAINING_RASTERS and VALIDATION_RASTERS will belong to. The default value is 16.
PATCHES_PER_BATCH (optional)
Specify the number of patches to run per batch. A batch comprises one iteration of training; model parameters are adjusted at the end of each iteration. Batches are run in an epoch until the number of patches per epoch is met or exceeded. If you do not specify a value, ENVI will automatically determine a suitable value.
PATCHES_PER_EPOCH (optional)
Specify the number of training patches to use per epoch. If you do not specify a value, ENVI will automatically determine a suitable value.
SOLID_DISTANCE (optional)
Specify a double-precision array with the distance in pixels to expand feature (non-background) areas. SOLID_DISTANCE is typically used for point or line inputs. If not set, the value will be read from INPUT_MODEL if it was previously trained; otherwise, the value will default to 0.0. The number of elements in the array should match the number of classes in CLASS_NAMES. If you only specify one distance value, that value will be used for all classes associated with CLASS_NAMES.
TRAINING_RASTERS (required)
Specify one or more rasters to use to train INPUT_MODEL.
VALIDATION_F1
This is the validation F1 of the output model.
VALIDATION_LOSS
This is an array containing the validation loss of the output model for each epoch.
VALIDATION_PRECISION
This is the validation precision of the output model.
VALIDATION_RECALL
This is the validation recall of the output model.
VALIDATION_RASTERS (required)
Specify one or more rasters to use to validate INPUT_MODEL after each epoch.
Version History
Deep Learning 1.0
|
Introduced |
Deep Learning 1.1
|
Added CLASS_NAMES, OUTPUT_LAST_MODEL, and OUTPUT_LAST_MODEL_URI properties.
Modified BLUR_DISTANCE and SOLID_DISTANCE properties to accept multi-dimensional arrays.
Modified PATCHES_PER_EPOCH property to accept no input, in which case ENVI will automatically determine a suitable value.
|
Deep Learning 1.2
|
Added AUGMENT_ROTATION and AUGMENT_SCALE properties.
|
Deep Learning 3.0 |
Depricated |