{"id":6610,"date":"2023-07-10T09:30:54","date_gmt":"2023-07-10T17:30:54","guid":{"rendered":"https:\/\/live-cometml.pantheonsite.io\/?p=6610"},"modified":"2025-04-24T17:15:14","modified_gmt":"2025-04-24T17:15:14","slug":"kangas-the-pandas-of-computer-vision","status":"publish","type":"post","link":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/","title":{"rendered":"Kangas: The Pandas of Computer Vision"},"content":{"rendered":"\n<link rel=\"canonical\" href=\"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\">\n\n\n\n<div class=\"fh fi fj fk fl\">\n<div class=\"ab ca\">\n<div class=\"ch bg et eu ev ew\">\n<figure class=\"lw lx ly lz ma mb lt lu paragraph-image\">\n<div class=\"mc md eb me bg mf\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mg mh c\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/0*pQlBsykqsUYsu6jA.png\" alt=\"A purple Kangas logo of a Kangaroo surrounded by a series of squares in a grid-like fashion.\" width=\"850\" height=\"426\"><\/figure><div class=\"lt lu lv\"><picture><\/picture><\/div>\n<\/div><figcaption class=\"mi mj mk lt lu ml mm be b bf z dv\" data-selectable-paragraph=\"\">Photo by <a class=\"af mn\" href=\"https:\/\/www.comet.com\/site\/?utm_source=heartbeat&amp;utm_medium=referral&amp;utm_campaign=AMS_US_EN_AWA_heartbeat_CTA\" target=\"_blank\" rel=\"noopener ugc nofollow\">Comet ML<\/a><\/figcaption><\/figure>\n<h2 id=\"d696\" class=\"mo mp fo be mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl bj\" data-selectable-paragraph=\"\">Introduction<\/h2>\n<p id=\"fcdc\" class=\"pw-post-body-paragraph nm nn fo be b no np nq nr ns nt nu nv mz nw nx ny nd nz oa ob nh oc od oe of fh bj\" data-selectable-paragraph=\"\">In the field of computer vision, <a class=\"af mn\" href=\"https:\/\/github.com\/comet-ml\/kangas\" target=\"_blank\" rel=\"noopener ugc nofollow\">Kangas<\/a> is one of the tools becoming increasingly popular for image data processing and analysis. Similar to how Pandas revolutionized the way data analysts work with tabular data, Kangas is doing the same for computer vision tasks.<\/p>\n<p id=\"acad\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Kangas is an open-source tool by <a class=\"af mn\" href=\"https:\/\/www.comet.com\/site\/customers\/uber\/?utm_source=heartbeat&amp;utm_medium=referral&amp;utm_campaign=AMS_US_EN_AWA_heartbeat_CTA\" target=\"_blank\" rel=\"noopener ugc nofollow\">Comet ML<\/a> for exploring, analyzing, and <a class=\"af mn\" href=\"https:\/\/www.comet.com\/site\/kangas-visualize-multimedia-data-at-scale\/?cn-reloaded=1%3Futm_source%3Dheartbeat&amp;utm_medium=referral&amp;utm_campaign=AMS_US_EN_AWA_heartbeat_CTA\" target=\"_blank\" rel=\"noopener ugc nofollow\">visualizing large-scale multimedia dataset like images, videos, and audio<\/a>. Kangas enables ML professionals to visualize, sort, group, query, and interpret their data (structured or unstructured) to obtain meaningful insights and speed up model development.<\/p>\n<p id=\"b9cf\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Pandas, on the other hand, is a popular open-source Python library for data analysis and manipulation for tabular data. It can also be used to clean and prepare data. It is easy to use, fast, and flexible compared to other libraries, but does not natively support unstructured data types, as Kangas does.<\/p>\n<p id=\"84a3\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Kangas is to computer vision data what Pandas is to tabular data. Kangas provides methods for reading, manipulating and analyzing images as we will see in a few examples in this tutorial.<\/p>\n<h2 id=\"83ed\" class=\"mo mp fo be mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl bj\" data-selectable-paragraph=\"\">Benefits of Kangas<\/h2>\n<ol class=\"\">\n<li id=\"f5a2\" class=\"nm nn fo be b no np nq nr ns nt nu nv ol nw nx ny om nz oa ob on oc od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Simple to use<\/strong>: The main benefit of Kangas is its ability to simplify the process of working with computer vision data. It has a user-friendly API that is fast and data professionals can load, process, and analyze visual data without writing complex lines of code. This makes it easier for data professionals to focus on the task at hand, rather than the technicalities of data processing.<\/li>\n<li id=\"0bf7\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Speed and efficiency: <\/strong>Compared to other computer vision tools, Kangas can handle large datasets with ease and process them quickly, allowing for real-time data analysis and decision-making. This makes it ideal for use in time-sensitive applications such as self-driving vehicles, where quick and accurate analysis of visual data is crucial.<\/li>\n<li id=\"d9f3\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Diverse: <\/strong>Kangas provides a wide range of machine learning algorithms that can be applied to computer vision tasks. These algorithms can be used to perform tasks such as image classification, object detection, and image segmentation.<\/li>\n<li id=\"9895\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Ability to handle large amounts of data: <\/strong>Kangas uses a memory-efficient data structure that allows data professionals to process large amounts of image and video data with great performance. This makes it ideal for working with high-resolution images and video data.<\/li>\n<li id=\"d1ee\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Flexible: <\/strong>Kangas can be run in multi-platform applications like Jupyter notebook, stand-alone applications, or web apps.<\/li>\n<\/ol>\n<h2 id=\"9e5e\" class=\"mo mp fo be mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl bj\" data-selectable-paragraph=\"\">Reading CSV files with Kangas<\/h2>\n<p id=\"da19\" class=\"pw-post-body-paragraph nm nn fo be b no np nq nr ns nt nu nv mz nw nx ny nd nz oa ob nh oc od oe of fh bj\" data-selectable-paragraph=\"\">Reading data from a csv file is quite similar in Kangas and Pandas. The difference is that Kangas creates a DataGrid and Pandas creates a DataFrame. The code below shows how to read data from a csv file into a DataGrid:<\/p>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"86ff\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">import<\/span> kangas <span class=\"hljs-keyword\">as<\/span> kg\n\ndg = kg.read_csv(<span class=\"hljs-string\">\"path_to_csv_file\"<\/span>)<\/span><\/pre>\n<p id=\"c6b6\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">This can be compared to the code used to read csv files in Pandas:<\/p>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"279f\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">import<\/span> pandas <span class=\"hljs-keyword\">as<\/span> pd\ndf = pd.read_csv(<span class=\"hljs-string\">\"path_to_csv_file\"<\/span>)<\/span><\/pre>\n<p id=\"82bb\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Next, we\u2019ll visualize the data in the csv file using the code below:<\/p>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"258d\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\">dg.show()<\/span><\/pre>\n<p id=\"c7a8\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Output:<\/strong><\/p>\n<figure class=\"ox oy oz pa pb mb lt lu paragraph-image\">\n<div class=\"mc md eb me bg mf\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mg mh c\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*Ln-XeG_WVKkDnA1fitkhRA.png\" alt=\"Kangas\u2019 visualization of a csv file.\" width=\"700\" height=\"305\"><\/figure><div class=\"lt lu pn\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/format:webp\/1*Ln-XeG_WVKkDnA1fitkhRA.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/format:webp\/1*Ln-XeG_WVKkDnA1fitkhRA.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/format:webp\/1*Ln-XeG_WVKkDnA1fitkhRA.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/format:webp\/1*Ln-XeG_WVKkDnA1fitkhRA.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/format:webp\/1*Ln-XeG_WVKkDnA1fitkhRA.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/format:webp\/1*Ln-XeG_WVKkDnA1fitkhRA.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1400\/format:webp\/1*Ln-XeG_WVKkDnA1fitkhRA.png 1400w\" type=\"image\/webp\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/1*Ln-XeG_WVKkDnA1fitkhRA.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/1*Ln-XeG_WVKkDnA1fitkhRA.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/1*Ln-XeG_WVKkDnA1fitkhRA.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/1*Ln-XeG_WVKkDnA1fitkhRA.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/1*Ln-XeG_WVKkDnA1fitkhRA.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/1*Ln-XeG_WVKkDnA1fitkhRA.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1400\/1*Ln-XeG_WVKkDnA1fitkhRA.png 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<figcaption class=\"mi mj mk lt lu ml mm be b bf z dv\" data-selectable-paragraph=\"\">Kangas\u2019 visualization of a csv data file\\<\/figcaption>\n<\/figure>\n<p id=\"b5f5\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Compared to Pandas\u2019 syntax below:<\/p>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"defb\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\">df.head()<\/span><\/pre>\n<p id=\"be47\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Note that the Kangas DataGrid is interactive, whereas the Pandas DataFrame is static.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"fh fi fj fk fl\">\n<div class=\"ab ca\">\n<div class=\"ch bg et eu ev ew\">\n<blockquote class=\"pw\"><p id=\"e57a\" class=\"px py fo be pz qa qb qc qd qe qf of dv\" data-selectable-paragraph=\"\">Have you tried Comet? <a class=\"af mn\" href=\"\/signup?utm_source=heartbeat&amp;utm_medium=referral&amp;utm_campaign=AMS_US_EN_SNUP_heartbeat_CTA\" target=\"_blank\" rel=\"noopener ugc nofollow\">Sign up for free and easily track experiments, manage models in production, and visualize your model performance<\/a>.<\/p><\/blockquote>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"fh fi fj fk fl\">\n<div class=\"ab ca\">\n<div class=\"ch bg et eu ev ew\">\n<h2 id=\"fef3\" class=\"mo mp fo be mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl bj\" data-selectable-paragraph=\"\">Reading image files<\/h2>\n<p id=\"e7e3\" class=\"pw-post-body-paragraph nm nn fo be b no np nq nr ns nt nu nv mz nw nx ny nd nz oa ob nh oc od oe of fh bj\" data-selectable-paragraph=\"\">Unlike other computer vision image libraries like OpenCV, reading image files using Kangas uses the simplicity of Pandas to ensure the data scientist puts effort where it is required.<\/p>\n<p id=\"b6c0\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">To read an image file using Kangas, run the code block below:<\/p>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"3eff\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">import<\/span> kangas <span class=\"hljs-keyword\">as<\/span> kg\nimage = kg.Image(<span class=\"hljs-string\">\"path_to_images\"<\/span>).to_pil()\n<\/span><\/pre>\n<p id=\"61fd\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Visualize the image file by running the name the variable \u201c<em class=\"qg\">image<\/em>\u201d as shown in the code below:<\/p>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"1cc4\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\">image<\/span><\/pre>\n<p id=\"16ea\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Output:<\/strong><\/p>\n<figure class=\"ox oy oz pa pb mb lt lu paragraph-image\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mg mh c\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:504\/1*zBwk-qAc8PJO-SPclCpQzg.png\" alt=\"Visualization of an image from the potato dataset in the Kangas interface.\" width=\"504\" height=\"245\"><\/figure><div class=\"lt lu qh\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/format:webp\/1*zBwk-qAc8PJO-SPclCpQzg.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/format:webp\/1*zBwk-qAc8PJO-SPclCpQzg.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/format:webp\/1*zBwk-qAc8PJO-SPclCpQzg.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/format:webp\/1*zBwk-qAc8PJO-SPclCpQzg.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/format:webp\/1*zBwk-qAc8PJO-SPclCpQzg.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/format:webp\/1*zBwk-qAc8PJO-SPclCpQzg.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1008\/format:webp\/1*zBwk-qAc8PJO-SPclCpQzg.png 1008w\" type=\"image\/webp\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 504px\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/1*zBwk-qAc8PJO-SPclCpQzg.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/1*zBwk-qAc8PJO-SPclCpQzg.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/1*zBwk-qAc8PJO-SPclCpQzg.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/1*zBwk-qAc8PJO-SPclCpQzg.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/1*zBwk-qAc8PJO-SPclCpQzg.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/1*zBwk-qAc8PJO-SPclCpQzg.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1008\/1*zBwk-qAc8PJO-SPclCpQzg.png 1008w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 504px\" data-testid=\"og\"><\/picture><\/div>\n<figcaption class=\"mi mj mk lt lu ml mm be b bf z dv\" data-selectable-paragraph=\"\">A potato image output using Kangas.<\/figcaption>\n<\/figure>\n<p id=\"a901\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">From the examples above, you can see how similar Kangas\u2019 syntax is to Pandas.<\/p>\n<h2 id=\"f785\" class=\"mo mp fo be mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl bj\" data-selectable-paragraph=\"\">Pandas and Kangas Similarities<\/h2>\n<ol class=\"\">\n<li id=\"c2a0\" class=\"nm nn fo be b no np nq nr ns nt nu nv ol nw nx ny om nz oa ob on oc od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Syntax:<\/strong> Kangas and Pandas have a similar syntax which is easy to write and use.<\/li>\n<li id=\"6bcf\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Data handling:<\/strong> Kangas and Pandas both have data handling functionalities. Both can read data of any format from csv, Json to xlsx (Excel) files. Kangas uses DataGrid while Pandas uses Data Frame and Series to store data.<\/li>\n<li id=\"07a5\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Data manipulation:<\/strong> Both Kangas and Pandas enable users to filter, sort, merge, and reshape data, but Kangas does so interactively.<\/li>\n<li id=\"a073\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Indexing:<\/strong> Both libraries allow users to index and select data based on labels or conditions. In Pandas, this is done using <code class=\"cw qi qj qk pd b\">loc<\/code> and <code class=\"cw qi qj qk pd b\">iloc<\/code>methods, while in Kangas it is done from the DataGrid.<\/li>\n<li id=\"a51e\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of oo op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Data analysis:<\/strong> Both libraries provide methods for basic data analysis, like descriptive statistics, aggregation, and grouping operations.<\/li>\n<\/ol>\n<h2 id=\"7f57\" class=\"mo mp fo be mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl bj\" data-selectable-paragraph=\"\">Kangas and Pandas Differences<\/h2>\n<ol class=\"\">\n<li id=\"1c79\" class=\"nm nn fo be b no np nq nr ns nt nu nv ol nw nx ny om nz oa ob on oc od oe of oo op oq bj\" data-selectable-paragraph=\"\">Kangas processes image files while Pandas does not.<\/li>\n<li id=\"0fa4\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of oo op oq bj\" data-selectable-paragraph=\"\">Kangas provides a user interface for manipulating the data in the DataGrid while Pandas only allows for programmatic manipulation.<\/li>\n<\/ol>\n<h2 id=\"cfd4\" class=\"mo mp fo be mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl bj\" data-selectable-paragraph=\"\">Creating Kangas DataGrid<\/h2>\n<p id=\"a44f\" class=\"pw-post-body-paragraph nm nn fo be b no np nq nr ns nt nu nv mz nw nx ny nd nz oa ob nh oc od oe of fh bj\" data-selectable-paragraph=\"\">A Kangas DataGrid is an open-source SQLite database that provides the ability to store and display large amounts of data and perform fast complex queries. A DataGrid can also be saved, shared, or even served remotely.<\/p>\n<p id=\"a796\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Some key features of the Kangas DataGrid include:<\/p>\n<ul class=\"\">\n<li id=\"b948\" class=\"nm nn fo be b no og nq nr ns oh nu nv ol oi nx ny om oj oa ob on ok od oe of ql op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Lazy loading<\/strong>: Kangas DataGrid loads data only when needed, which makes it ideal for displaying large datasets.<\/li>\n<li id=\"27a2\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of ql op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Filtering and sorting<\/strong>: Users can filter and sort the data displayed in the grid based on various criteria.<\/li>\n<li id=\"6061\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of ql op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Cell editing<\/strong>: Users can edit individual cells within the grid, and those changes can be saved back to the underlying data source.<\/li>\n<li id=\"51d2\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of ql op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Column resizing and reorderin<\/strong>g: Users can resize and reorder columns within the grid.<\/li>\n<li id=\"945d\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of ql op oq bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Virtual scrolling<\/strong>: Kangas DataGrid supports virtual scrolling, which means that only the visible rows are rendered in the DOM, resulting in a significant performance boost.<\/li>\n<\/ul>\n<p id=\"bbe8\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Kangas DataGrid is easy to customize and configure which allows developers to tailor its design and functionality to meet the needs of their specific applications.<\/p>\n<p id=\"f49a\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Creating a Kangas DataGrid is quite easy for tabular data compared to image data. For tabular data, a DataGrid is created simply by reading a csv file using Kangas as shown below:<\/p>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"0ed4\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\">dg = kg.read_csv(<span class=\"hljs-string\">\"\/path_to_csv_file\"<\/span>)\ndg.show()<\/span><\/pre>\n<p id=\"4bbf\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">For image data, below is a step-by-step process of creating a DataGrid:<\/p>\n<ul class=\"\">\n<li id=\"717d\" class=\"nm nn fo be b no og nq nr ns oh nu nv ol oi nx ny om oj oa ob on ok od oe of ql op oq bj\" data-selectable-paragraph=\"\">First, collect data or download from a data repository like Kaggle.<\/li>\n<li id=\"d4a8\" class=\"nm nn fo be b no os nq nr ns ot nu nv ol ou nx ny om ov oa ob on ow od oe of ql op oq bj\" data-selectable-paragraph=\"\">Split the data into <em class=\"qg\">x_train<\/em>, <em class=\"qg\">x_test<\/em>, <em class=\"qg\">y_train <\/em>and <em class=\"qg\">y_test <\/em>partitions.<\/li>\n<\/ul>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"1768\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">from<\/span> sklearn.model_selection <span class=\"hljs-keyword\">import<\/span> train_test_split\nX_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=<span class=\"hljs-number\">0.2<\/span>,\n                                                random_state=<span class=\"hljs-number\">42<\/span>)<\/span><\/pre>\n<ul class=\"\">\n<li id=\"b26c\" class=\"nm nn fo be b no og nq nr ns oh nu nv ol oi nx ny om oj oa ob on ok od oe of ql op oq bj\" data-selectable-paragraph=\"\">Next, train the model.<\/li>\n<\/ul>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"0c4b\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">from<\/span> keras.models <span class=\"hljs-keyword\">import<\/span> Sequential\n<span class=\"hljs-keyword\">from<\/span> keras.layers <span class=\"hljs-keyword\">import<\/span> Conv2D, MaxPooling2D\n<span class=\"hljs-keyword\">from<\/span> keras.layers <span class=\"hljs-keyword\">import<\/span> Activation, Dropout, Flatten, Dense\n<span class=\"hljs-keyword\">from<\/span> keras.applications.mobilenet <span class=\"hljs-keyword\">import<\/span> MobileNet\n\n<span class=\"hljs-comment\"># Define the model<\/span>\nmodel = Sequential([MobileNet(include_top=<span class=\"hljs-literal\">False<\/span>,\n                                      input_shape=(<span class=\"hljs-number\">150<\/span>, <span class=\"hljs-number\">150<\/span>, <span class=\"hljs-number\">3<\/span>),\n                                      weights=<span class=\"hljs-string\">\"imagenet\"<\/span>,\n                                      pooling=<span class=\"hljs-string\">'avg'<\/span>,\n                                      classes=<span class=\"hljs-number\">1000<\/span>),\n                    Dense(<span class=\"hljs-number\">128<\/span>, activation=<span class=\"hljs-string\">'relu'<\/span>),\n                    Dropout(<span class=\"hljs-number\">0.25<\/span>), Dense(<span class=\"hljs-number\">1<\/span>, activation=<span class=\"hljs-string\">'sigmoid'<\/span>)\n                   ])\n\nmodel.summary()\n\n<span class=\"hljs-comment\"># compile model<\/span>\nmodel.<span class=\"hljs-built_in\">compile<\/span>(\n          loss=<span class=\"hljs-string\">'categorical_crossentropy'<\/span>,\n          optimizer=<span class=\"hljs-string\">'adam'<\/span>,\n          metrics=[<span class=\"hljs-string\">'accuracy'<\/span>]\n)\n\n<span class=\"hljs-comment\"># fit the model<\/span>\nbatch_size = <span class=\"hljs-number\">20<\/span>\nclassifier = model.fit(\n\n    X_train, y_train,\n    steps_per_epoch=train_samples \/\/ batch_size,\n    epochs=<span class=\"hljs-number\">10<\/span>,\n    validation_data=(X_test, y_test),\n    validation_steps=validation_samples \/\/ batch_size)<\/span><\/pre>\n<ul class=\"\">\n<li id=\"df89\" class=\"nm nn fo be b no og nq nr ns oh nu nv ol oi nx ny om oj oa ob on ok od oe of ql op oq bj\" data-selectable-paragraph=\"\">Create and save a Kangas DataGrid.<\/li>\n<\/ul>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"a815\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">from<\/span> kangas <span class=\"hljs-keyword\">import<\/span> DataGrid, Image\n\ndg = DataGrid(\n    name=<span class=\"hljs-string\">\"potato-tuber\"<\/span>,\n    columns=[\n        <span class=\"hljs-string\">\"Epoch\"<\/span>,\n        <span class=\"hljs-string\">\"Index\"<\/span>,\n        <span class=\"hljs-string\">\"Image\"<\/span>,\n        <span class=\"hljs-string\">\"Truth\"<\/span>,\n        <span class=\"hljs-string\">\"Output\"<\/span>,\n        <span class=\"hljs-string\">\"score_0\"<\/span>,\n        <span class=\"hljs-string\">\"score_1\"<\/span>,\n        <span class=\"hljs-string\">\"score_2\"<\/span>,\n    ],\n)\n\n<span class=\"hljs-comment\"># Make image of the test set for reuse<\/span>\nimages = [Image(test, shape=(<span class=\"hljs-number\">28<\/span>, <span class=\"hljs-number\">28<\/span>)) <span class=\"hljs-keyword\">for<\/span> test <span class=\"hljs-keyword\">in<\/span> X_test]\n\n<span class=\"hljs-comment\"># Do it once before training:<\/span>\noutputs = model.predict(X_test)\nepoch = <span class=\"hljs-number\">0<\/span>\n<span class=\"hljs-keyword\">for<\/span> index <span class=\"hljs-keyword\">in<\/span> <span class=\"hljs-built_in\">range<\/span>(<span class=\"hljs-built_in\">len<\/span>(X_test)):\n  truth = <span class=\"hljs-built_in\">int<\/span>(y_test[index].argmax())\n  guess = <span class=\"hljs-built_in\">int<\/span>(outputs[index].argmax())\n  dg.append([epoch, index, images[index], truth, guess] + <span class=\"hljs-built_in\">list<\/span>(outputs[index]))\n\n\ndg.save()<\/span><\/pre>\n<ul class=\"\">\n<li id=\"8bc7\" class=\"nm nn fo be b no og nq nr ns oh nu nv ol oi nx ny om oj oa ob on ok od oe of ql op oq bj\" data-selectable-paragraph=\"\">Explore and share the DataGrid.<\/li>\n<\/ul>\n<p id=\"4d92\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">After creating the DataGrid, access the path where the DataGrid is saved and copy the path. Run the command below to explore the created DataGrid:<\/p>\n<pre class=\"ox oy oz pa pb pc pd pe bo pf pg ph\"><span id=\"e3d4\" class=\"pi mp fo pd b bf pj pk l pl pm\" data-selectable-paragraph=\"\">kg.show(<span class=\"hljs-string\">'\/path_to_datagrid\/'<\/span>)<\/span><\/pre>\n<p id=\"b0ac\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\"><strong class=\"be or\">Output:<\/strong><\/p>\n<figure class=\"ox oy oz pa pb mb lt lu paragraph-image\">\n<div class=\"mc md eb me bg mf\" tabindex=\"0\" role=\"button\">\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"bg mg mh c\" src=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/1*XQCfZdRxUheUStCJYOZEig.png\" alt=\"Screenshot of the the potato image dataset loaded as a DataGrid in the Kangas user interface.\" width=\"700\" height=\"356\"><\/figure><div class=\"lt lu qm\"><picture><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/format:webp\/1*XQCfZdRxUheUStCJYOZEig.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/format:webp\/1*XQCfZdRxUheUStCJYOZEig.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/format:webp\/1*XQCfZdRxUheUStCJYOZEig.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/format:webp\/1*XQCfZdRxUheUStCJYOZEig.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/format:webp\/1*XQCfZdRxUheUStCJYOZEig.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/format:webp\/1*XQCfZdRxUheUStCJYOZEig.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1400\/format:webp\/1*XQCfZdRxUheUStCJYOZEig.png 1400w\" type=\"image\/webp\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\"><source srcset=\"https:\/\/miro.medium.com\/v2\/resize:fit:640\/1*XQCfZdRxUheUStCJYOZEig.png 640w, https:\/\/miro.medium.com\/v2\/resize:fit:720\/1*XQCfZdRxUheUStCJYOZEig.png 720w, https:\/\/miro.medium.com\/v2\/resize:fit:750\/1*XQCfZdRxUheUStCJYOZEig.png 750w, https:\/\/miro.medium.com\/v2\/resize:fit:786\/1*XQCfZdRxUheUStCJYOZEig.png 786w, https:\/\/miro.medium.com\/v2\/resize:fit:828\/1*XQCfZdRxUheUStCJYOZEig.png 828w, https:\/\/miro.medium.com\/v2\/resize:fit:1100\/1*XQCfZdRxUheUStCJYOZEig.png 1100w, https:\/\/miro.medium.com\/v2\/resize:fit:1400\/1*XQCfZdRxUheUStCJYOZEig.png 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" data-testid=\"og\"><\/picture><\/div>\n<\/div>\n<figcaption class=\"mi mj mk lt lu ml mm be b bf z dv\" data-selectable-paragraph=\"\">Kangas DataGrid<\/figcaption>\n<\/figure>\n<p id=\"4726\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">You can access the created Kangas <a class=\"af mn\" href=\"https:\/\/drive.google.com\/file\/d\/1SDitMXy2LETDU6USqjQGCptWIT4pDItO\/view?usp=sharing\" target=\"_blank\" rel=\"noopener ugc nofollow\">DataGrid<\/a> here.<\/p>\n<h2 id=\"36cf\" class=\"mo mp fo be mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl bj\" data-selectable-paragraph=\"\">Conclusion<\/h2>\n<p id=\"e46e\" class=\"pw-post-body-paragraph nm nn fo be b no np nq nr ns nt nu nv mz nw nx ny nd nz oa ob nh oc od oe of fh bj\" data-selectable-paragraph=\"\">Kangas is on its way to becoming the Pandas of computer vision data processing and analysis. Its user-friendly API, speed, efficiency, and ease-of-use makes it a valuable tool for data scientists and computer vision experts alike. Whether you\u2019re working on a cutting-edge autonomous vehicle project or simply analyzing data for research purposes, Kangas is the perfect tool for the job.<\/p>\n<p id=\"37d1\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">Learn more about Kangas from the <a class=\"af mn\" href=\"https:\/\/github.com\/comet-ml\/kangas\/wiki\" target=\"_blank\" rel=\"noopener ugc nofollow\">official documentation<\/a>.<\/p>\n<p id=\"6f5b\" class=\"pw-post-body-paragraph nm nn fo be b no og nq nr ns oh nu nv mz oi nx ny nd oj oa ob nh ok od oe of fh bj\" data-selectable-paragraph=\"\">If you enjoyed this article, check out <a href=\"https:\/\/heartbeat.comet.ml\/federated-learning-for-tabular-data-using-flower-framework-da30c21f6324\">one of my others<\/a>!<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Photo by Comet ML Introduction In the field of computer vision, Kangas is one of the tools becoming increasingly popular for image data processing and analysis. Similar to how Pandas revolutionized the way data analysts work with tabular data, Kangas is doing the same for computer vision tasks. Kangas is an open-source tool by Comet [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"customer_name":"","customer_description":"","customer_industry":"","customer_technologies":"","customer_logo":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[],"coauthors":[154],"class_list":["post-6610","post","type-post","status-publish","format-standard","hentry","category-machine-learning"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kangas: The Pandas of Computer Vision - Comet<\/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:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kangas: The Pandas of Computer Vision\" \/>\n<meta property=\"og:description\" content=\"Photo by Comet ML Introduction In the field of computer vision, Kangas is one of the tools becoming increasingly popular for image data processing and analysis. Similar to how Pandas revolutionized the way data analysts work with tabular data, Kangas is doing the same for computer vision tasks. Kangas is an open-source tool by Comet [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/\" \/>\n<meta property=\"og:site_name\" content=\"Comet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cometdotml\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-10T17:30:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-24T17:15:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/miro.medium.com\/v2\/resize:fit:700\/0*pQlBsykqsUYsu6jA.png\" \/>\n<meta name=\"author\" content=\"Adhing&#039;a Fredrick\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Cometml\" \/>\n<meta name=\"twitter:site\" content=\"@Cometml\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adhing&#039;a Fredrick\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kangas: The Pandas of Computer Vision - Comet","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:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/","og_locale":"en_US","og_type":"article","og_title":"Kangas: The Pandas of Computer Vision","og_description":"Photo by Comet ML Introduction In the field of computer vision, Kangas is one of the tools becoming increasingly popular for image data processing and analysis. Similar to how Pandas revolutionized the way data analysts work with tabular data, Kangas is doing the same for computer vision tasks. Kangas is an open-source tool by Comet [&hellip;]","og_url":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/","og_site_name":"Comet","article_publisher":"https:\/\/www.facebook.com\/cometdotml","article_published_time":"2023-07-10T17:30:54+00:00","article_modified_time":"2025-04-24T17:15:14+00:00","og_image":[{"url":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/0*pQlBsykqsUYsu6jA.png","type":"","width":"","height":""}],"author":"Adhing'a Fredrick","twitter_card":"summary_large_image","twitter_creator":"@Cometml","twitter_site":"@Cometml","twitter_misc":{"Written by":"Adhing'a Fredrick","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/#article","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/"},"author":{"name":"Adhing'a Fredrick","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/2f5012b38311f83e8165100848778d19"},"headline":"Kangas: The Pandas of Computer Vision","datePublished":"2023-07-10T17:30:54+00:00","dateModified":"2025-04-24T17:15:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/"},"wordCount":1122,"publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/#primaryimage"},"thumbnailUrl":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/0*pQlBsykqsUYsu6jA.png","articleSection":["Machine Learning"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/","url":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/","name":"Kangas: The Pandas of Computer Vision - Comet","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/#primaryimage"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/#primaryimage"},"thumbnailUrl":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/0*pQlBsykqsUYsu6jA.png","datePublished":"2023-07-10T17:30:54+00:00","dateModified":"2025-04-24T17:15:14+00:00","breadcrumb":{"@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/#primaryimage","url":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/0*pQlBsykqsUYsu6jA.png","contentUrl":"https:\/\/miro.medium.com\/v2\/resize:fit:700\/0*pQlBsykqsUYsu6jA.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.comet.com\/site\/blog\/kangas-the-pandas-of-computer-vision\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.comet.com\/site\/"},{"@type":"ListItem","position":2,"name":"Kangas: The Pandas of Computer Vision"}]},{"@type":"WebSite","@id":"https:\/\/www.comet.com\/site\/#website","url":"https:\/\/www.comet.com\/site\/","name":"Comet","description":"Build Better Models Faster","publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.comet.com\/site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.comet.com\/site\/#organization","name":"Comet ML, Inc.","alternateName":"Comet","url":"https:\/\/www.comet.com\/site\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","width":310,"height":310,"caption":"Comet ML, Inc."},"image":{"@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/cometdotml","https:\/\/x.com\/Cometml","https:\/\/www.youtube.com\/channel\/UCmN63HKvfXSCS-UwVwmK8Hw"]},{"@type":"Person","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/2f5012b38311f83e8165100848778d19","name":"Adhing'a Fredrick","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/image\/8f4b6487c0f3b99fbc3e482d4b376924","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2023\/08\/1652714258953-96x96.jpg","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2023\/08\/1652714258953-96x96.jpg","caption":"Adhing'a Fredrick"},"url":"https:\/\/www.comet.com\/site\/blog\/author\/adhingafredrickgmail-com\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/6610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/comments?post=6610"}],"version-history":[{"count":1,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/6610\/revisions"}],"predecessor-version":[{"id":15605,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/6610\/revisions\/15605"}],"wp:attachment":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/media?parent=6610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/categories?post=6610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/tags?post=6610"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/coauthors?post=6610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}