This study presents a signal-to-image classification approach for analyzing plant bioelectrical responses under varying irrigation conditions. The proposed framework, SIGNET aims to enhance physiological interpretation and multi-class prediction performance in controlled environment agriculture.
- Modular Architecture: Three independent Python modules
- Signal Preprocessing: Automated outlier detection and cleaning
- Multi-Modal Encoding: MTF, GAF, RP time-series to image conversion
- Deep Learning: Multi-modal CNN based backbone
- Easy Execution: Single command pipeline with built-in configuration
pip install torch torchvision pandas numpy matplotlib scikit-learn Pillow tqdm scipy
git clone https://github.com//ISW-LAB/SIGNET.git
cd SIGNET- Update data paths in
main_pipeline.py:
SIGNAL_FILE_PATHS = [
"data/morning.csv",
"data/noon.csv",
"data/evening.csv"
]- Run pipeline:
python main_pipeline.pysignet/
├── signal_preprocessing.py # Signal cleaning
├── signal_to_image.py # MTF/GAF/RP conversion
├── deep_learning_model.py # Multi-modal CNN
├── main_pipeline.py # Main execution
└── quick_start.py # Simple test run
- Signal Preprocessing: Outlier detection and cleaning
- Image Encoding: MTF, GAF, RP time-series to image conversion
- Multi-Modal CNN: 6 modalities → CNN_based backbone → 3-class output
- One-Command Execution: Complete pipeline in single run
CSV files should contain:
irrigated_1,irrigated_2,irrigated_3
2.45,2.37,2.41
2.46,2.38,2.42
...Edit SIGNETConfig in main_pipeline.py:
PREPROCESSING = {
'initial_trim': 1000, # Remove first N samples
'target_samples': 25000, # Signal length
'iqr_multiplier': 2.0 # Outlier threshold
}
IMAGE_CONVERSION = {
'window_size': 64, # Window size
'stride': 32, # Window step
'save_format': SaveFormat.PNG
}
TRAINING = {
'num_epochs': 30,
'batch_size': 32,
'learning_rate': 0.001
}Raw Signals → Preprocessing → MTF/GAF/RP Images → Multi-Modal CNN → 3 Classes
- Input: 6 modalities (MTF, GAF, RP × original/scaled)
- Backbone: Custom CNN based Backbone
- Output: irrigated_1, irrigated_2, irrigated_3
python main_pipeline.py # Complete pipeline
python main_pipeline.py --step preprocessing # Individual step
python main_pipeline.py --config # View settings
python quick_start.py # Quick testsignet_output/
├── processed_signals/ # Cleaned CSV files
├── encoded_images/ # MTF/GAF/RP images
└── trained_models/ # Model checkpoints
# Signal preprocessing only
from signal_preprocessing import preprocess_signals
# Image conversion only
from signal_to_image import convert_signals_to_images
# Model training only
from deep_learning_model import train_signet_modelFor testing with smaller data:
# Edit in main_pipeline.py or quick_start.py
PREPROCESSING['target_samples'] = 5000
IMAGE_CONVERSION['window_size'] = 32
TRAINING['num_epochs'] = 10If you have any questions or provide your cell images, please contact us by email
- Hongseok Oh: hs.oh-isw@cbnu.ac.kr
- Yeongyu Lee: yg.lee-isw@chungbuk.ac.kr