docs: deploy from 4b55579
This commit is contained in:
+77
-12
@@ -10,6 +10,8 @@
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="https://pages.tourolle.paris/dtourolle/scene-actor-extraction/gallery-scope/">
|
||||
|
||||
|
||||
<link rel="prev" href="../best-model/">
|
||||
|
||||
@@ -51,6 +53,8 @@
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../stylesheets/extra.css">
|
||||
|
||||
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||
|
||||
|
||||
@@ -67,7 +71,7 @@
|
||||
|
||||
|
||||
|
||||
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo">
|
||||
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="amber">
|
||||
|
||||
|
||||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||
@@ -123,7 +127,21 @@
|
||||
|
||||
|
||||
|
||||
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-hidden="true" type="radio" name="__palette" id="__palette_0">
|
||||
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="amber" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
|
||||
|
||||
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
|
||||
</label>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
|
||||
|
||||
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
|
||||
</label>
|
||||
|
||||
|
||||
</form>
|
||||
@@ -248,13 +266,13 @@
|
||||
|
||||
|
||||
<li class="md-tabs__item">
|
||||
<a href="../rep4-optimizer-results/" class="md-tabs__link">
|
||||
<a href="../model-bakeoff/" class="md-tabs__link">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Rep4 Bake-off & Re-tune (full log)
|
||||
Model Bake-off & Re-tune (full log)
|
||||
|
||||
</a>
|
||||
</li>
|
||||
@@ -623,14 +641,14 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../rep4-optimizer-results/" class="md-nav__link">
|
||||
<a href="../model-bakeoff/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
Rep4 Bake-off & Re-tune (full log)
|
||||
Model Bake-off & Re-tune (full log)
|
||||
|
||||
|
||||
|
||||
@@ -768,7 +786,7 @@ entire library gallery (2418 actors across the 9-film benchmark set); <strong>re
|
||||
pre-filters each film's gallery down to just its Jellyfin-credited cast (typically
|
||||
~15 top-billed actors) before the matcher ever runs.</p>
|
||||
<h2 id="the-result">The result<a class="headerlink" href="#the-result" title="Permanent link">¶</a></h2>
|
||||
<p>Averaged across all 4 models and both expansion settings, on the 4 rep4 training
|
||||
<p>Averaged across all 4 models and both expansion settings, on the 4 bake-off training
|
||||
films:</p>
|
||||
<table>
|
||||
<thead>
|
||||
@@ -804,14 +822,19 @@ look-alike false match (an actor who happens to share enough facial structure
|
||||
with someone in the film, but isn't actually in it), and the recall gain shows
|
||||
it isn't costing real detections to get there.</p>
|
||||
<p>Per-model, every single model's best-scoring combo in the full 16-way matrix is
|
||||
a <code>restricted</code> variant — see the full table in <code>rep4-optimizer-results.md</code>. Two
|
||||
a <code>restricted</code> variant — visible directly in the ranking below (filled dots =
|
||||
restricted, open = full; the filled dots cluster at the top for every color):</p>
|
||||
<p><img alt="All 16 bake-off combos — filled dots (restricted) dominate the top" src="../assets/images/rep4_matrix_f1.png" /></p>
|
||||
<p>See the full table in the
|
||||
<a href="../model-bakeoff/">bake-off experiment log</a>. Two
|
||||
combos hit <strong>zero</strong> true out-of-cast misidentifications:
|
||||
<code>arcface_w600k_mbf_restricted_exp</code> (F1 76.5%) and, in full mode,
|
||||
<code>LVFace-B_Glint360K_full_noexp</code> (F1 72.4%) — restriction isn't the only way to
|
||||
reach misid=0, but it's the more reliable one.</p>
|
||||
<h2 id="why-this-isnt-the-shipped-default">Why this isn't the shipped default<a class="headerlink" href="#why-this-isnt-the-shipped-default" title="Permanent link">¶</a></h2>
|
||||
<p>Cast-restriction is implemented today only as an <strong>offline optimizer technique</strong>
|
||||
(<code>scripts/optimizer/cast_restrict.py</code>): it pre-builds a filtered gallery file
|
||||
(<a href="https://gitea.tourolle.paris/dtourolle/scene-actor-extraction/raw/commit/4b5557974bef8783bacc375c0869e8f589d1b0a3/scripts/optimizer/cast_restrict.py"><code>scripts/optimizer/cast_restrict.py</code></a>):
|
||||
it pre-builds a filtered gallery file
|
||||
per film, using Jellyfin's own cast list, before the benchmark ever calls the
|
||||
matcher. There's no runtime "restrict matching to this title's credited cast"
|
||||
switch in the shipped application — <code>scene_analyze</code> always matches against
|
||||
@@ -819,7 +842,8 @@ whatever single gallery file it's given.</p>
|
||||
<p>Building that as a real feature would need, at minimum:</p>
|
||||
<ul>
|
||||
<li>A live Jellyfin cast lookup at analysis time (the title is already known —
|
||||
<code>run_from_jellyfin.py</code> already does this same lookup for its own
|
||||
<a href="https://gitea.tourolle.paris/dtourolle/scene-actor-extraction/raw/commit/4b5557974bef8783bacc375c0869e8f589d1b0a3/scripts/run_from_jellyfin.py"><code>scripts/run_from_jellyfin.py</code></a>
|
||||
already does this same lookup for its own
|
||||
<code>filter_gallery</code>-based restriction path, just not wired into <code>scene_analyze</code>
|
||||
itself as a first-class option).</li>
|
||||
<li>A decision on the <em>fallback</em>: what happens to a real, uncredited cameo
|
||||
@@ -828,7 +852,8 @@ whatever single gallery file it's given.</p>
|
||||
<li>Regenerating the restricted-gallery cache whenever the title's Jellyfin cast
|
||||
list changes.</li>
|
||||
</ul>
|
||||
<p>This is why the shipped <code>src/config.hpp</code> defaults use the <code>full</code>-mode winner
|
||||
<p>This is why the shipped <a href="https://gitea.tourolle.paris/dtourolle/scene-actor-extraction/raw/commit/4b5557974bef8783bacc375c0869e8f589d1b0a3/src/config.hpp"><code>src/config.hpp</code></a>
|
||||
defaults use the <code>full</code>-mode winner
|
||||
(<code>LVFace-B_Glint360K_full_exp</code>, F1 75.3% training / 67.4% held-out macro) rather
|
||||
than the higher-scoring <code>restricted_exp</code> (78.3%) — the 78.3% number describes a
|
||||
capability the app doesn't have yet, not what actually ships.</p>
|
||||
@@ -862,6 +887,46 @@ capability the app doesn't have yet, not what actually ships.</p>
|
||||
|
||||
<footer class="md-footer">
|
||||
|
||||
|
||||
|
||||
<nav class="md-footer__inner md-grid" aria-label="Footer" >
|
||||
|
||||
|
||||
<a href="../best-model/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Best Model">
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||||
</div>
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
Previous
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
Best Model
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../pose-expansion/" class="md-footer__link md-footer__link--next" aria-label="Next: Pose Expansion">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
Next
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
Pose Expansion
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-copyright">
|
||||
@@ -887,7 +952,7 @@ capability the app doesn't have yet, not what actually ships.</p>
|
||||
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "content.code.copy", "content.code.annotate"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
|
||||
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "navigation.footer", "content.code.copy", "content.code.annotate"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
|
||||
|
||||
|
||||
<script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user