{"id":21774,"date":"2018-08-13T22:24:06","date_gmt":"2018-08-13T22:24:06","guid":{"rendered":"http:\/\/facial_surveillance_system_for_restricted_zones"},"modified":"2024-08-16T12:40:51","modified_gmt":"2024-08-16T19:40:51","slug":"facial_surveillance_system_for_restricted_zones","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones","title":{"rendered":"Facial Recognition Surveillance System for Restricted Zones Using Cloudinary"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>In Africa, where Internet access and bandwidth are limited, it\u2019s not cost-effective or feasible to establish and maintain a connectivity for security and surveillance applications. That challenge makes it almost impossible to build a service that detects, with facial-recognition technology, if someone entering a building is authorized to do so. To meet the final-year research requirement for my undergraduate studies, I developed a facial-surveillance system. Armed with a background in computer vision, I decided to push the limits and see if I could build a surveillance system that does not require recording long video footage.<\/p>\n<p>Gratifyingly, I succeeded and was able to build an offline, real-time facial-surveillance system that comprises two parts:<\/p>\n<ul>\n<li>A vision system.<\/li>\n<li>A web interface that enables you to see, in real time, the identity of someone who has entered a building and determine if that person has been preauthorized to be there.<\/li>\n<\/ul>\n<h2>Related Technologies<\/h2>\n<p>I built the system with several technologies, as follows:<\/p>\n<ul>\n<li>Python (OpenCV and Tensorflow) for the vision segment<\/li>\n<li>Laravel PHP for the administrative dashboard<\/li>\n<li>Pusher for triggering of real-time events<\/li>\n<li>Cloudinary for uploading and serving images to the administrative dashboard<\/li>\n<\/ul>\n<h2>System Capabilities<\/h2>\n<p>Here is how the system works.<\/p>\n<h3>Training the System<\/h3>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<div style=\"text-align:center;\">\n<span style=\"display:inline-block;vertical-align:top;\">\n<a href=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_350,c_fill,f_auto,q_auto\/dpr_auto\/Facial_Surveillance_Choice.png\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_350,c_fill,f_auto,q_auto\/dpr_auto\/Facial_Surveillance_Choice.png\" alt=\u201cFacial Surveillance\u201d title=\"\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<b style=\"margin-right: 10px;display:block;\"><\/b>\n<\/span>\n<span style=\"display:inline-block;vertical-align:top;\">\n<a href=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_350,c_fill,f_auto,q_auto\/dpr_auto\/Facial_Surveillance_Name.png\" target =\"_blank\"><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_350,c_fill,f_auto,q_auto\/dpr_auto\/Facial_Surveillance_Name.png\" alt=\u201cFacial Surveillance\u201d title=\"\" style=\"margin-right: 10px;display:block;\" \/><\/a>\n<b style=\"margin-right: 10px;display:block;\"><\/b>\n<\/span>\n<\/div>\n<div style=\"clear: both; margin-bottom: 20px\">\n<\/div>\n<p>First, the system is \u201ctrained\u201d to perform a few critical tasks, as follows:<\/p>\n<p>The system takes about 20 facial images of each of the individuals who are authorized to enter the building and then saves the images locally on the device with a unique ID for each person.\nThe system sends the unique IDs as an API call to the web server for the purpose of tracking those people with entrance privilege.\nThe system aligns all the images and then uses them in the local storage to retrain the last layer of <a href=\"https:\/\/arxiv.org\/abs\/1503.03832\">FaceNet<\/a>, a deep, neural Google network that enables face identification and clustering with the images of the people with entrance privilege. Image embeddings become available as a result.\nThe system fits a Support Vector Classifier with the extracted embeddings for the preauthorized people. This classifier can then recognize human faces.<\/p>\n<h3>Performing Face Recognition Offline<\/h3>\n<p>Clicking the button for running facial surveillance opens a live video stream. Then, for every frame (picture) in the video stream, the system attempts to detect a face. If no face is detected, the system moves to the next frame. In case of a detection, the system obtains the facial embeddings from FaceNet and then feeds them to the classifier for prediction, that is, determine how similar the extracted embedding for the detected face is to the faces of the preauthorized people.<\/p>\n<p>An 80-percent similarity to an preauthorized face authenticates the person entering the building. Otherwise, the system flags that person as a suspect. In case of authentication, the system broadcasts a message to the security panel, informing the people concerned, for example, security personnel, that an authorized face has been spotted.<\/p>\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>All the computations take place on the local machine without any calls to the web server until the system determines the person entering the building has entrance privilege.<\/p><\/div>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_600,c_fill,q_auto\/Working_Demo_of_System_Recognizing_an_Authorized_Member.webp\" alt=\"Working Demo of System Recognizing an Authorized Member\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"600\" height=\"332\"\/>\n<strong>Working Demo of a System Recognizing an Authorized Building Entrant<\/strong><\/p>\n<h3>Uploading Suspect Images With Cloudinary<\/h3>\n<p>As a final step, I needed to upload the face of any suspect identified by the system and reference the image afterwards. For that task, I chose Cloudinary because of its simple and straightforward integration process with no overhead at all.<\/p>\n<p>To get started, I installed the Cloudinary module for Python with the following command:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>pip install cloudinary\n<\/code><\/pre>\n<p>Afterwards, I imported the module into my codebase and then configured the module, as follows:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>import cloudinary\nfrom cloudinary.uploader import upload\n\n[...]\n# configure the cloudinary module\ncloudinary.config(\n    cloud_name=&quot;CLOUD_NAME&quot;,\n    api_key=&quot;CLOUDINARY_API_KEY&quot;,\n    api_secret=&quot;CLOUDINARY_API_SECRET&quot;\n)\n[...]\n# determine if detected face is suspect or not\n[...]\n# save image of suspected face from frame\ncloudinary_resp = upload(image_loc, public_id=time_string)\n# the url of the uploaded image is stored as part of the response of uploading the image : cloudinary_resp['url']\nmessage = {'type': 'unverified', 'time': current_time.strftime(&quot;%Y-%m-%d %H:%M&quot;), 'image_url': cloudinary_resp['url']}\n# this message is then broadcast using pusher\n[...]\n<\/code><\/pre>\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>When uploading an image with Cloudinary, specify the public ID (<code>public_id<\/code>) as an identification of that image. For easy reference, I set the the time the suspect was spotted as the value of <code>public_id<\/code>.<\/p><\/div>\n<p>If the system spots a suspect, the administrative dashboard would look like this:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill,f_auto,q_auto\/dpr_auto\/System_Spotting_a_new_unauthorized_human.png\" alt=\"System Spotting a new unauthorized human\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"788\"\/><\/p>\n<p>Thanks to Cloudinary\u2019s intuitive interface and robust capabilities, image uploads and display for my facial-surveillance project was a breeze. What a great platform!<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21775,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[134],"class_list":["post-21774","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-guest-post"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Facial Recognition Surveillance System For Restricted Zones<\/title>\n<meta name=\"description\" content=\"Ore Ogundipe used Cloudinary in his school project to build an offline, real-time facial recognition surveillance system.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Facial Recognition Surveillance System for Restricted Zones Using Cloudinary\" \/>\n<meta property=\"og:description\" content=\"Ore Ogundipe used Cloudinary in his school project to build an offline, real-time facial recognition surveillance system.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-13T22:24:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-16T19:40:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance-png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1540\" \/>\n\t<meta property=\"og:image:height\" content=\"1026\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Facial Recognition Surveillance System for Restricted Zones Using Cloudinary\",\"datePublished\":\"2018-08-13T22:24:06+00:00\",\"dateModified\":\"2024-08-16T19:40:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance.png?_i=AA\",\"keywords\":[\"Guest Post\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2018\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones\",\"url\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones\",\"name\":\"Facial Recognition Surveillance System For Restricted Zones\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance.png?_i=AA\",\"datePublished\":\"2018-08-13T22:24:06+00:00\",\"dateModified\":\"2024-08-16T19:40:51+00:00\",\"description\":\"Ore Ogundipe used Cloudinary in his school project to build an offline, real-time facial recognition surveillance system.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance.png?_i=AA\",\"width\":1540,\"height\":1026},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Facial Recognition Surveillance System for Restricted Zones Using Cloudinary\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Facial Recognition Surveillance System For Restricted Zones","description":"Ore Ogundipe used Cloudinary in his school project to build an offline, real-time facial recognition surveillance system.","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:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones","og_locale":"en_US","og_type":"article","og_title":"Facial Recognition Surveillance System for Restricted Zones Using Cloudinary","og_description":"Ore Ogundipe used Cloudinary in his school project to build an offline, real-time facial recognition surveillance system.","og_url":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones","og_site_name":"Cloudinary Blog","article_published_time":"2018-08-13T22:24:06+00:00","article_modified_time":"2024-08-16T19:40:51+00:00","og_image":[{"width":1540,"height":1026,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance-png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones"},"author":{"name":"","@id":""},"headline":"Facial Recognition Surveillance System for Restricted Zones Using Cloudinary","datePublished":"2018-08-13T22:24:06+00:00","dateModified":"2024-08-16T19:40:51+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones"},"wordCount":9,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance.png?_i=AA","keywords":["Guest Post"],"inLanguage":"en-US","copyrightYear":"2018","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones","url":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones","name":"Facial Recognition Surveillance System For Restricted Zones","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance.png?_i=AA","datePublished":"2018-08-13T22:24:06+00:00","dateModified":"2024-08-16T19:40:51+00:00","description":"Ore Ogundipe used Cloudinary in his school project to build an offline, real-time facial recognition surveillance system.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance.png?_i=AA","width":1540,"height":1026},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/facial_surveillance_system_for_restricted_zones#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Facial Recognition Surveillance System for Restricted Zones Using Cloudinary"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649721771\/Web_Assets\/blog\/Facial_Surveillance\/Facial_Surveillance.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=21774"}],"version-history":[{"count":3,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21774\/revisions"}],"predecessor-version":[{"id":35300,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21774\/revisions\/35300"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21775"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}