Lite Classify · free and open source (GPL-3.0) · Windows 10/11 (64-bit) · NVIDIA GPU optional

Source on GitHub · Inquiries: ldbarua@gmail.com · or DM on Facebook

Download
Lite Classify Manual

Part D · Reference

Reference

Files Lite Classify writes, every adjustable setting, what the console's messages mean, the terms used in this manual, and how to cite and reuse Lite Classify.

11Workspaces, outputs and file formats

The workspace folder

Each orthomosaic gets its own workspace folder, named after the image and placed beside it. Everything is in open formats, so a session can be audited or continued in any GIS.

survey/ ├── CAFS_Ortho.tif ├── CAFS_DSM.tif └── CAFS_Ortho_workspace/ ├── session.json settings, file paths, classes, training samples, strata ├── segments.tif segment ID of every pixel ├── segments.gpkg segment polygons ├── segment_features.csv every feature of every segment ├── deep_features.npz appearance per segment (records its backbone) ├── groups.json Discover groups, names, edits ├── classified_map.npy current classification, before the sieve ├── class_separability.png last separability check ├── CAFS_classified.tif exported map ├── CAFS_classified.qml QGIS style for the exported map ├── accuracy_points.gpkg reference points and their labels ├── accuracy_report.csv error matrix, accuracies, area estimates ├── accuracy_matrix.png the matrix as a figure └── iterations/ one snapshot per assessment run
FileWritten byFormatOpen with
session.jsonSave WorkspaceJSON textLite Classify; any text editor
segments.tifSave WorkspaceGeoTIFF, 1 band, int32, 0 = no dataQGIS, ArcGIS
segments.gpkgSave WorkspaceGeoPackage polygons, field raster_val = segment IDQGIS, ArcGIS
segment_features.csvSave WorkspaceCSV, one row per segment, index raster_val; 19, 24 or (with appearance) 44 feature columnsExcel, R, Python
deep_features.npzFind Groups, Save WorkspaceCompressed NumPy: 384 numbers per segment per patch size, plus a fingerprint of the segmentationLite Classify; Python
groups.jsonSave WorkspaceJSON: group of every segment, names, status, settingsLite Classify; any text editor
classified_map.npySave WorkspaceNumPy array, class index per pixelLite Classify; Python
*_classified.tifExport Final Classified TIFGeoTIFF, 1 band, uint8, colour table; 0 = no data, 1… = classes in list orderQGIS, ArcGIS
*_classified.qmlExport Final Classified TIFQGIS layer style: class names and coloursQGIS (loads automatically beside the .tif)
accuracy_points.gpkgSave Points, Save Workspace, Run Accuracy AssessmentGeoPackage points: point_id, reference_class, predicted_class, source, stratumQGIS, ArcGIS
accuracy_report.csvRun Accuracy AssessmentCSV: matrix, accuracies, sample size, source note; area-weighted estimates and class areas for stratified samplesExcel
iterations/Run Accuracy Assessmentiterations.json plus one set of files per runLite Classify

Appearance features and groups carry a fingerprint of the segmentation that produced them; Lite Classify never applies them to a different segmentation.

Reopening a workspace

Reset and Return to Loading on Tab 4 clears the session in memory and returns to Tab 1. It does not delete anything on disk.

12Parameter guide

SettingTabRangeDefaultRaise it when…Lower it when…
Resample Scale15–100%100%Detail is lost or objects blur togetherSegments outline leaves; memory runs short; runs are slow
Target Resolution1native–20× nativenativeSame as Resample Scale, in cm/px. Projected coordinate systems only.
Object Size10.5–10,000 m²10 m²Uniform areas are shattered into sliversSegments mix two classes; small features have no segment of their own
Num Segments1100–2,000,000from Object SizeSegments mix two classes; small features have no segment of their ownUniform areas are shattered into slivers
Compactness10.01–1.000.15Segments are too irregular or stringySegments cut straight across visible edges
Sigma10–102.5Outlines are ragged; a grid pattern appearsSmall features are smoothed away
Colour/texture at1native–workingworking gridFiner = texture from full detail, slower feature step. Takes effect at the next segmentation.
Elevation opacity10–100%60%Display only.
Number of groups25–6030Groups mix cover typesMany groups are near-duplicates
Typical segments per group2 (Send)1–20012Classes need more samplesGroups are mixed: send fewer, more central ones
Grow Tolerance30–3.001.00Growth stops short of a uniform areaGrowth leaks into different ground
Opacity (blend)30–100%100%Display only.
MMU (px / m²)30–2,000 px0The map is too speckled for its useSmall real features disappear
Min per Class41–1,00050Per-class intervals are too wideLabelling time is short
Points to Add41–20,000200Overall interval too wide; rare classes under ~30 points—

