## 2 Background
### PyVHR  
_PyVHR_ is a framework for assessing the performance of remote photoplethysmography (rPPG) algorithms. rPPG is a technique developed to estimate human cardiac activity from a video signal. The version of _PyVHR_ evaluated in this paper is version 1.0.2 which can be accessed via the _PyVHR_ releases page on the GitHub repository [3]. It is stated in the publication associated with _PyVHR_, that this framework is unique in its capabilities for providing a standardized and reproducible way of implementing full rPPG pipelines, with a specific focus on obtaining continuous heart rate measurements from a video signal, and benchmarking them against multiple datasets [3]. Conceptually, _PyVHR_ takes the critical sub-process used in an established rPPG algorithm, which convert an array of red, green and blue (RGB) digital pixels to an estimate of blood volume pressure (BVP) for a region of skin, and places it in a standardised pipeline. Hence, the RGB to BVP process can be compared without the influence of variations in any other sub-processes. Examples of such variations include differences in how the colour of the skin is sampled and how the heart rate is calculated from the BVP signal. Out of the ten RGB to BVP sub-processes implemented, the [PERSON] and Jeannes chrominance approach (CHROM) [31] is shown to be most effective on the two datasets [32] tested in the associated publication for _PyVHR_[3]. CHROM is a digital signal-processing algorithm which was developed with the aim of improving motion robustness, so that remote heart rate measurements may be captured effectively on subjects using gym equipment [31]. Despite the algorithm showing poor performance within this difficult application area, it has become one of the most popular approaches for rPPG. Notably, [PERSON] et al. showed a drop in performance from an average error of 1.91 beats per minute (BPM) with the subject resting to 14.81 BPM with the subject using the gym [33]. The algorithm adds sophistication to previously proposed methods based on blind source separation, by considering the difference between light reflected off the surface of the skin and light which has travelled through the skin and therefore contains information associated with the subject's cardiac cycle. It was developed using 117 one-minute uncompressed facial videos, as well as an undefined number of videos of subjects using a stepping machine and static bicycle in a gym. Both datasets were recorded with a specialised camera in parallel with a pulse-oximeter finger clip [31]. There are multiple documented ways of using the _PyVHR_ software framework, including a graphical user interface (GUI). Within the demo workbook, functions from the software pipeline are called individually. This segmentation of the overall process, from video to heart rate, avoids extended run times. The CHROM method is used in the demo workbook implementation [3] and hence hypothetically provides a reproducible system performance benchmark with minimal usability hurdles. Details of the implementation from the demo workbook can be found in Table 1.  
There are two versions of _PyVHR_, one for CPU-only run times and the other for computers with graphical processing units (GPUs). The GPU version of the package is reported to run in real-time for 30 FPS high-definition video. The CPU version is also reported to run in real-time when using the holistic skin segmenting sub-process. However, when utilising the _patches_ skin extraction functionality of the system (see Table 1) the CPU version takes around 0.12 s to process a single frame. These results are based on the following hardware configuration: _\"Intel Xeon Silver 4214R 2.40 GHz\"_ (CPU), _\"NVIDIA Tesla V100S PCIe 32 GB\"_ (GPU) [3]. Exploring the robustness of rPPG systems is an active area of research. [PERSON] et al. 's [34] results suggest that CHROM is relatively robust to different skin tones, compared to the other four algorithms tested [35; 36; 37; 38]. However, they found that for the darkest skin