{"id":1312,"date":"2024-03-31T15:48:34","date_gmt":"2024-03-31T15:48:34","guid":{"rendered":"https:\/\/justinmatters.co.uk\/wp\/?p=1312"},"modified":"2026-03-01T12:00:42","modified_gmt":"2026-03-01T12:00:42","slug":"using-a-vlm-for-categorisation-of-images","status":"publish","type":"post","link":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/","title":{"rendered":"Using a VLM for Categorisation of Images (Part 1)"},"content":{"rendered":"<p>Categorisation of images has long been possible with a variety of visual machine learning models. However in almost all cases the categories have to be specifically trained in advance using a labelled dataset. It would be nice if we could use a model to categorise without needing to train first. Such a model could be used for instance to create a database which categorises the images found in a folder structure to allow for more intuitive retrieval of desired images.<\/p>\n<figure id=\"attachment_1321\" aria-describedby=\"caption-attachment-1321\" style=\"width: 700px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1321 size-full\" src=\"https:\/\/justinmatters.co.uk\/wp\/wp-content\/uploads\/2024\/03\/wolf.jpg\" alt=\"{ 'file': 'D:\/pictures\/wolf.jpg', 'style': 'Photo', 'category': 'Wildlife', 'description': 'A wolf standing in the snow with bare trees in the background' }\" width=\"700\" height=\"542\" srcset=\"https:\/\/justinmatters.co.uk\/wp\/wp-content\/uploads\/2024\/03\/wolf.jpg 700w, https:\/\/justinmatters.co.uk\/wp\/wp-content\/uploads\/2024\/03\/wolf-300x232.jpg 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><figcaption id=\"caption-attachment-1321\" class=\"wp-caption-text\">Sample image from Wikipedia which was classified as &#8220;photo|wildlife|A wolf standing in the snow with bare trees in the background&#8221;<\/figcaption><\/figure>\n<h2>Vision Language Models<\/h2>\n<p>One possible way to approach this problem is to use a Vision-Language Model (VLM) to perform zero shot categorisation. I decided to investigate the practicality of classifying images at scale using such a VLM. I decided to attempt to return an image style, an image category and a short description for each image. Through careful construction of a prompt I found that I was able to have OpenAI&#8217;s <code>gpt-4-vision-preview<\/code>\u00a0model perform all three of these tasks in a single pass with good reliability. I achieved 100% reliability for returning a pipe separated triple. I also achieved 100% accuracy of classification of image style and category. I also got what I would subjectively judge to be good image descriptions in all test cases. <a href=\"https:\/\/github.com\/JustinMatters\/SmallProjects\/blob\/main\/image_categoriser.ipynb\">Sample code and prompt can be found on my Github.<\/a><\/p>\n<p>For my test samples, cost appeared to be approximately \u00a34-5.00 per thousand images with a processing rate of approximately 800-1000 images per hour. This certainly seems practical and useful for many applications.<\/p>\n<h2>Local Implementation of VLM<\/h2>\n<p>Given the cost and confidentiality implications of sending the images to an online VLM, it might be nice to run categorisation using a local VLM . The issue here is that many of these models are very large and cannot be run locally on most people&#8217;s systems. However of late a couple of promising compact VLMs have become available. These are <a href=\"https:\/\/github.com\/Meituan-AutoML\/MobileVLM\">MobileVLM<\/a> and <a href=\"https:\/\/github.com\/DLYuanGod\/TinyGPT-V\">TinyGPT-V<\/a>. Code for both is available on Github.<\/p>\n<p>I decided to investigate MobileVLM since its installation process seems less involved. It has good installation instructions, however one of the libraries in its requirements.txt requires a prior PyTorch installation. You can pick the appropriate PyTorch installation for your machine from the<a href=\"https:\/\/pytorch.org\/get-started\/locally\/\"> PyTorch website<\/a>. You also need to have the CUDA Compiler as well as the CUDA runtime. This can be downloaded from <a href=\"https:\/\/developer.nvidia.com\/cuda-toolkit\">NVIDIA<\/a>, be sure to use the version that matches your torch.version.cuda. The version I needed was 11.8, found<a href=\"https:\/\/developer.nvidia.com\/cuda-11-8-0-download-archive\"> here<\/a>.<\/p>\n<p>Once you have installed MobileVLM as per its instructions, and downloaded one of the models, you are able to run its example code. I decided to download version 2 of the smallest model: <a href=\"https:\/\/huggingface.co\/mtgv\/MobileVLM_V2-1.7B\">MobileVLM_V2-1.7B<\/a>. Attempting to run this model ran into issues however. It transpired that some dependencies were extremely intricate or limited to particular operating systems. I came across three\u00a0 particular issues.<\/p>\n<ul>\n<li>It would appear that <code>flash-attn<\/code> is <a href=\"https:\/\/github.com\/Dao-AILab\/flash-attention\/issues\/231\">incompatible with my version of CUDA<\/a><\/li>\n<li>MobileVLM requires the <code>bitsandbytes<\/code> library, but the standard version of this is <a href=\"https:\/\/www.mindfiretechnology.com\/blog\/archive\/installing-bitsandbtyes-for-windows-so-that-you-can-do-peft\/\">not Windows compatible and workarounds are temperamental<\/a><\/li>\n<li>For the <code>deepspeed<\/code> library I got an error message &#8220;unable to install flash-attn because it would not build and deepspeed because it is windows only&#8221; but on the other hand <a href=\"https:\/\/github.com\/microsoft\/DeepSpeed\/issues\/2880\">other libraries appeared to be linux only including some of deepspeed&#8217;s dependencies<\/a>!<\/li>\n<\/ul>\n<p>Overall these dependency difficulties prevented me from installing MobileVLM as this stage. Attempts to install tinyGPT-V were also frustrated by an extremely long dependency list including <code>triton<\/code> which is Linux only and some highly specific CUDA related libraries.<\/p>\n<h2>Conclusion<\/h2>\n<p>The basic idea of using a VLM for assisting with classification of image libraries appears to be practical. Using the OpenAI <code>gpt-4-vision-preview <\/code>was successful at a zero shot implementation without needing to use any approaches beyond prompt engineering. <a href=\"https:\/\/github.com\/JustinMatters\/SmallProjects\/blob\/main\/image_categoriser.ipynb\">As mentioned above sample code and prompt can be found on my Github.<\/a><\/p>\n<p>I have not yet been able to test use of a local VLM for categorisation, though in principle it should be possible given a sufficiently competent local VLM model. Hopefully a more user friendly compact VLM will be available soon at which point I can revisit local implementation.<\/p>\n<p>&nbsp;<\/p>\n<p><code class=\"hljs language-bash\"><\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Categorisation of images has long been possible with a variety of visual machine learning models. However in almost all cases the categories have to be&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[199,11,5],"tags":[130,150,137,152,151,149],"class_list":["post-1312","post","type-post","status-publish","format-standard","hentry","category-artificial-intelligence","category-data-science","category-problem-solving","tag-ai","tag-categorisation","tag-llm","tag-openai","tag-visual-language-model","tag-vlm"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using a VLM for Categorisation of Images (Part 1) - Justin&#039;s Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using a VLM for Categorisation of Images (Part 1) - Justin&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"Categorisation of images has long been possible with a variety of visual machine learning models. However in almost all cases the categories have to be&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/\" \/>\n<meta property=\"og:site_name\" content=\"Justin&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-31T15:48:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-01T12:00:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/justinmatters.co.uk\/wp\/wp-content\/uploads\/2024\/03\/wolf.jpg\" \/>\n<meta name=\"author\" content=\"justinmatters\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"justinmatters\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/\"},\"author\":{\"name\":\"justinmatters\",\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/#\\\/schema\\\/person\\\/7c3e0740e1fef74f705c19f175f6f321\"},\"headline\":\"Using a VLM for Categorisation of Images (Part 1)\",\"datePublished\":\"2024-03-31T15:48:34+00:00\",\"dateModified\":\"2026-03-01T12:00:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/\"},\"wordCount\":711,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/wolf.jpg\",\"keywords\":[\"AI\",\"categorisation\",\"LLM\",\"OpenAI\",\"Visual Language Model\",\"VLM\"],\"articleSection\":[\"Artificial Intelligence\",\"Data Science\",\"Problem Solving\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/\",\"url\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/\",\"name\":\"Using a VLM for Categorisation of Images (Part 1) - Justin&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/wolf.jpg\",\"datePublished\":\"2024-03-31T15:48:34+00:00\",\"dateModified\":\"2026-03-01T12:00:42+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/#\\\/schema\\\/person\\\/7c3e0740e1fef74f705c19f175f6f321\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/#primaryimage\",\"url\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/wolf.jpg\",\"contentUrl\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/wolf.jpg\",\"width\":700,\"height\":542},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/using-a-vlm-for-categorisation-of-images\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using a VLM for Categorisation of Images (Part 1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/#website\",\"url\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/\",\"name\":\"Justin's Blog\",\"description\":\"Justin&#039;s Coding and Geek Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/#\\\/schema\\\/person\\\/7c3e0740e1fef74f705c19f175f6f321\",\"name\":\"justinmatters\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/27cf337940887c098b79716aa7025ce782bd51de3f6b07a9dcad710bbf576c59?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/27cf337940887c098b79716aa7025ce782bd51de3f6b07a9dcad710bbf576c59?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/27cf337940887c098b79716aa7025ce782bd51de3f6b07a9dcad710bbf576c59?s=96&d=mm&r=g\",\"caption\":\"justinmatters\"},\"description\":\"Data Scientist specialising in Python, PySpark, SQL and Machine Learning\",\"sameAs\":[\"https:\\\/\\\/justinmatters.co.uk\\\/wp\\\/\",\"https:\\\/\\\/uk.linkedin.com\\\/in\\\/justin-matters-edinburgh\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using a VLM for Categorisation of Images (Part 1) - Justin&#039;s Blog","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:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/","og_locale":"en_US","og_type":"article","og_title":"Using a VLM for Categorisation of Images (Part 1) - Justin&#039;s Blog","og_description":"Categorisation of images has long been possible with a variety of visual machine learning models. However in almost all cases the categories have to be&hellip;","og_url":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/","og_site_name":"Justin&#039;s Blog","article_published_time":"2024-03-31T15:48:34+00:00","article_modified_time":"2026-03-01T12:00:42+00:00","og_image":[{"url":"https:\/\/justinmatters.co.uk\/wp\/wp-content\/uploads\/2024\/03\/wolf.jpg","type":"","width":"","height":""}],"author":"justinmatters","twitter_card":"summary_large_image","twitter_misc":{"Written by":"justinmatters","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/#article","isPartOf":{"@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/"},"author":{"name":"justinmatters","@id":"https:\/\/justinmatters.co.uk\/wp\/#\/schema\/person\/7c3e0740e1fef74f705c19f175f6f321"},"headline":"Using a VLM for Categorisation of Images (Part 1)","datePublished":"2024-03-31T15:48:34+00:00","dateModified":"2026-03-01T12:00:42+00:00","mainEntityOfPage":{"@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/"},"wordCount":711,"commentCount":0,"image":{"@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/#primaryimage"},"thumbnailUrl":"https:\/\/justinmatters.co.uk\/wp\/wp-content\/uploads\/2024\/03\/wolf.jpg","keywords":["AI","categorisation","LLM","OpenAI","Visual Language Model","VLM"],"articleSection":["Artificial Intelligence","Data Science","Problem Solving"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/","url":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/","name":"Using a VLM for Categorisation of Images (Part 1) - Justin&#039;s Blog","isPartOf":{"@id":"https:\/\/justinmatters.co.uk\/wp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/#primaryimage"},"image":{"@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/#primaryimage"},"thumbnailUrl":"https:\/\/justinmatters.co.uk\/wp\/wp-content\/uploads\/2024\/03\/wolf.jpg","datePublished":"2024-03-31T15:48:34+00:00","dateModified":"2026-03-01T12:00:42+00:00","author":{"@id":"https:\/\/justinmatters.co.uk\/wp\/#\/schema\/person\/7c3e0740e1fef74f705c19f175f6f321"},"breadcrumb":{"@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/#primaryimage","url":"https:\/\/justinmatters.co.uk\/wp\/wp-content\/uploads\/2024\/03\/wolf.jpg","contentUrl":"https:\/\/justinmatters.co.uk\/wp\/wp-content\/uploads\/2024\/03\/wolf.jpg","width":700,"height":542},{"@type":"BreadcrumbList","@id":"https:\/\/justinmatters.co.uk\/wp\/using-a-vlm-for-categorisation-of-images\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/justinmatters.co.uk\/wp\/"},{"@type":"ListItem","position":2,"name":"Using a VLM for Categorisation of Images (Part 1)"}]},{"@type":"WebSite","@id":"https:\/\/justinmatters.co.uk\/wp\/#website","url":"https:\/\/justinmatters.co.uk\/wp\/","name":"Justin's Blog","description":"Justin&#039;s Coding and Geek Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/justinmatters.co.uk\/wp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/justinmatters.co.uk\/wp\/#\/schema\/person\/7c3e0740e1fef74f705c19f175f6f321","name":"justinmatters","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/27cf337940887c098b79716aa7025ce782bd51de3f6b07a9dcad710bbf576c59?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/27cf337940887c098b79716aa7025ce782bd51de3f6b07a9dcad710bbf576c59?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/27cf337940887c098b79716aa7025ce782bd51de3f6b07a9dcad710bbf576c59?s=96&d=mm&r=g","caption":"justinmatters"},"description":"Data Scientist specialising in Python, PySpark, SQL and Machine Learning","sameAs":["https:\/\/justinmatters.co.uk\/wp\/","https:\/\/uk.linkedin.com\/in\/justin-matters-edinburgh"]}]}},"_links":{"self":[{"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/posts\/1312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/comments?post=1312"}],"version-history":[{"count":13,"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/posts\/1312\/revisions"}],"predecessor-version":[{"id":1329,"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/posts\/1312\/revisions\/1329"}],"wp:attachment":[{"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/media?parent=1312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/categories?post=1312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/justinmatters.co.uk\/wp\/wp-json\/wp\/v2\/tags?post=1312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}