Repository navigation
Conversation
A small MobileNetV2 ONNX model describes each photo, and the suggestions are stored per image with their evidence: the file name, a named face, or a tagged photo that looks alike. Everything runs locally. Embeddings are cached by content hash and model version, like face analyses, so a second pass only reads SQLite. Rejected suggestions are kept to avoid proposing the same tag again.
Tagged photos are processed first so the comparison gallery is complete before an untagged photo is scored, whatever the file order. The gallery is capped, the model is disabled after repeated decode failures, and a missing model falls back to file names and named faces. The scan never writes a tag: it only fills the pending suggestion rows.
The strip above the faces shows the scored proposals with the evidence behind each one. Accepting assigns the tag and records the feedback; rejecting hides it for good. A Next suggestion command walks the pending queue, so reviewing a whole library does not mean clicking every photo. The model, its source and its licence are documented next to the other ONNX assets.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds local tag suggestions with human review. After a few photos are tagged, the app proposes tags for the others, with a score and the evidence behind it. Nothing is assigned automatically: a suggestion only fills the label panel when the user accepts it.
This is the safe half of the "AI sorter" idea: a decision model that suggests tags, while the existing Publisher remains the only thing that fans files out into folders.
How it works
ImgTagFanOut/Assets/Models/README.md.item_embeddingskeyed by content hash and model version, like face analyses. A second scan only reads SQLite.tag_suggestionsstores at most three scored proposals per image with their source and evidence. Accepting assigns the tag and records the feedback; rejecting remembers the tag so it is not proposed again.Suggest tagscommand with progress/cancel, and aNext suggestioncommand that walks the pending queue.Notable implementation points
Verification
dotnet restore --locked-mode,dotnet build --no-restore: clean, 0 warnings.dotnet test --no-build: 178 tests pass.Notes / limits
ITagSuggesterlater without touching the UI or the storage.