Package for Paper DEVISE : Depth-Aware Vegetation Indexing System
Project description
DEVISE - Depth-Aware Vegetation Indexing System
DEVISE (Depth-Aware Vegetation Indexing System) is a comprehensive Python package for vegetation analysis that combines semantic segmentation with depth estimation to provide accurate vegetation indexing. The system leverages state-of-the-art deep learning models to identify and quantify vegetation coverage in images while incorporating depth information for enhanced analysis. Applied to 1,441,746 panoramas collected every 20 m along the road networks of 60 U.S. swing counties (2004-2024), DEVISE produces the first county-month panel of street-level greenness spanning two decades.
Research Paper
This package implements the methodology described in our research paper: "DEVISE: Depth-Aware Vegetation Indexing System"
Examples
Below are sample images processed using the DEVISE system:
Test Sample 1
Test Sample 2
Test Sample 4
Test Sample 5
Test Sample 6
Test Sample 7
Test Sample 8
Installation
# Clone the repository
git clone https://github.com/NNyarlathotep/DEVISE.git
cd devise-pkg
# Install the package
pip install -e .
Quick Start
Complete Pipeline with Depth Analysis
import devise
# Run the complete DEVISE pipeline
devise.run_complete_pipeline(
raw_folder="raw_images", # Input images
resized_folder="resized", # Preprocessed images
mask_folder="masks", # Segmentation masks
depth_mask_folder="depth_masks", # Depth data (.npy files)
depth_image_folder="depth_images", # Depth visualizations
result_folder="results", # Final combined results
gvi_db_path="gvi.db", # GVI database
depth_db_path="depth_gvi.db" # Depth-weighted GVI database
)
Quick Analysis Without Depth
import devise
# For faster processing without depth analysis
devise.quick_vegetation_analysis(
raw_folder="raw_images",
output_folder="output",
db_path="results.db"
)
Individual Module Usage
import devise
# Step-by-step processing with new function names
# 1. Vegetation segmentation and GVI calculation
devise.run_vegetation_analysis_pipeline(
"raw_images", "resized", "masks", "gvi.db"
)
# 2. Depth map generation
devise.generate_depth_maps_batch(
"resized", "depth_masks", "depth_images"
)
# 3. Depth-weighted GVI calculation
devise.compute_depth_weighted_gvi_batch(
"masks", "depth_masks", "depth_gvi.db"
)
# 4. Generate visualization overlays
devise.generate_visualization_batch(
"resized", "masks", "results"
)
Advanced Usage
import devise
import numpy as np
# Process a single image with custom parameters
devise.create_vegetation_overlay(
image_path="image.jpg",
mask_npy_path="mask.npy",
output_path="result.jpg",
alpha=0.6 # Adjust transparency
)
# Estimate depth for a single image
devise.estimate_depth_for_image(
image_path="image.jpg",
depth_npy_output_path="depth.npy",
depth_vis_output_path="depth_vis.jpg"
)
# Calculate depth-weighted GVI for custom data
mask = np.load("vegetation_mask.npy")
depth = np.load("depth_map.npy")
tree_gvi = devise.calculate_depth_weighted_gvi(mask[:,:,0], depth)
grass_gvi = devise.calculate_depth_weighted_gvi(mask[:,:,1], depth)
plant_gvi = devise.calculate_depth_weighted_gvi(mask[:,:,2], depth)
# Database operations
conn = devise.initialize_gvi_database("custom.db")
devise.save_gvi_to_database(conn, "image_001", 0.65, 0.23, 0.12, 1.0)
conn.close()
API Reference
Main Pipeline Functions
run_complete_pipeline(...)- Execute full DEVISE workflow with depth analysisquick_vegetation_analysis(...)- Fast vegetation analysis without depthrun_vegetation_analysis_pipeline(...)- Segmentation and GVI calculationgenerate_depth_maps_batch(...)- Batch depth estimationcompute_depth_weighted_gvi_batch(...)- Batch depth-weighted GVIgenerate_visualization_batch(...)- Batch visualization generation
Core Analysis Functions
segment_vegetation_and_calculate_gvi(...)- Segment single image and compute GVIcompute_vegetation_indices(...)- Calculate GVI from maskcalculate_depth_weighted_gvi(...)- Compute depth-weighted GVIcreate_vegetation_overlay(...)- Create visualization overlay
Image Processing Functions
preprocess_image(...)- Remove borders and resize imageapply_vegetation_color_filter(...)- Apply HSV filteringestimate_depth_for_image(...)- Estimate depth for single image
Database Functions
initialize_gvi_database(...)- Create/connect to GVI databasesave_gvi_to_database(...)- Save GVI results to databaseinit_depth_gvi_db(...)- Initialize depth-weighted GVI databasesave_depth_gvi_results(...)- Save depth GVI results
Package Structure
devise/
├── combine.py # Image overlay and visualization generation
├── depth.py # Monocular depth estimation using DPT
├── depth_combine.py # Depth-weighted GVI calculation
├── pipeline.py # Main segmentation and GVI pipeline
├── print_gvi.py # Database query utilities for standard GVI
├── print_gvi_with_depth.py # Database query utilities for depth GVI
└── __init__.py # Package entry point with convenience functions
Models Used
- Segmentation:
facebook/mask2former-swin-large-ade-semantic - Depth Estimation:
Intel/dpt-large
Both models are automatically downloaded from Hugging Face Hub on first use.
Output Format
Database Schema
The system stores results in SQLite databases with the following structure:
CREATE TABLE gvi (
image_id TEXT PRIMARY KEY,
tree_gvi REAL, -- Green Vegetation Index for trees
grass_gvi REAL, -- Green Vegetation Index for grass
plant_gvi REAL, -- Green Vegetation Index for plants
total_gvi REAL -- Combined vegetation index
);
File Outputs
- Segmentation masks:
.npyfiles with per-pixel class predictions (3 channels: trees, grass, plants) - Depth maps:
.npyfiles with normalized depth values [0, 1] - Visualizations:
.jpgoverlay images showing segmentation results - Databases:
.dbfiles with GVI measurements
Requirements
- Python 3.12+
- PyTorch 1.9+
- Transformers 4.15+
- OpenCV 4.5+
- NumPy 1.21+
- Pillow 8.0+
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Cantay Caliskan Email: ccaliska@ur.rochester.edu
Zhizhuang Chen
Email: zchen141@u.rochester.edu
Junjie Zhao Email: jzhao58@u.rochester.edu
Linglan Yang Email: lyang49@u.rochester.edu
Mingzhen Zhang Email: mzhang96@u.rochester.edu
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devise_greenness-1.0.3.tar.gz.
File metadata
- Download URL: devise_greenness-1.0.3.tar.gz
- Upload date:
- Size: 4.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff8fc62d6858dac1d854284ab58c2eea60af424ba306b3a3ec1e4c21fa2e2a57
|
|
| MD5 |
9d5bca88ffe56c486d719f2eeccad8b6
|
|
| BLAKE2b-256 |
114eae8856f54c0b63839c93b6be3df99ef4bf529e9b846006d40789485840ae
|
File details
Details for the file devise_greenness-1.0.3-py3-none-any.whl.
File metadata
- Download URL: devise_greenness-1.0.3-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f56c506749067c2e57b7ce816e774af314121ddbaa978e482083e1a82a3032f
|
|
| MD5 |
a5072162674260c26f927d792aa26908
|
|
| BLAKE2b-256 |
4fa1ff3a4b8a1922d52981cd44e1f1a6d4283dcecd4364dcc1cf5814ea3fafb3
|