{"id":46062,"name":"KSO","description":"The Koster Seafloor Observatory is an open-source, citizen science and machine learning approach to analyse subsea movies.","url":"https://github.com/ocean-data-factory-sweden/kso","last_synced_at":"2026-04-08T01:01:26.610Z","repository":{"id":37984093,"uuid":"382066008","full_name":"ocean-data-factory-sweden/kso","owner":"ocean-data-factory-sweden","description":"Notebooks to upload/download marine footage, connect to a citizen science project, train machine learning models and publish marine biological observations.","archived":false,"fork":false,"pushed_at":"2026-04-02T14:58:19.000Z","size":16835,"stargazers_count":8,"open_issues_count":16,"forks_count":17,"subscribers_count":2,"default_branch":"dev","last_synced_at":"2026-04-06T00:09:35.930Z","etag":null,"topics":["citizen-science","deep-learning","marine-protected-areas","object-detection"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ocean-data-factory-sweden.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"glenn-jocher","patreon":"ultralytics","open_collective":"ultralytics"}},"created_at":"2021-07-01T14:47:48.000Z","updated_at":"2026-04-02T14:02:44.000Z","dependencies_parsed_at":"2026-03-10T11:02:56.005Z","dependency_job_id":null,"html_url":"https://github.com/ocean-data-factory-sweden/kso","commit_stats":{"total_commits":749,"total_committers":9,"mean_commits":83.22222222222223,"dds":"0.17489986648865152","last_synced_commit":"ec0c202beadfea22f438660bb8c6cc0e54389903"},"previous_names":["ocean-data-factory-sweden/kso"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ocean-data-factory-sweden/kso","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocean-data-factory-sweden%2Fkso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocean-data-factory-sweden%2Fkso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocean-data-factory-sweden%2Fkso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocean-data-factory-sweden%2Fkso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ocean-data-factory-sweden","download_url":"https://codeload.github.com/ocean-data-factory-sweden/kso/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocean-data-factory-sweden%2Fkso/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31535203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"ocean-data-factory-sweden","name":"Ocean Data Factory Sweden","uuid":"54248548","kind":"organization","description":"","email":"torsten.linders@gu.se","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/54248548?v=4","repositories_count":4,"last_synced_at":"2023-03-03T19:53:11.188Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ocean-data-factory-sweden","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T05:10:09.022Z","updated_at":"2023-03-03T19:53:11.199Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ocean-data-factory-sweden","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ocean-data-factory-sweden/repositories"},"packages":[],"commits":{"id":1358726,"full_name":"ocean-data-factory-sweden/kso","default_branch":"dev","total_commits":985,"total_committers":21,"total_bot_commits":1,"total_bot_committers":1,"mean_commits":46.904761904761905,"dds":0.3725888324873097,"past_year_total_commits":234,"past_year_total_committers":16,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":14.625,"past_year_dds":0.688034188034188,"last_synced_at":"2026-04-01T22:06:51.027Z","last_synced_commit":"e5873f14d43360133079343d0d86433c87650b0a","created_at":"2023-09-13T08:45:43.915Z","updated_at":"2026-04-01T22:03:58.807Z","committers":[{"name":"Jurie Germishuys","email":"jurie.germishuys@combine.se","login":null,"count":618},{"name":"Diewertje11","email":"diewertje.dekker@combine.se","login":"Diewertje11","count":100},{"name":"Victor","email":"55268669+victor-wildlife","login":"victor-wildlife","count":91},{"name":"Ghaith","email":"ghaith@Ghaiths-MacBook-Pro.local","login":null,"count":62},{"name":"Tuomas Rossi","email":"tuomas.rossi@csc.fi","login":"trossi","count":31},{"name":"Louis Fiorina","email":"145111295+louisrf","login":"louisrf","count":14},{"name":"Ghaith","email":"ghaith@vpns378.vsb.cz","login":null,"count":11},{"name":"Pablo Correa Gómez","email":"pablo.correa.gomez@combine.se","login":"pabloyoyoista","count":10},{"name":"Jannes","email":"36601086+jannesgg","login":"jannesgg","count":10},{"name":"nithador","email":"tomas.martinovic@vsb.cz","login":"Nithador","count":8},{"name":"PilarNavarro","email":"pilarnavar@hotmail.es","login":"pilarnavarro","count":5},{"name":"Ghaith","email":"ghaith@vpnp119.vsb.cz","login":null,"count":5},{"name":"Ghaith","email":"ghaith@w116-81.vsb.cz","login":null,"count":4},{"name":"Ghaith","email":"ghaith@w113-176.vsb.cz","login":null,"count":3},{"name":"Ghaith","email":"ghaith@vpns32.vsb.cz","login":null,"count":3},{"name":"Ghaith","email":"ghaith@vpns162.vsb.cz","login":null,"count":3},{"name":"Jurie Germishuys","email":"jurieg@alvis1.int.private","login":null,"count":2},{"name":"Ghaith","email":"ghaith@vpns479.vsb.cz","login":null,"count":2},{"name":"Ghaith","email":"ghaith@vpns122.vsb.cz","login":null,"count":1},{"name":"Ghaith","email":"ghaith@vpns447.vsb.cz","login":null,"count":1},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":1}],"past_year_committers":[{"name":"Diewertje11","email":"diewertje.dekker@combine.se","login":"Diewertje11","count":73},{"name":"Ghaith","email":"ghaith@Ghaiths-MacBook-Pro.local","login":null,"count":62},{"name":"Tuomas Rossi","email":"tuomas.rossi@csc.fi","login":"trossi","count":31},{"name":"Louis Fiorina","email":"145111295+louisrf","login":"louisrf","count":14},{"name":"Ghaith","email":"ghaith@vpns378.vsb.cz","login":null,"count":11},{"name":"Pablo Correa Gómez","email":"pablo.correa.gomez@combine.se","login":"pabloyoyoista","count":10},{"name":"nithador","email":"tomas.martinovic@vsb.cz","login":"Nithador","count":8},{"name":"Ghaith","email":"ghaith@vpnp119.vsb.cz","login":null,"count":5},{"name":"Ghaith","email":"ghaith@w116-81.vsb.cz","login":null,"count":4},{"name":"Victor","email":"55268669+victor-wildlife","login":"victor-wildlife","count":3},{"name":"Ghaith","email":"ghaith@w113-176.vsb.cz","login":null,"count":3},{"name":"Ghaith","email":"ghaith@vpns32.vsb.cz","login":null,"count":3},{"name":"Ghaith","email":"ghaith@vpns162.vsb.cz","login":null,"count":3},{"name":"Ghaith","email":"ghaith@vpns479.vsb.cz","login":null,"count":2},{"name":"Ghaith","email":"ghaith@vpns447.vsb.cz","login":null,"count":1},{"name":"Ghaith","email":"ghaith@vpns122.vsb.cz","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocean-data-factory-sweden%2Fkso/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-08T00:00:24.542Z","repositories_count":6211829,"commits_count":917798398,"contributors_count":35560764,"owners_count":1142860,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"ocean-data-factory-sweden/kso","html_url":"https://github.com/ocean-data-factory-sweden/kso","last_synced_at":"2026-03-28T20:01:25.366Z","status":"active","issues_count":190,"pull_requests_count":151,"avg_time_to_close_issue":3571258.225,"avg_time_to_close_pull_request":975205.2089552239,"issues_closed_count":120,"pull_requests_closed_count":134,"pull_request_authors_count":10,"issue_authors_count":12,"avg_comments_per_issue":1.2421052631578946,"avg_comments_per_pull_request":1.9072847682119205,"merged_pull_requests_count":85,"bot_issues_count":0,"bot_pull_requests_count":25,"past_year_issues_count":13,"past_year_pull_requests_count":22,"past_year_avg_time_to_close_issue":3433597.6666666665,"past_year_avg_time_to_close_pull_request":4280786.7272727275,"past_year_issues_closed_count":3,"past_year_pull_requests_closed_count":11,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":0.23076923076923078,"past_year_avg_comments_per_pull_request":3.3181818181818183,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":10,"created_at":"2023-09-13T08:46:19.193Z","updated_at":"2026-03-28T20:01:25.366Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocean-data-factory-sweden%2Fkso","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocean-data-factory-sweden%2Fkso/issues","issue_labels_count":{"bug":87,"enhancement":35,"Development":18,"good first issue":10,"Enhancement":4,"Spyfish":3,"Documentation":2,"Support":2,"question":1,"dependencies":1,"documentation":1,"help wanted":1},"pull_request_labels_count":{"Enhancement":2,"bug":1,"Bug":1,"Documentation":1},"issue_author_associations_count":{"COLLABORATOR":183,"NONE":5,"CONTRIBUTOR":2},"pull_request_author_associations_count":{"COLLABORATOR":124,"CONTRIBUTOR":27},"issue_authors":{"Bergylta":68,"victor-wildlife":43,"jannesgg":37,"Diewertje11":21,"donkyjohn":5,"ShrimpFather7":3,"trossi":3,"Nithador":3,"KalindiFonda":2,"pabloyoyoista":2,"pilarnavarro":2,"XhD98":1},"pull_request_authors":{"victor-wildlife":58,"Diewertje11":25,"dependabot[bot]":25,"jannesgg":19,"trossi":8,"pilarnavarro":5,"louisrf":5,"GhaithChaabane":3,"pabloyoyoista":2,"Nithador":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-01T00:00:08.271Z","repositories_count":14036339,"issues_count":34426332,"pull_requests_count":112600568,"authors_count":11214974,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"Development":5,"Enhancement":3,"Documentation":2,"enhancement":2,"bug":1},"past_year_pull_request_labels_count":{"Enhancement":2,"Bug":1,"Documentation":1},"past_year_issue_author_associations_count":{"COLLABORATOR":11,"CONTRIBUTOR":2},"past_year_pull_request_author_associations_count":{"COLLABORATOR":20,"CONTRIBUTOR":2},"past_year_issue_authors":{"Nithador":3,"trossi":3,"victor-wildlife":3,"pabloyoyoista":2,"Diewertje11":1,"KalindiFonda":1},"past_year_pull_request_authors":{"trossi":8,"louisrf":5,"GhaithChaabane":3,"Diewertje11":2,"pabloyoyoista":2,"Nithador":1,"victor-wildlife":1},"maintainers":[{"login":"victor-wildlife","count":101,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/victor-wildlife"},{"login":"Bergylta","count":68,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Bergylta"},{"login":"jannesgg","count":56,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jannesgg"},{"login":"Diewertje11","count":46,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Diewertje11"},{"login":"trossi","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trossi"},{"login":"pilarnavarro","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/pilarnavarro"},{"login":"donkyjohn","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/donkyjohn"},{"login":"louisrf","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/louisrf"},{"login":"Nithador","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Nithador"},{"login":"GhaithChaabane","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/GhaithChaabane"},{"login":"KalindiFonda","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/KalindiFonda"}],"active_maintainers":[{"login":"trossi","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/trossi"},{"login":"louisrf","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/louisrf"},{"login":"Nithador","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Nithador"},{"login":"victor-wildlife","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/victor-wildlife"},{"login":"Diewertje11","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Diewertje11"},{"login":"GhaithChaabane","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/GhaithChaabane"},{"login":"KalindiFonda","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/KalindiFonda"}]},"events":{"total":{"DeleteEvent":7,"MemberEvent":2,"PullRequestEvent":21,"ForkEvent":3,"IssuesEvent":77,"WatchEvent":3,"IssueCommentEvent":52,"PushEvent":176,"PullRequestReviewCommentEvent":52,"PullRequestReviewEvent":30,"CreateEvent":14},"last_year":{"DeleteEvent":7,"PullRequestEvent":17,"ForkEvent":2,"IssuesEvent":58,"WatchEvent":2,"IssueCommentEvent":27,"PushEvent":171,"PullRequestReviewCommentEvent":52,"PullRequestReviewEvent":30,"CreateEvent":9}},"keywords":["citizen-science","deep-learning","marine-protected-areas","object-detection"],"dependencies":[{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-02-17T06:25:23.917Z","updated_at":"2023-02-17T06:25:23.917Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/requirements.txt","dependencies":[{"id":7734835037,"package_name":"panoptes-client","ecosystem":"pypi","requirements":"==1.5.0","direct":true,"kind":"runtime","optional":false},{"id":7734835038,"package_name":"python-magic","ecosystem":"pypi","requirements":"==0.4.24","direct":true,"kind":"runtime","optional":false},{"id":7734835039,"package_name":"opencv-python","ecosystem":"pypi","requirements":"==4.6.0.66","direct":true,"kind":"runtime","optional":false},{"id":7734835040,"package_name":"opencv-python-headless","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7734835041,"package_name":"opencv-contrib-python","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7734835042,"package_name":"matplotlib","ecosystem":"pypi","requirements":"\u003e=3.2.2","direct":true,"kind":"runtime","optional":false},{"id":7734835043,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=1.18.5","direct":true,"kind":"runtime","optional":false},{"id":7734835044,"package_name":"PyYAML","ecosystem":"pypi","requirements":"\u003e=5.3.1","direct":true,"kind":"runtime","optional":false},{"id":7734835045,"package_name":"scipy","ecosystem":"pypi","requirements":"\u003e=1.4.1","direct":true,"kind":"runtime","optional":false},{"id":7734835046,"package_name":"tqdm","ecosystem":"pypi","requirements":"\u003e=4.41.0","direct":true,"kind":"runtime","optional":false},{"id":7734835047,"package_name":"jupyter","ecosystem":"pypi","requirements":"==1.0.0","direct":true,"kind":"runtime","optional":false},{"id":7734835048,"package_name":"PIMS","ecosystem":"pypi","requirements":"==0.6.1","direct":true,"kind":"runtime","optional":false},{"id":7734835049,"package_name":"av","ecosystem":"pypi","requirements":"==8.1.0","direct":true,"kind":"runtime","optional":false},{"id":7734835050,"package_name":"fastapi","ecosystem":"pypi","requirements":"==0.73.0","direct":true,"kind":"runtime","optional":false},{"id":7734835051,"package_name":"uvicorn","ecosystem":"pypi","requirements":"==0.17.2","direct":true,"kind":"runtime","optional":false},{"id":7734835052,"package_name":"protobuf","ecosystem":"pypi","requirements":"==3.15.8","direct":true,"kind":"runtime","optional":false},{"id":7734835053,"package_name":"python-multipart","ecosystem":"pypi","requirements":"==0.0.5","direct":true,"kind":"runtime","optional":false},{"id":7734835054,"package_name":"pyopenssl","ecosystem":"pypi","requirements":"\u003e=23","direct":true,"kind":"runtime","optional":false},{"id":7734835055,"package_name":"boto3","ecosystem":"pypi","requirements":"==1.26.64","direct":true,"kind":"runtime","optional":false},{"id":7734835056,"package_name":"ffmpeg-python","ecosystem":"pypi","requirements":"==0.2.0","direct":true,"kind":"runtime","optional":false},{"id":7734835057,"package_name":"natsort","ecosystem":"pypi","requirements":"==8.1.0","direct":true,"kind":"runtime","optional":false},{"id":7734835058,"package_name":"easydict","ecosystem":"pypi","requirements":"==1.9.0","direct":true,"kind":"runtime","optional":false},{"id":7734835059,"package_name":"moviepy","ecosystem":"pypi","requirements":"==1.0.3","direct":true,"kind":"runtime","optional":false},{"id":7734835060,"package_name":"jupyter_bbox_widget","ecosystem":"pypi","requirements":"==0.5.0","direct":true,"kind":"runtime","optional":false},{"id":7734835061,"package_name":"imagesize","ecosystem":"pypi","requirements":"==1.4.1","direct":true,"kind":"runtime","optional":false},{"id":7734835062,"package_name":"tensorboard","ecosystem":"pypi","requirements":"\u003e=2.4.1","direct":true,"kind":"runtime","optional":false},{"id":7734835063,"package_name":"wandb","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7734835064,"package_name":"seaborn","ecosystem":"pypi","requirements":"\u003e=0.11.0","direct":true,"kind":"runtime","optional":false},{"id":7734835065,"package_name":"pandas","ecosystem":"pypi","requirements":"==1.1.4","direct":true,"kind":"runtime","optional":false},{"id":7734835066,"package_name":"thop","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7734835067,"package_name":"ipyfilechooser","ecosystem":"pypi","requirements":"==0.4.4","direct":true,"kind":"runtime","optional":false},{"id":7734835068,"package_name":"gdown","ecosystem":"pypi","requirements":"==3.13.0","direct":true,"kind":"runtime","optional":false},{"id":7734835069,"package_name":"itables","ecosystem":"pypi","requirements":"==0.3.0","direct":true,"kind":"runtime","optional":false},{"id":7734835070,"package_name":"scp","ecosystem":"pypi","requirements":"==0.14.1","direct":true,"kind":"runtime","optional":false},{"id":7734835071,"package_name":"dataclass-csv","ecosystem":"pypi","requirements":"==1.4.0","direct":true,"kind":"runtime","optional":false},{"id":7734835072,"package_name":"split-folders","ecosystem":"pypi","requirements":"==0.5.1","direct":true,"kind":"runtime","optional":false},{"id":7734835073,"package_name":"openpyxl","ecosystem":"pypi","requirements":"==3.1.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/detect-unused-code.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:29:38.378Z","updated_at":"2023-09-21T19:29:38.378Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/.github/workflows/detect-unused-code.yml","dependencies":[{"id":13856702003,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13856702004,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/code-formatting.yml","sha":null,"kind":"manifest","created_at":"2026-02-11T22:01:59.738Z","updated_at":"2026-02-11T22:01:59.738Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/.github/workflows/code-formatting.yml","dependencies":[{"id":25816192853,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":25816192854,"package_name":"psf/black","ecosystem":"actions","requirements":"stable","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"containers/base/Dockerfile","sha":null,"kind":"manifest","created_at":"2026-02-11T22:01:59.846Z","updated_at":"2026-02-11T22:01:59.846Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/containers/base/Dockerfile","dependencies":[{"id":25816192855,"package_name":"${FFMPEG_BASE_IMAGE}","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false},{"id":25816192860,"package_name":"${BASE_IMAGE}","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"requirements_cpu.txt","sha":null,"kind":"manifest","created_at":"2026-02-11T22:02:00.387Z","updated_at":"2026-02-11T22:02:00.387Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/requirements_cpu.txt","dependencies":[{"id":25816192875,"package_name":"torch","ecosystem":"pypi","requirements":"==2.8.0","direct":true,"kind":"runtime","optional":false},{"id":25816192876,"package_name":"torchvision","ecosystem":"pypi","requirements":"==0.23.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements_rocm6.4.txt","sha":null,"kind":"manifest","created_at":"2026-02-11T22:02:00.553Z","updated_at":"2026-02-11T22:02:00.553Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/requirements_rocm6.4.txt","dependencies":[{"id":25816192879,"package_name":"torch","ecosystem":"pypi","requirements":"==2.8.0","direct":true,"kind":"runtime","optional":false},{"id":25816192880,"package_name":"torchvision","ecosystem":"pypi","requirements":"==0.23.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/actions/increase-docker-space/action.yml","sha":null,"kind":"manifest","created_at":"2026-02-11T22:01:59.395Z","updated_at":"2026-02-11T22:01:59.395Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/.github/actions/increase-docker-space/action.yml","dependencies":[]},{"ecosystem":"pypi","filepath":"requirements_cuda12.9.txt","sha":null,"kind":"manifest","created_at":"2026-02-11T22:02:00.502Z","updated_at":"2026-02-11T22:02:00.502Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/requirements_cuda12.9.txt","dependencies":[{"id":25816192877,"package_name":"torch","ecosystem":"pypi","requirements":"==2.8.0","direct":true,"kind":"runtime","optional":false},{"id":25816192878,"package_name":"torchvision","ecosystem":"pypi","requirements":"==0.23.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"containers/final/Dockerfile","sha":null,"kind":"manifest","created_at":"2026-02-11T22:02:00.325Z","updated_at":"2026-02-11T22:02:00.325Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/containers/final/Dockerfile","dependencies":[{"id":25816192874,"package_name":"${BASE_IMAGE}","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build-and-test.yml","sha":null,"kind":"manifest","created_at":"2026-02-11T22:01:59.435Z","updated_at":"2026-02-11T22:01:59.435Z","repository_link":"https://github.com/ocean-data-factory-sweden/kso/blob/dev/.github/workflows/build-and-test.yml","dependencies":[{"id":25816192836,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v6","direct":true,"kind":"composite","optional":false},{"id":25816192837,"package_name":"./.github/actions/increase-docker-space","ecosystem":"actions","requirements":"*","direct":true,"kind":"composite","optional":false},{"id":25816192842,"package_name":"docker/login-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":25816192843,"package_name":"docker/setup-qemu-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":25816192844,"package_name":"docker/setup-buildx-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":25816192845,"package_name":"docker/build-push-action","ecosystem":"actions","requirements":"v6","direct":true,"kind":"composite","optional":false}]}],"score":6.222576268071369,"created_at":"2023-09-13T08:45:11.092Z","updated_at":"2026-04-08T01:01:26.629Z","avatar_url":"https://github.com/ocean-data-factory-sweden.png","language":"Python","category":"Biosphere","sub_category":"Marine Life and Fishery","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# KSO System\n\nThe KSO System is an open-source machine learning framework for underwater video analysis, developed from the [Koster Seafloor Observatory][koster-url] research initiative and the Swedish Platform for Subsea Image Analysis ([SUBSIM][subsim-url]). It is optimized for GPU-accelerated HPC environments, particularly LUMI, and integrates with MLflow for experiment tracking.\n\n\u003c!-- PROJECT SHIELDS --\u003e\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![GPL License][license-shield]][license-url]\n\n\u003e **📘 New to KSO?** Each notebook contains step-by-step instructions with clearly marked **EDIT THIS** cells. This README provides an overview — the notebooks will guide you through each stage.\n\n## System Overview\n\n![KSO System Overview][high-level-overview]\n\n## Quick Start\n\n### 1. Clone the repository\n\n```bash\ngit clone -b dev https://github.com/ocean-data-factory-sweden/kso.git\ncd kso\n```\n\n### 2. Choose your environment\n\nFor **LUMI** (recommended): see [`docs/LUMI_SETUP.md`](./docs/LUMI_SETUP.md) for container setup and Jupyter session configuration.\n\nFor **local development**:\n\n```bash\npip install -r requirements.txt\njupyter lab\n```\n\n### 3. Run the notebooks\n\nUse the table below to choose the first stage that matches what you already have.\n\n| You have… | Start at |\n|---|---|\n| Raw footage only OR Already annotated images in Biigle but need a dataset | **00** Data Preparation |\n| A YOLO dataset (`data.yaml` + train/val/test splits) | **01** Project Setup |\n| A trained model (or weights) and you want to fine-tune on a dataset | **02** Training \u0026 Eval |\n| A trained model and you want to run inference on images/video | **03** Inference + **04** Analysis |\n| A validated model that you want to publish along with your dataset | **05** Publish Model |\n\n\u003e **Note:** Notebooks 00, 03, 04, and 05 are still in development. For a working path today, see the **Standalone Notebooks** section below.\n\n### Official Pipeline (00–05)\n\n| # | Notebook | Description | Status |\n|--:|----------|-------------|--------|\n| 00 | 00_Data_Preparation.ipynb | Transfer footage to LUMI (optional), extract frames, build your image set for annotation in [Biigle](https://biigle.de), convert annotation CSV to YOLO format. *Skip if you already have a YOLO dataset.* | 🔜 In development |\n| 01 | 01_Project_Setup.ipynb | Create a KSO2 project (`.project.yaml`), attach your YOLO dataset, configure tracking, and optionally run offline augmentation. | ✅ Stable |\n| 02 | 02_Train_and_Eval_Models.ipynb | Train or fine-tune a YOLO model, track runs with MLflow, and evaluate on the test set. | ✅ Stable |\n| 03 | 03_Inference.ipynb | Run inference or batch inference on new images or video; export detections (CSV + annotated media). | 🔜 In development |\n| 04 | 04_Analysis.ipynb | Summary statistics, maxN, per-class summaries, and visualizations. | 🚧 Planned |\n| 05 | 05_Publish_Models.ipynb | Package models and metadata; publish to Zenodo or Researchdata.se. | 🚧 Planned |\n\n### Standalone Notebooks\n\nWhile the official pipeline is being finalized, these notebooks provide a working path for new users — covering dataset preparation in [Biigle](https://biigle.de), and model training end-to-end.\n\n| Notebook | Path | Covers |\n|----------|------|--------|\n| Biigle_to_YOLO.ipynb | [`notebooks/setup/Biigle_to_YOLO.ipynb`](./notebooks/setup/Biigle_to_YOLO.ipynb) | Biigle CSV → YOLO conversion (data preparation for our Biigle users) |\n| Train_models.ipynb | [`notebooks/analyse/Train_models.ipynb`](./notebooks/analyse/Train_models.ipynb) | YOLO model training and fine-tuning using Ultralytics |\n\n### Available YOLO models\n\nThe training notebook supports several Ultralytics model families. See the notebook itself for full model tables.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eModel families and sizing guidance\u003c/b\u003e (click to expand)\u003c/summary\u003e\n\nSupported families include YOLOv8, YOLOv9, YOLOv10, and YOLO11. Each offers sizes from nano (n) through xlarge (x).\n\nPractical guidance:\n\n- **Small datasets (~100–250 images):** prefer **nano** or **small** — larger models will overfit.\n- **Medium datasets (~250–750 images):** use **medium** for a good balance.\n- **Large datasets (750+ images):** consider **large** or **xlarge** if resources allow.\n\n\u003c/details\u003e\n\n## Installation\n\n### System requirements\n\n- **Minimum**: Python 3.12, 16 GB RAM, ≈10 GB free disk space.\n- **Recommended**: CUDA/ROCm-capable GPU (≥8 GB VRAM) and access to an HPC system (e.g. LUMI).\n\n### Option 1 — LUMI (recommended)\n\nKSO is primarily developed and tested on the LUMI supercomputer, running via a Singularity/Apptainer container on GPU nodes. If you're a first time user:\n- head to [`contrib/lumi/`](./contrib/lumi/) and check [`contrib/lumi/README.md`](./contrib/lumi/README.md) to get started.\n\n### Option 2 — Other HPC systems\n\n```bash\ngit clone -b dev https://github.com/ocean-data-factory-sweden/kso.git\ncd kso\n# Follow your HPC's recommended way to launch Jupyter or batch jobs\n```\n\nUse your center's standard GPU modules or containers, and bind project and scratch storage as appropriate.\n\n### Option 3 — Local development\n\nFor local use without HPC access. Note that training without a GPU will be slow, and smaller models with lower batch sizes are recommended.\n\n**Docker:**\n\n\u003e **⚠️ Note:** The Docker image may not be up to date with the current codebase. Verify it works for your use case before relying on it.\n\n```bash\ndocker pull ghcr.io/ocean-data-factory-sweden/kso:dev\ndocker run --gpus all -it -p 8888:8888 ghcr.io/ocean-data-factory-sweden/kso:dev\n# Then open http://localhost:8888 in your browser\n```\n\n**pip:**\n\n```bash\ngit clone -b dev https://github.com/ocean-data-factory-sweden/kso.git\ncd kso\npip install -r requirements.txt\njupyter lab\n```\n\n## Developer Instructions\n\nWe welcome contributions!\n\n1. Work from the `dev` branch; create feature branches off `dev`.\n2. Format Python code with Black:\n   ```bash\n   black filename.py\n   ```\n3. Use **Conventional Commits** for messages: `feat:`, `fix:`, `docs:`, `refactor:`, `test:`.\n4. Keep commit history clean and logical (squash where appropriate) and **rebase** onto `dev` (never merge).\n5. Open a Pull Request targeting `dev` and request at least 2 reviewers.\n\n## Citation\n\nIf this code or its trained models contribute to your research, please cite:\n\n\u003e Anton V, Germishuys J, Bergström P, Lindegarth M, Obst M (2021). An open-source, citizen science and machine learning approach to analyse subsea movies. *Biodiversity Data Journal* 9: e60548. [https://doi.org/10.3897/BDJ.9.e60548](https://doi.org/10.3897/BDJ.9.e60548)\n\n## Support \u0026 Contact\n\n- **Website**: [https://subsim.se](https://subsim.se)\n- **Issues**: [GitHub Issues][issues-url]\n- **Contact**: matthias.obst(at)marine.gu.se\n\nWe are always excited to collaborate with marine scientists. Feel free to reach out with questions or ideas!\n\n## Legacy Notebooks (Zooniverse workflow)\n\nThese notebooks implement the original Zooniverse citizen-science pipeline and are maintained for existing projects. For new work, use the main workflow above.\n\n| Task | Notebook | Description | Colab |\n|------|----------|-------------|-------|\n| Check Zooniverse metadata | Check_metadata | Check format of footage, sites, media and species CSV files | [![Open In Colab][colab-badge]][colab_tut_1] |\n| Classify | Upload_subjects_to_Zooniverse | Prepare footage and upload clips to Zooniverse | [![Open In Colab][colab-badge]][colab_tut_3] |\n| Classify | Process_classifications | Pull and process classifications from Zooniverse | [![Open In Colab][colab-badge]][colab_tut_8] |\n| Analyse | Evaluate_models | Standalone model evaluation | [![Open In Colab][colab-badge]][colab_tut_6] |\n| Publish | Publish_models | Publish model to a public repository | [![Open In Colab][colab-badge]][colab_tut_7] |\n| Publish | Publish_observations | Export observations to GBIF/OBIS | [![Open In Colab][colab-badge]][colab_tut_9] |\n\n## License\n\nSUBSIM/KSO is released under the **GPL-3.0 license**. See [LICENSE.txt](./LICENSE.txt) for details.\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n[contributors-shield]: https://img.shields.io/github/contributors/ocean-data-factory-sweden/kso.svg?style=for-the-badge\n[contributors-url]: https://github.com/ocean-data-factory-sweden/kso/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/ocean-data-factory-sweden/kso.svg?style=for-the-badge\n[forks-url]: https://github.com/ocean-data-factory-sweden/kso/network/members\n[stars-shield]: https://img.shields.io/github/stars/ocean-data-factory-sweden/kso.svg?style=for-the-badge\n[stars-url]: https://github.com/ocean-data-factory-sweden/kso/stargazers\n[issues-shield]: https://img.shields.io/github/issues/ocean-data-factory-sweden/kso.svg?style=for-the-badge\n[issues-url]: https://github.com/ocean-data-factory-sweden/kso/issues\n[license-shield]: https://img.shields.io/github/license/ocean-data-factory-sweden/kso.svg?style=for-the-badge\n[license-url]: https://github.com/ocean-data-factory-sweden/kso/blob/dev/LICENSE.txt\n[high-level-overview]: https://github.com/ocean-data-factory-sweden/kso/blob/dev/assets/high-level-overview.png?raw=true\n[koster-url]: https://www.zooniverse.org/projects/victorav/the-koster-seafloor-observatory\n[subsim-url]: https://subsim.se\n[colab-badge]: https://colab.research.google.com/assets/colab-badge.svg\n[colab_tut_1]: https://colab.research.google.com/github/ocean-data-factory-sweden/kso/blob/dev/notebooks/setup/Check_metadata.ipynb\n[colab_tut_3]: https://colab.research.google.com/github/ocean-data-factory-sweden/kso/blob/dev/notebooks/classify/Upload_subjects_to_Zooniverse.ipynb\n[colab_tut_6]: https://colab.research.google.com/github/ocean-data-factory-sweden/kso/blob/dev/notebooks/analyse/Evaluate_models.ipynb\n[colab_tut_7]: https://colab.research.google.com/github/ocean-data-factory-sweden/kso/blob/dev/notebooks/publish/Publish_models.ipynb\n[colab_tut_8]: https://colab.research.google.com/github/ocean-data-factory-sweden/kso/blob/dev/notebooks/classify/Process_classifications.ipynb\n[colab_tut_9]: https://colab.research.google.com/github/ocean-data-factory-sweden/kso/blob/dev/notebooks/publish/Publish_observations.ipynb\n","funding_links":["https://github.com/sponsors/glenn-jocher","https://patreon.com/ultralytics","https://opencollective.com/ultralytics"],"readme_doi_urls":["https://doi.org/10.3897/BDJ.9.e60548"],"works":{"https://doi.org/10.3897/BDJ.9.e60548":{"id":"https://openalex.org/W3130618688","doi":"https://doi.org/10.3897/bdj.9.e60548","title":"An open-source, citizen science and machine learning approach to analyse subsea movies","display_name":"An open-source, citizen science and machine learning approach to analyse subsea movies","publication_year":2021,"publication_date":"2021-02-24","ids":{"openalex":"https://openalex.org/W3130618688","doi":"https://doi.org/10.3897/bdj.9.e60548","mag":"3130618688","pmid":"https://pubmed.ncbi.nlm.nih.gov/33679174","pmcid":"https://www.ncbi.nlm.nih.gov/pmc/articles/7930014"},"language":"en","primary_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.3897/bdj.9.e60548","pdf_url":"https://bdj.pensoft.net/article/60548/download/pdf/","source":{"id":"https://openalex.org/S2764367193","display_name":"Biodiversity Data Journal","issn_l":"1314-2828","issn":["1314-2828","1314-2836"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310321056","host_organization_name":"Pensoft Publishers","host_organization_lineage":["https://openalex.org/P4310321056"],"host_organization_lineage_names":["Pensoft Publishers"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"type":"article","type_crossref":"journal-article","open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://bdj.pensoft.net/article/60548/download/pdf/","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5069771188","display_name":"Victor Anton","orcid":"https://orcid.org/0000-0002-1471-5571"},"institutions":[],"countries":["NZ"],"is_corresponding":false,"raw_author_name":"Victor Anton","raw_affiliation_string":"Wildlife.ai, New Plymouth, New Zealand Wildlife.ai New Plymouth New Zealand.","raw_affiliation_strings":["Wildlife.ai, New Plymouth, New Zealand Wildlife.ai New Plymouth New Zealand."]},{"author_position":"middle","author":{"id":"https://openalex.org/A5080812075","display_name":"Jannes Germishuys","orcid":null},"institutions":[],"countries":["SE"],"is_corresponding":false,"raw_author_name":"Jannes Germishuys","raw_affiliation_string":"Combine AB, Gothenburg, Sweden Combine AB Gothenburg Sweden.","raw_affiliation_strings":["Combine AB, Gothenburg, Sweden Combine AB Gothenburg Sweden."]},{"author_position":"middle","author":{"id":"https://openalex.org/A5089405116","display_name":"Per Bergström","orcid":"https://orcid.org/0000-0002-7566-3656"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Per Bergström","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"middle","author":{"id":"https://openalex.org/A5091193228","display_name":"Mats Lindegarth","orcid":"https://orcid.org/0000-0001-5361-5437"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Mats Lindegarth","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"last","author":{"id":"https://openalex.org/A5030741196","display_name":"Matthias Obst","orcid":"https://orcid.org/0000-0003-0264-9631"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Matthias Obst","raw_affiliation_string":"","raw_affiliation_strings":[]}],"countries_distinct_count":2,"institutions_distinct_count":0,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":{"value":450,"currency":"EUR","value_usd":485,"provenance":"doaj"},"apc_paid":{"value":450,"currency":"EUR","value_usd":485,"provenance":"openapc"},"has_fulltext":false,"cited_by_count":6,"cited_by_percentile_year":{"min":88,"max":89},"biblio":{"volume":"9","issue":null,"first_page":null,"last_page":null},"is_retracted":false,"is_paratext":false,"keywords":[{"keyword":"movies","score":0.3991},{"keyword":"machine learning","score":0.3425},{"keyword":"machine learning approach","score":0.3327},{"keyword":"citizen science","score":0.3208},{"keyword":"open-source","score":0.25}],"concepts":[{"id":"https://openalex.org/C197352329","wikidata":"https://www.wikidata.org/wiki/Q1093434","display_name":"Citizen science","level":2,"score":0.8594277},{"id":"https://openalex.org/C2777737062","wikidata":"https://www.wikidata.org/wiki/Q14898686","display_name":"Subsea","level":2,"score":0.7293884},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.65967304},{"id":"https://openalex.org/C101468663","wikidata":"https://www.wikidata.org/wiki/Q1620158","display_name":"Modular design","level":2,"score":0.6043973},{"id":"https://openalex.org/C2522767166","wikidata":"https://www.wikidata.org/wiki/Q2374463","display_name":"Data science","level":1,"score":0.54247844},{"id":"https://openalex.org/C98083399","wikidata":"https://www.wikidata.org/wiki/Q3246517","display_name":"Underwater","level":2,"score":0.4978683},{"id":"https://openalex.org/C198531522","wikidata":"https://www.wikidata.org/wiki/Q485146","display_name":"Sample (material)","level":2,"score":0.4221461},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.40789506},{"id":"https://openalex.org/C119857082","wikidata":"https://www.wikidata.org/wiki/Q2539","display_name":"Machine learning","level":1,"score":0.3601578},{"id":"https://openalex.org/C201995342","wikidata":"https://www.wikidata.org/wiki/Q682496","display_name":"Systems engineering","level":1,"score":0.3466862},{"id":"https://openalex.org/C127413603","wikidata":"https://www.wikidata.org/wiki/Q11023","display_name":"Engineering","level":0,"score":0.17057312},{"id":"https://openalex.org/C199104240","wikidata":"https://www.wikidata.org/wiki/Q118291","display_name":"Marine engineering","level":1,"score":0.13845041},{"id":"https://openalex.org/C205649164","wikidata":"https://www.wikidata.org/wiki/Q1071","display_name":"Geography","level":0,"score":0.11846143},{"id":"https://openalex.org/C166957645","wikidata":"https://www.wikidata.org/wiki/Q23498","display_name":"Archaeology","level":1,"score":0.10129681},{"id":"https://openalex.org/C185592680","wikidata":"https://www.wikidata.org/wiki/Q2329","display_name":"Chemistry","level":0,"score":0.0},{"id":"https://openalex.org/C59822182","wikidata":"https://www.wikidata.org/wiki/Q441","display_name":"Botany","level":1,"score":0.0},{"id":"https://openalex.org/C43617362","wikidata":"https://www.wikidata.org/wiki/Q170050","display_name":"Chromatography","level":1,"score":0.0},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.0},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.0}],"mesh":[],"locations_count":5,"locations":[{"is_oa":true,"landing_page_url":"https://doi.org/10.3897/bdj.9.e60548","pdf_url":"https://bdj.pensoft.net/article/60548/download/pdf/","source":{"id":"https://openalex.org/S2764367193","display_name":"Biodiversity Data Journal","issn_l":"1314-2828","issn":["1314-2828","1314-2836"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310321056","host_organization_name":"Pensoft Publishers","host_organization_lineage":["https://openalex.org/P4310321056"],"host_organization_lineage_names":["Pensoft Publishers"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},{"is_oa":true,"landing_page_url":"https://zenodo.org/record/4580005","pdf_url":"https://zenodo.org/record/4580005/files/BDJ_article_60548.pdf","source":{"id":"https://openalex.org/S4306400562","display_name":"Zenodo (CERN European Organization for Nuclear Research)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"host_organization":"https://openalex.org/I67311998","host_organization_name":"European Organization for Nuclear Research","host_organization_lineage":["https://openalex.org/I67311998"],"host_organization_lineage_names":["European Organization for Nuclear Research"],"type":"repository"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},{"is_oa":true,"landing_page_url":"https://preprints.arphahub.com/article/60597/","pdf_url":"https://preprints.arphahub.com/article/60597/download/pdf/","source":{"id":"https://openalex.org/S4306401521","display_name":"Check List the Journal of Biodiversity Data (Pensoft)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"host_organization":"https://openalex.org/I4210111537","host_organization_name":"Pensoft Publishers (Bulgaria)","host_organization_lineage":["https://openalex.org/I4210111537"],"host_organization_lineage_names":["Pensoft Publishers (Bulgaria)"],"type":"repository"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},{"is_oa":true,"landing_page_url":"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7930014","pdf_url":null,"source":{"id":"https://openalex.org/S2764455111","display_name":"PubMed Central","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"host_organization":"https://openalex.org/I1299303238","host_organization_name":"National Institutes of Health","host_organization_lineage":["https://openalex.org/I1299303238"],"host_organization_lineage_names":["National Institutes of Health"],"type":"repository"},"license":null,"version":"publishedVersion","is_accepted":true,"is_published":true},{"is_oa":false,"landing_page_url":"https://pubmed.ncbi.nlm.nih.gov/33679174","pdf_url":null,"source":{"id":"https://openalex.org/S4306525036","display_name":"PubMed","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"host_organization":"https://openalex.org/I1299303238","host_organization_name":"National Institutes of Health","host_organization_lineage":["https://openalex.org/I1299303238"],"host_organization_lineage_names":["National Institutes of Health"],"type":"repository"},"license":null,"version":null,"is_accepted":false,"is_published":false}],"best_oa_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.3897/bdj.9.e60548","pdf_url":"https://bdj.pensoft.net/article/60548/download/pdf/","source":{"id":"https://openalex.org/S2764367193","display_name":"Biodiversity Data Journal","issn_l":"1314-2828","issn":["1314-2828","1314-2836"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310321056","host_organization_name":"Pensoft Publishers","host_organization_lineage":["https://openalex.org/P4310321056"],"host_organization_lineage_names":["Pensoft Publishers"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/14","display_name":"Life below water","score":0.82}],"grants":[{"funder":"https://openalex.org/F4320321030","funder_display_name":"VINNOVA","award_id":null}],"referenced_works_count":12,"referenced_works":["https://openalex.org/W1519478720","https://openalex.org/W2046118626","https://openalex.org/W2061920292","https://openalex.org/W2131293310","https://openalex.org/W2549277965","https://openalex.org/W2739663224","https://openalex.org/W2750040298","https://openalex.org/W2761027789","https://openalex.org/W2905363651","https://openalex.org/W3004288773","https://openalex.org/W3100146621","https://openalex.org/W3126418351"],"related_works":["https://openalex.org/W2948947745","https://openalex.org/W1985973698","https://openalex.org/W4387028395","https://openalex.org/W2801157177","https://openalex.org/W200687773","https://openalex.org/W1917585782","https://openalex.org/W2332055331","https://openalex.org/W4224318071","https://openalex.org/W2360915458","https://openalex.org/W2020694775"],"ngrams_url":"https://api.openalex.org/works/W3130618688/ngrams","abstract_inverted_index":{"The":[0,99],"increasing":[1],"access":[2],"to":[3,9,27,42,48,61,87,115,144,152,160,235,271],"autonomously-operated":[4],"technologies":[5,18],"offer":[6],"vast":[7],"opportunities":[8],"sample":[10],"large":[11,68,89,274],"volumes":[12,69],"of":[13,70,91,130,155,162,213,222,256,276],"biological":[14,131],"data.":[15],"However,":[16],"these":[17],"also":[19],"impose":[20],"novel":[21],"demands":[22],"on":[23,138],"ecologists":[24],"who":[25],"need":[26],"apply":[28],"tools":[29,45],"for":[30,51,66,95,128,169,217,242],"data":[31,72,94,156,241],"management":[32],"and":[33,40,55,107,123,141,146,157,220,239,246,264],"processing":[34],"that":[35,253],"are":[36,46,269],"efficient,":[37],"publicly":[38],"available":[39],"easy":[41],"use.":[43],"Such":[44],"starting":[47],"be":[49,233],"developed":[50],"a":[52,175,191],"wider":[53],"community":[54],"here":[56],"we":[57],"present":[58],"an":[59,84,196],"approach":[60,86,100,135,168,227],"combine":[62],"essential":[63],"analytical":[64],"functions":[65],"analysing":[67,88],"image":[71],"in":[73,174,179,190,279],"marine":[74,96,163],"ecological":[75,97,244],"research.":[76,98],"This":[77,133],"paper":[78],"describes":[79],"the":[80,109,118,149,211,254,280],"Koster":[81],"Seafloor":[82],"Observatory,":[83],"open-source":[85,139,257],"amounts":[90,275],"subsea":[92,110],"movie":[93],"incorporates":[101],"three":[102],"distinct":[103],"modules":[104],"to:":[105],"manage":[106],"archive":[108],"movies,":[111],"involve":[112],"citizen":[113,207,230,259],"scientists":[114],"accurately":[116],"classify":[117],"footage":[119],"and,":[120],"finally,":[121],"train":[122],"test":[124],"machine":[125,192,214,262],"learning":[126,193,215,263],"algorithms":[127],"detection":[129],"objects.":[132],"modular":[134],"is":[136],"based":[137],"code":[140],"allows":[142],"researchers":[143],"customise":[145],"further":[147],"develop":[148],"presented":[150],"functionalities":[151],"various":[153],"types":[154],"questions":[158],"related":[159],"analysis":[161],"imagery.":[164],"We":[165,209,251],"tested":[166],"our":[167],"monitoring":[170,221],"cold":[171,223],"water":[172,224],"corals":[173],"Marine":[176],"Protected":[177],"Area":[178],"Sweden":[180],"using":[181],"videos":[182],"from":[183,248],"remotely-operated":[184],"vehicles":[185],"(ROVs).":[186],"Our":[187,226],"study":[188],"resulted":[189],"model":[194],"with":[195,203],"adequate":[197],"performance,":[198],"which":[199],"was":[200],"entirely":[201],"trained":[202],"classifications":[204],"provided":[205],"by":[206],"scientists.":[208],"illustrate":[210],"application":[212],"models":[216],"automated":[218],"inventories":[219],"corals.":[225],"shows":[228],"how":[229],"science":[231,260],"can":[232],"used":[234],"effectively":[236],"extract":[237],"occurrence":[238],"abundance":[240],"key":[243,270],"species":[245],"habitats":[247],"underwater":[249,277],"footage.":[250],"conclude":[252],"combination":[255],"tools,":[258],"systems,":[261],"high":[265],"performance":[266],"computational":[267],"resources":[268],"successfully":[272],"analyse":[273],"imagery":[278],"future.":[281]},"cited_by_api_url":"https://api.openalex.org/works?filter=cites:W3130618688","counts_by_year":[{"year":2023,"cited_by_count":2},{"year":2022,"cited_by_count":4}],"updated_date":"2023-12-13T07:31:14.469463","created_date":"2021-03-01"}},"citation_counts":{"https://doi.org/10.3897/BDJ.9.e60548":6},"total_citations":6,"keywords_from_contributors":["transformer","optimize","archiving","measur","language-model","compose","observation","conversion","generic","animals"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/46062","html_url":"https://ost.ecosyste.ms/projects/46062"}