PageSourceSearch

https://scrollprize.org/assets/js/361bb728.4b646e35.js

js scrollprize.org collected 2026-09-24 17:16:10 UTC 65,398 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4414],{5274:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>o,contentTitle:()=>a,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"community_projects","title":"Community Projects","description":"<meta","source":"@site/docs/20_community_projects.md","sourceDirName":".","slug":"/community_projects","permalink":"/community_projects","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":20,"frontMatter":{"title":"Community Projects","hide_title":true},"sidebar":"overviewSidebar","previous":{"title":"First word discovered","permalink":"/firstletters"},"next":{"title":"The Villa dei Papiri in LEGO\xae","permalink":"/villa_model"}}');var t=n(4848),r=n(8453);const l={title:"Community Projects",hide_title:!0},a="\ud83d\udcdc Awesome Scroll Tools Awesome",o={},c=[{value:"\ud83d\udcca Data access/visualization",id:"-data-accessvisualization",level:2},{value:"\ud83c\udf1f Highlighted",id:"-highlighted",level:3},{value:"\ud83d\udee0\ufe0f Tools",id:"\ufe0f-tools",level:3},{value:"Segmentation",id:"segmentation",level:2},{value:"\ud83c\udf1f Highlighted",id:"-highlighted-1",level:3},{value:"\ud83d\udee0\ufe0f Tools",id:"\ufe0f-tools-1",level:3},{value:"\ud83d\udce6 Materials",id:"-materials",level:3},{value:"\ud83c\udf1f Highlighted",id:"-highlighted-2",level:4},{value:"Scroll Surface Predictions",id:"scroll-surface-predictions",level:4},{value:"\ud83d\udcdc Segments",id:"-segments",level:4},{value:"\ud83c\udff7\ufe0f Volumetric Labels",id:"\ufe0f-volumetric-labels",level:4},{value:"\ud83d\udcdd Reports",id:"-reports",level:3},{value:"\ud83d\udcca Visualization",id:"-visualization",level:3},{value:"Ink Detection",id:"ink-detection",level:2},{value:"\ud83c\udfc6 3D Ink Detection",id:"-3d-ink-detection",level:3},{value:"\ud83c\udf1f Highlighted",id:"-highlighted-3",level:4},{value:"\u2699\ufe0f Tools",id:"\ufe0f-tools-2",level:4},{value:"\ud83d\udce6 Materials",id:"-materials-1",level:4},{value:"\ud83d\udd8b\ufe0f Scroll segments-based Ink Detection",id:"\ufe0f-scroll-segments-based-ink-detection",level:3},{value:"\ud83c\udf1f Highlighted",id:"-highlighted-4",level:4},{value:"\u2699\ufe0f Tools",id:"\ufe0f-tools-3",level:4},{value:"\ud83d\udce6 Materials",id:"-materials-2",level:4},{value:"\ud83d\udcdd Reports",id:"-reports-1",level:4},{value:"\ud83d\udcca Visualization",id:"-visualization-1",level:4},{value:"\ud83d\udcdc Fragment-based Ink Detection",id:"-fragment-based-ink-detection",level:3},{value:"\ud83c\udf1f Highlighted",id:"-highlighted-5",level:4},{value:"\ud83d\udcdd Reports",id:"-reports-2",level:4},{value:"Other",id:"other",level:2},{value:"\u2699\ufe0f Tools",id:"\ufe0f-tools-4",level:3},{value:"\ud83d\udce6 Materials",id:"-materials-3",level:3},{value:"\ud83d\udcdd Reports",id:"-reports-3",level:3}];function h(e){const s={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components},{Head:n}=s;return n||function(e,s){throw new Error("Expected "+(s?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Head",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n,{children:[(0,t.jsx)("html",{"data-theme":"dark"}),(0,t.jsx)("meta",{name:"description",content:"Open-source tools built by the Vesuvius Challenge community for data access, segmentation, and ink detection to help read the buried Herculaneum scrolls."}),(0,t.jsx)("meta",{property:"og:type",content:"website"}),(0,t.jsx)("meta",{property:"og:url",content:"https://scrollprize.org"}),(0,t.jsx)("meta",{property:"og:title",content:"Vesuvius Challenge"}),(0,t.jsx)("meta",{property:"og:description",content:"Open-source tools built by the Vesuvius Challenge community for data access, segmentation, and ink detection to help read the buried Herculaneum scrolls."}),(0,t.jsx)("meta",{property:"og:image",content:"https://scrollprize.org/img/social/opengraph.jpg"}),(0,t.jsx)("meta",{property:"twitter:card",content:"summary_large_image"}),(0,t.jsx)("meta",{property:"twitter:url",content:"https://scrollprize.org"}),(0,t.jsx)("meta",{property:"twitter:title",content:"Vesuvius Challenge"}),(0,t.jsx)("meta",{property:"twitter:description",content:"Open-source tools built by the Vesuvius Challenge community for data access, segmentation, and ink detection to help read the buried Herculaneum scrolls."}),(0,t.jsx)("meta",{property:"twitter:image",content:"https://scrollprize.org/img/social/opengraph.jpg"})]}),"\n",(0,t.jsx)(s.header,{children:(0,t.jsxs)(s.h1,{id:"-awesome-scroll-tools-awesome",children:["\ud83d\udcdc Awesome Scroll Tools ",(0,t.jsx)(s.a,{href:"https://awesome.re",children:(0,t.jsx)(s.img,{src:"https://awesome.re/badge.svg",alt:"Awesome",loading:"lazy",decoding:"async"})})]})}),"\n",(0,t.jsx)(s.p,{children:"Here are all the awesome awarded open source contributions from our community that will allow us to read the scrolls! \ud83d\udcda\u2728"}),"\n",(0,t.jsxs)(s.p,{children:["Contributions are divided into four categories: ",(0,t.jsx)(s.em,{children:"Data access/visualization"}),", ",(0,t.jsx)(s.em,{children:"Segmentation"}),", ",(0,t.jsx)(s.em,{children:"Ink Detection"}),", and ",(0,t.jsx)(s.em,{children:"Other"}),"."]}),"\n",(0,t.jsxs)(s.p,{children:["Every category is subdivided in classes: \ud83c\udf1f ",(0,t.jsx)(s.em,{children:"Highlighted"})," (for popular contributions), \u2699\ufe0f ",(0,t.jsx)(s.em,{children:"Tools"}),", \ud83d\udce6 ",(0,t.jsx)(s.em,{children:"Materials"}),", \ud83d\udcdd ",(0,t.jsx)(s.em,{children:"Reports"}),", and \ud83d\udcca ",(0,t.jsx)(s.em,{children:"Visualization"}),"."]}),"\n",(0,t.jsx)(s.p,{children:"Some highlighted contributions are added to this repository as submodules."}),"\n",(0,t.jsxs)(s.p,{children:["We keep this repository updated as much as we can, but research moves ",(0,t.jsx)(s.em,{children:"fast"}),"! \ud83c\udfc3\ud83d\udca8"]}),"\n",(0,t.jsxs)(s.p,{children:["For state-of-the-art updates j
1oin our ",(0,t.jsx)(s.a,{href:"https://discord.com/invite/uTfNwwecCQ",children:"Discord server"})," \ud83d\udcac\u23f0"]}),"\n",(0,t.jsx)(s.h2,{id:"-data-accessvisualization",children:"\ud83d\udcca Data access/visualization"}),"\n",(0,t.jsx)(s.h3,{id:"-highlighted",children:"\ud83c\udf1f Highlighted"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/scrollprize/vesuvius",children:"vesuvius"}),": Python library for accessing Vesuvius Challenge data. Allows direct access to scroll data without managing download scripts or storing terabytes of CT scans locally."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/tree/main/volume-cartographer",children:"VC3D"}),": the team\u2019s interactive tool for viewing, segmenting, and virtually unwrapping scroll volumes."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/jrudolph/vesuvius-browser",children:"Segment browser"})," is a web-based tool to browse layers and open source ink detection results of all released segments. By Johannes Rudolph"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"\ufe0f-tools",children:"\ud83d\udee0\ufe0f Tools"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/tree/main/vesuvius-c",children:"vesuvius-c"}),": C library for accessing Vesuvius Challenge data (deprecated \u2014 prefer the ",(0,t.jsx)(s.a,{href:"https://github.com/scrollprize/vesuvius",children:(0,t.jsx)(s.code,{children:"vesuvius"})})," Python library or VC3D)."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/jrudolph/vesuvius-gui",children:"vesuvius-gui"})," is a single binary GUI to render volumes and segments on-the-fly. By Johannes Rudolph"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/mvrcii/phalanx",children:"vesuvius-phalanx"}),": Python library / CLI for accessing Vesuvius data. Allows flexible access to volume and fragment scroll data. By Marcel Roth"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/climbmax123/LLFIOCunkloadingTestingAndBenching",children:"llfio-chunkloader"}),": A method to access data in chunks of (x,y,z) that is much faster and more compute-efficient than Zarr. (Written in C++ but it is possible to integrate in Python)."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/usc-caisplusplus/scroll-data-preprocessing",children:"preprocessed-data"}),": Data preprocessing code and a fully processed version of the dataset in .zarr format to allow for faster training of ink detection models."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Bullo27/scroll-data-audit",children:"scroll-data-audit"})," by Matteo Bulloni. Integrity auditor for the open-data: reconciles the catalog (",(0,t.jsx)(s.code,{children:"metadata.json"}),") against the actual Zarr arrays, filenames and scan metadata, and verifies multiscale pyramid value-correctness. Reported a Scroll 5 (PHerc0172) catalog shape error (",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/issues/1211",children:"#1211"}),") and certified the rest of the open-data consistent."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/TAUIL-Abd-Elilah/vesuvius-repro",children:"vesuvius-repro"}),": Regional reproducibility spot-checks of one selected 256\xb3 region (central 128\xb3 scored) from each of 41 m7 artifacts across 36 scrolls. Forty TTA-off checks match at Dice 0.9983\u20131.0000; PHerc. Paris 4 matches at 0.9999 with TTA on. The audit exposed previously missing configuration provenance; ",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/pull/1253",children:"#1253"})," now records TTA, and maintainers backfilled existing artifacts. Also resolves each artifact's CT level. By TAUIL Abd Elilah"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Schurkai/vesuvius-catalog",children:"vesuvius-catalog"}),": scriptable catalog CLI/library for the open-data bucket - answers which samples have segments, ink outputs or surface predictions at which resolutions, resolves S3/HTTPS data URLs (JSON/CSV output for scripting), and includes working openers for the bucket's OME-Zarr v2 stores under zarr-python 3."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"segmentation",children:"Segmentation"}),"\n",(0,t.jsx)(s.h3,{id:"-highlighted-1",children:"\ud83c\udf1f Highlighted"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/KhartesViewer/khartes",children:"Khartes"})," by Chuck is a tool to manually create and visualize segment meshes, while also visualizing a preview of the rendered segment."]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"\ufe0f-tools-1",children:"\ud83d\udee0\ufe0f Tools"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/educelab/volume-cartographer",children:"Volume Cartographer"}),": the OG virtual unwrapping toolkit. Includes a graphical interface to annotate scroll segments. First built by ",(0,t.jsx)(s.a,{href:"https://educelab.engr.uky.edu/",children:"EduceLab"}),"; an ",(0,t.jsx)(s.a,{href:"https://github.com/spacegaier/volume-cartographer",children:"active fork"})," by Philip Allgaier contains many community contributions and is currently used by the segmentation team."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/schillij95/ThaumatoAnakalyptor/tree/main",children:"Thaumato Anakalyptor"}
1)," is an automatic tool that combines classical methods such as threshold gradient operator based edge detectors and Deep Learning based instance segmentation of point clouds to detect, merge and render segments. It was built by Julian Schilliger (part of Grand Prize winning submission)."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/schillij95/ThaumatoAnakalyptor/blob/main/ThaumatoAnakalyptor/sheet_to_mesh.py",children:"Fast Segment Rendering"})," by Julian Schilliger. Fast rendering of segments with GPU acceleration. Capable of saving the surface volume to multiple file formats."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/schillij95/ThaumatoAnakalyptor/commit/bcd382a0ef59b2a8566ec62a474479ea9d1bb8c2",children:"CPU rendering"})," by Julian Schilliger and Giorgio Angelotti"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/JamesDarby345/Volumetric_Vesuvius_Labelling",children:"Volumetric Vesuvius Labelling"})," by James Darby. Provide custom tooling the ",(0,t.jsx)(s.a,{href:"https://napari.org/stable/",children:"napari"})," 3d viewer that will help manually annotate volumetric masks of the scrolls to train ML models for 3D segmentation."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/giorgioangel/vesuvius_autoseg_preprocess",children:"Autosegmentation preprocessing pipeline"})," (work in progress) collection of scripts to pre-process volumes for autosegmentation. By Giorgio Angelotti"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/giorgioangel/vesuvius-segment2voxel",children:"Segment2Voxel"})," by Giorgio Angelotti. Tool to create 1-voxel thick volumetric segment labels starting from mesh .obj files."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/JamesDarby345/Volumetric_Instance_to_Mesh/tree/main",children:"Volumetric Instance Labels to obj"})," by James Darby. Tools to create .obj mesh files from volumetric instance labels."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/SuperOptimizer/Hraun",children:"Hraun"})," is a collection of python tools for handling volumetric scroll data by Forrest McDonald."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/joe-carr-data/windcheck",children:"windcheck"}
1)," by Josep Carreras. Finds where a traced surface passes through itself, from mesh geometry alone, and emits transverse-clean ",(0,t.jsx)(s.code,{children:"tifxyz"})," outputs plus a VC3D overlay."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/OliverDaubney/vesuvius_basic_compression",children:"Scroll compression and masking"})," by Olivier Daubney. Script to compress and mask scroll data, greatly reducing storage requirements!"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/schillij95/ThaumatoAnakalyptor/blob/main/ThaumatoAnakalyptor/mesh_merger.py",children:"Mesh merging"})," by Julian Schilliger. Merges multiple overlapping meshes into one continuous mesh. Flattening not included."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://gist.github.com/giorgioangel/b4cc56a5514335a2947adb058af2982b",children:"Mesh merging prototype"})," by Giorgio Angelotti. Different attempt to merge existing mesh of segments by projecting them in 2D and retriangulating in the plane."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1232307086952501313",children:"Meshing and chunking"})," by Santiago Pelufo"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/tspersonalgithub/march_2024_progress_submission",children:"Volumetric segmentation model with labels"}),", deep learning 3D model to separate papyrus from air, by Tim Skinner"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1221902373887279226",children:"Superpixels and cells"})," by Santiago Pelufo"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/schillij95/ThaumatoAnakalyptor/blob/main/ThaumatoAnakalyptor/slim_uv.py",children:"Segment Flattening"})," by Julian Schilliger and Giorgio Angelotti. Improved flattening of scroll segments."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/giorgioangel/slim-flatboi",children:"Slim-Flatboi"})," previous implementation of the SLIM algorithm with minimization of isometric distortion to flatten scroll segments. Later included in ThaumatoAnakalyptor. By Giorgio Angelotti."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1179216516697296906/1179216516697296906",children:"Single Sheet Segmentation attempt"})," by Brett Olsen"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/spelufo/vesuvius-blender",children:"vesuvius-blender"})," by Santiago Pelufo. Explore the X-ray scans in Blender."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/spelufo/vesuvius-build/tree/main",children:"vesuvius-build"})," by Santiago Pelufo. Scripts to build files for progressive loading of the data. Convert the tif stack to grid cells or to h5 format that can be used by Ilastik."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/MosheLevy20/VolumeAnnotate",children:"Volume Annotate"})," A partial reimplementation of Volume Cartographer in Python by Moshe Levy."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/teeohem96/VA-Sheet-Tracer",children:"VA-Sheet Tracer"})," by Trevor, Tom, Babak and Boaz"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/caethan/vesuvius_image",children:"vesuvius-image"})," by Brett Olsen. Tool for storing and viewing data, including efficient Zarr loading of stack of tif images later included in Khartes."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/educelab/quick-segment",children:"Qu
1ick Segment"})," Created by EduceLab for annotating a large air gap in Scroll 1, and then projecting from that gap to either side to create two large segments, colloquially referred to as the \u201cMonster Segment\u201d. Hasn\u2019t been used for more segmentation, since it was the only large air gap we could find."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/WillStevens/scrollreading",children:"scrollreading"})," by Will Stevens. Experiments with using algorithms based on flood-fill to extract non-intersecting surfaces from scrolls."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/hendrikschilling/volume-cartographer",children:"VC with OME-Zarr & more"})," by Hendrik Schilling:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["fast interactive OME-Zarr access and live slicing & flattening ",(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1286341523570688121",children:"thread"})]}),"\n",(0,t.jsxs)(s.li,{children:["instant flattening from VC segments without meshing (10s for one slice) ",(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1289946915269509251",children:"thread"})]}),"\n",(0,t.jsxs)(s.li,{children:["segment surface refinement (also works on obj segments) ",(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1290364437836075231",children:"thread"})]}),"\n",(0,t.jsxs)(s.li,{children:["fiber based segmentation efforts using an optimizing physics inspired surface meshing approach based on ceres-solver ",(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1301139262422646926",children:"thread"})]}),"\n",(0,t.jsxs)(s.li,{children:["non-destructive large scale interactive segment viewing and editing ",(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1294185795221065802",children:"thread"})]}),"\n",(0,t.jsxs)(s.li,{children:["automatic patch generation pipeline: vc_grow_seg_from_seed, vc_render_tifxyz, vc_tifxyz2obj: ",(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1312490723001499808",children:"thread"})]}),"\n",(0,t.jsxs)(s.li,{children:["segment tagging, segment masking, POIs, segment filters (all/filter by focus point/filter by POIs), display intersections scaling to thousands of segments ",(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1286341523570688121/1312537855846907974",children:"message"})]}),"\n",(0,t.jsxs)(s.li,{children:["low memory tiled rendering to enable GP-sized an full scroll rendering ",(0,t.jsx)(s.a,{href:"https://github.com/hendrikschilling/volume-cartographer/blob/dev-zarr/apps/src/vc_render_tifxyz.cpp",children:"https://github.com/hendrikschilling/volume-cartographer/blob/dev-zarr/apps/src/vc_render_tifxyz.cpp"})]}),"\n",(0,t.jsxs)(s.li,{children:["large segment tracing based on patch consensus: vc_grow_seg_from_segments, as documented in the ",(0,t.jsx)(s.a,{href:"https://github.com/hendrikschilling/FASP?tab=readme-ov-file#vc_grow_seg_from_segments",children:"FASP submission"})]}),"\n",(0,t.jsxs)(s.li,{children:["consistent winding number estimation by winding number diffusion: ",(0,t.jsx)(s.a,{href:"https://github.com/hendrikschilling/FASP?tab=readme-ov-file#51-winding-number-assignment",children:"vc_tifxyz_winding"})]}),"\n",(0,t.jsxs)(s.li,{children:["segment fusion & inpainting: ",(0,t.jsx)(s.a,{href:"https://github.com/hendrikschilling/FASP?tab=readme-ov-file#vc_fill_quadmesh",children:"vc_fill_quadmesh"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1315006782191570975",children:"fast and low memory inference for the GP ink detection"})," 1/5 the memory consumption and 20x the speed compared to the baseline GP ink detection for large segments to allow GP and full scroll size ink detection and fast preview."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/jrudolph/vesuvius-gui?tab=readme-ov-file#vesuvius-render",children:"vesuvius-render"})," by Johannes Rudolph:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Fast self
1-contained CPU-based rendering of segments from obj files downloading data on-the-fly."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/sgoutteb/segmata",children:"segmata"})," by Stephane Gouttebroze:"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Improve the segmentation process by sharpening the layers rendering, this is based on optimizing the layer 32, a further objective is to link this optimization on a inference loop (optimizing on the detected ink instead of only layers)"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://lcparker/synthetic-pages",children:"Synthetic instance labels and volume generation"})," by lcparker"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Generate artificial 3D volumes with corresponding instance labels for use in pretraining instance segmentation networks"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://lcparker/Mask3D",children:"Mask3D for instance segmentation on scroll volumes"})," by lcparker"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"SOTA instance segmentation network, configured to work with scroll volumes"}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/lcparker/pretraining-advantage",children:"Effects of pretraining on synthetically generated data"}),", plus pretrained and finetuned weights for the Mask3D network"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discordapp.com/channels/1079907749569237093/1407379961417039953",children:"Affinity Prediction with Unet"})," by Ayush Mishra"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Unet trained on affinity labels using pytorch_connectomics and experiments with watershed"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/code/bluetriad/scroll4-gaborfilters/notebook?scriptVersionId=265957590",children:"Gabor Filter for surface prediction"})," by Ayush Mishra"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Hob3rMallow/scrollfiesta_public",children:"ScrollFiesta -- virtual meshing & unwrapping for the Herculaneum papyri"})," by HariSeldon and friends - now with parameterization and GPU acceleration!"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/pscamillo/scrollfiesta_public/blob/cuda-mls/BENCHMARKS.md",children:"GPU-accelerated MLS projection for ScrollFiesta"})," by pscamillo \u2014 OpenMP + CUDA FP32 acceleration, byte-identical, ~6x throughput. (Note: GPU acceleration through CubeCL is now part of the main ScrollFiesta repository)"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/pull/997",children:"Scroll-specific augmentations"})," by pscamillo. GPU-native training augmentations modeling real scroll/CT distortions: Squeeze (",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/pull/997",children:"#997"}),"), Decohesion + Warp (",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/pull/999",children:"#999"}),"), Ring (",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/pull/1020",children:"#1020"}),"), Streak (",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/pull/1021",children:"#1021"}),"), Warp edge-padding fix (",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/pull/1025",children:"#1025"}),") (#201), each validated with ablation + benchmark."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/pscamillo/winding-ruler",children:"winding-ruler"})," by pscamillo. Measures winding evidence for the spiral fit: where human annotations matter, why generation fails at the published resolution, and a collection-wide winding-pitch atlas (36 scrolls). Includes ",(0,t.jsx)(s.a,{href:"https://github.com/pscamillo/winding-ruler/blob/main/concordance/qa_holescan.py",children:"qa_holescan"}),", a content-level detector for silent z-slice loss in predict3d output (",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/issues/1183",children:"#1183"}),")."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/altommo/scrollfiesta-mls-hip",children:"HIP/ROCm port of ScrollFiesta's MLS for AMD GPUs"})," by Alan Thompson (altommo) \u2014 clean-room HIP port of the MLS-midpoint kernel, validated on RX 9070 / gfx1201: ~16.8x kernel, ~5.8x multi-cube, topology-equivalent weld-safe mesh. (",(0,t.jsx)(s.a,{href:"https://github.com/Hob3rMallow/scrollfiesta_public/pull/4",children:"upstream PR"}),")"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/altommo/scrollfiesta-mls-cubecl",children:"CubeCL port of ScrollFiesta's MLS (portable GPU: AMD/NVIDIA/WGPU)"})," by Alan Thompson (altommo) \u2014 Rust/CubeCL reimplementation of the same MLS kernel from a single source; validated on RX 9070 / gfx1201 against the HIP port, passing the 0.25-voxel weld-safety gate and 5-pass strict parity vs clean HIP."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/spencerdavis-tx/vesuvius-automesh",children:"vesuvius-automesh"})," by spencerdavis-tx. Fully automated, QC-gated surface harvest: masks the public surface predictions against the CT, seed-sweeps the villa tracer, and accepts output per 25 mm window under a two-part quality gate plus an independent topology check - 279 cm2 of verified Scroll 3 surface with zero manual annotation, CPU only. Ships per-window QC records for all 157 windows (passes and failures) as a labeled set of tracer failure modes."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/axiosdevs/herculaneum-scroll-tools",children:"Herculaneum Scroll Tools"})," by axiosdevs \u2014 CT-consistency QA for the published m7 surface predictions: voxel-exact phantom fractions measured for all 36 samples incl. all 13 grand-prize scrolls (43.3% of positives sit outside the masked CT), with a one-pass ",(0,t.jsx)(s.code,{children:"clean"})," mode (",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/issues/1114",children:"villa#1114"}),"). ",(0,t.jsx)(s.code,{children:"audit_ct_support"})," audits any prediction volume in two modes: a ",(0,t.jsx)(s.strong,{children:"zero-download"})," chunk triage that reads only stored zarr chunk keys (~10 s per scroll, no voxel transfer) and classifies every prediction chunk as CT-supported, inside the one-chunk blend margin, or beyond it; and an exact voxel-level survey over chunk-aligned slabs. Across the batch: 1,662,405 prediction chunks, 83.1% supported, 16.9% one-c
1hunk halo, ",(0,t.jsx)(s.strong,{children:"0 beyond the margin in every sample"})," \u2014 consistent with the blend-margin mechanism and with no second source. Plus cross-scan registration (2023\u21922025 rescan, MAD 29 \xb5m), a winding-constraint annotator/verifier in native spiral-input format, and dual-energy high-Z ink-candidate rendering."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Nieuwlaar/tifxyz-repair",children:"tifxyz-repair"})," by Nieuwlaar. Validates and repairs ",(0,t.jsx)(s.code,{children:"tifxyz"})," patch metadata against VC3D's exact loader semantics: detects the stale-bbox corruption of ",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/issues/1272",children:"villa#1272"})," (106 of 4,922 verified PHercParis4 spiral-input patches affected, independently reproducing the issue's counts), rewrites corrected bboxes in place (atomic, ",(0,t.jsx)(s.code,{children:"--dry-run"}),", backups) and ships ready-to-apply boxes for every flagged patch; full-corpus audits certify all 40,782 unverified patches and all 817 published segment meshes clean. Companion PR ",(0,t.jsx)(s.a,{href:"https://github.com/ScrollPrize/villa/pull/1285",children:"#1285"})," stops the corruption at the source."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/abundantjoe/winding-sync",children:"winding-sync"})," by Joseph Balmaceda. Generates relative winding constraints directly from CT via structure-tensor lamina orientation, then reconciles contradictions globally as L1 integer synchronization (totally unimodular LP, exact integer solutions). Complements winding-number diffusion over existing surfaces by working from the raw volume before a surface exists. Tolerates 15% gross measurement error before dropping below 95% accuracy, versus 2% for spanning-tree propagation. Absolute winding counts are not yet calibrated; see README."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/7jycwjmbfn-eng/spiral-fit-consumer-gpu",children:"spiral-fit-consumer-gpu"})," by Shuhan Yang runs the spiral fitter in this repo on a 12 GB consumer GPU without the native VC extension. Drop-in replacements for the sparse CUDA cache, which otherwise raises before the first step, and for point-to-patch linking, where a measured 41-hour ETA drops to minutes. Both are checked for bitwise-identical output against the originals. Includes a scaling ladder and pool-tuning measurements from one gaming laptop."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/aviad12g/tifxyz-doctor",children:"TIFXYZ Doctor"})," by Aviad Cohen \u2014 deterministic QA and triage for TIFXYZ surface grids, with sparse overlays and reproducible corpus/reader checks. v0.2 adds an overlap-component-isolated benchmark on 709 official human-reviewed PHercParis4 ",(0,t.jsx)(s.code,{children:"same_wrap"})," patches; its frozen cue localizes abrupt synthetic normal-offset steps while byte-identical null controls and the reported gradual-transition miss rate bound the claim."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Nicodol/spiralcheck",children:"spiralcheck"})," by Nicolas Dolegieviez. Held-out evaluation for whole-scroll spiral fits: scores a finished run from its output meshes alone (CPU-only, no checkpoint, producer-agnostic) against verified patches withheld from that fit, and measures geometrically how much of the withheld evidence actually sits within touching distance of the fit's real inputs \u2014 on PHerc. Paris 4, 54.8% of a naive name-level split leaked that way, which no hash-level check can see. Also ships ground-truth-free winding-order checks around the umbilicus, a planted-defect matrix with computed null-control bounds, and ",(0,t.jsx)(s.code,{children:"spiralcheck demo"}),", which runs the whole pipeline on a synthetic scroll with planted defects and needs no data."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/ttendoscopie-creator/eligible-spiral-dataset",children:"eligible-spiral-dataset"})," by Thierry Tuszynski surveys what is actually published today for each of the 13 Grand-Prize-eligible scrolls \u2014 9 have tracks, 3 have an umbilicus \u2014 and assembles a ",(0,t.jsx)(s.code,{children:"fit_spiral"})," dataset from it. The layout and the ",(0,t.jsx)(s.code,{children:"spiral-scroll.json"}),' template are already published in the First Letters workflow post; this adds a survey that stops rather than printing "no" when a host does not answer, and restores the nanosecond ',(0,t.jsx)(s.code,{children:"st_mtime_ns"})," that ",(0,t.jsx)(s.code,{children:"_tracks_db_signature"})," fingerprints, so the published ",(0,t.jsx)(s.code,{children:".crossings.npz"})," is accepted instead of rebuilt \u2014 on PHerc. 0826 that is a whole-scroll cache, ",(0,t.jsx)(s.code,{children:"z_range [4500, 16919]"}),". It writes ",(0,t.jsx)(s.code,{children:"normal_zarr_group"})," and ",(0,t.jsx)(s.code,{children:"lasagna_scale"}),", checked field by field against the published template, and requires ",(0,t.jsx)(s.code,{children:"--outward-sense"})," rather than guessing it. Standard library only; three tests, each checked to be able to fail, one running against the metadata member extracted verbatim from the published sidecar."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"-materials",children:"\ud83d\udce6 Materials"}),"\n",(0,t.jsx)(s.h4,{id:"-highlighted-2",children:"\ud83c\udf1f Highlighted"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/full-scrolls/Scroll1/PHercParis4.volpkg/seg-volumetric-labels/finished_cubes/",children:"Sheet instance annotation of cubes for Deep Learning models"})," (work in progress)"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/full-scrolls/Scroll1/PHercParis4.volpkg/seg-volumetric-labels/cubes/",children:"More cubes to annotate, help us!"})}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1249316301273436320",children:"Denoised and contrast enhanced volumes"}),", download ",(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/full-scrolls/Scroll1/PHercParis4.volpkg/volumes_denoised_ce/",children:"here"}),", same path pattern for other scrolls."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"scroll-surface-predictions",children:"Scroll Surface Predictions"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/community-uploads/bruniss/p2_submission/",children:"Scroll 1, and 3 Surface Predictions"})," by Sean Johnson"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/community-uploads/bruniss/Fiber-and-Surface-Models/Predictions/s4/",children:"Scroll 4 Surface Predictions"})," by Sean Johnson"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/bruniss/VC-Surface-Models",children:"Scroll Surface Prediction Repository and Writeup"})," by Sean Johnson"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"-segments",children:"\ud83d\udcdc Segments"}),"\n",(0,t.jsxs)(s.p,{children:["-",(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/community-uploads/bruniss/p2_submission/s5_initial_trace/",children:"Large Autosegmentation of Scroll5"})," by Hendrik Schilling and Sean Johnson -- Unsupervised, many switches -- check readme.md"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1079907750265499772/1245553260362858577",children:"Scroll 2 segments"})," by Sean Johnson"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1234969334535946303",children:"New segments"})," by Sean Johnson"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"http://dl.ash2txt.org/bruniss-uploads/",children:"Large segments"})," by Sean Johnson"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/community-uploads/jrudolph/rescaled-fragments/",children:"Rescaled to 7.9
11um fragment surfaces and labels"})," by Johannes Rudolph"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"\ufe0f-volumetric-labels",children:"\ud83c\udff7\ufe0f Volumetric Labels"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/JamesDarby345/Vesuvius_3D_datasets",children:"Instance segmentation labels"})," by James Darby"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"-reports",children:"\ud83d\udcdd Reports"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/schillij95/ThaumatoAnakalyptor/blob/main/documentation/ThaumatoAnakalyptor___Technical_Report_and_Roadmap.pdf",children:"Technical report on ThaumatoAnakalyptor"})," by Julian Schilliger"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/giorgioangel/vesuvius_autoseg_preprocess/blob/main/equalize/Scroll_Equalizer.pdf",children:"Physical equalization of scrolls' brightness"})," by Giorgio Angelotti"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://docs.google.com/document/d/1SX83Dhz5sJXHhSRbADcNxUmuH53BypLRny01rbizK8I/edit?usp=sharing",children:"Volumetric segmentation architecture investigation"})," by James Darby"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1235042673899995176/1235042673899995176",children:"Instance segmentation experiments"})," by James Darby, Ryan Reszetnik, Liamo Pennimpede, Lucas Nelson"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1177617480366170162",children:"Probabilistic view on the offset for surface volume creation"})," by Giorgio Angelotti"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://gist.github.com/jrudolph/3e0ebbd6e731f794733c236a86ff39fb",children:"Creating segments from intersecting horizontal and vertical fibers"})," by Johannes Rudolph"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Schurkai/vesuvius-phantom-audit",children:"Phantom contamination audit of the published surface predictions"}),": chunk-listing-based measurement across all 36 samples with published m7 surface predictions (villa#1114) - every sample is affected, 16.9% of stored prediction chunks are certain phantoms; includes a voxel-exact-verified cleanup tool."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Jinhojeong/vesuvius-surface-geometry-diagnostic",children:"Surface geometry failure diagnostic"})," by Jinho Jeong. Geometry-stratified analysis of where surface models fail in compressed regions (villa #191): compressed sheets are fused rather than missed across three architectures, the CT carries no intensity dip between contacting sheets, and neither the model's probability field nor local CT geometry supplies a boundary either. Includes oracle measurements showing the official topometrics blend does not respond to repairing these merges, a patch-mode eval entry point and a 200-patch ground-truth pool so any surface model or splitter can be scored the same way."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Jinhojeong/vesuvius-unmerge",children:"unmerge-cli"})," by Jinho Jeong. Splits fused sheet instances by carrying identity through a contact from the resolved surroundings, using an anisotropic random-walk solve seeded from neighbouring instance labels. On raw predictions it refuses to split and flags the weld instead, since no boundary signal exists there. Applied to the published PHerc1218 instance labels it produced ",(0,t.jsx)(s.a,{href:"https://www.kaggle.com/datasets/jhjeong0815/pherc1218-topological-repair",children:"pherc1218-topological-repair"}),", 54,377 repaired fusion sites in three tiers, listed as a companion dataset by ",(0,t.jsx)(s.a,{href:"https://github.com/IyanDopico/vesuvius-sheet-tools",children:"vesuvius-sheet-tools"}),". That project independently cross-checked the flagged sites with its own intensity splitter and a matched spatial control, finding them 2.89x enriched for fused stacks over background."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"-visualization",children:"\ud83d\udcca Visualization"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1246129199304151052/1246129199304151052",children:"Browser-based scroll viewer"})," by Yao Hsiao"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/tomhsiao1260/wj-wt-ftt",children:"wj-wt-ftt"})," by Yao Hsiao and Dalufishe. Tool to view and annotate volumetric scrolls data."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/schillij95/Crackle-Viewer",children:"Crackle Viewer"})," is a tool to browse and annotate surface volumes of rendered segments, by Julian Schilliger"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/giorgioangel/vesuvius-compare/",children:"Point cloud extraction method comparer"})," by Giorgio Angelotti. Tool to compare different point cloud extraction methods."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/tomhsiao1260/pipeline-visualize",children:"Pipeline Visualize"})," by Yao Hsiao. Tool to visualize the first steps of the Thaumato Anakalyptor pipeline."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1162822294415097907/threads/1167722091781554290",children:"Cell viewer and segmentation comparison"})," by Yao Hsiao"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/tomhsiao1260/vc-whiteboard/tree/demo-3",children:"Volume Viewer"})," Used by the segmentation team primarily to see which segments they have worked on already. Hosted ",(0,t.jsx)(s.a,{href:"http://37.19.207.113:5174/",children:"here"}),". By Yao Hsiao"]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/tomhsiao1260/vc-whiteboard/tree/dev",children:"Vesuvius Challenge Whiteboard"})," by Yao Hsiao and Dalufishe"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/tomhsiao1260/neuroglancer-mini",children:"Neuroglancer Mini"})," A trimmed-down version of the Neuroglancer source code. By Yao Hsiao"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/lukeboi/scroll-viewer",children:"Scroll Viewer"})," by Luke Farritor. A lightweight, extensible tool for viewing volumetric data, which runs in the browser, and is very fast."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Paul-G2/ScrollSleuth",children:"Scroll Sleuth"})," by Paul Geiger. A web app that supports visual ink-searching in segment volumes via multiple display modes and segmentation tools."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Paul-G2/ScrollSlabViewer",children:"Scroll Slab Viewer"})," by Paul Geiger. A 3D viewer tailored for the ",(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-surface-detection",children:"Kaggle Surface Detection challenge"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"ink-detection",children:"Ink Detection"}),"\n",(0,t.jsx)(s.h3,{id:"-3d-ink-detection",children:"\ud83c\udfc6 3D Ink Detection"}),"\n",(0,t.jsx)(s.h4,{id:"-highlighted-3",children:"\ud83c\udf1f Highlighted"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/ryanchesler/3d-ink-detection",children:"3D (volumetric) Ink detection model"})," by Ryan Chesler. Ink detection model that works on full scroll data in 3D, without segmentation nor flattening."]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/community-uploads/bruniss/3d%20Ink%20/",children:"Volumetric Ink Detection for Scroll 1, 2, 3, 4"})," by Sean Johnson"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"\ufe0f-tools-2",children:"\u2699\ufe0f Tools"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/ryanchesler/LSM/blob/main/README.md",children:"Large Scroll Model"})," is a 3D Unet pretrained on scroll data, by Ryan Chesler"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://gist.github.com/giorgioangel/6ae26b126f364dda751a10be0b90b36d",children:"UV predictions visualizer"})," by Giorgio Angelotti. Script to quickly visualize the ink predictions output by Ryan Chesler's 3D model as a scatter pkot on segments. Needs the predictions Zarr for the full scroll."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1204133327083147264",children:"Volumetric ink detection attempt"})," by Jorge Villaescusa"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/younader/Inkalyzer",children:"Inkalyzer"})," by Youssef Nader. XAI package for Ink models to explain predictions and generate volumetric labels."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"-materials-1",children:"\ud83d\udce6 Materials"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1079907750265499772/1223357870762889308",children:"3D Ink labels"})," by Sean Johnsonn"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/community-uploads/ryan/",children:"3D Ink predictions"})," by Ryan Chesler. Predictions of 3D Ink models on full scrolls in Zarr format."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"\ufe0f-scroll-segments-based-ink-detection",children:"\ud83d\udd8b\ufe0f Scroll segments-based Ink Detection"}),"\n",(0,t.jsx)(s.h4,{id:"-highlighted-4",children:"\ud83c\udf1f Highlighted"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/younader/Vesuvius-Grandprize-Winner",children:"Grand Prize Winner Ink Detection model"})," by Youssef Nader, Luke Farritor and Julian Schilliger"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"\ufe0f-tools-3",children:"\u2699\ufe0f Tools"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/jgcarrasco/ScrollMAE",children:"ScrollMAE"})," by Jorge Garc\xeda. Contains the necessary code to pretrain a 3D ResNet on unlabeled data and then finetune it to perform ink detection."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/jgcarrasco/dino-ink-detection",children:"Unsupervised Ink Detection with DINO"})," by Jorge Garc\xeda. Contains experiments related to detecting ink without labels, including a Colab notebook."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/mojomast/vesuvius-autoresearch",children:"Vesuvius AutoResearch"})," by mojomast. Autonomous, evidence-gated experiment search for Vesuvius ink-detection research, with reproducible configs, metric contracts, synthetic demo data, and promotion checks."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/jaredlandau/Vesuvius-Grandprize-Winner
1-Plus",children:"Vesuvius GP+"})," by Jared Landau. Updated version of the Grand Prize Ink Detection script with extra features."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/OliverDaubney/s2slabmap",children:"Segment-to-segment label mapping"})," by Oliver Daubney"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:"Runner Up Models, December, 2023"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/SQMah/Vesuvius-Grand-Prize-Submission/",children:"Ink detection model"})," by SQ Mah"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/lschlessinger1/vesuvius-grand-prize-submission",children:"Ink detection model"})," by Lou Schlessinger and Arefeh Sherafati"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/erdpx/vesuvius-grand-prize",children:"Ink detection model"})," by lian Rafael Dal Pr\xe1, Sean Johnson, Leonardo Scabini, Ra\xed Fernando Dal Pr\xe1, Jo\xe3o Vitor Brentigani Torezan, Daniel Baldin Franceschini, Bruno Pereira Kellm, Marcelo Soccol Gris, Odemir Martinez Bruno"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/giorgioangel/vesuvius-kintsugi",children:"Vesuvius Kintsugi"})," is a tool to label floodfill surface volumes of rendered segments, by Giorgio Angelotti"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://onedrive.live.com/?authkey=%21ALfVTOHQOkbecQ0&id=D6F698278C30CB3E%212310&cid=D6F698278C30CB3E",children:"Omit"})," is a pipeline that tries to detect ink with classical approaches (not deep learning) by Timo Meireman"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:"First Letters winning models, October 2023"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/lukeboi/scroll-first-letters",children:"Ink detection model"})," by Luke Farritor"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/younader/Vesuvius-First-Letters",children:"Ink detection model, 2nd place but more accurate"})," by Youssef Nader"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/schillij95/Crackle-Viewer",children:"Crackle Viewer"})," is a tool to browse and annotate surface volumes of rendered segments, by Julian Schilliger"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/lukeboi/scroll-fourth-second/blob/master/README.md",children:"Fourth placed Kaggle model finetuning"})," on scroll data by Luke Farritor"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/younader/VesuviusPretraining",children:"Scroll pretraining"})," by Youssef Nader. Youssef\u2019s original idea for pretraining on the scrolls and finetuning on the fragments, which led him to winning the First Letters Prize."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/SergeyPnev/dinov2-vesuvius",children:"pre-trained DINOv2 models"})," by Sergei Pnev. Self-supervised model pre-trained on scrolls 1-5 with predictions."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/khj1222/vesuvius-challenge",children:"Ink detection validation harness"})," by khj1222. The ink-detection tutorial trains with no held-out data, so improvements cannot be told apart from noise. This generates a ",(0,t.jsx)(s.code,{children:"_validation_mask"})," for a labeled segment by holding out whole annotated regions (splitting by pixels cuts letters in half), scores predictions inside it (threshold sweep, DRD / pseudo-F-measure, per-region breakdown), sweeps checkpoints, and runs k-fold. Also includes a native-Windows walkthrough of the tutorial."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"-materials-2",children:"\ud83d\udce6 Materials"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1223849912467460116",children:"Scroll 1 Ink Labels"}),". Nicola Bodill produced more accurate labels for ink detection based on the prediction of the Grand Prize winner model"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/community-uploads/luke/youssef_uploads/scroll_4/",children:"Scroll 4 predictions"}),". Youssef Nader produced some predictions on Scroll 4 from his Grand prize winner model. No sure trace of ink yet"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1177039383375912990/1177039383375912990",children:"Ink detection masks"}),". Anton Repushko shared some ink labels for Scroll 1, these labels were used by many participants for their final submission in December 2023."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/community-uploads/bruniss/",children:"Crackle labels on Scroll 1"})," by Sean Johnson"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["[Ink Generator]\n(",(0,t.jsx)(s.a,{href:"https://github.com/StewartSethA/VesuviusInkGenerator",children:"https://github.com/StewartSethA/VesuviusInkGenerator"}),") by Seth Stewart, ink volume sample patches generated using gradient ascent"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["[Ink feature visualization]\n(",(0,t.jsx)(s.a,{href:"https://github.com/StewartSethA/ink-seer",children:"https://github.com/StewartSethA/ink-seer"}),") by Seth Stewart, ink feature vector clustering and visualization via t-SNE to distinguish ink from non-ink features"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Bodillium/Herculaneum-Scroll-Labels",children:"Scroll 5 Ink Labels"})," by Nicola Bodill. Early ink labels for Scroll 5."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"-reports-1",children:"\ud83d\udcdd Reports"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://medium.com/@jaredlandau/vesuvius-challenge-ink-detection-part-1-introduction-1cb125a56b21",children:"Introduction to Ink Detection"})," by Jared Landau"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://www.youtube.com/watch?v=F5ak1pRaqVo&ab_channel=VesuviusChallenge",children:"Grand Prize Presentation"})," by Youssef Nader and Julian Schilliger"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://caseyhandmer.wordpress.com/2023/08/05/reading-ancient-scrolls/",children:"First Ink on scroll 1"})," by Casey Handmer"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"-visualization-1",children:"\ud83d\udcca Visualization"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://github.com/tomhsiao1260/segment-viewer",children:"Segment viewer"}),". Used by the segmentation team primarily to see which segments they have worked on already. Hosted ",(0,t.jsx)(s.a,{href:"http://37.19.207.113:5173/?mode=segment&segment=20230702185753",children:"here"})," By Yao Hsiao and Dalufishe"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"-fragment-based-ink-detection",children:"\ud83d\udcdc Fragment-based Ink Detection"}),"\n",(0,t.jsx)(s.h4,{id:"-highlighted-5",children:"\ud83c\udf1f Highlighted"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/overview",children:"Kaggle competition on Fragments"})}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417496",children:"1st place"})," by Ryan Chesler"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417255",children:"2nd place"})," by RTX2309"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417536",children:"3rd place"})," by wuyu"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417779",children:"4th place"})," by POSCO DX -- Heeyoung Ahn"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417642",children:"5th place"})," by Aksell"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417274",children:"6th place"})," by chumajin"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417430",children:"7th place"})," by OverthINKingSegmenter"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417383",children:"8th place"})," by Luck is all you need"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417361",children:"9th place"})," by still 1 fold, 2 net"]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/competitions/vesuvius-challenge-ink-detection/discussion/417363",children:"10th place"})," by Feng Qilong"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://www.kaggle.com/code/tanakar/2-5d-segmentaion-baseline-inference",children:"2.5D fragment segmentation (ink detection) baseline"})," by Ryosuke Tanaka"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/educelab/ink-id",children:"Ink ID"})," by Stephen Parsons"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discord.com/channels/1079907749569237093/1279263442913591349/1279263442913591349",children:"Iterative Labeling on fragments"})," by Youssef Nader. Applying the iterative labeling approach of the GP winning team to improve ink detection on fragments hidden layers."]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://discordapp.com/channels/1079907749569237093/14001382262698
114785",children:"ink detection with rescaled fragments"})," by Ayush Mishra"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"-reports-2",children:"\ud83d\udcdd Reports"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/ainatersol/Vesuvius-InkDetection/blob/main/additional_findings.md",children:"Kaggle Challenge top ink detection model analysis"})," by Ryan Chesler"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/MIC-DKFZ/OverthINKingSegmenter/blob/master/vesuvius_followup_writeup.pdf",children:"Ink detection model resolution analysis"})," by Yannick Kirchhoff, Maximilian Rokuss and Benjamin Hamm"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"other",children:"Other"}),"\n",(0,t.jsx)(s.h3,{id:"\ufe0f-tools-4",children:"\u2699\ufe0f Tools"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/JamesDarby345/VesuviusDataDownload",children:"Efficient Data Downloader"}),": scripts to efficiently download data with rclone, by James Darby"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.a,{href:"https://github.com/Paul-G2/VesuviusScrollAlignment",children:"Improving scroll alignment with image registration"})," Scripts and a report showing how image registration can improve the alignment of scroll volumes scanned at different energies and resolutions, by Paul Geiger"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"-materials-3",children:"\ud83d\udce6 Materials"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://dl.ash2txt.org/community-uploads/waynewaynehello/",children:"CT scanning campfire scrolls"})," Ahron Wayne replicated the carbonization process of a papyrus scroll and scanned it with his personal CT scanner"]}),"\n"]}),"\n",(0,t.jsx)(s.h3,{id:"-reports-3",children:"\ud83d\udcdd Reports"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.a,{href:"https://uknowledge.uky.edu/cs_etds/138/",children:"Hard-Hearted Scrolls"}),", PhD Dissertation by Stephen Parsons"]}),"\n"]}),"\n",(0,t.jsx)(s.h1,{id:"contributions",children:"Contributions"}),"\n",(0,t.jsx)(s.p,{children:"If you want to contribute and add any resource please submit a PR! \ud83d\ude0a\ud83d\ude80"})]})}function d(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},8453:(e,s,n)=>{n.d(s,{R:()=>l,x:()=>a});var i=n(6540);const t={},r=i.createContext(t);function l(e){const s=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:s},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.