Commit f6cfb516 authored by Open Science Conservation Fund's avatar Open Science Conservation Fund
Browse files

updated CHANGELOG.md

parent 5be943e9
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
All notable changes to this project will be documented in this file.


## [1.7.0] - 18.08.2025
## [1.7.0] - 20.08.2025

### Added
- **Enhanced Metadata Extraction System**: Complete migration from exifread to exiftool for robust metadata processing
@@ -20,6 +20,13 @@ All notable changes to this project will be documented in this file.
- **Video Export Support**: Camtrap DP observations table now supports video resources with first occurrence frame extraction
- **Enhanced AI Pipeline**: Robust, unified AI pipeline for both Citizen Science and FTPS data uploads, featuring improved administration with rerun capabilities and comprehensive status tracking
- **AI Pipeline Status Tracking**: Added `ai_pipeline_status` field to ClassificationProjectCollection for better pipeline monitoring
- **Enhanced Blurring System**: Comprehensive blur functionality improvements
  - `blur_humans`, `blur_vehicles`, and `blur_backup` fields to ClassificationProject model
  - Backup mechanism for original images before blurring operations
  - Configurable blur settings per classification project
  - Radius scaling based on image dimensions for consistent blur quality
  - Metadata preservation during blur operations
  - Cloud storage support for blur operations (REMOTE_STORAGE compatibility)

### Changed
- **FTPS Upload System**: Complete overhaul of FTPS-based data ingestion workflow
@@ -45,6 +52,13 @@ All notable changes to this project will be documented in this file.
- **Video Processing**: Enhanced video timestamp calculation using `video_timestamp_for_target_frame` utility
- **AI Pipeline Robustness**: Improved error handling and logging in AI classification tasks
- **Serializer Tables**: Enhanced video bbox processing with first occurrence frame selection and proper timestamp alignment
- **Blur Processing Architecture**: Major overhaul of image blurring functionality
  - Migrated blur settings from AIProvider.anonimize_classes to individual ClassificationProject fields
  - Enhanced blur task with robust backup and restore capabilities
  - Improved blur quality with adaptive radius scaling based on image size
  - Better error handling and resource cleanup in blur operations
  - Support for both local and remote storage backends in blur processing
- Default overwrite_confidence changed to `True` for AI classification approvals

### Removed
- **Legacy Upload Client**: Discontinued support for trapper-client
@@ -64,6 +78,10 @@ All notable changes to this project will be documented in this file.
- **Deprecated Functions**: Removed `get_image_modification_date_from_exif` function from common tools
- **Legacy Resource Filtering**: Simplified resource collection queries by removing period-based date filtering
- **Default AI Model Dependencies**: Removed `default_ai_model` field and related form configurations
- **Blur Configuration Consolidation**: Removed legacy anonymization system
  - `anonimize_classes` field from AIProvider model
  - ANONIMIZE_HUMAN, ANONIMIZE_VEHICLE, ANONIMIZE_HUMAN_AND_VEHICLE constants
  - Centralized blur settings management in ClassificationProject

### Dependencies
- **Removed**: exifread (>=3.0,<3.1) Python library
@@ -94,7 +112,10 @@ All notable changes to this project will be documented in this file.
- **API Changes**: Resource serialization no longer includes `name` field (previously sourced from `prefixed_name`)
- **AI Model Configuration**: Migration 0085 removes `default_ai_model` field from ClassificationProject
- **Pipeline Status**: Migration 0086 adds `ai_pipeline_status` field for better monitoring

- **Blur Settings Migration**:
  - Migration 0087: adds blur fields (`blur_humans`, `blur_vehicles`, `blur_backup`) to ClassificationProject
  - Migration 0088: migrates blur settings from AIProvider.anonimize_classes to ClassificationProject blur fields
  - Migration 0089: removes `anonimize_classes` field from AIProvider

## [1.6.0] - 20.07.2025

+3 −4
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ class BlurSensitiveObjects:
                self.storage.delete(name)

                # Save the blurred image to the cloud storage
                name = self.storage.save(
                self.storage.save(
                    name, SimpleUploadedFile(filename, img_io.getvalue(), mime_type)
                )
            else:
@@ -145,8 +145,8 @@ class BlurSensitiveObjects:
            # of whether there's a file or not
            if bool(ff):
                try:
                    self.blur_image(ff, bboxes, resource.mime_type)
                    if (
                    status = self.blur_image(ff, bboxes, resource.mime_type)
                    if status and (
                        ObservationType.HUMAN in self.blur_observation_types
                        or ObservationType.VEHICLE in self.blur_observation_types
                    ):
@@ -155,7 +155,6 @@ class BlurSensitiveObjects:
                        resource.save()
                except Exception as e:
                    logger.error(f"Failed to blur {ff.name}: {str(e)}")
                    pass

    def process_user_classification(self, user_classification):
        # assume that bounding boxes from classification are already blurred