diff --git a/docs/docs/Release-Notes.md b/docs/docs/Release-Notes.md index 9ddf3116ca4b..4b9666716bc4 100644 --- a/docs/docs/Release-Notes.md +++ b/docs/docs/Release-Notes.md @@ -1,8 +1,260 @@ **NOTICE:** This software (or technical data) was produced for the U.S. Government under contract, and is subject to the -Rights in Data-General Clause 52.227-14, Alt. IV (DEC 2007). Copyright 2024 The MITRE Corporation. All Rights Reserved. +Rights in Data-General Clause 52.227-14, Alt. IV (DEC 2007). Copyright 2026 The MITRE Corporation. All Rights Reserved. + +# OpenMPF 10.0.x + +

10.0.0: January 2026

+ +

Documentation

+ +- Created a new [Artifact Extraction Guide](Artifact-Extraction-Guide/index.html). + +

No Language Left Behind (NLLB) Translation Component

+ +The No Language Left Behind component is based on [Meta's No Language Left Behind Project](https://ai.meta.com/research/no-language-left-behind/). The component translates input text from a given source language to English. The source language can be provided as a job property, or be indicated in the detection properties from a feed-forward track. By default, this component is configured to use the **`facebook/nllb-200-3.3B` model** [No Language Left Behind (NLLB)](https://huggingface.co/models?search=facebook/nllb). This provides the high translation quality, but also requires significant hardware resources. To accommodate smaller deployment enviroments, this component can use smaller NLLB models, such as [nllb-200-distilled-1.3B](https://huggingface.co/facebook/nllb-200-distilled-1.3B) or [nllb-200-distilled-600M](https://huggingface.co/facebook/nllb-200-distilled-600M). + +Refer to the [README](https://github.com/openmpf/openmpf-components/blob/master/python/NllbTranslation/README.md) for details. + +

FastText Language Identification Component

+ +The FastText Language Detection Component utilizes the [GlotLID](https://github.com/cisnlp/GlotLID) language identification model +and the [fastText](https://github.com/facebookresearch/fastText) library to perform language identification on text. + +Refer to the [README](https://github.com/openmpf/openmpf-components/blob/master/python/FastTextLanguageDetection/README.md) for details. + +

Subject Tracking API and OR-Tools Subject Component [Experimental]

+ +- The OR-Tools Subject Tracking component associates detection tracks of different types (e.g., face, person, vehicle) to create a subject and track it in video. + +- The component source can be found [here](https://github.com/openmpf-components/blob/master/python/OrToolsSubjectComponent). + +

Audit Logging

+ +We have added internal audit logging that may be used to audit events that occur during OpenMPF operation. Logging has been added to the Workflow Manager to record these types of events: + +- login/logout user information +- create/read/update/download of data, configuration information, or action/pipeline information +- rest API access +- load UI content +- TiesDB and S3 storage operations +- Access to Hawtio + +The information is logged as a JSON string. The fields of the logging statement consist of: + +- `eid` : an event id signifying the type of event +- `time` : a timestamp for the event in UTC with format YYYY-MM-DDThh:mm:ss.mmmZ +- `tag` : a tag value, which could be used to categorize events. For this release, all event logging uses a single constant tag value. +- `app` : the name of the application where the event occurred, which is a constant set to "openmpf" +- `user` : the username of the user that initiated the activity being logged. +- `op` : operation identifier, one of c(create), r(read/view), m(modify), d(delete), l(login) +- `res` : operation result, one of a(allowed), d(denied), e(error) +- `uri` : [optional] the full web or file path. +- `bucket` : [optional] The string identifying the S3 bucket for object storage +- `objectKey` : [optional] The name that identifies the object in the S3 bucket +- `msg` : a message string + +- Here is example audit logging output when creating a job through the REST API: + +```text +{"eid":200,"time":"2026-01-14T14:30:40.864Z","tag":"&B1E7-FFFF&","app":"openmpf","user":"admin","op":"c","res":"a","uri":"/rest/jobs","msg":"create job succeeded for Pipeline: OCV TINY YOLO VEHICLE DETECTION (WITH MARKUP) PIPELINE, Media URIs: [file:///opt/mpf/share/remote-media/car_video.MOV]"} +``` + + + +Audit logging is enabled by default, but can be disabled by setting the `audit.logging.enabled` system property to `false`. + +

Additional Quality Selection Properties

+ +- We have added the ability to perform feed-forward processing and artifact extraction based on component-defined properties, in addition to the standard `QUALITY_SELECTION_PROPERTY`. +- Two new job properties have been added: `ARTIFACT_EXTRACTION_POLICY_BEST_DETECTION_PROP_NAMES_LIST` and `FEED_FORWARD_BEST_DETECTION_PROP_NAMES_LIST`. A detection component may choose to mark certain detections in a track as "best" by adding a custom property to those detections. For example, you could mark the detection whose bounding box has the largest area by adding a detection property named `BEST_SIZE` to that detection. If you want to extract the artifact for that detection, then you would add the string `BEST_SIZE` to the `ARTIFACT_EXTRACTION_POLICY_BEST_DETECTION_PROP_NAMES_LIST`. This would result in that detection artifact being extracted in addition to the others that would be extracted based on the `QUALITY_SELECTION_PROPERTY`. +- Refer to the [Artifact Extraction Guide](Artifact-Extraction-Guide/index.html) and the [Feed-Forward Guide](Feed-Forward-Guide.md) for more details. + +

Python 3.12

+ +- The version of python that is used throughout OpenMPF has been upgraded from 3.8 to 3.12. + +

Feed-forward All Tracks [Experimental]

+ +- Previously, the Workflow Manager would feed forward each track from a previous pipeline stage to the next stage one track at a time. To support use cases where the next stage needs all of the tracks in one sub-job, we added a new job property `FEED_FORWARD_ALL_TRACKS`. When set to `true`, the workflow manager will pass all tracks generated in the current stage of the pipeline to the next. + +- A new class was added to the python component API: + +```text +class AllVideoTracksJob(NamedTuple): + job_name: str + data_uri: str + start_frame: int + stop_frame: int + job_properties: Mapping[str, str] + media_properties: Mapping[str, str] + feed_forward_tracks: List[VideoTrack] +``` + and a new method: `get_detections_from_all_video_tracks()`. + +- This functionality is experimental and currently supported only with the python component API. + +- Refer to the [python component SDK](https://github.com/openmpf-python-sdk/blob/master/detection/api) for details. + +- An example illustrating the use of this feature can be found in the python SDK test component [test_component.py](https://github.com/openmpf-python-component-sdk/blob/master/detection/examples/PythonTestComponent/test_component.test_component.py). + +

Support for Supplying a Data URI for Media When Creating a Job

+ +- Users may now supply the media for an OpenMPF job using a data URI when creating a job through the REST API. The mediaURI field may contain a valid (properly encoded) URI to a single media source using one of the following URI schemes: `file:`, `http:`, `https:`, `data:`. + +- The data URI format is explained [here](https://en.wikipedia.org/wiki/Data_URI_scheme). + +Here is an example of a jobCreationRequest using a data URI for an image: +```text +{ + "buildOutput": true, + "callbackMethod": "", + "callbackURL": "", + "externalId": "my-id", + "media": [ + { + "mediaUri": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wgARCAAKAAoDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGVAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAEFAh//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Ah//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAE/IR//2gAMAwEAAgADAAAAEJJP/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQABPxAf/9k=" + } + ], + "pipelineName": "OCV YOLO OBJECT DETECTION PIPELINE", + "priority": 1 +} +``` + +

Features

+ + - [[#1719](https://github.com/openmpf/openmpf/issues/1719)] Remove `OUTPUT_LAST_TASK_ONLY` and support `IS_ANNOTATOR` and `SUPPRESS_TRACKS` WFM properties + - [[#1796](https://github.com/openmpf/openmpf/issues/1796)] Translate specific CSV columns + - [[#1831](https://github.com/openmpf/openmpf/issues/1831)] Create a No Language Left Behind (NLLB) translation component + - [[#1832](https://github.com/openmpf/openmpf/issues/1832)] Add initial subject tracking implementation + - [[#1841](https://github.com/openmpf/openmpf/issues/1841)] Create new feature to allow feed-forward and artifact extraction selection based on a set of detection properties + - [[#1851](https://github.com/openmpf/openmpf/issues/1851)] Allow users to use JSON Path to specify which parts of a JSON document to process + - [[#1862](https://github.com/openmpf/openmpf/issues/1862)] Create a language identification component using FastText + - [[#1869](https://github.com/openmpf/openmpf/issues/1869)] Add support for using media selectors with multi-stage pipelines + - [[#1875](https://github.com/openmpf/openmpf/issues/1875)] Allow users to provide a data URI for media. + - [[#1889](https://github.com/openmpf/openmpf/issues/1889)] Update detection components to register using ActiveMQ. + - [[#1907](https://github.com/openmpf/openmpf/issues/1907)] Support feeding forward all tracks to one sub-job (for Python video jobs only) + - [[#1920](https://github.com/openmpf/openmpf/issues/1920)] Add audit logging of callbacks + - [[#1921](https://github.com/openmpf/openmpf/issues/1921)] Add audit logging for TiesDb + - [[#1979](https://github.com/openmpf/openmpf/issues/1979)] Add event ids, bucket keys, and URIs to audit logging + - [[#1933](https://github.com/openmpf/openmpf/issues/1933)] Add Custom SSO support + +

Updates

+ + - [[#1085](https://github.com/openmpf/openmpf/issues/1085)] Some detection processing errors should result in a final `ERROR` status instead of `COMPLETE_WITH_ERRORS` + - [[#1269](https://github.com/openmpf/openmpf/issues/1269)] Improve `UNSUPPORTED_DATA_TYPE` message in JSON output object + - [[#1679](https://github.com/openmpf/openmpf/issues/1679)] Retire AzureOcrTextDetection component + - [[#1847](https://github.com/openmpf/openmpf/issues/1847)] Suppress the warning when a track does not contain the requested quality selection property + - [[#1854](https://github.com/openmpf/openmpf/issues/1854)] Update Jenkins build to generate SBOM + - [[#1857](https://github.com/openmpf/openmpf/issues/1857)] Optionally skip TiesDb check through Create Job page + - [[#1858](https://github.com/openmpf/openmpf/issues/1858)] Optionally give transient pipeline a name + - [[#1879](https://github.com/openmpf/openmpf/issues/1879)] Merge `COMPLETE_WITH_ERRORS` status into `ERROR` + - [[#1884](https://github.com/openmpf/openmpf/issues/1884)] Upgrade to Python 3.12 + - [[#1956](https://github.com/openmpf/openmpf/issues/1956)] Initial TiesDB check failure should result in a warning, not an error + +

Bug Fixes

+ + - [[#1916](https://github.com/openmpf/openmpf/issues/1916)] JSON button remains disabled on Job Status page when job ends in `ERROR` + - [[#1926](https://github.com/openmpf/openmpf/issues/1926)] Bad TiesDB URL results in multiple UI notifications and TiesDB status staying `IN PROGRESS` + - [[#1984](https://github.com/openmpf/openmpf/issues/1984)] Update CharsetDetectingReader to always use UTF-8 when the input only contains valid UTF-8 bytes # OpenMPF 9.0.x +

9.0.11: October 2025

+ +

Updates

+ +- [[#1911](https://github.com/openmpf/openmpf/issues/1911)] Update LlamaVideoSummarization to use TIMELINE_CHECK_ACCEPTABLE_THRESHOLD + +

Bug Fixes

+ + - [[#1910](https://github.com/openmpf/openmpf/issues/1910)] Check LlamaVideoSummarization timestamps + - [[#1970](https://github.com/openmpf/openmpf/issues/1970)] Use postgres:17-alpine + +

9.0.10: August 2025

+ +

Bug Fixes

+ + - [[#1950](https://github.com/openmpf/openmpf/issues/1950)] HeifConverter fails for some avif files + +

9.0.9: August 2025

+ +

Features

+ +- [[#1940](https://github.com/openmpf/openmpf/issues/1940)] Record stats for the ffprobe process that determines PTS value + +

Bug Fixes

+ +- [[#1930](https://github.com/openmpf/openmpf/issues/1930)] Reading a file that uses the libaom-av1 decoder causes a crash during artifact extraction +- [[#1943](https://github.com/openmpf/openmpf/issues/1943)] Memory leak in HeifConverter.cpp + +

9.0.8: June 2025

+ +

LLaMA Video Summarization Component

+ +- This component uses the VideoLLaMA3 model to generate a description of the activity in a video. It can describe a segment of the video, or create a summary of the entire video. + +- Refer to the [README](https://github.com/openmpf/openmpf-components/blob/master/python/LlamaVideoSummarization/README.md) + for details. + +

Features

+ +- [[#1883](https://github.com/openmpf/openmpf/issues/1883)] Create LLaMA video summarization component +- [[#1888](https://github.com/openmpf/openmpf/issues/1888)] Enable segments to be specified by seconds + +

9.0.7: May 2025

+ +

Updates

+ + - [[#1903](https://github.com/openmpf/openmpf/issues/1903)] Support AVIF images + +

9.0.6: December 2024

+ +

Bug Fixes

+ + - [[#1865](https://github.com/openmpf/openmpf/issues/1865)] WTP models are not installed in AzureTranslation + +

9.0.3: July 2024

+ +

New Keyword Tagging Formats

+ +- The Keyword Tagging component was updated to use the Perl regex syntax, thereby enabling more regex features including look-behind/ahead. + +- Additional patterns were added to the tags file to enhance the base matching capability of the component: + +```text + phone numbers + emails + date formats + time + P.O Box + SSN + currency symbols +``` +- Refer to the Keyword Tagging Component configuration file [text-tags.json](https://github.com/openmpf/openmpf-components/blob/master/cpp/KeywordTagging/plugin-files/config/text-tags.json) for a complete list of the regex expressions currently supported. + +

Updates

+ + - [[#1834](https://github.com/openmpf/openmpf/issues/1834)] Make delay in AzureRead configurable and delay before first poll attempt + - [[#1770](https://github.com/openmpf/openmpf/issues/1770)] Update Keyword Tagging to support emails, dates, phone numbers, and other formats + +

9.0.2: July 2024

+ +

Bug Fixes

+ + - [[#1828](https://github.com/openmpf/openmpf/issues/1828)] Track object provides incorrect parameters to the `ExemplarPolicyUtil.getExemplar()` function + - [[#1827](https://github.com/openmpf/openmpf/issues/1827)] `nlp_text_splitter` installation fails because of an issue with the thinc library + +

9.0.1: June 2024

+ +

Updates

+ + - [[#1822](https://github.com/openmpf/openmpf/issues/1822)] Capitalize all tags produced by the KeywordTagging and TransformerTagging components + +

Bug Fixes

+ + - [[#1819](https://github.com/openmpf/openmpf/issues/1819)] Workflow Manager splitterThreadPoolProfile does not properly re-use threads + - [[#1823](https://github.com/openmpf/openmpf/issues/1823)] TransformerTagging does not handle multiple feed-forward properties to process +

9.0.0: May 2024

Documentation

diff --git a/docs/docs/index.md b/docs/docs/index.md index 1afdbab03c17..7eaaef1cbbc3 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -21,6 +21,7 @@ A list of algorithms currently integrated into the OpenMPF as distributed proces | Detection | Speech | Azure Cognitive Services Batch Transcription API | Detection | Scene | OpenCV | Detection | Classification | OpenCV DNN (GoogLeNet, Yahoo NSFW, vehicle color) +| Detection | Classification | Clip | Detection/Tracking | Classification | OpenCV DNN (YOLO) | Detection/Tracking | Classification/Features | TensorRT (COCO classes) | Detection | Text Region | EAST @@ -29,8 +30,14 @@ A list of algorithms currently integrated into the OpenMPF as distributed proces | Detection | Text (OCR) | Azure Cognitive Services Read API | Detection | Form Structure (with OCR) | Azure Cognitive Services Form Recognizer API | Detection | Keywords | Boost Regular Expressions +| Detection | Known Phrases | Transformer Tagging | Detection | Image (from document) | Apache Tika -| Translation | Language | Azure Cognitive Services Translate API +| Correction | Text | Natural Language Processing using cython_hunspell library | Detection | Language | fastText with the GlotLID model +| Translation | Language | Azure Cognitive Services Translate API +| Translation | Language | No Language Left Behind (NLLB) +| Translation | Language | Argos +| Translation | Language | Whisper +| Video Summarization | Activity | LLAMA3 The OpenMPF exposes data processing and job management web services via a User Interface (UI). These services allow users to upload media, create media processing jobs, determine the status of jobs, and retrieve the artifacts associated with completed jobs. The web services give application developers flexibility to use the OpenMPF in their preferred environment and programming language. diff --git a/docs/site/Release-Notes/index.html b/docs/site/Release-Notes/index.html index afd1f19843f1..b9752f20e954 100644 --- a/docs/site/Release-Notes/index.html +++ b/docs/site/Release-Notes/index.html @@ -61,6 +61,9 @@ Release Notes
  • Objects (Classification)
  • Objects/Features (Classification)
  • Text Regions