Fixed settings

Random Forest: 100 trees, scikit-learn defaults otherwise, fixed seed (42). DINOv2: ViT-S/14, frozen (DINOv3 ViT-S+/16 when chosen, CLS token); patches of 5 m and 10 m resized to 224 px; 32 principal components per patch size for Discover, 10 for the classifier. Height above ground: ground from a 40 m opening of the DSM at ~1 m. GLCM: 15 grey levels, distance 1, four directions.

Starting values

SituationWorking gridObject size / segmentsColour/texture at
The worked example (13.5 ha, row crops, grass strips, buildings)5 cmnative 2.16 cm
Forest gaps and crowns, tens of hectares10–25 cmObject Size 10–30 m²native or 5 cm
Very large mosaics (100+ ha)20–25 cmObject Size 20–50 m²; tilesworking grid

Judge each segmentation by eye (Part C, 7). Match the working grid to the narrowest thing you must map, not to the dominant class.

13Troubleshooting

Most problems announce themselves in the console. Search this table for the message you see.

You seeWhyDo this
The GPU option is greyed outNo CUDA-capable NVIDIA GPU was foundUse CPU. Segmentation and appearance features are slower but equivalent.
Not Enough Memory before resampling or segmentingThe step would not fit in free RAMTake the suggested resolution, close other programs, or accept tiling. Keep colour/texture fine with Colour/texture at.
GPU SLIC failed (…). Falling back to traditional CPU SLICUsually the GPU ran out of memoryLet the CPU run finish, or resample coarser and segment again on GPU.
Deep appearance features are not computed for this segmentation yet…Use deep appearance features is ticked but Find Groups has not runIn Discover, tick Appearance and press Find Groups once, or untick the option.
Saved groups belong to a different segmentation…Groups were made on an earlier segmentationPress Find Groups to rebuild them.
Appearance checkbox in Discover is greyed outPyTorch is not available (source installs)Install the packages in requirements.txt.
Please select a target class from the list panel before collecting samples.No class is activeClick a class in the list, then click objects.
Clicks select in cyan instead of labellingSelection Mode is onClick Selection Mode: ON to turn it off.
Training Error: Select samples for at least two classes first.Fewer than two classes have samplesAdd samples to at least two classes.
Classification Error: Train the classifier model first.Classify before Train, or after a new segmentationClick Train Classifier first.
Training samples vanishedA resample or new segmentation cleared themExpected. Resample and segment first, then label. Save the workspace before experimenting.
Separability shows 2.00 for every pairMany features, few samples: the distance saturatesRead the closest-pair order and the per-feature plot; add samples (Part B, 5.7).
A stratified sample already exists…One stratified sample per mapLabel and use the existing one, or delete its points before drawing anew.
CSV import stops listing class namesClass names in the CSV don't match Tab 3 exactlyFix spelling and capitalisation, or rename the class.
… points are still unassigned — they'll be excluded from this runSome reference points have no labelLabel them, delete the ones you cannot judge, or accept the smaller sample.
Exported GeoTIFF disagrees with the app's mapThe map was retrained after the last exportExport again.
WebODM was not found on this PC, or Cannot reach WebODM at … Is it running?WebODM is not running, or runs at another addressStart WebODM and press Find, or type its address under Connection (Part C, 6.1).
WebODM did not accept this username and password.Wrong WebODM loginUse the account you log in to WebODM with.
WebODM has no processing node online…WebODM's processing engine has not started, or stoppedOpen WebODM's Processing Nodes page and wait for, or restart, the node.
These photos have no GPS positions; all of them will be used.The photos carry no GPS tags in their EXIFThe area map cannot be used; the whole folder is processed.
The downloaded files did not pass the checks…The DSM or orthomosaic WebODM made is not what was asked forThe job is kept in WebODM: read the message and the WebODM log, then remove the job with Clean Up WebODM….
WebODM's disk keeps filling upJobs or upload files left behind by cancelled or failed runsClick Clean Up WebODM… in the WebODM window.

