Skip to content

Add warnings to AI image descriptions#19327

Merged
SaschaCowley merged 7 commits into
masterfrom
AIIDs
Dec 9, 2025
Merged

Add warnings to AI image descriptions#19327
SaschaCowley merged 7 commits into
masterfrom
AIIDs

Conversation

@SaschaCowley

@SaschaCowley SaschaCowley commented Dec 4, 2025

Copy link
Copy Markdown
Member

Link to issue number:

Related to #19053
Related to #19298

Summary of the issue:

The on-device AI image descriptions introduced into NVDA tend to experience halucinations, especially when used on material other than photographs.

Description of user facing changes:

  • Descriptions retrieved with this feature are now prefixed with "Could be"
  • The settings and temporary enable dialogs now warn the user that the feature is experimental and not to use it in high-stakes situations
  • The User Guide includes a slightly longer disclaimer about the feature

Description of developer facing changes:

None

Description of development approach:

Used a template string when outputting the AI slop so that a hedge-phrase can be used.
Wrote up a warning message for the user guide. Shortened it slightly and inserted into the settings panel and temporary enable dialog.

I have not updated changes.md, as that would just create merge conflicts. I will do it in #19319.

Testing strategy:

Ran NVDA. Checked that the settings panel speaks the warning and that the warning is visible. Checked that the warning is shown in the temp enable dialog.

Known issues with pull request:

Doesn't address the underlying issue.
The language used for this feature also seems confusing and inconsistant, but that is out of scope for this issue.

Code Review Checklist:

  • Documentation:
    • Change log entry
    • User Documentation
    • Developer / Technical Documentation
    • Context sensitive help for GUI changes
  • Testing:
    • Unit tests
    • System (end to end) tests
    • Manual testing
  • UX of all users considered:
    • Speech
    • Braille
    • Low Vision
    • Different web browsers
    • Localization in other languages / culture than English
  • API is compatible with existing add-ons.
  • Security precautions taken.

@SaschaCowley SaschaCowley requested review from a team as code owners December 4, 2025 06:31
Comment thread source/_localCaptioner/imageDescriber.py Outdated

@Qchristensen Qchristensen left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reads well, good change.

Comment thread user_docs/en/userGuide.md Outdated
Co-authored-by: Sean Budd <sean@nvaccess.org>
@SaschaCowley SaschaCowley requested a review from seanbudd December 8, 2025 00:41
@SaschaCowley SaschaCowley added the conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review. label Dec 9, 2025
@SaschaCowley SaschaCowley enabled auto-merge (squash) December 9, 2025 01:53
@SaschaCowley SaschaCowley merged commit 20e5b81 into master Dec 9, 2025
145 of 155 checks passed
@SaschaCowley SaschaCowley deleted the AIIDs branch December 9, 2025 03:55
@github-actions github-actions Bot added this to the 2026.1 milestone Dec 9, 2025
seanbudd added a commit that referenced this pull request Jan 9, 2026
SaschaCowley pushed a commit that referenced this pull request Jan 11, 2026
Reverts:
- #18475
- #19036
- #19024
- #19055
- #19057
- #19178
- #19243
- #19327
- Partial revert: #19342

### Issues fixed
Fixes #19298 

### Issues reopened
Reopens #16281

### Reason for revert / Can this PR be reimplemented? If so, what is
required for the next attempt

The current implementation of AI image descriptions yields low quality
captions from a 3 year old model (see #19298).
The current implementation also requires using numpy, which hogs RAM,
slows initialization, and increases the weight of the installer.
An attempt was made to convert this to C++ using WinML and Windows ONNX
runtimes as per #18662.
This would have removed numpy, and improved flexibility for using
different models in the future.
Unfortunately, this was not found to be feasible, as ONNX C++ fails to
work via 64bit emulation on ARM
(microsoft/onnxruntime#15403).

This means we have the following options for image descriptions:

1. Continue to use the python onnxruntime, and accept the RAM and
storage hits. Instead, improve the quality of the captioner with better
models such as
[git-base-coco](https://huggingface.co/microsoft/git-base-coco) or
[blip2](https://huggingface.co/Salesforce/blip2-opt-2.7b-coco).
2. Wait until MS builds ARM64EC into C++ ONNX (blocked by
microsoft/onnxruntime#15403)
3. Attempt to build our own fork of ONNX with ARM64EC
4. Build a separate ARM native installer of NVDA, offer as an
alternative to allow for ARM devices to do image descriptions with
numpy.
5. Release the feature on C++ without support for ARM devices.

All of these options require a significant amount of work.
As such, sadly this feature is not ready for a stable release.

Instead this code will be moved to a feature branch, until ONNX C++
matures such as fixing
microsoft/onnxruntime#15403.
Additionally, ONNX C++ runtimes are only available through the
experimental 2.0 version of the Windows App SDK, and requires you to
build your own headers from it.
I think this feature will be blocked until
microsoft/onnxruntime#15403 is implemented and
the 2.0 version of the Windows App SDK becomes stable.
Future re-implementations should also consider using higher quality,
more modern models.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants