{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/morphocluster-efficient-annotation-of","title":"MorphoCluster: Efficient Annotation of Plankton images by Clustering","arxiv_id":"2005.01595","date":"2020-05-04","proceeding":null,"authors":["Simon-Martin Schröder","Rainer Kiko","Reinhard Koch"],"abstract":"In this work, we present MorphoCluster, a software tool for data-driven, fast and accurate annotation of large image data sets. While already having surpassed the annotation rate of human experts, volume and complexity of marine data will continue to increase in the coming years. Still, this data requires interpretation. MorphoCluster augments the human ability to discover patterns and perform object classification in large amounts of data by embedding unsupervised clustering in an interactive process. By aggregating similar images into clusters, our novel approach to image annotation increases consistency, multiplies the throughput of an annotator and allows experts to adapt the granularity of their sorting scheme to the structure in the data. By sorting a set of 1.2M objects into 280 data-driven classes in 71 hours (16k objects per hour), with 90% of these classes having a precision of 0.889 or higher. This shows that MorphoCluster is at the same time fast, accurate and consistent, provides a fine-grained and data-driven classification and enables novelty detection. MorphoCluster is available as open-source software at https://github.com/morphocluster.","url_abs":"https://arxiv.org/abs/2005.01595v1","url_pdf":"https://arxiv.org/pdf/2005.01595v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"morphocluster-efficient-annotation-of","repo_url":"https://github.com/morphocluster/morphocluster","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null}],"tasks":[{"task_slug":"16k","task_name":"16k"},{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"classification","task_name":"General Classification"},{"task_slug":"novelty-detection","task_name":"Novelty Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2005.01595","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2005.01595"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/morphocluster/morphocluster","reach":null}],"summary":{"ran_honours":1,"ran_draft_wrong":1,"ran_fixture":1},"by_repo_kind":{"listed":{"samples":3,"ran":3,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":3,"samples":[{"code_sha256_prefix":"ce13421c0c58b1b2","entry":"json_converter","repo":"morphocluster/morphocluster","repo_kind":"listed","path":"server/src/morphocluster/server/api.py","file_url":"https://github.com/morphocluster/morphocluster/blob/HEAD/server/src/morphocluster/server/api.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ce13421c0c58b1b2"}},{"code_sha256_prefix":"240da8f25aa5aff7","entry":"json_dumps","repo":"morphocluster/morphocluster","repo_kind":"listed","path":"server/src/morphocluster/server/api.py","file_url":"https://github.com/morphocluster/morphocluster/blob/HEAD/server/src/morphocluster/server/api.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"240da8f25aa5aff7"}},{"code_sha256_prefix":"21e394b88532e80f","entry":"pad","repo":"morphocluster/morphocluster","repo_kind":"listed","path":"lib/src/morphocluster/lib/extract_features.py","file_url":"https://github.com/morphocluster/morphocluster/blob/HEAD/lib/src/morphocluster/lib/extract_features.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"21e394b88532e80f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}