14Known limits

15Glossary

Adjacency graphThe list of which segments share a border. Used by the grow tool, merging and the neighbour features.
Area-weighted estimateAn accuracy or area figure in which each stratum counts by its share of the mapped area, not its share of points.
CIELABA colour space in which equal distances look like equal colour differences. SLIC clusters in it.
CNNConvolutional neural network: an image model built from stacked sliding filters. Lite Classify does not use one; DINOv2 is a vision transformer.
Confusion matrixA table of map class (rows) against reference class (columns) for a set of points. Also called an error matrix.
DINOv2A vision transformer from Meta AI trained without labels. Lite Classify uses it frozen to describe each object's appearance.
DINOv3DINOv2's successor from Meta AI. Under Meta's DINOv3 License, not an open-source one, so it isn't included; Lite Classify can use a copy you download yourself (experimental).
DSMDigital Surface Model: height of the top surface, including trees and roofs. Not the bare ground.
EmbeddingA list of numbers describing an image patch, arranged so that similar-looking patches get similar numbers.
FeatureOne measured property of a segment, such as mean green or slope. Lite Classify uses 19, 24 with a DSM, 44 with appearance.
GLCMGrey-level co-occurrence matrix: a tally of how often grey levels sit next to each other. The source of the texture features.
GSDGround sample distance: the ground width of one pixel, e.g. 2.16 cm.
Height above groundDSM height minus a ground surface estimated from the DSM.
JM distanceJeffries–Matusita distance: how separable two classes' samples are, from 0 (identical) to 2 (distinct).
k-meansA clustering method that splits items into k groups around their means. Used by Discover (and, locally, by SLIC).
MMUMinimum mapping unit: the smallest patch the map keeps. Set by the sieve.
OBIA / GEOBIA(Geographic) object-based image analysis: classifying groups of pixels (objects) rather than single pixels.
OrthomosaicA geometrically corrected mosaic of drone photos, with map coordinates.
Overall accuracyShare of the map labelled correctly, estimated from the reference sample.
PCAPrincipal component analysis: compresses many correlated numbers into a few that keep most of their variation.
Producer's accuracyFor one class: share of its real area the map found. Measures omission.
Random ForestA classifier made of many decision trees, each trained on a random resample, that vote.
Reference dataLabels used to check a map. Photo-interpreted reference is distinct from field-verified ground truth.
Segment / objectA connected group of similar pixels produced by segmentation. The unit Lite Classify classifies.
SieveA filter that absorbs patches below a size into their surroundings.
SLICSimple Linear Iterative Clustering: the segmentation algorithm Lite Classify uses.
Stratified samplePoints drawn separately within each stratum (here, each map class) so small classes get enough points.
Training sampleA segment you labelled to teach the classifier.
User's accuracyFor one class: share of what the map calls that class that really is it. Measures commission.
Vision transformer (ViT)An image model that cuts a picture into tiles and relates every tile to every other with attention.
WebODMFree, open-source photogrammetry software from OpenDroneMap that turns drone photos into orthomosaics and surface models. Lite Classify can send it photos; it is installed separately.

16References

The figures and every number in this manual are rebuilt by docs/manual/tools/build_figures_cafs.py from the worked example's workspace. See docs/manual/tools/README.md.

17Licence and citation

Lite Classify is free software under the GNU General Public License, version 3, with additional attribution terms (LICENSE and NOTICE.md in the source repository). In short:

For other terms, such as building Lite Classify into a closed-source product, or for custom development and training, contact ldbarua@gmail.com.

If you publish maps, data or papers made with Lite Classify, please cite the version you used:

Barua, L. D. (2026). Lite Classify (Version 1.2) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.23877519

To cite all versions, use the concept DOI 10.5281/zenodo.23462352. A paper describing Lite Classify is in preparation; its citation will be added here when it is published.

Lite Classify includes the DINOv2 backbone code and pretrained weights by Meta Platforms, Inc., under the Apache License 2.0. It does not include DINOv3: the optional DINOv3 backbone runs on timm's model code (Apache 2.0) with weights each user downloads from Meta under Meta's DINOv3 License.