{"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/self-supervised-learning-framework-for-remote","title":"Self-supervised Representation Learning Framework for Remote Physiological Measurement Using Spatiotemporal Augmentation Loss","arxiv_id":"2107.07695","date":"2021-07-16","proceeding":null,"authors":["Hao Wang","Euijoon Ahn","Jinman Kim"],"abstract":"Recent advances in supervised deep learning methods are enabling remote measurements of photoplethysmography-based physiological signals using facial videos. The performance of these supervised methods, however, are dependent on the availability of large labelled data. Contrastive learning as a self-supervised method has recently achieved state-of-the-art performances in learning representative data features by maximising mutual information between different augmented views. However, existing data augmentation techniques for contrastive learning are not designed to learn physiological signals from videos and often fail when there are complicated noise and subtle and periodic colour or shape variations between video frames. To address these problems, we present a novel self-supervised spatiotemporal learning framework for remote physiological signal representation learning, where there is a lack of labelled training data. Firstly, we propose a landmark-based spatial augmentation that splits the face into several informative parts based on the Shafer dichromatic reflection model to characterise subtle skin colour fluctuations. We also formulate a sparsity-based temporal augmentation exploiting Nyquist-Shannon sampling theorem to effectively capture periodic temporal changes by modelling physiological signal features. Furthermore, we introduce a constrained spatiotemporal loss which generates pseudo-labels for augmented video clips. It is used to regulate the training process and handle complicated noise. We evaluated our framework on 3 public datasets and demonstrated superior performances than other self-supervised methods and achieved competitive accuracy compared to the state-of-the-art supervised methods.","url_abs":"https://arxiv.org/abs/2107.07695v2","url_pdf":"https://arxiv.org/pdf/2107.07695v2.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":"self-supervised-learning-framework-for-remote","repo_url":"https://github.com/Dylan-H-Wang/SLF-RPM","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"data-augmentation","task_name":"Data Augmentation"},{"task_slug":"heart-rate-estimation","task_name":"Heart rate estimation"},{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2107.07695","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2107.07695"}},"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/Dylan-H-Wang/SLF-RPM","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":2,"unverified":4},"by_repo_kind":{"official":{"samples":6,"ran":2,"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":0,"samples":[{"code_sha256_prefix":"213ccc8fb87ee8d9","entry":"conv1x1x1","repo":"Dylan-H-Wang/SLF-RPM","repo_kind":"official","path":"models/resnet3d.py","file_url":"https://github.com/Dylan-H-Wang/SLF-RPM/blob/HEAD/models/resnet3d.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"213ccc8fb87ee8d9"}},{"code_sha256_prefix":"c3b215555357b9d1","entry":"conv3x3x3","repo":"Dylan-H-Wang/SLF-RPM","repo_kind":"official","path":"models/resnet3d.py","file_url":"https://github.com/Dylan-H-Wang/SLF-RPM/blob/HEAD/models/resnet3d.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c3b215555357b9d1"}},{"code_sha256_prefix":"98c067d9bcd56ac1","entry":"align_face","repo":"Dylan-H-Wang/SLF-RPM","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/Dylan-H-Wang/SLF-RPM/blob/HEAD/utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"98c067d9bcd56ac1"}},{"code_sha256_prefix":"88714ddc04f23d3b","entry":"extract_hr_from_ecg","repo":"Dylan-H-Wang/SLF-RPM","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/Dylan-H-Wang/SLF-RPM/blob/HEAD/utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"88714ddc04f23d3b"}},{"code_sha256_prefix":"37c1f493166d33e0","entry":"extract_video_frame","repo":"Dylan-H-Wang/SLF-RPM","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/Dylan-H-Wang/SLF-RPM/blob/HEAD/utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"37c1f493166d33e0"}},{"code_sha256_prefix":"4ef93b145bd228db","entry":"generate_model","repo":"Dylan-H-Wang/SLF-RPM","repo_kind":"official","path":"models/resnet3d.py","file_url":"https://github.com/Dylan-H-Wang/SLF-RPM/blob/HEAD/models/resnet3d.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4ef93b145bd228db"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}