{"id":84185,"date":"2021-09-10T09:00:04","date_gmt":"2021-09-10T03:30:04","guid":{"rendered":"https:\/\/techvidvan.com\/tutorials\/?p=84185"},"modified":"2021-09-10T09:00:04","modified_gmt":"2021-09-10T03:30:04","slug":"image-segmentation-machine-learning","status":"publish","type":"post","link":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/","title":{"rendered":"Image Segmentation using Machine Learning"},"content":{"rendered":"<p>You may have heard about object recognition and object detection which places a bounding box around specific detected objects in an image. But there&#8217;s another technique that can provide an exact outline of a detected object within an image. The technique is known as image segmentation.<\/p>\n<h3>What is image segmentation?<\/h3>\n<p>Image segmentation is the process of individually identifying and labeling every pixel in an image, where each pixel having the same label shares certain characteristics. It can detect an object at a granular level and it can identify the shape of that object also. It is an advanced and more accurate way of detecting an object&#8217;s edge and shape detection.<\/p>\n<h3>How does image segmentation work?<\/h3>\n<p>Image segmentation divides an image into different partitions known as segments. This collection of segments are represented by a mask or a labeled image. In this way, we can process only the important segments instead of the entire image.<\/p>\n<h3>Why do we need image segmentation?<\/h3>\n<p>Image segmentation is being used in many different fields. One of the great examples is the medical field. Image segmentation can be used to determine damaged cells in a medical image. Sometimes we not only need the object\u2019s position but we need the shape of that particular object to further process. Cancer can be cured if we can identify cancer cells at an early stage. So by using image segmentation we can identify cancer cells as quickly as possible and save many lives.<\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/cells-image.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-84925\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/cells-image.jpg\" alt=\"cells image\" width=\"386\" height=\"294\" \/><\/a><\/p>\n<h3>Application of image segmentation:<\/h3>\n<ul>\n<li>Medical imaging.<\/li>\n<li>Machine vision.<\/li>\n<li>Circuit board defect detection.<\/li>\n<li>Traffic control system.<\/li>\n<li>Self-driving car.<\/li>\n<li>Video surveillance.<\/li>\n<\/ul>\n<h3>Types of image segmentation:<\/h3>\n<p>Mainly three types of image segmentation are there.<\/p>\n<p><strong>1. Semantic segmentation:<\/strong> Semantic segmentation associates every pixel of an image with its corresponding classes with the same color.<\/p>\n<p><strong>2. Instance segmentation:<\/strong> Instant segmentation segments each individual object instance in an image and puts a mask with different colors.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/segmentation-types.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-84926\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/segmentation-types.png\" alt=\"segmentation types\" width=\"1883\" height=\"771\" \/><\/a><\/p>\n<p><strong>3. Panoptic segmentation:<\/strong>\u00a0But there is another type of image segmentation that is a combination of semantic and instance segmentation called Panoptic segmentation. Panoptic segmentation classifies all the pixels of an image. It segments individual object instances as well as background regions in an image.<\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/panoptic-image-segmentation.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-84927\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/panoptic-image-segmentation.jpg\" alt=\"panoptic image segmentation\" width=\"993\" height=\"752\" \/><\/a><\/p>\n<h3>Techniques of image segmentation:<\/h3>\n<p>So many different types of segmentation techniques are there. Some of the common techniques are:<\/p>\n<p><strong>1. Thresholding method:<\/strong> Thresholding finds peak values based on the histogram of the image to segment similar pixels.<\/p>\n<p><strong>2. Edge Based Segmentation:<\/strong> Edge-based segmentation detects the boundary discontinuity of an object in an image to determine the shape of the object. And it helps to segment multiple objects in that image.<\/p>\n<p><strong>3. Region-based segmentation:<\/strong> Region-based segmentation partitions an image into regions that are similar according to a certain set of criteria. This technique involves an algorithm that makes segments by dividing an image into components that have similar pixel characteristics.<\/p>\n<p><strong>4. Cluster-based image segmentation:<\/strong> Cluster-based algorithms are used to group closer the data points that are similar to each other. It segments the image by a set of grouped data points.<\/p>\n<p><strong>5. Deep learning-based image segmentation:<\/strong> In this approach convolutional neural networks are used to segment each object instance in an image. MASK-RCNN is a popular algorithm for DNN based image segmentation.<\/p>\n<p>In this project, we are going to build an image segmentation model using the Mask RCNN pre-trained model using OpenCV.<\/p>\n<p>OpenCV is a free open-source computer vision library. OpenCV has an inbuilt solution to run DNN models. That\u2019s why we don&#8217;t need any other deep learning framework to build this project.<\/p>\n<h3>What is Mask RCNN and how does it work?<\/h3>\n<p>Mask RCNN is a deep learning model for image segmentation problems. It can separate different images in an image or video by giving their bounding box, classes, and corresponding binary image mask.<\/p>\n<p>Mask RCNN built with Faster RCNN. F-RCNN has two outputs for each candidate, a class label and a bounding box. In addition, a 3rd branch is added to the model that outputs the object mask. The third branch works parallel with the existing branch for bounding box recognition.<\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/mask-r-cnn.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-84928\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/mask-r-cnn.jpg\" alt=\"mask r cnn\" width=\"1056\" height=\"502\" \/><\/a><\/p>\n<p>So let\u2019s begin &#8211;<\/p>\n<h3>Prerequisites for Image Segmentation Project: &#8211;<\/h3>\n<p>1. Python 3.x ( We used 3.8.8 for this project)<br \/>\n2. OpenCV 4.4 ( Run \u201cpip install opencv-python opencv_contrib-python\u201d to install opencv package)<br \/>\n3. Numpy &#8211; 1.20.3<br \/>\n4. Mask RCNN pre-trained weights.<\/p>\n<h3>Download Image Segmentation Project Code<\/h3>\n<p>Please download the source code of image segmentation using machine learning: <a href=\"https:\/\/drive.google.com\/file\/d\/1RF9cCsnuSnL1sE90AfrLEVYJE1NsV7DM\/view?usp=sharing\"><strong>Image Segmentation with Machine Learning<\/strong><\/a><\/p>\n<h3>Steps to solve the project:<\/h3>\n<p>1. Import necessary packages and load the model.<br \/>\n2. Preprocess the input image.<br \/>\n3. Make predictions from the input.<br \/>\n4. Post-process the output data.<br \/>\n5. Combine post-processed data and get the final result.<\/p>\n<h4>Step 1 &#8211; Import necessary packages and load the model :<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># TechVidvan image segmentation\nimport cv2\nimport numpy as np\n<\/pre>\n<ul>\n<li>We need only two packages for the project. OpenCV and Numpy. So first, we\u2019ve imported those.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Load the model\nnet = cv2.dnn.readNetFromTensorflow(\"dnn\/frozen_inference_graph_coco.pb\",\n      \"dnn\/mask_rcnn_inception_v2_coco_2018_01_28.pbtxt\")\n\n# Store Coco Names in a list\nclassesFile = \"coco.names\"\nclassNames = open(classesFile).read().strip().split('\\n')\nprint(classNames)\n<\/pre>\n<ul>\n<li>cv2.dnn.readNetFromTensorflow() loads DNN models that are trained with Tensorflow API.<\/li>\n<li>After that, we store all the class labels in a list called classNames.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/classnames.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-84929\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/classnames.jpg\" alt=\"classnames\" width=\"1920\" height=\"1078\" \/><\/a><\/p>\n<h4>Step 2 &#8211; Preprocess the input image:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Load image\nimg = cv2.imread(\"road.jpg\")\nheight, width, _ = img.shape\n\n# Create black image\nblank_mask = np.zeros((height, width, 3), np.uint8)\nblank_mask[:] = (0, 0, 0)\n\n# Create blob from the image\nblob = cv2.dnn.blobFromImage(img, swapRB=True)\n<\/pre>\n<ul>\n<li>First, we read the image using cv2.imread() function.<\/li>\n<li>Then we create a blank mask to create a segmented mask from the network&#8217;s output. Using np.zeros() we can create the blank mask.<\/li>\n<li>cv2.dnn.blobFromImage() creates a 4-dimensional blob of an image. Optionally it resizes the image, subtracts mean values, and swaps Red, Green, and Blue channels.<\/li>\n<\/ul>\n<h3>Step 3 &#8211; Make predictions from the input:<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Detect objects\nnet.setInput(blob)\n\nboxes, masks = net.forward([\"detection_out_final\", \"detection_masks\"])\ndetection_count = boxes.shape[2]\n\nprint(len(detection_count))\n<\/pre>\n<ul>\n<li>First, we set the blob as the input of the network using net.setInput(blob)<\/li>\n<li>net.forward() forwards the input to the model and as output it returns bounding boxes and corresponding masks of detected objects.<\/li>\n<\/ul>\n<p>Output: &#8211; 100<\/p>\n<p>So here we can see that we get a total of 100 detections from the output.<\/p>\n<h4>Step 4 &#8211; Post process the output data:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">count=0\nfor i in range(detection_count):\n  # Extract information from detection\n  box = boxes[0, 0, i]\n  class_id = int(box[1])\n  score = box[2]\n  # print(class_id, score)\n  if score &lt; 0.6:\n    continue\n\n  # print(class_id)\n  class_name = (classNames[class_id])\n  # print(class_name, score)\n  x = int(box[3] * width)\n  y = int(box[4] * height)\n  x2 = int(box[5] * width)\n  y2 = int(box[6] * height)\n\n  roi = blank_mask[y: y2, x: x2]\n  roi_height, roi_width, _ = roi.shape\n\n  # Get the mask\n  mask = masks[i, int(class_id)]\n  mask = cv2.resize(mask, (roi_width, roi_height))\n  _, mask = cv2.threshold(mask, 0.5, 255, cv2.THRESH_BINARY)\ncv2.imshow(\"mask\"+str(count), mask)\n  count+=1\n<\/pre>\n<ul>\n<li>We extract the bounding box, class_id, and scores for each class and then we check if the score is less than a threshold then it continues to loop, otherwise we proceed to the next process.<\/li>\n<li>The network\u2019s output value is a normalized value between 0 and 1. So we multiplied the original image\u2019s height and width with the output to get the actual value.<\/li>\n<li>After that, we crop the blank_mask as the size of the bounding box.<\/li>\n<li>Next, we get the corresponding mask of the object and resize it to the same size as the cropped image. And then threshold the mask to create a binary mask of the object.<\/li>\n<\/ul>\n<h4>Step 5 &#8211; Combine post processed data and get the final result:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># Find contours of the mask\n  contours, _ = cv2.findContours(np.array(mask, np.uint8), cv2.RETR_EXTERNAL, \ncv2.CHAIN_APPROX_SIMPLE)\n  color = np.random.randint(0, 255, 3, dtype='uint8')\n  color = [int(c) for c in color]\n\n  # fill some color in segmented area\n  for cnt in contours:\n    cv2.fillPoly(roi, [cnt], (int(color[0]), int(color[1]), int(color[2])))\n    \n  # Draw bounding box\n  cv2.rectangle(img, (x, y), (x2, y2), color, 2)\n  cv2.putText(img, class_name + \" \" + str(score), (x, y-5), \ncv2.FONT_HERSHEY_SIMPLEX, .5, (255, 255, 255), 1)\n\ncv2.imshow(\"Black image\", blank_mask)\ncv2.imshow(\"Mask image\", img)\ncv2.waitKey(0)\n<\/pre>\n<ul>\n<li>cv2.findContours() finds the contours of the mask. Contours are basically all the continuous points along the boundary of the mask having the same color or intensity.<\/li>\n<li>Then we fill the binary mask with a random color using cv2.fillPoly() function.<\/li>\n<li>After that, we draw the class name text and the bounding box around each detected object.<\/li>\n<\/ul>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/segmentation-output.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-84930\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/segmentation-output.jpg\" alt=\"segmentation output\" width=\"1920\" height=\"1078\" \/><\/a><\/p>\n<p>And then finally we combine the mask and the original image to get a final output.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># alpha is the transparency of the first picture\nalpha = 1\n# beta is the transparency of the second picture\nbeta = 0.8\nmask_img = cv2.addWeighted(img, alpha, blank_mask, beta, 0)\ncv2.imshow(\"Final Output\", mask_img)\n<\/pre>\n<ul>\n<li>cv2.addWeighted() blends two images, where alpha is the intensity of the first image and beta is for the second image.<\/li>\n<\/ul>\n<h3>Image Segmentation Output<\/h3>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/image-segmentation-output.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-84931\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2021\/08\/image-segmentation-output.jpg\" alt=\"image segmentation output\" width=\"1920\" height=\"1078\" \/><\/a><\/p>\n<h3>Summary<\/h3>\n<p>In this project, we have built an advanced image segmentation technique using OpenCV\u2019s Deep neural Network module. We used the Pretrained Mask-RCNN model to perform the task. Through this project, we\u2019ve learned about Deep learning, data pre-processing, post-processing, and other image processing techniques.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You may have heard about object recognition and object detection which places a bounding box around specific detected objects in an image. But there&#8217;s another technique that can provide an exact outline of a&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":84932,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[210],"tags":[4215,4216,4217,4218],"class_list":["post-84185","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-machine-learning","tag-image-segmentation","tag-image-segmentation-machine-learning","tag-image-segmentation-ml","tag-image-segmentation-opencv"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Image Segmentation using Machine Learning - TechVidvan<\/title>\n<meta name=\"description\" content=\"Build advanced image segmentation project using OpenCV\u2019s Deep neural Network module. Use the Pretrained Mask-RCNN model to perform the task.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Image Segmentation using Machine Learning - TechVidvan\" \/>\n<meta property=\"og:description\" content=\"Build advanced image segmentation project using OpenCV\u2019s Deep neural Network module. Use the Pretrained Mask-RCNN model to perform the task.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/\" \/>\n<meta property=\"og:site_name\" content=\"TechVidvan\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/TechVidvan\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-10T03:30:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/08\/image-segmentation-machine-learning.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"TechVidvan Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:site\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TechVidvan Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Image Segmentation using Machine Learning - TechVidvan","description":"Build advanced image segmentation project using OpenCV\u2019s Deep neural Network module. Use the Pretrained Mask-RCNN model to perform the task.","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:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/","og_locale":"en_US","og_type":"article","og_title":"Image Segmentation using Machine Learning - TechVidvan","og_description":"Build advanced image segmentation project using OpenCV\u2019s Deep neural Network module. Use the Pretrained Mask-RCNN model to perform the task.","og_url":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/","og_site_name":"TechVidvan","article_publisher":"https:\/\/www.facebook.com\/TechVidvan\/","article_published_time":"2021-09-10T03:30:04+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/08\/image-segmentation-machine-learning.jpg","type":"image\/jpeg"}],"author":"TechVidvan Team","twitter_card":"summary_large_image","twitter_creator":"@vidvantech","twitter_site":"@vidvantech","twitter_misc":{"Written by":"TechVidvan Team","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/#article","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/"},"author":{"name":"TechVidvan Team","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22"},"headline":"Image Segmentation using Machine Learning","datePublished":"2021-09-10T03:30:04+00:00","mainEntityOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/"},"wordCount":1211,"commentCount":0,"publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/08\/image-segmentation-machine-learning.jpg","keywords":["image segmentation","image segmentation machine learning","image segmentation ml","image segmentation opencv"],"articleSection":["Machine Learning Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/","url":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/","name":"Image Segmentation using Machine Learning - TechVidvan","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/#website"},"primaryImageOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/#primaryimage"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/08\/image-segmentation-machine-learning.jpg","datePublished":"2021-09-10T03:30:04+00:00","description":"Build advanced image segmentation project using OpenCV\u2019s Deep neural Network module. Use the Pretrained Mask-RCNN model to perform the task.","breadcrumb":{"@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/#primaryimage","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/08\/image-segmentation-machine-learning.jpg","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2021\/08\/image-segmentation-machine-learning.jpg","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/techvidvan.com\/tutorials\/image-segmentation-machine-learning\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/techvidvan.com\/tutorials\/"},{"@type":"ListItem","position":2,"name":"Image Segmentation using Machine Learning"}]},{"@type":"WebSite","@id":"https:\/\/techvidvan.com\/tutorials\/#website","url":"https:\/\/techvidvan.com\/tutorials\/","name":"TechVidvan Blogs","description":"","publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/techvidvan.com\/tutorials\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/techvidvan.com\/tutorials\/#organization","name":"TechVidvan","url":"https:\/\/techvidvan.com\/tutorials\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","width":200,"height":50,"caption":"TechVidvan"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/TechVidvan\/","https:\/\/x.com\/vidvantech"]},{"@type":"Person","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22","name":"TechVidvan Team","description":"The TechVidvan Team delivers practical, beginner-friendly tutorials on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our experts are here to help you upskill and excel in today\u2019s tech industry."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/84185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/comments?post=84185"}],"version-history":[{"count":0,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/84185\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media\/84932"}],"wp:attachment":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media?parent=84185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/categories?post=84185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/tags?post=84185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}