{"id":349,"date":"2019-04-25T11:07:27","date_gmt":"2019-04-25T17:07:27","guid":{"rendered":"https:\/\/roc.ai\/?p=349"},"modified":"2019-04-25T11:07:27","modified_gmt":"2019-04-25T17:07:27","slug":"procuring-a-face-recognition-algorithm-efficiency-considerations","status":"publish","type":"post","link":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/","title":{"rendered":"Procuring a Face Recognition Algorithm: Efficiency Considerations"},"content":{"rendered":"<p><span style=\"font-weight:400;\">Suppose you were offered a futuristic virtual reality system on par with The Matrix for just $100. You would purchase it, right?! Now imagine you needed 50,000 sq. ft. of space in your home to run the system. That would change the proposition quite a bit.<\/span><\/p>\n<p><span style=\"font-weight:400;\">In many ways that analogy holds for modern face recognition (FR) algorithms. While <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/09\/evergreen-licensing\/\">accuracies have improved dramatically<\/a><span style=\"font-weight:400;\">, the resources required to deploy a given solution varies dramatically by vendor. <\/span><\/p>\n<p><span style=\"font-weight:400;\">Amongst the 70 most accurate NIST FRVT Ongoing algorithms in the Nov. 2018 report, there were the following fluctuations in efficiency metrics: <\/span><\/p>\n<ul>\n<li style=\"font-weight:400;\"><b><i>15x difference <\/i><\/b><span style=\"font-weight:400;\">in how fast images could be processed for facial detection and vectorizing (i.e., enrollment)<\/span><\/li>\n<li style=\"font-weight:400;\"><b><i>40x difference<\/i><\/b><span style=\"font-weight:400;\"> in the length of the facial vector \/ <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#template\">template<\/a><span style=\"font-weight:400;\"> (i.e., template size)<\/span><\/li>\n<li style=\"font-weight:400;\"><b>220x difference<\/b><span style=\"font-weight:400;\"> in the time it takes to compare two templates (i.e., comparison speed)<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight:400;\">These differences in efficiency can cause hardware cause costs to soar or wholy prevent an application concept, which should concern anyone procuring a face recognition algorithm. <\/span><\/p>\n<p><span style=\"font-weight:400;\">This article will equip you with the knowledge to assess the efficiency requirements of your face recognition system. In turn, you will be able to factor this important consideration into your procurement process and potentially eliminate certain algorithms before the time consuming step of performing internal evaluations. <\/span><\/p>\n<p><b id=\"enrollmentSpeed\">Enrollment speed<\/b><\/p>\n<p><span style=\"font-weight:400;\">Enrollment is the process of detecting faces in an image (or video frame) and creating templates that encode the identifying characteristics of each face. It is one of <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/02\/how-automated-face-recognition-fr-works\/#twoSteps\">the two steps performed<\/a><span style=\"font-weight:400;\"> in automated face recognition, and can play a critical role in system design. <\/span><\/p>\n<p><span style=\"font-weight:400;\">The faster the enrollment speed, the less computing power required. Unfortunately, as shown in the following histogram, enrollment speeds vary considerably across face recognition algorithms:<\/span><\/p>\n<p><img decoding=\"async\" class=\" size-full wp-image-351 aligncenter\" src=\"https:\/\/roc.ai\/wp-content\/uploads\/2019\/04\/enrollment-speeds-of-the-top-70-most-accurate-frvt-ongoing-algorithms_.png\" alt=\"Enrollment speeds of the top 70 most accurate FRVT Ongoing algorithms_\" width=\"756\" height=\"371\" srcset=\"https:\/\/roc.ai\/wp-content\/uploads\/2019\/04\/enrollment-speeds-of-the-top-70-most-accurate-frvt-ongoing-algorithms_.png 756w, https:\/\/roc.ai\/wp-content\/uploads\/2019\/04\/enrollment-speeds-of-the-top-70-most-accurate-frvt-ongoing-algorithms_-480x236.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 756px, 100vw\" \/><\/p>\n<p><span style=\"font-weight:400;\">The enrollment speeds provided in the histogram are from Table 1 in the November 2018 NIST FRVT Ongoing report, which measures enrollment speeds on images with a single face.<\/span><\/p>\n<p><span style=\"font-weight:400;\">It is important to note enrollment speed is generally a function of the number of faces in an image that need to be templatized, and, to a lesser extent, the size of the image (or video frame). Thus, if an image has five faces present, it will take significantly longer to enroll than an image with one face present (usually five times as long). <\/span><\/p>\n<p><span style=\"font-weight:400;\">The reason the number of faces in an image is the primary factor for enrollment speeds is that for modern algorithms the <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/02\/how-automated-face-recognition-fr-works\/#representation\">representation step<\/a><span style=\"font-weight:400;\"> of the enrollment process is generally slower than the <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/02\/how-automated-face-recognition-fr-works\/#representation\">face detection step<\/a><span style=\"font-weight:400;\">. The duration of the representation step will increase directly as a factor of the number of faces in the image. The duration of the detection step changes based on the size of the image and the minimum face size considered. <\/span><\/p>\n<p><span style=\"font-weight:400;\">Enrollment speeds have important implications for the following applications:<\/span><\/p>\n<ol>\n<li style=\"list-style-type:none;\">\n<ol>\n<li style=\"font-weight:400;\"><b>Video processing<\/b><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\">While most cameras capture at a rate of 30 <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#fps\">frames-per-second<\/a><span style=\"font-weight:400;\"> (FPS), typically 5 FPS will suffice for face recognition algorithms. Depending on the enrollment speed of an algorithm, enrolling 5 FPS can make a major difference in the number of CPUs required for real-time processing. Particularly so when each frame may have multiple faces.<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><span style=\"font-weight:400;\"><span style=\"font-weight:400;\">For example, if an algorithm takes 800ms to enroll a frame with one face, then to process 5 FPS in real-time would require nearly 5 CPU cores. By contrast, an algorithm that has an enrollment speed of 150ms would be able to perform real-time processing on just 1 CPU core.<\/span><\/span><\/span>\u00a0<\/li>\n<li style=\"font-weight:400;\"><b>Enrolling a search database <\/b><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\">For search applications, templates must first be generated for each image in the database. The time it takes to enroll a database will be a function of the number of images in the database, the enrollment speed, and the number of CPU cores available.<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><span style=\"font-weight:400;\"><span style=\"font-weight:400;\">For example, let\u2019s say a database of 10M images, each with a single face, needs to be processed for search and the system is powered by an 8 CPU core server. An 800ms algorithm is going to require 800ms * 10e6 images \/ 8 cores = 11.5 days. By contrast, a 150ms algorithm requires only 2 days (assuming there is no bottleneck reading the images from storage).<\/span><\/span><\/span>\u00a0<\/li>\n<li style=\"font-weight:400;\" id=\"reenroll\"><b>Re-enrolling a search database: <\/b><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\">When a vendor ships an improved algorithm it is typically the case that all of the database templates must be re-generated from the original images. And, given the <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/09\/evergreen-licensing\/\">massive rate of improvements in face recognition algorithms<\/a><span style=\"font-weight:400;\">, database re-enrollment is more important than ever. <\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\">To be clear, it is not the case that a system has to be updated every time a new algorithm is made available by a vendor. Further, <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/09\/evergreen-licensing\/\">some face recognition vendors unfortunately do not make algorithm updates readily available<\/a><span style=\"font-weight:400;\">, or they are simply not innovating enough for there to be meaningful algorithm updates. However, assuming that you have (hopefully) selected a vendor that is delivering accuracy improvements on pace with the rest of the industry and you have licensing rights to these updates, at some point you will want to re-enroll your database to create templates from a newer version. <\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><span style=\"font-weight:400;\"><span style=\"font-weight:400;\">The same time calculation for enrolling a database applies to re-enrolling it. A faster enrollment speed may be the difference in re-enrolling over the weekend on the same hardware that hosts the system, or having to purchase a separate server to perform re-enrollment over the course of a few weeks.<\/span><\/span><\/span>\u00a0<\/li>\n<li style=\"font-weight:400;\"><b>Enrolling a probe image: <\/b><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\"><br \/>\n<\/span><span style=\"font-weight:400;\">For both <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#oneToN\">1:N search<\/a><span style=\"font-weight:400;\"> and <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#oneToOne\">1:1 identity verification<\/a><span style=\"font-weight:400;\"> applications, the <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#probe\">probe image<\/a><span style=\"font-weight:400;\"> needs to be enrolled prior to searching it against the <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#gallery\">gallery<\/a><span style=\"font-weight:400;\"><span style=\"font-weight:400;\"><span style=\"font-weight:400;\"> (1:N), or compared against the claimed identity (1:1). Often times this enrollment is trivial because it is only a single image, however there are several cases where slow enrollment speeds can become an issue:<\/span><\/span><\/span><\/p>\n<ol>\n<li style=\"list-style-type:none;\">\n<ol>\n<li style=\"font-weight:400;\"><b>Mobile devices:<\/b><span style=\"font-weight:400;\"><span style=\"font-weight:400;\"> ARM processors, common in mobile devices, typically see enrollment slow by a factor of 2x to 3x.<\/span><\/span><\/li>\n<li style=\"font-weight:400;\"><b>Battery powered devices:<\/b><span style=\"font-weight:400;\"><span style=\"font-weight:400;\"> the less time enrollment takes, the less power consumed. If face recognition is persistent (e.g., mobile device unlock), slower enrollment speeds can result in unreasonable usage of the limited battery capacity.<\/span><\/span><\/li>\n<li style=\"font-weight:400;\"><b>Time-sensitive applications:<\/b><span style=\"font-weight:400;\"> As enrolling the presentation image is but the first step in a subsequent application (e.g., search or compare), if an application requires a quick turn-around, then slow enrollment speeds with negatively affect the user experience.<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<ol>\n<li style=\"list-style-type:none;\"><\/li>\n<\/ol>\n<p><b id=\"templateSize\" style=\"color:var(--color-text);\">Template Size<\/b><\/p>\n<p><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#template\">Templates<\/a><span style=\"font-weight:400;\"> store the facial identity measurements needed to compare two faces. A critical software system design concept as it pertains to template size is the speed difference when reading data (e.g., templates) from different storage mediums. Specifically, the read bandwidth of <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#ram\">RAM<\/a><span style=\"font-weight:400;\"> versus <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#persistentStorage\">persistent storage<\/a><span style=\"font-weight:400;\"> (e.g., a hard-drive or network\/cloud storage) can range from 20x to 1000x. Even at 20x difference, this means searching templates stored on disk would be 20x slower than those loaded into RAM.<\/span><\/p>\n<p><span style=\"font-weight:400;\">Due to the above considerations, galleries of templates are first loaded into RAM before being searched. When this is performed the bottleneck for searching typically becomes <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#computeBound\">compute bound<\/a><span style=\"font-weight:400;\"> as opposed to the <\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#ioBound\">I\/O bound<\/a><span style=\"font-weight:400;\">.<\/span><\/p>\n<p><img decoding=\"async\" class=\" size-full wp-image-352 aligncenter\" src=\"https:\/\/roc.ai\/wp-content\/uploads\/2019\/04\/template-sizes-from-the-top-70-most-accurate-frvt-ongoing-algorithms_.png\" alt=\"Template sizes from the top 70 most accurate FRVT Ongoing algorithms_\" width=\"756\" height=\"371\" srcset=\"https:\/\/roc.ai\/wp-content\/uploads\/2019\/04\/template-sizes-from-the-top-70-most-accurate-frvt-ongoing-algorithms_.png 756w, https:\/\/roc.ai\/wp-content\/uploads\/2019\/04\/template-sizes-from-the-top-70-most-accurate-frvt-ongoing-algorithms_-480x236.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 756px, 100vw\" \/><\/p>\n<p><span style=\"font-weight:400;\">RAM is an expensive resource, particularly when a lot is required. The larger the template size the more RAM required, meaning the distribution of template sizes shown in the histogram above is directly indicative of the amount of RAM required to host search applications.<\/span><\/p>\n<p><span style=\"font-weight:400;\">As an example, let us again consider a database of 10M faces. In this instance, we will consider two different algorithms, one with a template size of 200B (bytes) and one with 2,500B (2.5KB). These template sizes are within the distribution of template sizes by top-tier vendors in the NIST FRVT Ongoing tests. <\/span><\/p>\n<ul>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\">In the case of the 200B algorithm: 200 bytes * 10M templates = <\/span><i><span style=\"font-weight:400;\">2GB of RAM required to load the templates. <\/span><\/i><\/li>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\">In the case of the 2.5KB algorithm: 2,500 bytes * 10M templates =<\/span><i><span style=\"font-weight:400;\"> 25GB of RAM required to load the templates. <\/span><\/i><\/li>\n<\/ul>\n<p><span style=\"font-weight:400;\">These differences in template size can equate to significantly higher hardware costs for a face recognition system.<\/span><\/p>\n<p><b id=\"comparisonSpeed\">Comparison Speed<\/b><\/p>\n<p><span style=\"font-weight:400;\">Comparison speed is similar to template size in that it is quite important in search systems. <\/span><\/p>\n<p><span style=\"font-weight:400;\">For search applications, a reference template is typically compared against every template in the gallery in order to find any matches. Thus, for every gallery template, a comparison must be performed between it and the probe.<\/span><\/p>\n<p><img decoding=\"async\" class=\" size-full wp-image-353 aligncenter\" src=\"https:\/\/roc.ai\/wp-content\/uploads\/2019\/04\/comparison-speeds-from-the-top-70-most-accurate-frvt-ongoing-algorithms_.png\" alt=\"Comparison speeds from the top 70 most accurate FRVT Ongoing algorithms_\" width=\"756\" height=\"406\" srcset=\"https:\/\/roc.ai\/wp-content\/uploads\/2019\/04\/comparison-speeds-from-the-top-70-most-accurate-frvt-ongoing-algorithms_.png 756w, https:\/\/roc.ai\/wp-content\/uploads\/2019\/04\/comparison-speeds-from-the-top-70-most-accurate-frvt-ongoing-algorithms_-480x258.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 756px, 100vw\" \/><\/p>\n<p><span style=\"font-weight:400;\">In NIST FRVT Ongoing, top-tier vendors vary in comparison speeds from 300 nanoseconds (ns) to 75,000ns, as illustrated in the above histogram. This is a difference of 250x between the two extremes of top accuracy vendors. Typically this indicates a 250x difference in search speeds, or significantly more CPU cores needed to enable a timely search. <\/span><\/p>\n<p><span style=\"font-weight:400;\">Consider searching a 10M template database with a single CPU core. With a 300ns comparison time it would take: 300e-9 * 10e6 = 3 seconds. With a 75,000ns comparison time it would take 750 seconds, or 12.5 minutes, a staggering difference between otherwise similar algorithms.<\/span><\/p>\n<p><span style=\"font-weight:400;\">It is worth noting that there is a strong correlation between template size and comparison speed. For example, in the most recent NIST FRVT Ongoing, the <\/span><a class=\"inline-link\" href=\"https:\/\/en.wikipedia.org\/wiki\/Pearson_correlation_coefficient\">correlation coefficient<\/a><span style=\"font-weight:400;\"> between template size and comparison speed for the 99 algorithms benchmarked is 0.835.<\/span><\/p>\n<p><b id=\"binarySize\">Binary size<\/b><\/p>\n<p><span style=\"font-weight:400;\">In addition to loading templates into RAM, the face recognition software itself will occupy a generally fixed amount of memory. The memory used by a face recognition software comprises of (i) code libraries and (ii) statistical models.<\/span><\/p>\n<p><span style=\"font-weight:400;\">While some face recognition software development kits (<\/span><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#sdk\">SDK<\/a><span style=\"font-weight:400;\">s) are carefully implemented to minimize software libraries, others have not been designed with this consideration. Thus, there could be a difference between 10MB of RAM used for one implementation\u2019s code, and 1GB used for another. SDKs and systems with larger libraries may also have more dependencies that make them harder to package and install. <\/span><\/p>\n<p><span style=\"font-weight:400;\">Unfortunately NIST FRVT does not currently measure algorithm binary size. <\/span><\/p>\n<p><span style=\"font-weight:400;\">The models used by a face recognition algorithm are the parameters learned through the offline statistical learning process employed by face recognition vendors. As every viable face recognition algorithm uses machine learning (often referred to as \u201cAI\u201d), every vendor will have models that need to be loaded into RAM in order to enroll images to templates.<\/span><\/p>\n<p><span style=\"font-weight:400;\">NIST FRVT does measure the model size, though there are a few issues with how this is currently reported (e.g., Rank One\u2019s model size is reported as 0 bytes as opposed to roughly 40MB). Regardless, model size ranges from 50MB to 4GB in the November FRVT Ongoing report, which is a tremendous difference.\u00a0<\/span><\/p>\n<p><span style=\"font-weight:400;\">The binary size of an <a class=\"inline-link\" href=\"https:\/\/roc.ai\/sdk\/\">SDK<\/a> becomes particularly important for embedded devices. If an algorithm requires 4GB of RAM, it is generally not possible to use it on low cost embedded devices such as mobile phones, access control devices, doorbells, automobiles, and many other consumer electronic devices that are adding face recognition technology stacks. For many of these applications the <a class=\"inline-link\" href=\"https:\/\/roc.ai\/face-recognition-software\/\">face recognition<\/a> algorithm is but one of several features, and it is often limited to \u00a0less than 100MB (or even 10MB) of RAM. <\/span><\/p>\n<p><b>Applications<\/b><\/p>\n<p><span style=\"font-weight:400;\">With these four different efficiency metrics established, we will help tie these considerations back to applications.<\/span><\/p>\n<p><a id=\"forensicSearch\" class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#forensicSearch\">Forensic Search<\/a><span style=\"font-weight:400;\">:<\/span><\/p>\n<ul>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#templateSize\">Template size<\/a> will impact how many images are searchable on a machine with a fixed amount of RAM.<\/span><\/li>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#comparisonSpeed\">Comparison speed<\/a> will impact how long it takes to receive search results.<\/span><\/li>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#enrollmentSpeed\">Enrollment speed<\/a> will impact how long it takes to initially index or later upgrade a database.<\/span><\/li>\n<\/ul>\n<p><a id=\"accessControl\" class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#accessControl\">Access Control<\/a><span style=\"font-weight:400;\">:<\/span><\/p>\n<ul>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#enrollmentSpeed\">Enrollment speed<\/a> will impact how long it takes a system to process a request.<\/span><\/li>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#enrollmentSpeed\">Enrollment speed<\/a> will impact how much power is consumed, which is particularly important for battery powered devices.<\/span><\/li>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#binarySize\">Binary size<\/a> will impact how much RAM is required, which is often limited in embedded devices.<\/span><\/li>\n<\/ul>\n<p><a id=\"realtimeScreening\" class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#realtimeScreening\">Real-time screening<\/a><span style=\"font-weight:400;\">:<\/span><\/p>\n<ul>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#enrollmentSpeed\">Enrollment speed<\/a> will impact how many CPU cores are required to process a camera feed.<\/span><\/li>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#templateSize\">Template size<\/a> will impact how large of a watch-list can be searched.<\/span><\/li>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#comparisonSpeed\">Comparison speed<\/a> will impact how long it takes to generate match-alerts.<\/span><\/li>\n<\/ul>\n<p><a id=\"identityDeduplication\" class=\"inline-link\" href=\"https:\/\/roc.ai\/2018\/11\/01\/face-recognition-dictionary\/#identityDeduplication\">Identity Deduplication:<\/a><\/p>\n<ul>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#templateSize\">Template size<\/a> will impact how many images are searchable on a machine with a fixed amount of RAM.<\/span><\/li>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#comparisonSpeed\">Comparison speed<\/a> will impact how long it takes to receive search results.<\/span><\/li>\n<li style=\"font-weight:400;\"><span style=\"font-weight:400;\"><a class=\"inline-link\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#enrollmentSpeed\">Enrollment speed<\/a> will impact how long it takes to initially index or later upgrade a database.<\/span><\/li>\n<\/ul>\n<p><b>Summary<\/b><\/p>\n<p><span style=\"font-weight:400;\">The efficiency of a face recognition algorithm can significantly affect the hardware cost of an application, or even whether the application can be built in the first place. There are four efficiency metrics to consider when procuring a face recognition algorithm: enrollment speed, template size, comparison speed, and binary size. And, while there is a wide range of face recognition algorithms with similar accuracy, there can be a massive differences in efficiency across these algorithms. <\/span><\/p>\n<p><span style=\"font-weight:400;\">Before you begin the process of integrating and testing an algorithm, it is critical to understand how these different metrics may impact your application and to filter out any solutions that do not meet your hardware budget or application requirements. <\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article will equip you with the knowledge to assess the efficiency requirements of your face recognition system. In turn, you will be able to factor this important consideration into your procurement process and potentially eliminate certain algorithms before the time consuming step of performing internal evaluations.<\/p>\n","protected":false},"author":143642095,"featured_media":369,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[677108370,4762,671645718],"tags":[47945,12279,17931],"class_list":["post-349","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-educational","category-roc-sdk","tag-efficiency","tag-face-recognition","tag-procurement"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Efficiency in Face Recognition Algorithms: Key Considerations for Procurement<\/title>\n<meta name=\"description\" content=\"Learn how efficiency varies in face recognition algorithms and its impact on system design, highlighting enrollment speed and template size considerations.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Efficiency in Face Recognition Algorithms: Key Considerations for Procurement\" \/>\n<meta property=\"og:description\" content=\"Learn how efficiency varies in face recognition algorithms and its impact on system design, highlighting enrollment speed and template size considerations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/\" \/>\n<meta property=\"og:site_name\" content=\"ROC\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-25T17:07:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/roc.ai\/wp-content\/uploads\/2019\/05\/efficiencybackdrop.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1628\" \/>\n\t<meta property=\"og:image:height\" content=\"815\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Brendan Klare\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rocfacerec\" \/>\n<meta name=\"twitter:site\" content=\"@rocfacerec\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brendan Klare\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/\"},\"author\":{\"name\":\"Brendan Klare\",\"@id\":\"https:\/\/roc.ai\/#\/schema\/person\/6da6e6a524d01a7d63e094526a46918f\"},\"headline\":\"Procuring a Face Recognition Algorithm: Efficiency Considerations\",\"datePublished\":\"2019-04-25T17:07:27+00:00\",\"dateModified\":\"2019-04-25T17:07:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/\"},\"wordCount\":2103,\"publisher\":{\"@id\":\"https:\/\/roc.ai\/#organization\"},\"keywords\":[\"efficiency\",\"face recognition\",\"procurement\"],\"articleSection\":[\"Blog\",\"Educational\",\"ROC SDK\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/\",\"url\":\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/\",\"name\":\"Efficiency in Face Recognition Algorithms: Key Considerations for Procurement\",\"isPartOf\":{\"@id\":\"https:\/\/roc.ai\/#website\"},\"datePublished\":\"2019-04-25T17:07:27+00:00\",\"dateModified\":\"2019-04-25T17:07:27+00:00\",\"description\":\"Learn how efficiency varies in face recognition algorithms and its impact on system design, highlighting enrollment speed and template size considerations.\",\"breadcrumb\":{\"@id\":\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/roc.ai\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Procuring a Face Recognition Algorithm: Efficiency Considerations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/roc.ai\/#website\",\"url\":\"https:\/\/roc.ai\/\",\"name\":\"ROC\",\"description\":\"Rank One develops industry-leading, American-made computer vision solutions that leverage Artifical Intelligence and make the world safer and more convenient.\",\"publisher\":{\"@id\":\"https:\/\/roc.ai\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/roc.ai\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/roc.ai\/#organization\",\"name\":\"ROC\",\"url\":\"https:\/\/roc.ai\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/roc.ai\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/roc.ai\/wp-content\/uploads\/2022\/09\/RankOne_Vector.svg\",\"contentUrl\":\"https:\/\/roc.ai\/wp-content\/uploads\/2022\/09\/RankOne_Vector.svg\",\"width\":208,\"height\":57,\"caption\":\"ROC\"},\"image\":{\"@id\":\"https:\/\/roc.ai\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/twitter.com\/rocfacerec\",\"https:\/\/www.linkedin.com\/company\/rank-one-computing\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/roc.ai\/#\/schema\/person\/6da6e6a524d01a7d63e094526a46918f\",\"name\":\"Brendan Klare\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/roc.ai\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ba9ff4a47a1c281ed2d89ca46c08ee2d?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ba9ff4a47a1c281ed2d89ca46c08ee2d?s=96&d=identicon&r=g\",\"caption\":\"Brendan Klare\"},\"description\":\"CEO of Rank One Computing and long time researcher of automated face recognition algorithms.\",\"sameAs\":[\"http:\/\/rankone994165702.wordpress.com\"],\"url\":\"https:\/\/roc.ai\/author\/bklare\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Efficiency in Face Recognition Algorithms: Key Considerations for Procurement","description":"Learn how efficiency varies in face recognition algorithms and its impact on system design, highlighting enrollment speed and template size considerations.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/","og_locale":"en_US","og_type":"article","og_title":"Efficiency in Face Recognition Algorithms: Key Considerations for Procurement","og_description":"Learn how efficiency varies in face recognition algorithms and its impact on system design, highlighting enrollment speed and template size considerations.","og_url":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/","og_site_name":"ROC","article_published_time":"2019-04-25T17:07:27+00:00","og_image":[{"width":1628,"height":815,"url":"https:\/\/roc.ai\/wp-content\/uploads\/2019\/05\/efficiencybackdrop.png","type":"image\/png"}],"author":"Brendan Klare","twitter_card":"summary_large_image","twitter_creator":"@rocfacerec","twitter_site":"@rocfacerec","twitter_misc":{"Written by":"Brendan Klare","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#article","isPartOf":{"@id":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/"},"author":{"name":"Brendan Klare","@id":"https:\/\/roc.ai\/#\/schema\/person\/6da6e6a524d01a7d63e094526a46918f"},"headline":"Procuring a Face Recognition Algorithm: Efficiency Considerations","datePublished":"2019-04-25T17:07:27+00:00","dateModified":"2019-04-25T17:07:27+00:00","mainEntityOfPage":{"@id":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/"},"wordCount":2103,"publisher":{"@id":"https:\/\/roc.ai\/#organization"},"keywords":["efficiency","face recognition","procurement"],"articleSection":["Blog","Educational","ROC SDK"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/","url":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/","name":"Efficiency in Face Recognition Algorithms: Key Considerations for Procurement","isPartOf":{"@id":"https:\/\/roc.ai\/#website"},"datePublished":"2019-04-25T17:07:27+00:00","dateModified":"2019-04-25T17:07:27+00:00","description":"Learn how efficiency varies in face recognition algorithms and its impact on system design, highlighting enrollment speed and template size considerations.","breadcrumb":{"@id":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/roc.ai\/2019\/04\/25\/procuring-a-face-recognition-algorithm-efficiency-considerations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/roc.ai\/"},{"@type":"ListItem","position":2,"name":"Procuring a Face Recognition Algorithm: Efficiency Considerations"}]},{"@type":"WebSite","@id":"https:\/\/roc.ai\/#website","url":"https:\/\/roc.ai\/","name":"ROC","description":"Rank One develops industry-leading, American-made computer vision solutions that leverage Artifical Intelligence and make the world safer and more convenient.","publisher":{"@id":"https:\/\/roc.ai\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/roc.ai\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/roc.ai\/#organization","name":"ROC","url":"https:\/\/roc.ai\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/roc.ai\/#\/schema\/logo\/image\/","url":"https:\/\/roc.ai\/wp-content\/uploads\/2022\/09\/RankOne_Vector.svg","contentUrl":"https:\/\/roc.ai\/wp-content\/uploads\/2022\/09\/RankOne_Vector.svg","width":208,"height":57,"caption":"ROC"},"image":{"@id":"https:\/\/roc.ai\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/rocfacerec","https:\/\/www.linkedin.com\/company\/rank-one-computing\/"]},{"@type":"Person","@id":"https:\/\/roc.ai\/#\/schema\/person\/6da6e6a524d01a7d63e094526a46918f","name":"Brendan Klare","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/roc.ai\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ba9ff4a47a1c281ed2d89ca46c08ee2d?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ba9ff4a47a1c281ed2d89ca46c08ee2d?s=96&d=identicon&r=g","caption":"Brendan Klare"},"description":"CEO of Rank One Computing and long time researcher of automated face recognition algorithms.","sameAs":["http:\/\/rankone994165702.wordpress.com"],"url":"https:\/\/roc.ai\/author\/bklare\/"}]}},"_links":{"self":[{"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/posts\/349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/users\/143642095"}],"replies":[{"embeddable":true,"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/comments?post=349"}],"version-history":[{"count":0,"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/posts\/349\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/media\/369"}],"wp:attachment":[{"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/media?parent=349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/categories?post=349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/roc.ai\/wp-json\/wp\/v2\/tags?post=349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}