Releases: keenanjohnson/underwater-auto-image-encoder
V0.4.0
This release's main feature is to support a new model type: Ushape Transformer!
Full Changelist
- Docs cleanup by @keenanjohnson in #43
- Attempt to reduce GUI size by @keenanjohnson in #44
- Update training configuration parameters for RTX4090 by @keenanjohnson in #46
- Delete setup_and_train_config_example.yaml by @keenanjohnson in #47
- U shape transformer by @keenanjohnson in #48
- Crop Script: Preseve the Metadata by @keenanjohnson in #49
- gui: support the ushape-transformer by @keenanjohnson in #50
- Fix GUI Build Error by @keenanjohnson in #52
- improve claude by @keenanjohnson in #53
- Remove scikit by @keenanjohnson in #55
- GUI: Filter more modules by @keenanjohnson in #56
- Exclude CUDA Architectures by @keenanjohnson in #57
- Update to v0.4.0 by @keenanjohnson in #58
Full Changelog: v0.3.0...v0.4.0
As usual, we still haven't gotten the GUI builds under 2GB on Linux and Windows, so they are available here: https://drive.google.com/drive/u/0/folders/1troigWpt7S6Ffs_Ld710uRkxGZJ1bfKX
V0.3.0
This release improves the tile blending in the GUI when processing images.
Download the latest release binaries here: https://drive.google.com/drive/folders/1ggn6r7il6sxqLVgMxsKQAGgNIWgSBelQ?usp=sharing
The Problem
The original implementationused a simple cropping approach:
It would crop out half of the overlap region from each tile
Tiles were pasted side-by-side with hard boundaries
This created visible seams where tiles met
The Solution
I implemented weighted feathering/blending
Accumulation Buffers: Instead of directly pasting tiles, I create two arrays:
output_array: Accumulates weighted pixel values
weight_array: Tracks the sum of blend weights for normalization
Linear Gradient Blending: For each tile, I create a blend mask with linear gradients:
Edges that overlap with other tiles fade from 0 to 1 (or 1 to 0)
Only edges that actually overlap with neighboring tiles are feathered
Edge tiles (at image boundaries) don't have blending on their outer edges
Weighted Accumulation: Each tile's pixels are multiplied by the blend mask and added to the accumulation buffer
Normalization: After all tiles are processed, the accumulated values are divided by the total weights to get the final seamless image
V0.2.0: Package GPU Support and Improved Logging
Download link is here (windows and linux builds are currently too large for sharing via github releases. Hopefully will be fixed in the next release): https://drive.google.com/drive/folders/1OTNbMciOASvUTT82wHjAel753ZyjYNf_?usp=sharing
- There are two main changes in this release:
** Support for the GPU in the exes. Previously we had accidentally been building EXEs that only supported CPU processing which was slower than needed. This installs the GPU version of pytorch and needed CUDA drivers for NVIDIA GPUs
** We had several crash reports from windows users. To resolve this, we've added some new debug logging
Logs: %APPDATA%\UnderwaterEnhancer\logs\underwater_enhancer_TIMESTAMP.log
Crash reports: %APPDATA%\UnderwaterEnhancer\logs\crash_TIMESTAMP.txt
Full Changelog
- release ci update by @keenanjohnson in #14
- Revive devcontainer by @clydemcqueen in #15
- CI: Don't cancel jobs if others fail by @keenanjohnson in #18
- GUI: Add indicator for GPU vs CPU mode by @keenanjohnson in #19
- Enable CUDA GPU Build by @keenanjohnson in #20
- Add debug file logging by @keenanjohnson in #23
- Consolidate CI workflows into one by @keenanjohnson in #24
- Version: Update to v0.2.0 by @keenanjohnson in #22
- CI: Only bundle the exe once by @keenanjohnson in #25
New Contributors
- @clydemcqueen made their first contribution in #15
Full Changelog: v0.1.0...v0.2.0
v0.1.0
Release Notes - v0.1.0-beta
🌊 Underwater Image Enhancer GUI - First Beta Release
Overview
This is the first beta release of the Underwater Image Enhancer GUI application, designed for the Seattle Aquarium to automate the enhancement of underwater ROV survey images using ML models.
✨ Features
Core Functionality
- ML-based Image Enhancement: Process underwater images using trained U-Net models
- GPR File Support: Native support for GoPro RAW (GPR) files with automatic conversion
- Batch Processing: Process entire folders of images with progress tracking
- Multiple Output Formats: Export as TIFF (lossless) or JPEG (compressed)
Image Processing Pipeline
- Automatic Center Cropping: Images cropped to consistent 4606×4030 resolution matching training data
- Tiled Processing: Large images processed in tiles to avoid memory issues
- Full Resolution Support: Process images at original resolution without downscaling
User Interface
- Native Desktop Application: Built with CustomTkinter for modern, native look
- Real-time Progress Tracking: See processing status including tile-by-tile updates
- Activity Log: Detailed processing log with timestamps
- Dark/Light Theme: Toggle between dark and light modes
- Drag & Drop Support: Easy file and folder selection
🚀 Installation
For Users (Standalone Application)
- Download the appropriate release for your platform:
- Windows:
UnderwaterEnhancer.exe - macOS:
UnderwaterEnhancer.app - Linux:
UnderwaterEnhancer
- Windows:
- Place your trained model file (
best_model.pth) in an accessible location - Run the application
For Developers
# Clone repository
git clone https://github.com/Seattle-Aquarium/auto-image-encoder.git
cd auto-image-encoder
# Install dependencies
pip install -r requirements-gui.txt
# Run application
python app.py🎯 Usage
- Launch the application
- Select your trained model file (.pth)
- Choose input folder containing images
- Select output folder for processed images
- Choose output format (TIFF or JPEG)
- Click "Process Images"
🔧 Technical Details
- Model Architecture: U-Net autoencoder with skip connections
- Input Formats: GPR, TIFF, JPEG, PNG
- Processing Resolution: 4606×4030 (center cropped from GoPro originals)
- Tile Size: 1024×1024 with 128px overlap for large images
⚠️ Known Limitations (Beta)
- GPR support requires bundled gpr_tools binary
- Large batch processing may require significant memory
- First image in batch may take longer (model loading)
- may show security warnings for unsigned app
🙏 Acknowledgments
- Seattle Aquarium ROV team for requirements and testing
- GoPro for gpr_tools library
- PyTorch team for ML framework
Note: This is a beta release. Please backup your data before processing and report any issues encountered.# Release Notes - v0.1.0-beta