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.
| File | Written by | Format | Open with |
|---|---|---|---|
session.json | Save Workspace | JSON text | Lite Classify; any text editor |
segments.tif | Save Workspace | GeoTIFF, 1 band, int32, 0 = no data | QGIS, ArcGIS |
segments.gpkg | Save Workspace | GeoPackage polygons, field raster_val = segment ID | QGIS, ArcGIS |
segment_features.csv | Save Workspace | CSV, one row per segment, index raster_val; 19, 24 or (with appearance) 44 feature columns | Excel, R, Python |
deep_features.npz | Find Groups, Save Workspace | Compressed NumPy: 384 numbers per segment per patch size, plus a fingerprint of the segmentation | Lite Classify; Python |
groups.json | Save Workspace | JSON: group of every segment, names, status, settings | Lite Classify; any text editor |
classified_map.npy | Save Workspace | NumPy array, class index per pixel | Lite Classify; Python |
*_classified.tif | Export Final Classified TIF | GeoTIFF, 1 band, uint8, colour table; 0 = no data, 1… = classes in list order | QGIS, ArcGIS |
*_classified.qml | Export Final Classified TIF | QGIS layer style: class names and colours | QGIS (loads automatically beside the .tif) |
accuracy_points.gpkg | Save Points, Save Workspace, Run Accuracy Assessment | GeoPackage points: point_id, reference_class, predicted_class, source, stratum | QGIS, ArcGIS |
accuracy_report.csv | Run Accuracy Assessment | CSV: matrix, accuracies, sample size, source note; area-weighted estimates and class areas for stratified samples | Excel |
iterations/ | Run Accuracy Assessment | iterations.json plus one set of files per run | Lite 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
- File › Load Workspace (Ctrl+O): pick the workspace folder. Lite Classify reopens the recorded orthomosaic and DSM straight at the saved resolution, then restores segments, features, groups, classes, samples, the map, points and iterations.
- If files have moved, Lite Classify asks you to locate them.
- Save Workspace As copies the imagery and the workspace to a new folder, for a backup or to hand a project to someone else.
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
| Setting | Tab | Range | Default | Raise it when… | Lower it when… |
|---|---|---|---|---|---|
| Resample Scale | 1 | 5–100% | 100% | Detail is lost or objects blur together | Segments outline leaves; memory runs short; runs are slow |
| Target Resolution | 1 | native–20× native | native | Same as Resample Scale, in cm/px. Projected coordinate systems only. | |
| Object Size | 1 | 0.5–10,000 m² | 10 m² | Uniform areas are shattered into slivers | Segments mix two classes; small features have no segment of their own |
| Num Segments | 1 | 100–2,000,000 | from Object Size | Segments mix two classes; small features have no segment of their own | Uniform areas are shattered into slivers |
| Compactness | 1 | 0.01–1.00 | 0.15 | Segments are too irregular or stringy | Segments cut straight across visible edges |
| Sigma | 1 | 0–10 | 2.5 | Outlines are ragged; a grid pattern appears | Small features are smoothed away |
| Colour/texture at | 1 | native–working | working grid | Finer = texture from full detail, slower feature step. Takes effect at the next segmentation. | |
| Elevation opacity | 1 | 0–100% | 60% | Display only. | |
| Number of groups | 2 | 5–60 | 30 | Groups mix cover types | Many groups are near-duplicates |
| Typical segments per group | 2 (Send) | 1–200 | 12 | Classes need more samples | Groups are mixed: send fewer, more central ones |
| Grow Tolerance | 3 | 0–3.00 | 1.00 | Growth stops short of a uniform area | Growth leaks into different ground |
| Opacity (blend) | 3 | 0–100% | 100% | Display only. | |
| MMU (px / m²) | 3 | 0–2,000 px | 0 | The map is too speckled for its use | Small real features disappear |
| Min per Class | 4 | 1–1,000 | 50 | Per-class intervals are too wide | Labelling time is short |
| Points to Add | 4 | 1–20,000 | 200 | Overall 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
| Situation | Working grid | Object size / segments | Colour/texture at |
|---|---|---|---|
| The worked example (13.5 ha, row crops, grass strips, buildings) | 5 cm | native 2.16 cm | |
| Forest gaps and crowns, tens of hectares | 10–25 cm | Object Size 10–30 m² | native or 5 cm |
| Very large mosaics (100+ ha) | 20–25 cm | Object Size 20–50 m²; tiles | working 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 see | Why | Do this |
|---|---|---|
| The GPU option is greyed out | No CUDA-capable NVIDIA GPU was found | Use CPU. Segmentation and appearance features are slower but equivalent. |
| Not Enough Memory before resampling or segmenting | The step would not fit in free RAM | Take 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 SLIC | Usually the GPU ran out of memory | Let 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 run | In 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 segmentation | Press Find Groups to rebuild them. |
| Appearance checkbox in Discover is greyed out | PyTorch 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 active | Click a class in the list, then click objects. |
| Clicks select in cyan instead of labelling | Selection Mode is on | Click Selection Mode: ON to turn it off. |
Training Error: Select samples for at least two classes first. | Fewer than two classes have samples | Add samples to at least two classes. |
Classification Error: Train the classifier model first. | Classify before Train, or after a new segmentation | Click Train Classifier first. |
| Training samples vanished | A resample or new segmentation cleared them | Expected. Resample and segment first, then label. Save the workspace before experimenting. |
| Separability shows 2.00 for every pair | Many features, few samples: the distance saturates | Read the closest-pair order and the per-feature plot; add samples (Part B, 5.7). |
A stratified sample already exists… | One stratified sample per map | Label and use the existing one, or delete its points before drawing anew. |
| CSV import stops listing class names | Class names in the CSV don't match Tab 3 exactly | Fix spelling and capitalisation, or rename the class. |
… points are still unassigned — they'll be excluded from this run | Some reference points have no label | Label them, delete the ones you cannot judge, or accept the smaller sample. |
| Exported GeoTIFF disagrees with the app's map | The map was retrained after the last export | Export again. |
WebODM was not found on this PC, or Cannot reach WebODM at … Is it running? | WebODM is not running, or runs at another address | Start WebODM and press Find, or type its address under Connection (Part C, 6.1). |
WebODM did not accept this username and password. | Wrong WebODM login | Use the account you log in to WebODM with. |
WebODM has no processing node online… | WebODM's processing engine has not started, or stopped | Open 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 EXIF | The 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 for | The 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 up | Jobs or upload files left behind by cancelled or failed runs | Click Clean Up WebODM… in the WebODM window. |
14Known limits
- RGB only. There is no near-infrared band, so no NDVI. Visible-light indices, texture, height and learned appearance do that job.
- One scene at a time. A model trained on one flight is not automatically valid for another; light and season change colours. Retrain per flight.
- Linear and tiny features. Features only a few segments wide (ditches, footpaths, grass rows) are under-mapped at a coarse grid. For two classes told apart by greenness, the greenness refinement recovers them pixel by pixel.
- Segmentation is parameter- and engine-sensitive. Record the values and engine (saved in
session.json) and report the realised segment count. GPU runs are not bit-for-bit repeatable. - Height above ground under closed canopy. The DSM-only ground estimate rides up under canopy wider than 40 m, so heights there are underestimated.
- Separability is estimated from the training samples, cross-validated since v1.2; it ranks risks rather than proving separability.
- Photo-interpreted reference is not ground truth. Report it as reference data.
15Glossary
| Adjacency graph | The list of which segments share a border. Used by the grow tool, merging and the neighbour features. |
|---|---|
| Area-weighted estimate | An accuracy or area figure in which each stratum counts by its share of the mapped area, not its share of points. |
| CIELAB | A colour space in which equal distances look like equal colour differences. SLIC clusters in it. |
| CNN | Convolutional neural network: an image model built from stacked sliding filters. Lite Classify does not use one; DINOv2 is a vision transformer. |
| Confusion matrix | A table of map class (rows) against reference class (columns) for a set of points. Also called an error matrix. |
| DINOv2 | A vision transformer from Meta AI trained without labels. Lite Classify uses it frozen to describe each object's appearance. |
| DINOv3 | DINOv2'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). |
| DSM | Digital Surface Model: height of the top surface, including trees and roofs. Not the bare ground. |
| Embedding | A list of numbers describing an image patch, arranged so that similar-looking patches get similar numbers. |
| Feature | One measured property of a segment, such as mean green or slope. Lite Classify uses 19, 24 with a DSM, 44 with appearance. |
| GLCM | Grey-level co-occurrence matrix: a tally of how often grey levels sit next to each other. The source of the texture features. |
| GSD | Ground sample distance: the ground width of one pixel, e.g. 2.16 cm. |
| Height above ground | DSM height minus a ground surface estimated from the DSM. |
| JM distance | Jeffries–Matusita distance: how separable two classes' samples are, from 0 (identical) to 2 (distinct). |
| k-means | A clustering method that splits items into k groups around their means. Used by Discover (and, locally, by SLIC). |
| MMU | Minimum 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. |
| Orthomosaic | A geometrically corrected mosaic of drone photos, with map coordinates. |
| Overall accuracy | Share of the map labelled correctly, estimated from the reference sample. |
| PCA | Principal component analysis: compresses many correlated numbers into a few that keep most of their variation. |
| Producer's accuracy | For one class: share of its real area the map found. Measures omission. |
| Random Forest | A classifier made of many decision trees, each trained on a random resample, that vote. |
| Reference data | Labels used to check a map. Photo-interpreted reference is distinct from field-verified ground truth. |
| Segment / object | A connected group of similar pixels produced by segmentation. The unit Lite Classify classifies. |
| Sieve | A filter that absorbs patches below a size into their surroundings. |
| SLIC | Simple Linear Iterative Clustering: the segmentation algorithm Lite Classify uses. |
| Stratified sample | Points drawn separately within each stratum (here, each map class) so small classes get enough points. |
| Training sample | A segment you labelled to teach the classifier. |
| User's accuracy | For 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. |
| WebODM | Free, 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
- Achanta, R., et al. (2012). SLIC superpixels compared to state-of-the-art superpixel methods. IEEE TPAMI, 34(11), 2274–2282. doi:10.1109/TPAMI.2012.120
- Belgiu, M., & Drăguţ, L. (2016). Random forest in remote sensing: A review of applications and future directions. ISPRS J. Photogramm. Remote Sens., 114, 24–31. doi:10.1016/j.isprsjprs.2016.01.011
- Blaschke, T. (2010). Object based image analysis for remote sensing. ISPRS J. Photogramm. Remote Sens., 65(1), 2–16. doi:10.1016/j.isprsjprs.2009.06.004
- Breiman, L. (2001). Random forests. Machine Learning, 45(1), 5–32. doi:10.1023/A:1010933404324
- Congalton, R. G., & Green, K. (2019). Assessing the accuracy of remotely sensed data: Principles and practices (3rd ed.). CRC Press.
- Dosovitskiy, A., et al. (2021). An image is worth 16×16 words: Transformers for image recognition at scale. ICLR. arXiv:2010.11929
- Gitelson, A. A., et al. (2002). Novel algorithms for remote estimation of vegetation fraction. Remote Sens. Environ., 80(1), 76–87. doi:10.1016/S0034-4257(01)00289-9
- Haralick, R. M., Shanmugam, K., & Dinstein, I. (1973). Textural features for image classification. IEEE Trans. SMC, 3(6), 610–621. doi:10.1109/TSMC.1973.4309314
- Hunt, E. R., et al. (2005). Evaluation of digital photography from model aircraft for remote sensing of crop biomass and nitrogen status. Precision Agriculture, 6(4), 359–378. doi:10.1007/s11119-005-2324-5
- Ledoit, O., & Wolf, M. (2004). A well-conditioned estimator for large-dimensional covariance matrices. J. Multivariate Anal., 88(2), 365–411.
- Olofsson, P., et al. (2014). Good practices for estimating area and assessing accuracy of land change. Remote Sens. Environ., 148, 42–57. doi:10.1016/j.rse.2014.02.015
- Oquab, M., et al. (2024). DINOv2: Learning robust visual features without supervision. Transactions on Machine Learning Research. arXiv:2304.07193
- Siméoni, O., et al. (2025). DINOv3. arXiv:2508.10104
- Pontius, R. G., Jr., & Millones, M. (2011). Death to Kappa. Int. J. Remote Sens., 32(15), 4407–4429. doi:10.1080/01431161.2011.552923
- Stehman, S. V. (2014). Estimating area and map accuracy for stratified random sampling when the strata are different from the map classes. Int. J. Remote Sens., 35(13), 4923–4939. doi:10.1080/01431161.2014.930207
- Woebbecke, D. M., et al. (1995). Color indices for weed identification under various soil, residue, and lighting conditions. Trans. ASAE, 38(1), 259–269. doi:10.13031/2013.27838
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:
- You may use it for any purpose, including paid work, and the maps you make with it are yours.
- You may study, change and share it. If you distribute it or a program built on it, you must release that program's source under the same licence.
- Modified versions must keep the credit "Based on Lite Classify by L. D. Barua (LeoBar)" in their About screen and documentation, must be marked as modified, and must use a different name.
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.