{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/guMSCEL98dzpUzWZtdns/iOGiFeqMQfIoOXra3yQa/GdUtHI9Ua-19.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{ComponentPresetsConsumer as n,Link as a}from\"framer\";import{motion as o}from\"framer-motion\";import*as i from\"react\";import{Youtube as r}from\"https://framerusercontent.com/modules/NEd4VmDdsxM3StIUbddO/4sbLnuatuUfmOTwFGSJM/YouTube.js\";import s from\"https://framerusercontent.com/modules/pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js\";export const richText=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What is GPT-4 with vision?\"}),/*#__PURE__*/e(\"p\",{children:\"GPT-4 with vision refers to multimodal capabilities of GPT-4 models, where they have been extended to interpret not just text, but also visual content. This is achieved by integrating computer vision technologies with pre-existing natural language processing (NLP) functionalities of the model.\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"\u26A0\uFE0F There are some inconsistencies regarding naming conventions. Official documentation and content from OpenAI includes names like GPT-4 Vision, GPT-4 with vision, GPT-4V(ision), GPT-4V, or simply \",/*#__PURE__*/e(\"strong\",{children:\"multimodal GPT-4\"}),\" (with images and texts being the two most important modalities). Essentially, they all refer to the same functionality. When using a specific version of the model in the API, we need to use model names like \",/*#__PURE__*/e(\"strong\",{children:\"gpt-4-1106-vision-preview\"}),\".\"]})}),/*#__PURE__*/e(\"p\",{children:\"The GPT-4V AI's ability to understand and respond to images is based on extensive training with diverse datasets that teach it to recognize patterns and infer information from visual inputs. Let\u2019s look at an example below.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/pVt7vONydiw8SxwahvvwgZBI0x8.webp\",srcSet:\"https://framerusercontent.com/images/pVt7vONydiw8SxwahvvwgZBI0x8.webp?scale-down-to=1024 850w,https://framerusercontent.com/images/pVt7vONydiw8SxwahvvwgZBI0x8.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"GPT-4 Vision features, which began rolling out to ChatGPT Plus and Enterprise subscribers in late 2023, have shown promise in numerous tests, from visual question answering to optical character recognition (OCR). The new GPT-4 has even been known to \\xa0solve math problems presented in images.\"}),/*#__PURE__*/e(\"h3\",{children:\"Functionalities of ChatGPT Vision\"}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Good performance\"})})})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/cEzXmpew6wpCXSuuRDAYlaygydg.webp\",srcSet:\"https://framerusercontent.com/images/cEzXmpew6wpCXSuuRDAYlaygydg.webp?scale-down-to=512 512w,https://framerusercontent.com/images/cEzXmpew6wpCXSuuRDAYlaygydg.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/cEzXmpew6wpCXSuuRDAYlaygydg.webp 1300w\"}),/*#__PURE__*/e(\"ol\",{start:\"2\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Performed to some extent\"})})})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/nXm2DinkNiIwzwSlvoF6RtNa8Ow.webp\",srcSet:\"https://framerusercontent.com/images/nXm2DinkNiIwzwSlvoF6RtNa8Ow.webp?scale-down-to=512 512w,https://framerusercontent.com/images/nXm2DinkNiIwzwSlvoF6RtNa8Ow.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/nXm2DinkNiIwzwSlvoF6RtNa8Ow.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"Despite many advances, GPT-4V does have some serious limitations.\"}),/*#__PURE__*/e(\"ol\",{start:\"3\",children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Limitations\"})})})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/rp5HADBlIV02QU13mAyivbXo4.webp\",srcSet:\"https://framerusercontent.com/images/rp5HADBlIV02QU13mAyivbXo4.webp?scale-down-to=512 512w,https://framerusercontent.com/images/rp5HADBlIV02QU13mAyivbXo4.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/rp5HADBlIV02QU13mAyivbXo4.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"GPT-4 Vision\u2019s strength lies in enhancing contextual understanding, transforming the AI from a text-only interpreter to a multimodal analyst. This capability is a boon for sectors like retail and advertising, offering richer customer insights and more personalized content.\"}),/*#__PURE__*/t(\"p\",{children:[\"Still, precise object detection and specialized domain analysis remain the biggest challenges, emphasizing GPT-4 Vision's role as a complementary tool rather than a standalone solution. It excels in broad pattern recognition but requires fine-tuning for specific use cases. For instance, while it can perform optical character recognition, it doesn't match the accuracy and reliability \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/go/document-automation\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"offered by specialized OCR and document automation software\"})}),\". Similarly, when it comes to domain-specific image analysis, particularly in medical imaging, GPT-4 Vision falls short of the detailed analysis achievable through \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/dicom-annotation-tools\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"DICOM annotation tools\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Additionally, AI image analysis is prone to bias when there is a mismatch between some elements of the input. It can be easily confused by the content of additional images within images or \",/*#__PURE__*/e(\"strong\",{children:\"mislabeled objects\"}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/FtATsoCgCeESffJ2KB3Er0GXQ.webp\",srcSet:\"https://framerusercontent.com/images/FtATsoCgCeESffJ2KB3Er0GXQ.webp?scale-down-to=1024 805w,https://framerusercontent.com/images/FtATsoCgCeESffJ2KB3Er0GXQ.webp 1300w\"}),/*#__PURE__*/t(\"p\",{children:[\"The quality of data annotation remains crucial in this landscape. In fact, GPT-4 Vision can act as an auxiliary tool in preparing nuanced datasets for training, especially for tasks involving Reinforcement Learning from Human Feedback (\",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/rlhf-reinforcement-learning-from-human-feedback\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"RLHF\"})}),\") and specialized models. For example, in industries like fashion, it can augment clothing segmentation models by adding custom properties to specific masks, enriching the dataset's depth and utility. It can turn thousands of images into a categorized database of annotations (shirts/pants/socks) with additional information (color/size/style/material).\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/R7tGLvW6lpkbGxerrIRsbqB2IOc.webp\",srcSet:\"https://framerusercontent.com/images/R7tGLvW6lpkbGxerrIRsbqB2IOc.webp?scale-down-to=1024 899w,https://framerusercontent.com/images/R7tGLvW6lpkbGxerrIRsbqB2IOc.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"GPT-4 with Vision is not a plug-and-play solution for real-time applications, especially in high-stakes scenarios. Training your own model based on proprietary data pre-processed with GPT-4 with Vision is a safer solution than relying on GPT-4 with Vision as the end model. \"}),/*#__PURE__*/e(\"p\",{children:\"Take, for example, the potential use of GPT-4 for wildfire detection AI. While GPT-4 with Vision can assist in labeling historical data for training computer vision models, it doesn't serve as a dependable standalone tool for real-time wildfire detection.\"}),/*#__PURE__*/e(\"p\",{children:\"The model's current iteration is best suited for backend data processing and preparation, where it can enhance the richness and accuracy of training datasets, particularly in conjunction with human-in-the-loop workflows.\"}),/*#__PURE__*/e(\"h3\",{children:\"GPT-4 Vision vs DALL-E 2/DALL-E 3\"}),/*#__PURE__*/e(\"p\",{children:\"GPT-4V specializes in image analysis and interpretation. It's geared towards applications like object recognition in existing images and automatic tag generation. DALL-E models, on the other hand, are focused on image generation from text prompts, a functionality that\u2019s particularly useful for creating new visual content and AI-generated art.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/lGDXg8kxYssLtSXC6O7tffjnI.webp\",srcSet:\"https://framerusercontent.com/images/lGDXg8kxYssLtSXC6O7tffjnI.webp?scale-down-to=512 512w,https://framerusercontent.com/images/lGDXg8kxYssLtSXC6O7tffjnI.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/lGDXg8kxYssLtSXC6O7tffjnI.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"Using the ChatGPT interface can provide a truly multimodal experience, as the AI can automatically decide which modules to use at any given moment. It can seamlessly switch between online research, image analysis, or image generation, utilizing the capabilities of Bing, Vision, or DALL\\xb7E respectively, without the need to invoke specific models.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/kJ3KYyiBUi7TwPNXrHvRfOwgWY.webp\",srcSet:\"https://framerusercontent.com/images/kJ3KYyiBUi7TwPNXrHvRfOwgWY.webp?scale-down-to=512 512w,https://framerusercontent.com/images/kJ3KYyiBUi7TwPNXrHvRfOwgWY.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/kJ3KYyiBUi7TwPNXrHvRfOwgWY.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"However, in a more advanced setup, using the OpenAI API to integrate these modules separately can offer higher control and customization. Utilizing the API ensures access to the latest service features while managing costs effectively, which is crucial for commercial applications.\"}),/*#__PURE__*/e(\"h2\",{children:\"How to access multimodal GPT-4 with vision\"}),/*#__PURE__*/e(\"p\",{children:\"If you just want to try GPT-4V for your use case, you can test it with a ChatGPT Plus subscription. Just make sure to switch your model from GPT-3.5 to GPT-4, allowing you to upload images for analysis.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/Rdhpb1AIST0jejaoXNJffi8V4U.webp\",srcSet:\"https://framerusercontent.com/images/Rdhpb1AIST0jejaoXNJffi8V4U.webp?scale-down-to=512 512w,https://framerusercontent.com/images/Rdhpb1AIST0jejaoXNJffi8V4U.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/Rdhpb1AIST0jejaoXNJffi8V4U.webp 1300w\"}),/*#__PURE__*/t(\"p\",{children:[\"ChatGPT Plus is a great way to play around and test some image analysis functionalities, but there is a \",/*#__PURE__*/e(\"strong\",{children:\"limit on the number of messages\"}),\", and the\",/*#__PURE__*/e(\"strong\",{children:\" processing can be somewhat slow\"}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Due to exceptionally high demand, OpenAI also occasionally pauses new ChatGPT Plus subscriptions. This happened in late 2023 and could potentially happen again. If you want to avoid joining the waitlist, it is better to use the \u201Cdeveloper\u201D mode (billed per usage). Sign in to your \",/*#__PURE__*/e(a,{href:\"https://platform.openai.com/auth/login\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"OpenAI account\"})}),\", generate an authentication key, and use the API instead of the chat interface.\"]}),/*#__PURE__*/e(\"p\",{children:\"The API is much better than the chat interface for actual deployment and leveraging GPT-4 with vision at scale. You can select between different models, and GPT-4V is available as 'gpt-4-vision-preview' in the request configuration.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you want to use the most recent version, you can modify this line to ensure your model is up-to-date. It's best to consult the official \",/*#__PURE__*/e(a,{href:\"https://openai.com/pricing\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"pricing page\"})}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/bI68sHMMSSLWssfEBta6H6Z6g.webp\",srcSet:\"https://framerusercontent.com/images/bI68sHMMSSLWssfEBta6H6Z6g.webp?scale-down-to=512 512w,https://framerusercontent.com/images/bI68sHMMSSLWssfEBta6H6Z6g.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/bI68sHMMSSLWssfEBta6H6Z6g.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"Here is an example of a request:\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/H01m0Hg5qm3oktyiC0WI3uXydk.webp\",srcSet:\"https://framerusercontent.com/images/H01m0Hg5qm3oktyiC0WI3uXydk.webp?scale-down-to=1024 946w,https://framerusercontent.com/images/H01m0Hg5qm3oktyiC0WI3uXydk.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"And this is our response generated after running the script:\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/94aPKs21fYhnAPAGXh1iQVxlng.webp\",srcSet:\"https://framerusercontent.com/images/94aPKs21fYhnAPAGXh1iQVxlng.webp?scale-down-to=512 512w,https://framerusercontent.com/images/94aPKs21fYhnAPAGXh1iQVxlng.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/94aPKs21fYhnAPAGXh1iQVxlng.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"As you can see, the predictions (in this particular case) are correct.\"}),/*#__PURE__*/e(\"h2\",{children:\"How to incorporate GPT-4V into your app or ML pipeline\"}),/*#__PURE__*/e(\"p\",{children:\"With additional code for pre-processing your input and for parsing the response, we can implement GPT-4V into any app that can handle API calls. For instance, if we want to train our own commercial AI model, we need a training data platform that can be connected to GPT-4V for labeling our datasets.\"}),/*#__PURE__*/t(\"p\",{children:[\"Here is an example of integrating GPT-4V and \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7 Darwin\"})}),\":\"]}),/*#__PURE__*/e(\"video\",{autoPlay:!0,className:\"framer-image\",loop:!0,muted:!0,playsInline:!0,src:\"https://framerusercontent.com/assets/2jMgSm0qExePESOCEIW4t7vEd6Q.mp4\"}),/*#__PURE__*/e(\"div\",{children:\" \\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"In the video above, you can see GPT-4 with vision \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/product-update/register-external-models\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"registered as an external model\"})}),\" and used as a model stage in a \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/workflows\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7 workflow\"})}),\". The prompt instructs GPT-4V to determine whicht emotions it can associate with the image and the outputs are mapped onto specific V7 classification tags.\"]}),/*#__PURE__*/t(\"p\",{children:[\"All of this can be achieved with \",/*#__PURE__*/e(\"strong\",{children:\"a short Python script\"}),\". This is what the process looks like:\"]}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The script uses Flask to create a simple web server.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The script defines a URL endpoint where it can receive POST requests (if you want to try it out, you can deploy it with Ngrok or a similar solution).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"When it receives a POST request (a JSON payload sent by V7), it checks if the request has an image URL.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"If yes, it sends the image URL to the OpenAI API, asking GPT-4V for an analysis (in this case, an analysis of emotions present in the image).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The OpenAI API returns a list of primary and secondary emotions detected in the image.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The script then formats these emotions into a \",/*#__PURE__*/e(a,{href:\"https://docs.v7labs.com/reference/darwin-json\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Darwin JSON\"})}),\" response (for example, it determines the confidence score based on primary/secondary emotions) and sends it back to the requester. In our example, this means that new tag annotations will be automatically added to the image.\"]})})]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:'from flask import Flask, request\\nfrom flask_cors import CORS\\nfrom openai import OpenAI\\nimport os\\nimport json\\n\\napp = Flask(__name__)\\nCORS(app)\\n\\n# Function to read API key from file\\ndef get_api_key(file_path):\\n    with open(file_path, \\'r\\') as file:\\n        return file.readline().strip()\\n\\n# Retrieve API key from the specified file\\napi_key_path = \\'/Users/username/Downloads/gpt4vapp/app/api-key-openai\\'  # Update with the correct path\\napi_key = get_api_key(api_key_path)\\n\\n# Initialize OpenAI client with the retrieved API key\\nclient = OpenAI(api_key=api_key)\\n\\n@app.route(\\'/\\', methods=[\\'POST\\'])\\ndef infer():\\n    payload = request.json\\n    if payload and \"image\" in payload and \"url\" in payload[\"image\"]:\\n        image_url = payload[\"image\"][\"url\"]\\n        print(\"Extracted Image URL:\", image_url)  # Print the extracted URL to the terminal\\n\\n        # OpenAI request\\n        response = client.chat.completions.create(\\n            model=\"gpt-4-vision-preview\",\\n            messages=[\\n                {\\n                    \"role\": \"user\",\\n                    \"content\": [\\n                        {\"type\": \"text\", \"text\": \"I\\'m going to share a picture with you. Determine the primary and secondary emotions that you can associate with the image. Pick emotions ONLY from these: (Happiness, Sadness, Anger, Anxiety, Concern, Joy, Fear, Distress, Disgust, Surprise, Trust, Anticipation, Hope, Love, Contentment, Amusement, Boredom, Shame, Pride, Embarrassment, Excitement, Satisfaction, Relief, Nostalgia, Curiosity, Confusion, Admiration, Sympathy, Compassion, Contempt, Envy, Jealousy, Guilt, Defeat, Triumph, Loneliness, Despair, Euphoria, Awe, Eagerness, Enthusiasm, Melancholy, Gratitude, Indignation, Frustration, Overwhelm, Resentment, Serenity, Apprehension, Calmness, Disappointment, Optimism, Pessimism, Sorrow, Regret, Tenderness, Yearning, Schadenfreude, Wanderlust). Use this structure in your response: {\\\\n \\\\\"primary_emotions\\\\\": [...],\\\\n \\\\\"secondary_emotions\\\\\": [...]\\\\n}\\\\n\\\\nGive me only the JSON response, with no additional commentary.\"},\\n                        {\"type\": \"image_url\", \"image_url\": {\"url\": image_url}},\\n                    ],\\n                }\\n            ],\\n            max_tokens=500,\\n        )\\n\\n        # Parsing OpenAI response\\n        ai_response_text = response.choices[0].message.content\\n        ai_response = json.loads(ai_response_text)\\n        primary_emotions = [{\"confidence\": 1.0, \"label\": e, \"name\": e, \"tag\": {}} for e in ai_response[\\'primary_emotions\\']]\\n        secondary_emotions = [{\"confidence\": 0.75, \"label\": e, \"name\": e, \"tag\": {}} for e in ai_response[\\'secondary_emotions\\']]\\n\\n        # Prepare the final response\\n        final_response = {\\n            \"results\": primary_emotions + secondary_emotions,\\n            \"status\": \"succeeded\"\\n        }\\n        return final_response\\n    else:\\n        return {\"status\": \"failed\", \"error\": \"Invalid or missing image URL\"}, 400\\n\\nif __name__ == \\'__main__\\':\\n    app.run(debug=True, port=80)',language:\"JSX\"})})}),/*#__PURE__*/t(\"p\",{children:[\"It's essential that our prompt is clear and that our \",/*#__PURE__*/e(a,{href:\"https://platform.openai.com/docs/guides/text-generation/json-mode\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!1,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"output can be parsed with ease\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Here is what the request sent to GPT-4V looks like:\"}),/*#__PURE__*/t(\"blockquote\",{children:[/*#__PURE__*/e(\"p\",{children:\"I'm going to share a picture with you. Determine the primary and secondary emotions that you can associate with the image.\"}),/*#__PURE__*/e(\"p\",{children:\"Pick emotions ONLY from these: (Happiness, Sadness, Anger, Anxiety, Concern, Joy, Fear, Distress, Disgust, Surprise, Trust, Anticipation, Hope, Love, Contentment, Amusement, Boredom, Shame, Pride, Embarrassment, Excitement, Satisfaction, Relief, Nostalgia, Curiosity, Confusion, Admiration, Sympathy, Compassion, Contempt, Envy, Jealousy, Guilt, Defeat, Triumph, Loneliness, Despair, Euphoria, Awe, Eagerness, Enthusiasm, Melancholy, Gratitude, Indignation, Frustration, Overwhelm, Resentment, Serenity, Apprehension, Calmness, Disappointment, Optimism, Pessimism, Sorrow, Regret, Tenderness, Yearning, Schadenfreude, Wanderlust).\"}),/*#__PURE__*/e(\"p\",{children:\"Use this structure in your response:\"}),/*#__PURE__*/e(\"p\",{children:'{ \"primary_emotions\": [\"emotion1_primary\", \"emotion2_primary\", \"...\"], \"secondary_emotions\": [\"emotion1_secondary\", \"emotion2_secondary\", \"...\"] }'}),/*#__PURE__*/e(\"p\",{children:\"Give me only the JSON response, with no additional commentary.\"})]}),/*#__PURE__*/e(\"p\",{children:\"This output can be automatically parsed and turned into V7-conforming output.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/P0Nl1gugIYJ7URrC8l2d3i9cpIM.webp\",srcSet:\"https://framerusercontent.com/images/P0Nl1gugIYJ7URrC8l2d3i9cpIM.webp?scale-down-to=512 512w,https://framerusercontent.com/images/P0Nl1gugIYJ7URrC8l2d3i9cpIM.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/P0Nl1gugIYJ7URrC8l2d3i9cpIM.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"As you can see, integrating GPT-4 Vision into your applications and machine learning pipelines is remarkably straightforward. OpenAI provides an accessible interface through its API, making it easy for developers to leverage the model's capabilities.\"}),/*#__PURE__*/e(\"p\",{children:\"With this simple setup, you can start harnessing the power of GPT-4 Vision to analyze and understand visual content within your projects. Now, let's go through some practical examples of how this technology can be applied across various industries.\"})]});export const richText1=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"Business use cases for GPT Vision\"}),/*#__PURE__*/e(\"p\",{children:\"For businesses looking to stay ahead of the curve, the integration of GPT-4's vision capabilities could be the key to developing smarter, more intuitive AI systems. From enhancing product recommendation algorithms to refining consumer data interpretation, the practical applications are very compelling.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Adding depth to training data with nuanced properties and tags\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional AI classification and detection have often been limited to broad categories. However, GPT-4 introduces a paradigm shift by enabling the assignment of nuanced properties and tags to images based on their content.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/9DISGCmLs6AIVXvGyxIrCQunarY.webp\",srcSet:\"https://framerusercontent.com/images/9DISGCmLs6AIVXvGyxIrCQunarY.webp?scale-down-to=512 512w,https://framerusercontent.com/images/9DISGCmLs6AIVXvGyxIrCQunarY.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/9DISGCmLs6AIVXvGyxIrCQunarY.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:'For example, in a retail context, instead of classifying an image simply as \"person,\" GPT-4 can add detailed attributes like estimated age, clothing type, and more. By pre-processing images with open-source object detection or instance segmentation models and then enriching them with GPT-4-generated properties, businesses can develop more sophisticated AI.'}),/*#__PURE__*/e(\"h3\",{children:\"2. Improving product discoverability with AI-generated descriptions\"}),/*#__PURE__*/e(\"p\",{children:\"In e-commerce, the ability to auto-generate detailed product descriptions is a game-changer. GPT-4 can provide intricate details about products, including colors, materials, textures, and styles.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/jU3y3lx8vlyniY74vPlnFboE1q8.webp\",srcSet:\"https://framerusercontent.com/images/jU3y3lx8vlyniY74vPlnFboE1q8.webp?scale-down-to=1024 1005w,https://framerusercontent.com/images/jU3y3lx8vlyniY74vPlnFboE1q8.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"This capability not only enhances metadata for improved search engine optimization (SEO) but also bolsters product recommendation engines, enabling more effective upselling and cross-selling strategies.\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Ensuring digital safety through advanced content moderation\"}),/*#__PURE__*/e(\"p\",{children:\"GPT-4V's ability to evaluate images across various criteria makes it an invaluable tool for digital safety and content moderation.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/rh18l9O2bLwZ0jkLQnMXwicGAM.webp\",srcSet:\"https://framerusercontent.com/images/rh18l9O2bLwZ0jkLQnMXwicGAM.webp?scale-down-to=512 512w,https://framerusercontent.com/images/rh18l9O2bLwZ0jkLQnMXwicGAM.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/rh18l9O2bLwZ0jkLQnMXwicGAM.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"It can determine the appropriateness of images, identifying and flagging content related to hate speech, NSFW material, violence, substance abuse, or harassment. This functionality is not just limited to flagging inappropriate content but also extends to content analytics, providing deeper insights into the nature of shared digital media.\"}),/*#__PURE__*/e(\"h3\",{children:\"4. Recognizing expressions, emotions, and activities for better security\"}),/*#__PURE__*/e(\"p\",{children:\"AI image and footage analysis applications range from preventing shrinkage in retail and detecting vandalism to monitoring the exhaustion of pilots or drivers for enhanced safety measures.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/aEEbfi6ECImNNpIX1DiijDXY.webp\",srcSet:\"https://framerusercontent.com/images/aEEbfi6ECImNNpIX1DiijDXY.webp?scale-down-to=512 512w,https://framerusercontent.com/images/aEEbfi6ECImNNpIX1DiijDXY.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/aEEbfi6ECImNNpIX1DiijDXY.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"By tagging historical videos, GPT-4V facilitates the training of specialized models capable of real-time activity detection, reducing the reliance on third-party applications and streamlining security protocols.\"}),/*#__PURE__*/e(\"h3\",{children:\"5. Speeding up AI quality control in manufacturing\"}),/*#__PURE__*/e(\"p\",{children:\"In the manufacturing sector, GPT-4V can significantly expedite AI-driven quality control processes. Its advanced vision capabilities enable the quick identification of defects, inconsistencies, and potential failures in products, ensuring higher quality standards and reducing waste.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/H2pVqbl3GG5GGJibI1AxVUZRfYk.webp\",srcSet:\"https://framerusercontent.com/images/H2pVqbl3GG5GGJibI1AxVUZRfYk.webp?scale-down-to=512 512w,https://framerusercontent.com/images/H2pVqbl3GG5GGJibI1AxVUZRfYk.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/H2pVqbl3GG5GGJibI1AxVUZRfYk.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"With GPT-4V, it is best to provide both the captured production line image of an item and the corresponding reference images of the product without any defects. With complex datasets, it can also be helpful to crop images and focus on identifying one particular part or defect at a time.\"}),/*#__PURE__*/e(\"h3\",{children:\"6. Leveraging research and behavioral insights with video analytics\"}),/*#__PURE__*/e(\"p\",{children:\"By analyzing video content, businesses can gain a deeper understanding of consumer behaviors, preferences, and engagement patterns. This information can be instrumental in tailoring marketing strategies, improving product designs, and enhancing overall customer experience.\"}),/*#__PURE__*/e(\"p\",{children:\"While GPT-4V does not support video analysis (yet), extracting frames at specific intervals and analyzing them as individual images can be quite effective for certain use cases. This method can be applied to monitor bacterial growth in petri dishes or to process drone footage for agricultural purposes.\"}),/*#__PURE__*/e(\"p\",{children:\"Here is an example of the analysis of frames extracted from a video monitoring plant health.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/9s4JRavJ0mAuSPh2zqz1eeRj6Do.webp\",srcSet:\"https://framerusercontent.com/images/9s4JRavJ0mAuSPh2zqz1eeRj6Do.webp?scale-down-to=512 512w,https://framerusercontent.com/images/9s4JRavJ0mAuSPh2zqz1eeRj6Do.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/9s4JRavJ0mAuSPh2zqz1eeRj6Do.webp 1300w\"}),/*#__PURE__*/e(\"h3\",{children:\"7. Automating inventory classification and retail shelf space analysis\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, GPT-4V can revolutionize retail operations by automating inventory classification and optimizing shelf space analysis. Its ability to accurately identify and categorize products enables more efficient inventory management, reducing overhead costs and improving stock accuracy.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/9Mzk3GaAeP6fZzsdB27N1Z5SUww.webp\",srcSet:\"https://framerusercontent.com/images/9Mzk3GaAeP6fZzsdB27N1Z5SUww.webp?scale-down-to=512 512w,https://framerusercontent.com/images/9Mzk3GaAeP6fZzsdB27N1Z5SUww.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/9Mzk3GaAeP6fZzsdB27N1Z5SUww.webp 1300w\"}),/*#__PURE__*/e(\"p\",{children:\"Additionally, analyzing shelf space and product placement through GPT-4V can lead to more effective merchandising strategies, ultimately driving sales and customer satisfaction. This can be particularly helpful when combined with customer footfall analytics.Towards Multimodal GPT: ConclusionThe GPT-4 Vision feature has already begun to redefine the boundaries of what AI can achieve, from improving product discoverability to enhancing digital safety. It has also set the stage for GPT-5, which is anticipated to further refine these capabilities. While GPT-4V functionalities like object recognition, descriptive analysis, and content summarization are making waves, its limitations in object detection precision, specialized domain analysis, and interpretation of complex visual data highlight the need for continued innovation.\"}),/*#__PURE__*/e(\"p\",{children:\"As businesses adapt to these new tools, the synergy between human oversight and AI's analytical prowess will become more crucial than ever. The future will likely see AI not as a standalone solution but as a powerful assistant that augments human capabilities, ensuring that data-driven decisions are not only informed by comprehensive analysis but also tempered by human insight and expertise.\"}),/*#__PURE__*/e(\"p\",{children:\"The role of GPT-4 with vision is emblematic of this shift, offering a glimpse into how AI can serve as a partner in the intricate dance of interpreting the world around us\u2014a world that is as visual as it is textual. Whether in the bustling aisles of retail stores, the meticulous processes of manufacturing, or the vast expanses of agricultural land, visual ChatGPT is paving the way for a more intuitive and integrated approach to AI in our everyday lives.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you want to find out more about integrating GPT-4V into your projects, you can \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/sign-up\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"create a V7 account\"})}),\" and use it as your AI copilot and data management platform.\"]})]});export const richText2=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Garbage in, garbage out. \"}),/*#__PURE__*/e(\"p\",{children:\"This concept rules the computer science world, and for a reason.\"}),/*#__PURE__*/t(\"p\",{children:[\"The quality of your input data determines the quality of the output. And if you are trying to \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/training\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"build reliable computer vision models\"})}),\" to detect, recognize, and classify objects, the data you use to feed the learning algorithms must be accurately labeled.\"]}),/*#__PURE__*/e(\"p\",{children:\"And here comes the bad news\u2014\"}),/*#__PURE__*/t(\"p\",{children:[\"Image annotation is a \",/*#__PURE__*/e(\"em\",{children:\"whole lot\"}),\" more nuanced than most people realize. And annotating your image data incorrectly can be expensive. \"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Very expensive.\"})}),/*#__PURE__*/e(\"p\",{children:\"Luckily, you've come to the right place.\"}),/*#__PURE__*/e(\"p\",{children:\"In the next few minutes, we'll explain to you the ins and outs of image annotation and walk you through some of the best practices to ensure that your data is properly labeled.\"}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s what we\u2019ll cover:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What is image annotation?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How does image annotation work?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tasks that need annotated data\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Types of image annotation shapes\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How to find quality image data\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Image annotation using V7\"})})]})]});export const richText3=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"And hey\u2014in case you want to skip the tutorial and start annotating your data right away, check out:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/annotation\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7 Image Annotation\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/video-annotation\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7 Video Annotation\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/model-management\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7 Model Training\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/auto-annotation\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7 Auto Annotation\"})})})})]}),/*#__PURE__*/e(\"h2\",{children:\"What is image annotation?\"}),/*#__PURE__*/e(\"p\",{children:\"Image annotation is the process of labeling images in a given dataset to train machine learning models. \"}),/*#__PURE__*/t(\"p\",{children:[\"When the \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/when-to-annotate-data\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"manual annotation is completed\"})}),\", labeled \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/image-processing-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"images are processed\"})}),\" by a machine learning or deep learning model to replicate the annotations without human supervision. \"]}),/*#__PURE__*/t(\"p\",{children:[\"Image annotation sets the standards, which the model tries to copy, so any error in the labels is replicated too. Therefore, precise image annotation lays the foundation for\",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/neural-network-architectures-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\" neural networks\"})}),\" to be trained, making annotation one of the most important tasks in \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/what-is-computer-vision\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"computer vision.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"The process of a model labeling images on its own is often referred to as \",/*#__PURE__*/e(\"em\",{children:\"model-assisted labeling.\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Image annotations can be performed both manually and by using an \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/auto-annotation\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"automated annotation tool.\"})}),\"\u200D\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"Auto annotation tools are generally pre-trained algorithms that can annotate images with a certain degree of accuracy. Their annotations are essential for complicated annotation tasks like creating segment masks, which are time-consuming to create.\"}),/*#__PURE__*/e(\"p\",{children:\"In these cases, auto-annotate tools assist manual annotation by providing a starting point from which further annotation can proceed.\"}),/*#__PURE__*/t(\"p\",{children:[\"Manual annotation is also generally assisted by tools that help record key points for \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/data-labeling-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"easy data labeling\"})}),\" and storage of data.\"]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip:\\xa0Looking for other options?\\xa0Check out \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/best-image-annotation-tools\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"13 Best Image Annotation Tools.\"})})]})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Why does AI need annotated data?\"})}),/*#__PURE__*/t(\"p\",{children:[\"Image annotation creates the \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/quality-training-data-for-machine-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"training data \"})}),\"that supervised AI models can learn from. \"]}),/*#__PURE__*/e(\"p\",{children:\"The way we annotate images indicates the way the AI will perform after seeing and learning from them. As a result, poor annotation is often reflected in training and results in models providing poor predictions.\"}),/*#__PURE__*/e(\"p\",{children:\"Annotated data is specifically needed if we are solving a unique problem and AI is used in a relatively new domain. For common tasks like image classification and segmentation, there are pre-trained models often available and these can be adapted to specific use cases with the help of Transfer Learning with minimal data. \"}),/*#__PURE__*/t(\"p\",{children:[\"Training a complete model from scratch, however, often requires a huge amount of annotated data split into the \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/train-validation-test-set\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"train, validation, and test sets\"})}),\", which is difficult and time-consuming to create. \"]}),/*#__PURE__*/e(\"p\",{children:\"Unsupervised algorithms on the other hand do not require annotated data and can be trained directly on the raw collected data. \"}),/*#__PURE__*/e(\"h2\",{children:\"How does image annotation work?\"}),/*#__PURE__*/e(\"p\",{children:\"Now, let's get into the nitty-gritty of how image annotation actually works.\"}),/*#__PURE__*/t(\"p\",{children:[\"There are two things that you need to start labeling your images: an image annotation tool and enough \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/quality-training-data-for-machine-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"quality training data. \"})}),\"Amongst the plethora of image annotation tools out there, we need to ask the right questions for finding out the tool that fits our use case. \"]}),/*#__PURE__*/e(\"p\",{children:\"Choosing the right annotation tool requires a deep understanding of the type of data that is being annotated and the task at hand.\"}),/*#__PURE__*/e(\"p\",{children:\"You need to pay particular attention to:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The modality of the data\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The type of annotation required\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\" The format in which annotations are to be stored\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Given the huge variety in image annotation tasks and storage formats, there are various tools that can be used for annotations. \\xa0From open-source platforms, such as \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/cvat-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"CVAT\"})}),\" and LabelImg for simple annotations to more sophisticated tools like V7 for annotating large-scale data. \"]}),/*#__PURE__*/t(\"p\",{children:[\"Furthermore, annotation can be done on an individual or organizational level or can be outsourced to freelancers or organizations offering \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/labeling-service\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"annotation services.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Here's a quick tutorial on how to start annotating images.\"}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Source your raw image or video data\"})}),/*#__PURE__*/e(\"p\",{children:\"The first step towards image annotation requires the preparation of raw data in the form of images or videos. \"}),/*#__PURE__*/t(\"p\",{children:[\"Data is generally \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/data-cleaning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"cleaned\"})}),\" and \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/data-preprocessing-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"processed\"})}),\" where low quality and duplicated content is removed before being sent in for annotation. You can collect and process your own data or go for publicly available datasets which are almost always available with a certain form of annotation.\"]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: You can find quality data for your computer vision projects here: \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/best-free-datasets-for-machine-learning\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"65+ Best Free Datasets for Machine Learning.\"})})]})}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. Find out what label types you should use\"})}),/*#__PURE__*/e(\"p\",{children:\"Figuring out what type of annotation to use is directly related to what kind of task the algorithm is being taught. In case the algorithm is learning image classification, labels are in the form of class numbers. If the algorithm is learning image segmentation or object detection, on the other hand, the annotation would be semantic masks and boundary box coordinates respectively.\"}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. Create a class for each object you want to label\"})}),/*#__PURE__*/t(\"p\",{children:[\"Most supervised \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/deep-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Deep Learning algorithms\"})}),\" must run on data that has a fixed number of classes. Thus, setting up a fixed number of labels and their names earlier can help in preventing duplicate classes or similar objects labeled under different class names.\"]}),/*#__PURE__*/e(\"p\",{children:\"V7 allows us to annotate based on a predefined set of classes that have their own color encoding. This makes annotation easier and reduces mistakes in the form of typos or class name ambiguities.\"}),/*#__PURE__*/e(\"img\",{alt:\"Object classes in V7\",className:\"framer-image\",src:\"https://framerusercontent.com/images/thQ63Q32JbgRwatscvI1B5Mcres.png\",srcSet:\"https://framerusercontent.com/images/thQ63Q32JbgRwatscvI1B5Mcres.png?scale-down-to=512 512w,https://framerusercontent.com/images/thQ63Q32JbgRwatscvI1B5Mcres.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/thQ63Q32JbgRwatscvI1B5Mcres.png 1405w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Object classes in V7\"})}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"4. Annotate with the right tools\"})}),/*#__PURE__*/e(\"p\",{children:\"After the class labels have been determined, you can proceed with annotating your image data. \"}),/*#__PURE__*/t(\"p\",{children:[\"The corresponding object region can be annotated or image tags can be added depending on the \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/computer-vision-project-ideas\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"computer vision task\"})}),\" the annotation is being done for. Following the demarcation step, you should provide class labels for each of these regions of interest. Make sure that complex annotations like bounding boxes, segment maps, and polygons are as tight as possible. \"]}),/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"strong\",{children:\"5. Version your dataset and export it\"})}),/*#__PURE__*/e(\"p\",{children:\"Data can be exported in various formats depending upon the way it is to be used. Popular export methods include JSON, XML, and pickle. \"}),/*#__PURE__*/e(\"p\",{children:\"For training deep learning algorithms, however, there are other formats of export like COCO, Pascal VOC which came into use through deep learning algorithms designed to fit them. Exporting a dataset in the COCO format can help us to plug it directly into a model that accepts that format without the additional hassle of accommodating the dataset to the model inputs. \"}),/*#__PURE__*/e(\"p\",{children:\"V7 supports all of these export methods and additionally allows us to train a neural network on the dataset we create. \"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Check out \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/dataset-management\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7 Dataset Management.\"})})]})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"How long does Image Annotation take?\"})}),/*#__PURE__*/e(\"p\",{children:\"Annotation times are largely dependent on the amount of data required and the complexity of the corresponding annotation. Simple annotations which have a limited number of objects to work on are faster than annotations containing objects from thousands of classes. \"}),/*#__PURE__*/e(\"p\",{children:\"Similarly, annotations that require the image to be tagged are much faster to complete than annotations involving multiple keypoints and objects to be pinpointed.\"}),/*#__PURE__*/e(\"h2\",{children:\"Tasks that need annotated data\"}),/*#__PURE__*/e(\"p\",{children:\"Now, let's have a look at the list of computer vision tasks that require annotated image data.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Image classification\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/image-classification-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Image classification\"})}),\" refers to the task of assigning a label or tag to an image. Typically supervised deep learning algorithms are used for Image Classification tasks and are trained on images annotated with a label chosen from a fixed set of predefined labels. \"]}),/*#__PURE__*/e(\"p\",{children:\"Annotations required for image classification come in the form of simple text labels, class numbers, or one-hot encodings where a zero list containing all possible unique IDs is formed\u2014and a particular element from the list based on the class label is set to one.\"}),/*#__PURE__*/e(\"p\",{children:\"Often other forms of annotations are converted into one-hot form or class ID form before the labels are used in corresponding loss functions. \"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Object detection & recognition\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/object-detection-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Object detection\"})}),\" (sometimes referred to as \",/*#__PURE__*/e(\"em\",{children:\"object recognition\"}),\") is the task of detecting objects from an image. \"]}),/*#__PURE__*/e(\"p\",{children:\"The annotations for these tasks are in the form of bounding boxes and class names where the extreme coordinates of the bounding boxes and the class ID are set as the ground truth.\"}),/*#__PURE__*/e(\"p\",{children:\"This detection comes in the form of bounding boxes where the network detects the bounding box coordinates of each object and its corresponding class labels.\"}),/*#__PURE__*/e(\"img\",{alt:\"Image classification vs. Object detection\",className:\"framer-image\",src:\"https://framerusercontent.com/images/eoeIsoNX8JunYR82iBHcV0DHRg.jpeg\",srcSet:\"https://framerusercontent.com/images/eoeIsoNX8JunYR82iBHcV0DHRg.jpeg?scale-down-to=512 512w,https://framerusercontent.com/images/eoeIsoNX8JunYR82iBHcV0DHRg.jpeg?scale-down-to=1024 1024w,https://framerusercontent.com/images/eoeIsoNX8JunYR82iBHcV0DHRg.jpeg 1240w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Image classification vs. Object detection\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Image segmentation\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/image-segmentation-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Image segmentation\"})}),\" refers to the task of segmenting regions in the image as belonging to a particular class or label. \"]}),/*#__PURE__*/e(\"p\",{children:\"This can be thought of as an advanced form of object detection where instead of approximating the outline of an object in a bounding box, we are required to specify the exact object boundary and surface. \"}),/*#__PURE__*/e(\"p\",{children:\"Image segmentation annotations come in the form of segment masks, or binary masks of the same shape as the image where the object segments from the image mapped onto the binary mask are marked by the corresponding class ID, and the rest of the region is marked as zero. Annotations for image segmentation often require the highest precision for algorithms to work well.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Semantic segmentation\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/semantic-segmentation-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Semantic Segmentation\"})}),\" is a specific form of image segmentation where the algorithm tries to divide the image into pixel regions based on categories. \"]}),/*#__PURE__*/e(\"p\",{children:\"For example, an algorithm performing semantic segmentation would group together a group of people under a common category person, creating a single mask for each category. Since the differentiation between different instances or objects of the same category is not done, this form of segmentation is often known as the simplest segmentation task.\"}),/*#__PURE__*/e(\"img\",{alt:\"An overview of Semantic Segmentation\",className:\"framer-image\",src:\"https://framerusercontent.com/images/iYiTba1LoL4f2EthVpd8Ack44w4.png\",srcSet:\"https://framerusercontent.com/images/iYiTba1LoL4f2EthVpd8Ack44w4.png?scale-down-to=1024 661w,https://framerusercontent.com/images/iYiTba1LoL4f2EthVpd8Ack44w4.png 1240w\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Instance segmentation\"})}),/*#__PURE__*/e(\"p\",{children:\"Instance segmentation refers to the form of segmentation where the task is to separate and segment object instances from the image. Instead of singling out the categories from the image, instance segmentation algorithms work to identify and separate similar objects from groups.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Panoptic segmentation\"})}),/*#__PURE__*/e(\"p\",{children:\"Panoptic segmentation can be referred to as the conjunction of both semantic and instance segmentation where the algorithm has to segment out both object categories while paying attention to instance level segments. \"}),/*#__PURE__*/e(\"p\",{children:\"This ensures that each category, as well as the object instance, gets a segment map for itself. Needless to say, this segmentation task is often the hardest amongst the three as the amount of information to be regressed by the network is quite large.\"}),/*#__PURE__*/e(\"img\",{alt:\"Semantic Segmentation vs. Instance Segmentation vs. Panoptic Segmentation\",className:\"framer-image\",src:\"https://framerusercontent.com/images/ojm7ctrqT4szoxhDlBxGhO67P0.png\",srcSet:\"https://framerusercontent.com/images/ojm7ctrqT4szoxhDlBxGhO67P0.png?scale-down-to=1024 959w,https://framerusercontent.com/images/ojm7ctrqT4szoxhDlBxGhO67P0.png 1240w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Semantic Segmentation vs. Instance Segmentation vs. Panoptic Segmentation\"})}),/*#__PURE__*/e(\"h2\",{children:\"Types of image annotation shapes\"}),/*#__PURE__*/e(\"p\",{children:\"Different tasks require data to be annotated in different forms so that the processed data can be used directly for training. \"}),/*#__PURE__*/e(\"p\",{children:\"While simple tasks like classification require the data to be annotated only with simple tags, complex tasks like segmentation and object detection require the data to have pixel map annotations and bounding box annotations respectively. \"}),/*#__PURE__*/e(\"p\",{children:\"We've listed below a compilation of the different forms of annotation used for these tasks.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Bounding box\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/bounding-box-annotation\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Bounding box annotations\"})}),\", as the name suggests, are annotations that require specific objects in an image to be covered by a bounding box. These annotations are generally needed for object detection algorithms where the box denotes the object boundaries.\"]}),/*#__PURE__*/e(\"p\",{children:\"They are generally not as precise as segmentation or polygonal annotations but meet the precision needed in detector use cases. These annotations are often used for training algorithms for self-driving cars and in intelligent video analytics mechanisms. \"}),/*#__PURE__*/e(\"img\",{alt:\"Bounding box annotation of a street sign using V7\",className:\"framer-image\",src:\"https://framerusercontent.com/images/ssX0ZVFaXvq1taxwXANxZN1JSE.gif\",srcSet:\"https://framerusercontent.com/images/ssX0ZVFaXvq1taxwXANxZN1JSE.gif?scale-down-to=512 512w,https://framerusercontent.com/images/ssX0ZVFaXvq1taxwXANxZN1JSE.gif 800w\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Polygon\"})}),/*#__PURE__*/e(\"p\",{children:\"Polygon masks are generally more precise as compared to bounding boxes. Similar to bounding boxes, polygon masks try to cover an object in an image with the help of a polygon. \"}),/*#__PURE__*/e(\"p\",{children:\"The increased precision comes from the increased corners that a polygon can have as compared to the restricted four vertex mask in bounding boxes. Polygonal masks do not occupy much space and can be vectorized easily, thus creating a balance between space and accuracy. \"}),/*#__PURE__*/t(\"p\",{children:[\"These masks are used to train object detection and semantic segmentation algorithms. Polygon masks find their use in \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/medical-image-annotation-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"annotations for medical imaging data\"})}),\" and n natural data involving scene text for scene text recognition and localization.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Polygon annotation using V7\",className:\"framer-image\",src:\"https://framerusercontent.com/images/HPizQBzcJE2QWVOSK3kgxYSrCFU.gif\",srcSet:\"https://framerusercontent.com/images/HPizQBzcJE2QWVOSK3kgxYSrCFU.gif?scale-down-to=512 512w,https://framerusercontent.com/images/HPizQBzcJE2QWVOSK3kgxYSrCFU.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/HPizQBzcJE2QWVOSK3kgxYSrCFU.gif 1103w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Polygon annotation using V7\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"3D cuboid\"})}),/*#__PURE__*/e(\"p\",{children:\"Cuboidal annotations are an extension of object detection masks in the three-dimensional plane. These annotations are essential when detection tasks are performed on 3-dimensional data, generally observable in medical domains in the form of scans. \"}),/*#__PURE__*/t(\"p\",{children:[\"These annotations might also find use in training algorithms for the motion of robots and cars and in the usage of robotic arms in a three-dimensional environment.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"img\",{alt:\"3D Cuboid annotation using V7\",className:\"framer-image\",src:\"https://framerusercontent.com/images/C9gvyDnTF2Lg9lAn11leYt924.gif\",srcSet:\"https://framerusercontent.com/images/C9gvyDnTF2Lg9lAn11leYt924.gif?scale-down-to=512 512w,https://framerusercontent.com/images/C9gvyDnTF2Lg9lAn11leYt924.gif 939w\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Semantic segmentation\"})}),/*#__PURE__*/e(\"p\",{children:\"Semantic annotations form one of the most precise forms of annotation, where the annotation comes in the form of a segmented mask of the same dimension as the input, with pixel values concerning the objects in the input. \"}),/*#__PURE__*/e(\"p\",{children:\"These masks find wide-scale applicability in various forms of segmentation and can also be extended to train object detection algorithms. Semantic masks come in both two-dimensional and three-dimensional forms and are developed in correspondence with the algorithm they are required for. \"}),/*#__PURE__*/t(\"p\",{children:[\"Semantic segmentation finds a wide range of use in computer vision for self-driving cars and \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/healthcare-datasets-for-computer-vision\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"medical imaging\"})}),\". In medical imaging, segmentation helps in the identification and localization of cells, enabling the formulation of an understanding of their shape features like circularity, area, and size.\"]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Check out \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ai-in-healthcare\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"7 Life-Saving AI Use Cases in Healthcare.\"})})]})}),/*#__PURE__*/e(\"p\",{children:\"In self-driving cars, segmentation helps to single out pedestrians and obstacles in the road, reducing road accidents considerably. \"}),/*#__PURE__*/e(\"p\",{children:\"V7 allows us to perform fast and easy segmentation annotation with the help of the auto-annotate tool. \"}),/*#__PURE__*/e(\"p\",{children:\"While the creation of segment masks requires a huge amount of time, auto annotate works by creating a segmented mask automatically on a specified region of interest. \"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/d1XCmWeyr1uDuFE2N13YHyqcF0.gif\",srcSet:\"https://framerusercontent.com/images/d1XCmWeyr1uDuFE2N13YHyqcF0.gif?scale-down-to=512 512w,https://framerusercontent.com/images/d1XCmWeyr1uDuFE2N13YHyqcF0.gif 1005w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"V7 polygon mask auto-annotation \"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Polyline\"})}),/*#__PURE__*/e(\"p\",{children:\"Polyline annotations come in the form of a set of lines drawn across the input image called polylines. These Polylines are used to annotate boundaries of objects and find use cases primarily in tasks like lane detection which require the algorithm to predict lines as compared to classes.\"}),/*#__PURE__*/e(\"p\",{children:\"High precision polyline annotations can help train algorithms for self-driving cars to choose lanes accurately and ascertain \u201Cdrivable regions\u201D to safely navigate through roads.\"}),/*#__PURE__*/e(\"img\",{alt:\"Polyline annotation in V7\",className:\"framer-image\",src:\"https://framerusercontent.com/images/beMk2NiXyHsbN4LkfxItxWETs.gif\",srcSet:\"https://framerusercontent.com/images/beMk2NiXyHsbN4LkfxItxWETs.gif?scale-down-to=512 512w,https://framerusercontent.com/images/beMk2NiXyHsbN4LkfxItxWETs.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/beMk2NiXyHsbN4LkfxItxWETs.gif 1055w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Polyline annotation in V7\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Keypoint/Landmark\"})}),/*#__PURE__*/e(\"p\",{children:\"Keypoint or landmark annotations come in the form of coordinates that pinpoint the location of a particular feature or object in an image. Landmark annotations are mainly used to train algorithms that scrutinize facial data to find features like eyes, nose, and lips, and correlate them to predict human posture and activity. \"}),/*#__PURE__*/t(\"p\",{children:[\"Apart from finding use in facial datasets, landmarks are also used in gesture recognition, \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/human-pose-estimation-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"human pose recognition\"})}),\", \\xa0and counting objects of a similar nature in an image. V7 allows you to pre-shape skeleton backbones that can be used to construct landmarks in no time by overlaying the corresponding shape on an image. \"]}),/*#__PURE__*/e(\"p\",{children:\"For more information, check out the tutorial on skeletal annotations here: \"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/4sbLnuatuUfmOTwFGSJM/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(r,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\" https://www.youtube.com/watch?v=q17gqr0EIUQ\"})})}),/*#__PURE__*/e(\"h2\",{children:\"How to find quality image data\"}),/*#__PURE__*/e(\"p\",{children:\"High-quality annotated data is not easy to obtain. \"}),/*#__PURE__*/e(\"p\",{children:\"If data of a particular nature is not available in the public domain, annotations have to be constructed from raw collected data. This often includes a multitude of tests to ensure that the processed data is free from noise and is completely accurate.\"}),/*#__PURE__*/e(\"p\",{children:\"Here are a few ways to obtain quality image data.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Open datasets\"})}),/*#__PURE__*/t(\"p\",{children:[\"Open datasets are the easiest source of high-quality annotated data. Large-scale datasets like Places365, ImageNet, and \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/coco-dataset-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"COCO\"})}),\" are released as a byproduct of research and are maintained by the authors of the corresponding articles. These datasets, however, are used mainly by academic researchers working on a better algorithm as commercial usage is typically restricted.\"]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Check out \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/computer-vision-datasets\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"20+ Open Source Computer Vision Datasets.\"})})]})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Self annotated data\"})}),/*#__PURE__*/e(\"p\",{children:\"As an alternative to open datasets, you can collect and annotate raw data.\"}),/*#__PURE__*/e(\"p\",{children:\"While raw data can be in the form of captured images with the help of a camera, it can also be obtained from open source webpages like CreativeCommons, Wikimedia, and Unsplash. Open source images form an excellent source of raw data and reduce the workload of dataset creation immensely. \"}),/*#__PURE__*/e(\"p\",{children:\"Captured image data can also be in the form of medical scans, satellite imagery, or drone photographs.\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Read \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/data-annotation-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Data Annotation Tutorial: Definition, Tools, Datasets. \"})}),\" \"]})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Scrape web data\"})}),/*#__PURE__*/e(\"p\",{children:\"Web scraping refers to scourging the internet for obtaining images of a particular nature with the help of a script that runs searches repeatedly and saves the relevant images. \"}),/*#__PURE__*/e(\"p\",{children:\"While scraping web data is an easy and fast method of obtaining data, this data is almost always in a very raw form and has to be cleaned thoroughly before any algorithm or annotation can be performed. Since scraping can help us gather images based on the query we set it up with, the images are already known to belong to a certain class or topic. \"}),/*#__PURE__*/e(\"p\",{children:\"This makes annotation much easier, particularly for tasks like classification which require only a single tag for each image. \"})]});export const richText4=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"Image annotation using V7\"}),/*#__PURE__*/e(\"p\",{children:\"V7 provides a lot of tools that are useful for image annotation. All of the tools discussed in this post are covered by V7 as part of their data annotation services. \"}),/*#__PURE__*/t(\"p\",{children:[\"Here\u2019s a quick guide on \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/get-started\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"getting started with image annotation using V7.\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Collect, prepare, and upload your image data\"})}),/*#__PURE__*/e(\"p\",{children:\"Upload your data using the data upload feature on the webpage or use the command-line interface (CLI) facilitated by Darwin.\"}),/*#__PURE__*/e(\"img\",{alt:\"Data import in V7\",className:\"framer-image\",src:\"https://framerusercontent.com/images/W3SsQQUflVQekj3m4OQMsGpIvXA.png\",srcSet:\"https://framerusercontent.com/images/W3SsQQUflVQekj3m4OQMsGpIvXA.png?scale-down-to=512 512w,https://framerusercontent.com/images/W3SsQQUflVQekj3m4OQMsGpIvXA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/W3SsQQUflVQekj3m4OQMsGpIvXA.png 1794w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Data import in V7\"})}),/*#__PURE__*/t(\"p\",{children:[\"V7 offers \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/dataset-management\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"advanced dataset management\"})}),\" features that allow you to easily organize and manage your data from one place. \"]}),/*#__PURE__*/e(\"h3\",{children:\"2. Choose the annotation type/class label\"}),/*#__PURE__*/e(\"p\",{children:\"Choose the annotation type for a specific class from the list of available annotations. You can change this or add new classes anytime by going to the \u201CClasses\u201D tab located on the left side of the interface. You can also add a short description of the annotation type and class to help other annotators understand your work.\"}),/*#__PURE__*/e(\"img\",{alt:\"Annotation class creation on V7\",className:\"framer-image\",src:\"https://framerusercontent.com/images/p1JLttVjJbm3fVjDa2EMtoouyU.png\",srcSet:\"https://framerusercontent.com/images/p1JLttVjJbm3fVjDa2EMtoouyU.png?scale-down-to=512 512w,https://framerusercontent.com/images/p1JLttVjJbm3fVjDa2EMtoouyU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/p1JLttVjJbm3fVjDa2EMtoouyU.png 1799w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Annotation class creation on V7\"})}),/*#__PURE__*/e(\"h3\",{children:\"3. Start annotating\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, start annotating your data either manually or using V7's auto-annotation tool.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/4sbLnuatuUfmOTwFGSJM/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(r,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=SvihDSAY4TQ\"})})}),/*#__PURE__*/e(\"p\",{children:\"V7 offers a real-time collaborative experience so that you can get your whole team on the same page and speed up your annotation process. To describe your image in greater detail, you can add sub annotations such as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Instance ID\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Attributes\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Text\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Direction Vector\"})})]}),/*#__PURE__*/e(\"p\",{children:\"You can also add comments and tag your fellow teammates. And hey\u2014don\u2019t forget the hotkeys. \"}),/*#__PURE__*/e(\"p\",{children:\"V7 comes equipped with several built-in power user shortcuts to speed up your annotation process and avoid fatigue.\"}),/*#__PURE__*/t(\"p\",{children:[\"Apart from that, you can also perform \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ocr-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!1,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"OCR\"})}),\" by using V7's built-in public Text Scanner model.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/4sbLnuatuUfmOTwFGSJM/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(r,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=Di6tcWoz_es\"})})}),/*#__PURE__*/e(\"p\",{children:\"Got questions?\"}),/*#__PURE__*/t(\"p\",{children:[\"Feel free to \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/get-started\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"get in touch with our team\"})}),\" to discuss your project.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Key takeaways\"}),/*#__PURE__*/e(\"p\",{children:\"Data collection and annotation is one of the most cumbersome parts of working with data.\"}),/*#__PURE__*/e(\"p\",{children:\"Yet it forms the baseline for training algorithms and must be performed with the highest precision possible. Proper annotation often saves a lot of time in the later stages of the pipeline when the model is being developed. \"}),/*#__PURE__*/e(\"p\",{children:\"Curious to learn more? Check out:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ai-insurance\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"6 Viable AI Use Cases in Insurance\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ai-in-manufacturing\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"7 Out-of-the-Box Applications of AI in Manufacturing\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ai-in-agriculture\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"8 Practical Applications of AI In Agriculture\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ai-in-dentistry\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"6 Innovative Artificial Intelligence Applications in Dentistry\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ai-in-sports\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"7 Game-Changing AI Applications in the Sports Industry\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ai-in-retail\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"6 AI Applications Shaping the Future of Retail\"})})})})]}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"})]});export const richText5=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/deep-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Deep Learning\"})}),\" is used for solving complex pattern recognition tasks. However\u2014\"]}),/*#__PURE__*/t(\"p\",{children:[\"Such models require a large amount of labeled data (think millions of annotated images) to perform optimally.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Therefore, sometimes we need to rely on pre-trained models for solving \",/*#__PURE__*/e(a,{href:\"http://xn--8ug/\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"supervised learning tasks\"})}),\", i.e., a model already trained on a large dataset is re-used for the task at hand with a fewer data samples.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/data-annotation-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Data Annotation Tutorial: Definition, Tools, Datasets.\"})})]})}),/*#__PURE__*/t(\"p\",{children:[\"What\u2019s more, without customized models trained specifically for the task we want to perform we can be certain that our model will eventually underperform.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"For example, in a \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/image-classification-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"multi-class classification task\"})}),\", the pre-trained model we are using might not provide the optimal performance for \",/*#__PURE__*/e(\"em\",{children:\"all\"}),\" the classes in the dataset.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Similarly, a different pre-trained model might work well on some other classes of the same data. Thus, we need a method that can aggregate the performance of all such models and provide a better solution for all distributions of data.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"This is where the concept of \u201CEnsemble Learning\u201D comes into play. And let me tell you\u2014it's a real game changer.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"In the next few minutes, we'll help you understand the following:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What is Ensemble Learning?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How does Ensemble Learning work?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Advanced Ensemble Learning techniques\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Applications of Ensemble Learning\"})})]}),/*#__PURE__*/e(\"p\",{children:\"However, before diving into the topic, you might want to refresh your knowledge and check out these guides:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/machine-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"What is Machine Learning? The Ultimate Beginner's Guide\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/when-to-annotate-data\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"3 Signs You Are Ready to Annotate Data for Machine Learning\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/data-preprocessing-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"A Simple Guide to Data Preprocessing in Machine Learning\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/data-cleaning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Data Cleaning Checklist: How to Prepare Your Machine Learning Data\"})})})})]})]});export const richText6=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Let's begin!\"}),/*#__PURE__*/e(\"h2\",{children:\"What is Ensemble Learning?\"}),/*#__PURE__*/t(\"p\",{children:[\"Ensemble Learning is a method of reaching a consensus in predictions by fusing the salient properties of two or more models. The final ensemble learning framework is more robust than the individual models that constitute the ensemble because ensembling reduces the variance in the prediction errors \",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Ensemble Learning tries to capture complementary information from its different contributing models\u2014that is, an ensemble framework is successful when the contributing models are statistically diverse.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"In easier words, models that display performance variation when evaluated on the same dataset are better suited to form an ensemble. \"}),/*#__PURE__*/e(\"p\",{children:\"For example\u2014\"}),/*#__PURE__*/e(\"p\",{children:\"Different models which make incorrect predictions on different sets of samples from the dataset should be ensembled. If two statistically similar models are ensembled (models that make wrong predictions on the same set of samples), the resulting model will only be as good as the contributing models. An ensemble won\u2019t make any difference to the prediction ability in such a case. \"}),/*#__PURE__*/t(\"p\",{children:[\"The diversity in the predictions of the contributing models of an ensemble is popularly verified using the Kullback-Leibler and Jensen-Shannon Divergence metrics (\",/*#__PURE__*/e(a,{href:\"https://doi.org/10.1016/j.compbiomed.2021.104895\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"this paper \"})}),\"is great example demonstrating the point).\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"Here are some of the scenarios where ensemble learning comes in handy.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Can't choose an \u201Coptimal\u201D model\"}),/*#__PURE__*/e(\"p\",{children:\"As explained in the example at the beginning of this article, there may arise situations where different models perform better on some distributions within the dataset, say, for example, a model may be well adapted to differentiate between cats and dogs, but not so much when distinguishing between dogs and wolves.\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Want to train your own AI? We've got you covered with our \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/training\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7 Model Training!\"})}),\" Go ahead and train image classification, instance segmentation, and object detection models on V7.\"]})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/4sbLnuatuUfmOTwFGSJM/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(r,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=Xk3gmzuSOJ8\"})})}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, a second model can accurately differentiate between dogs and wolves while producing wrong predictions on the \u201Ccat\u201D class. An ensemble of these two models might draw a more discriminative decision boundary between all the three classes of the data.\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Excess/Shortage of data\"}),/*#__PURE__*/e(\"p\",{children:\"In cases where a substantial amount of data is available, we may divide the classification tasks between different classifiers and ensemble them during prediction time, rather than trying to train one classifier with large volumes of data.\"}),/*#__PURE__*/t(\"p\",{children:[\"On the other hand, in cases where the dataset available is small (for example, in the biomedical domain, where acquiring \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/healthcare-datasets-for-computer-vision\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"labeled medical data\"})}),\" is costly), we can use a \",/*#__PURE__*/e(\"em\",{children:\"bootstrapping \"}),\"ensemble strategy.\\xa0\",/*#__PURE__*/e(\"strong\",{children:\"\u200D\"})]}),/*#__PURE__*/e(\"p\",{children:\"The way it works is quite simple\u2014\"}),/*#__PURE__*/t(\"p\",{children:[\"We train different classifiers using various \u201Cbootstrap samples\u201D of data, i.e., we create several subsets of a single dataset using replacement. It means that the same data sample may be present in more than one subset, which will be later used to train different models (for further reading, check out \",/*#__PURE__*/e(a,{href:\"https://doi.org/10.1007/978-1-4612-4380-9_41\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"this paper\"})}),\").\"]}),/*#__PURE__*/e(\"p\",{children:\"This method will be further explained in the section on the \u201CBagging\u201D ensemble technique.\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Looking for quality machine learning data? Check out \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/best-free-datasets-for-machine-learning\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"65+ Best Free Datasets for Machine Learning.\"})})]})}),/*#__PURE__*/e(\"h3\",{children:\"3. Confidence Estimation\"}),/*#__PURE__*/t(\"p\",{children:[\"The very core of an ensemble framework is based on the confidence in predictions by the different models. For example, when trying to draw a consensus between four models on a cat/dog classification problem, if two models predict the sample as class \u201Ccat\u201D and the other two predict as \u201Cdog,\u201D the confidence of the ensemble is \",/*#__PURE__*/e(\"em\",{children:\"low\"}),\".\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"Further, researchers also use the confidence scores of the individual classifiers to generate a final confidence score of the ensemble (Examples: \",/*#__PURE__*/e(a,{href:\"https://doi.org/10.1038/s41598-021-93658-y\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Paper-1\"})}),\", \",/*#__PURE__*/e(a,{href:\"https://doi.org/10.1016/j.compbiomed.2021.104895\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Paper-2\"})}),\"). Involving the confidence scores for developing the ensemble gives more robust predictions than simple \u201Cmajority voting\u201D since a prediction with 95% confidence is more reliable than a prediction with 51% confidence.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Therefore, we can assign more importance to classifiers that predict with more confidence during the ensemble.\"}),/*#__PURE__*/e(\"h3\",{children:\"4. High Problem Complexity\"}),/*#__PURE__*/e(\"p\",{children:\"Sometimes, a problem can have a complex decision boundary, and it might become impossible for a single classifier to generate the appropriate boundary.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"For example, if we have a linear classifier and we try to tackle a problem with a parabolic (polynomial) decision boundary. One linear classifier obviously cannot do the job well. However, an ensemble of multiple linear classifiers can generate any polynomial decision boundary.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"An example of such a case is shown in the diagram below.\"}),/*#__PURE__*/e(\"img\",{alt:\"An ensemble of multiple linear classifiers \",className:\"framer-image\",src:\"https://framerusercontent.com/images/xNvIfAZwfBOCouTYtXe59m0wdWc.png\",srcSet:\"https://framerusercontent.com/images/xNvIfAZwfBOCouTYtXe59m0wdWc.png?scale-down-to=512 512w,https://framerusercontent.com/images/xNvIfAZwfBOCouTYtXe59m0wdWc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/xNvIfAZwfBOCouTYtXe59m0wdWc.png 1200w\"}),/*#__PURE__*/e(\"h3\",{children:\"5. Information Fusion\"}),/*#__PURE__*/t(\"p\",{children:[\"The most prevalent reason for using an ensemble learning model is information fusion for enhancing classification performance. That is, models that have been trained on different distributions of data pertaining to the same set of classes are employed during prediction time to get a more robust decision.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"For example, we may have trained one cat/dog classifier on high-quality images taken by a professional photographer. In contrast, another classifier has been trained on data using low-quality photos captured on mobile phones. When predicting a new sample, integrating the decisions from both these classifiers will be more robust and bias-free.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Check out \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/computer-vision-datasets\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"20+ Open Source Computer Vision Datasets.\"})})]})}),/*#__PURE__*/e(\"p\",{children:\"Now, let\u2019s move on to some popular mechanisms for computing an ensemble.\"}),/*#__PURE__*/e(\"h2\",{children:\"How does ensemble learning work?\"}),/*#__PURE__*/t(\"p\",{children:[\"Ensemble learning combines the mapping functions learned by different classifiers to generate an aggregated mapping function.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"The diverse methods proposed over the years use different strategies for computing this combination.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"Below we describe the most popular methods that are commonly used in the literature.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Bagging\"}),/*#__PURE__*/t(\"p\",{children:[\"The Bagging ensemble technique is the acronym for \u201Cbootstrap aggregating\u201D and is one of the earliest ensemble methods proposed.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"For this method, subsamples from a dataset are created and they are called \u201Cbootstrap sampling.\u201D To put it simply, random subsets of a dataset are created using replacement, meaning that the same data point may be present in several subsets.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"These subsets are now treated as independent datasets, on which several Machine Learning models will be fit. During test time, the predictions from all such models trained on different subsets of the same data are accounted for.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"There is an aggregation mechanism used to compute the final prediction (like averaging, weighted averaging, etc. discussed later).\"}),/*#__PURE__*/e(\"img\",{alt:\"Bagging ensemble technique\",className:\"framer-image\",src:\"https://framerusercontent.com/images/XTxUBIq3T9PqHSkDASyNsFKI.png\",srcSet:\"https://framerusercontent.com/images/XTxUBIq3T9PqHSkDASyNsFKI.png?scale-down-to=512 512w,https://framerusercontent.com/images/XTxUBIq3T9PqHSkDASyNsFKI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/XTxUBIq3T9PqHSkDASyNsFKI.png 1600w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"em\",{children:\"Bagging\"})]}),/*#__PURE__*/t(\"p\",{children:[\"The image shown above exemplifies the Bagging ensemble mechanism.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Note that, in the bagging mechanism, a parallel stream of processing occurs. The main aim of the bagging method is to reduce variance in the ensemble predictions.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Thus, the chosen ensemble classifiers usually have high variance and low bias (complex models with many trainable parameters). Popular ensemble methods based on this approach include:\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Bagged Decision Trees\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Random Forest Classifiers\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Extra Trees\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})})]}),/*#__PURE__*/e(\"h3\",{children:\"2. Boosting\"}),/*#__PURE__*/t(\"p\",{children:[\"The boosting ensemble mechanism works in a way markedly different from the bagging mechanism.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"Here, instead of parallel processing of data, sequential processing of the dataset occurs. The first classifier is fed with the entire dataset, and the predictions are analyzed. \"}),/*#__PURE__*/t(\"p\",{children:[\"The instances where Classifier-1 fails to produce correct predictions (that are samples near the decision boundary of the feature space) are fed to the second classifier.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"This is done so that Classifier-2 can specifically focus on the problematic areas of feature space and learn an appropriate decision boundary. Similarly, further steps of the same idea are employed, and then the ensemble of all these previous classifiers is computed to make the final prediction on the test data.\\xa0\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Learn more about \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/train-validation-test-set\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"The Train, Validation, and Test Sets: How to Split Your Machine Learning Data.\"})})]})}),/*#__PURE__*/e(\"p\",{children:\"The pictorial representation of the same is shown below.\"}),/*#__PURE__*/e(\"img\",{alt:\"Boosting ensemble mechanism\",className:\"framer-image\",src:\"https://framerusercontent.com/images/MVp177KFajUJP3fYEjMwyUkk.png\",srcSet:\"https://framerusercontent.com/images/MVp177KFajUJP3fYEjMwyUkk.png?scale-down-to=512 512w,https://framerusercontent.com/images/MVp177KFajUJP3fYEjMwyUkk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/MVp177KFajUJP3fYEjMwyUkk.png 1600w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/t(\"em\",{children:[\"Boosting ensemble mechanism\",/*#__PURE__*/e(\"br\",{})]})}),/*#__PURE__*/t(\"p\",{children:[\"The main aim of the boosting method is to reduce bias in the ensemble decision. Thus, the classifiers are chosen for the ensemble usually need to have low variance and high bias, i.e., simpler models with less trainable parameters.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"Other algorithms based on this approach include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Adaptive Boosting\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Stochastic Gradient Boosting\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Gradient Boosting Machines\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})})]}),/*#__PURE__*/e(\"h3\",{children:\"3. Stacking\"}),/*#__PURE__*/t(\"p\",{children:[\"The stacking ensemble method also involves creating bootstrapped data subsets, like the bagging ensemble mechanism for training multiple models.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"However, here, the outputs of all such models are used as an input to another classifier, called meta-classifier, which finally predicts the samples. The intuition behind using two layers of classifiers is to determine whether the training data have been appropriately learned.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"For example, in the example of the cat/dog/wolf classifier at the beginning of this article, if, say, Classifier-1 can distinguish between cats and dogs, but not between dogs and wolves, the meta-classifier present in the second layer will be able to capture this behavior from classifier-1. The meta classifier can then correct this behavior before making the final prediction.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"A pictorial representation of the stacking mechanism is shown below.\"}),/*#__PURE__*/e(\"img\",{alt:\"Stacking ensemble mechanism\",className:\"framer-image\",src:\"https://framerusercontent.com/images/HLc1qsIWaICntgodgs43IcjL88.png\",srcSet:\"https://framerusercontent.com/images/HLc1qsIWaICntgodgs43IcjL88.png?scale-down-to=512 512w,https://framerusercontent.com/images/HLc1qsIWaICntgodgs43IcjL88.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/HLc1qsIWaICntgodgs43IcjL88.png 1600w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/t(\"em\",{children:[\"Boosting ensemble mechanism\",/*#__PURE__*/e(\"br\",{})]})}),/*#__PURE__*/t(\"p\",{children:[\"The diagram above shows one level of stacking. There are also multi-level stacking ensemble methods where additional layers of classifiers are added in between.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"However, such practices become computationally very expensive for a relatively small boost in performance.\",/*#__PURE__*/e(\"strong\",{children:\"\u200D\"})]}),/*#__PURE__*/e(\"h3\",{children:\"4. Mixture of Experts\"}),/*#__PURE__*/t(\"p\",{children:[\"The \u201CMixture of Experts\u201D genre of ensemble trains several classifiers, the outputs of which are ensemble using a generalized linear rule.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"The weights assigned to these combinations are further determined by a \u201CGating Network,\u201D also a trainable model and usually a \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/neural-network-architectures-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"neural network.\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"The Mixture of Experts ensemble mechanism\",className:\"framer-image\",src:\"https://framerusercontent.com/images/cd4HEmTNvxG2FxZH1Vk3vColIFQ.png\",srcSet:\"https://framerusercontent.com/images/cd4HEmTNvxG2FxZH1Vk3vColIFQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/cd4HEmTNvxG2FxZH1Vk3vColIFQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/cd4HEmTNvxG2FxZH1Vk3vColIFQ.png 1600w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"The Mixture of Experts ensemble mechanism\"})}),/*#__PURE__*/t(\"p\",{children:[\"Such an ensemble technique is usually used when different classifiers are trained on other parts of the feature space. Following the previous example of the cat/dog/wolf classification problem, suppose one classifier is trained only on cats/dogs data, and another is trained on dogs/wolves data.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Such a method is also successful on the \u201CInformation Fusion\u201D problem described before.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h3\",{children:\"5. Majority Voting\"}),/*#__PURE__*/t(\"p\",{children:[\"Majority voting is one of the earliest and easiest ensemble schemes in the literature. In this method, an odd number of contributing classifiers are chosen, and for each sample, the predictions from the classifiers are computed. Then, as the name suggests, the class that gets most of the class from the classifier pool is deemed the ensemble\u2019s predicted class.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Such a method works well for binary classification problems, where there are only two candidates for which the classifiers can vote. However, it fails for a problem with many classes since many cases arise, where no class gets a clear majority of the votes.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"In such cases, we usually choose a random class among the top candidates, which leads to a more considerable margin of error. Thus, methods based on the confidence scores are more reliable and are used more widely now.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h3\",{children:\"6. Max Rule\"}),/*#__PURE__*/t(\"p\",{children:[\"The \u201CMax Rule\u201D ensemble method relies on the probability distributions generated by each classifier. This method employs the concept of \u201Cconfidence in prediction\u201D of the classifiers and thus is a superior method to Majority Voting for multi-class classification challenges.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Here, for a predicted class by a classifier, the corresponding confidence score is checked. The class prediction of the classifier that predicts with the highest confidence score is deemed the prediction of the ensemble framework.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h3\",{children:\"7. Probability Averaging\"}),/*#__PURE__*/t(\"p\",{children:[\"In this ensemble technique, the probability scores for multiple models are first computed. Then, the scores are averaged over all the models for all the classes in the dataset.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Probability scores are the confidence in predictions by a particular model. So, here we are pooling the confidences of several models to generate a final probability score for the ensemble. The class that has the highest probability after the averaging operation is assigned as the predicted class.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Such a method has been used \",/*#__PURE__*/e(a,{href:\"https://doi.org/10.1007/s11042-021-11319-8\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"in this paper\"})}),\" for COVID-19 detection from lung CT-scan images.\"]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Sign up to check out \",/*#__PURE__*/e(a,{href:\"https://darwin.v7labs.com/v7-labs/covid-19-chest-x-ray-dataset\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7's public COVID-19 X-Ray Dataset.\"})})]})}),/*#__PURE__*/e(\"h3\",{children:\"8. Weighted Probability Averaging\"}),/*#__PURE__*/e(\"p\",{children:\"In the weighted probability averaging technique, similar to the previous method, the probability or confidence scores are extracted from the different contributing models. \"}),/*#__PURE__*/e(\"p\",{children:\"But here, unlike the other case, we calculate a weighted average of the probability. The weights in this approach refer to the importance of each classifier, i.e., a classifier whose overall performance on the dataset is better than another classifier is given more importance while computing the ensemble, which leads to a better predictive ability of the ensemble framework. \"}),/*#__PURE__*/t(\"p\",{children:[\"In the deep learning literature, the classification accuracy of the models is usually assigned as the weights to the classifiers while computing the ensemble.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"More recent methods, for example described in \",/*#__PURE__*/e(a,{href:\"https://doi.org/10.1371/journal.pone.0256630\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"this paper,\"})}),\" focus on leveraging weights more intelligently. In the paper, the authors argue that for class-imbalanced datasets, i.e., for datasets where each class contains a different quantity of training data, assigning the classification accuracy as the weights to the ensemble can aggravate the performance.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"Instead, they proposed a new weighting scheme, wherein metrics such as precision, recall, F1-score, and AUC (area under receiver operating characteristics curve) are used. They proposed a fusion function that inputs these four evaluation metrics to generate an appropriate weight (or importance) to the input classifiers. They applied their ensemble method on the pneumonia detection problem using lung X-Ray images and showed that their method performs superior to weighted averaging using only classification accuracy.\\xa0\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Pro tip: Explore \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/medical-imaging-annotation\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"V7 for Medical Image Annotation.\"})})]})}),/*#__PURE__*/t(\"p\",{children:[\"The flowchart diagram of their method and their results upon comparison with different ensemble methods are shown below. The relevant codes for their method are also available on \",/*#__PURE__*/e(a,{href:\"https://github.com/Rohit-Kundu/Ensemble-Pneumonia-Detection\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!1,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"GitHub.\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"Weighted probability averaging flowchart\",className:\"framer-image\",src:\"https://framerusercontent.com/images/hCbGxqvNmqePwaBZ8yDfqfQAIOs.png\",srcSet:\"https://framerusercontent.com/images/hCbGxqvNmqePwaBZ8yDfqfQAIOs.png?scale-down-to=1024 799w,https://framerusercontent.com/images/hCbGxqvNmqePwaBZ8yDfqfQAIOs.png 1249w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/t(\"em\",{children:[/*#__PURE__*/e(\"br\",{}),\"Source: \"]}),/*#__PURE__*/e(a,{href:\"https://doi.org/10.1371/journal.pone.0256630\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:/*#__PURE__*/e(\"em\",{children:\"Paper\"})})})]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/EWR0mU2MPTG6f3SsSi4BanlNPF4.png\",srcSet:\"https://framerusercontent.com/images/EWR0mU2MPTG6f3SsSi4BanlNPF4.png?scale-down-to=512 512w,https://framerusercontent.com/images/EWR0mU2MPTG6f3SsSi4BanlNPF4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/EWR0mU2MPTG6f3SsSi4BanlNPF4.png 1600w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Source: \"}),/*#__PURE__*/e(a,{href:\"https://doi.org/10.1371/journal.pone.0256630\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:/*#__PURE__*/e(\"em\",{children:\"Paper\"})})})]}),/*#__PURE__*/e(\"h2\",{children:\"Advanced Ensemble Techniques\"}),/*#__PURE__*/e(\"p\",{children:\"The ensemble methods described above have been around for decades. However, with the advancements in research, much more powerful ensemble techniques have been developed for different use cases.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"For example, Fuzzy Ensembles are a class of ensemble techniques that use the concept of \u201Cdynamic importance.\u201D \"}),/*#__PURE__*/t(\"p\",{children:[\"The \u201Cweights\u201D given to the classifiers are not fixed; they are modified based on the contributing models\u2019 confidence scores for every sample, rather than checking the performance on the entire dataset. They perform much better than the popularly used weighted average probability methods. The codes for the papers are also available here:\\xa0\",/*#__PURE__*/e(a,{href:\"https://github.com/Rohit-Kundu/COVID-Detection-Gompertz-Function-Ensemble\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Paper-1\"})}),\", \",/*#__PURE__*/e(a,{href:\"https://github.com/Rohit-Kundu/Fuzzy-Integral-Covid-Detection\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Paper-2\"})}),\", and \",/*#__PURE__*/e(a,{href:\"https://github.com/Rohit-Kundu/Fuzzy-Rank-Ensemble\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Paper-3.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Another genre of ensemble technique that has recently gained popularity is called \u201CSnapshot Ensembling.\u201D \"}),/*#__PURE__*/e(\"p\",{children:\"As we can see from the discussion throughout this article, ensemble learning comes at the expense of training multiple models.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Especially in deep learning, it is a costly operation, even with \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/transfer-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"transfer learning.\"})}),\" So, this ensemble learning method proposed \",/*#__PURE__*/e(a,{href:\"https://arxiv.org/abs/1704.00109\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"in this paper\"})}),\" trains only one deep learning model and saves the model snapshots at different training epochs.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"The ensemble of these models generates a final ensemble prediction framework on the test data. \"}),/*#__PURE__*/e(\"p\",{children:\"They proposed some modifications to the usual deep learning model training regime to ensure the diversity in the model snapshots. The model weights saved at these different epochs need to be significantly different to make the ensemble successful. You can find further information on these methods in the reference papers.\"}),/*#__PURE__*/e(\"h2\",{children:\"Applications of Ensemble Learning\"}),/*#__PURE__*/t(\"p\",{children:[\"Ensemble learning is a fairly common strategy in deep learning and has been applied to tackle a myriad of problems. It has helped tackle complex pattern recognition tasks that require computers to learn high-level semantic information from digital images or videos, like \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/object-detection-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"object detection\"})}),\", where \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/bounding-box-annotation\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"bounding boxes need to be formed\"})}),\" around the objects of interest and image classification.\"]}),/*#__PURE__*/e(\"p\",{children:\"Here are some of the real-life applications of Ensemble Learning.\"}),/*#__PURE__*/e(\"h2\",{children:\"1. Disease detection\"}),/*#__PURE__*/e(\"p\",{children:\"Classification and localization of diseases for simplistic and fast prognosis have been aided by Ensemble learning, like in cardiovascular disease detection from X-Ray and CT scans.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://framerusercontent.com/images/i3cvDdq0fYpgAKvQm5eIUaeS0k.jpg\",srcSet:\"https://framerusercontent.com/images/i3cvDdq0fYpgAKvQm5eIUaeS0k.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/i3cvDdq0fYpgAKvQm5eIUaeS0k.jpg?scale-down-to=1024 1024w,https://framerusercontent.com/images/i3cvDdq0fYpgAKvQm5eIUaeS0k.jpg 1788w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"AI chest X-ray annotation analysis\"})}),/*#__PURE__*/e(\"h3\",{children:\"2. Remote Sensing\"}),/*#__PURE__*/e(\"p\",{children:\"Monitoring of physical characteristics of a target area without coming in physical contact, called Remote Sensing, is a difficult task since the data acquired by different sensors have varying resolutions leading to incoherence in data distribution. \"}),/*#__PURE__*/e(\"p\",{children:\"Tasks like Landslide Detection and Scene Classification have also been accomplished with the help of Ensemble Learning.\"}),/*#__PURE__*/e(\"img\",{alt:\"Construction land cover mapping\",className:\"framer-image\",src:\"https://framerusercontent.com/images/RxIBGrhGqyDVHOssu1S78ej2MTU.png\",srcSet:\"https://framerusercontent.com/images/RxIBGrhGqyDVHOssu1S78ej2MTU.png?scale-down-to=512 512w,https://framerusercontent.com/images/RxIBGrhGqyDVHOssu1S78ej2MTU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/RxIBGrhGqyDVHOssu1S78ej2MTU.png 1364w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Construction land cover mapping with annotated vehicles\"})}),/*#__PURE__*/e(\"h3\",{children:\"3. Fraud Detection\"}),/*#__PURE__*/t(\"p\",{children:[\"Detection of digital fraud is an important and challenging task since very minute precision is required to automate the process. Ensemble Learning has proved its efficacy in detecting \",/*#__PURE__*/e(a,{href:\"https://www.sciencedirect.com/science/article/abs/pii/S0957417419302167\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Credit Card Fraud\"})}),\" and \",/*#__PURE__*/e(a,{href:\"https://www.sciencedirect.com/science/article/abs/pii/S1084804518300729\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Impression Fraud.\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"4. Speech emotion recognition\"}),/*#__PURE__*/e(\"p\",{children:\"Ensemble Learning is also applied in speech emotion recognition, especially in the case of multi-lingual environments. The technique allows for the combining of all classifiers\u2019 effect instead of choosing one classifier and compromising certain language corpus\u2019s accuracy.\"}),/*#__PURE__*/e(\"img\",{alt:\"Emotion recognition using bounding boxes in V7\",className:\"framer-image\",src:\"https://framerusercontent.com/images/2FnawttdsP6RfcDh1bujtIJB2k.png\",srcSet:\"https://framerusercontent.com/images/2FnawttdsP6RfcDh1bujtIJB2k.png?scale-down-to=512 512w,https://framerusercontent.com/images/2FnawttdsP6RfcDh1bujtIJB2k.png 940w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Emotion recognition using \"}),/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/bounding-box-annotation-tool-features\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!1,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:/*#__PURE__*/e(\"em\",{children:\"V7 bounding box\"})})})]}),/*#__PURE__*/e(\"h2\",{children:\"Ensemble Learning: Key Takeaways\"}),/*#__PURE__*/e(\"p\",{children:\"Ensemble Learning is a standard machine learning technique that involves taking the opinions of multiple experts (classifiers) to make predictions.\"}),/*#__PURE__*/e(\"p\",{children:\"The need for ensemble learning arises in several problematic situations that can be both data-centric and algorithm-centric, like a scarcity/excess of data, the complexity of the problem, constraint in computational resources, etc.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The several methods evolved over the decades have proven their utility in tackling many such issues. Still, newer ensemble approaches are being developed by researchers that address the caveats of the traditional ensembles.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Read next:\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/text-annotation-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"A Step-by-Step Guide to Text Annotation [+Free OCR Tool]\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/cvat-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"The Complete Guide to CVAT\u2014Pros & Cons\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/5-alternatives-to-scale-ai\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"5 Alternatives to Scale AI\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/semi-supervised-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"The Ultimate Guide to Semi-Supervised Learning\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/bounding-box-annotation-tool-features\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"9 Essential Features for a Bounding Box Annotation Tool\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ensemble-learning\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"The Complete Guide to Ensemble Learning\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/contrastive-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"The Beginner\u2019s Guide to Contrastive Learning\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/reinforcement-learning-applications\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"9 Reinforcement Learning Real-Life Applications\"})})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/mean-average-precision\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Mean Average Precision (mAP) Explained: Everything You Need to Know\"})}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})]});export const richText7=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"The robotics industry has come a long way since 1960s, and has played a vital role in the growth of the manufacturing industry.\"}),/*#__PURE__*/e(\"p\",{children:\"Today, almost 3 million industrial robots power several industries across the globe, with roughly 400,000 new robots entering the market every year. Their main use cases include the manufacturing industry for assembling vehicles, electronics, and military equipment.\"}),/*#__PURE__*/e(\"p\",{children:\"AI in robotics aims to create an intelligent environment in the robotics industry for better automation. It uses computer vision techniques, intelligent programming, and reinforced learning to teach robots to make human-like decisions and execute tasks in dynamic conditions.\"}),/*#__PURE__*/e(\"p\",{children:\"In this article, we\u2019ll cover the following use cases of AI in robotics:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Healthcare\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Manufacturing\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Agriculture\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Transportation\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Smart Home Applications\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Aerospace\"})})]})]});export const richText8=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"AI in Robotics: Overview\"}),/*#__PURE__*/e(\"p\",{children:\"Robotics and artificial intelligence have both been era-defining technologies, and the fusion of both was nothing short of a revolution.\"}),/*#__PURE__*/t(\"p\",{children:[\"AI in robotics has seen vast success across multiple industries and gained a significant market over the last few years. The AI robotics market stood at \",/*#__PURE__*/e(a,{href:\"https://www.marketsandmarkets.com/Market-Reports/artificial-intelligence-robots-market-120550497.html\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"US $6.9 Billion in 2021\"})}),\" and is forecasted to reach US $35.5 Billion by 2026 at a CAGR of 38.6%.\"]}),/*#__PURE__*/e(\"p\",{children:\"The global pandemic forced workers to find ways to work remotely, paving the way for intelligent robots that can be programmed and controlled from anywhere.\"}),/*#__PURE__*/t(\"p\",{children:[\"Many organizations integrate AI robots into their routine procedures for increased productivity, efficiency, and better customer experience. Dominating both tech and non-tech industries, robots can be seen greeting customers at stores, waiting tables at restaurants, harvesting crops, or lifting heavy loads at manufacturing plants. In industrial settings, AI-enabled robots keep workers safe by operating in shared spaces. They also perform complex tasks such as cutting, grinding, welding, and inspection autonomously. A \",/*#__PURE__*/e(a,{href:\"https://www.sciencedirect.com/science/article/abs/pii/S0927537122000963#:~:text=Using%20establishment%2Dlevel%20data%20on%20injury%20rates%2C%20we%20find%20that,CI%3A%201.8%2C%200.53).\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"research study\"})}),\" concluded that the introduction of 1.34 robots per 1000 workers\\xa0 (one standard deviation) reduced workplace injuries by approximately 1.2 injuries per worker.\"]}),/*#__PURE__*/e(\"p\",{children:\"Now, let's discuss some industries currently using AI robots.\"}),/*#__PURE__*/e(\"h2\",{children:\"Agriculture\"}),/*#__PURE__*/t(\"p\",{children:[\"The agriculture sector utilizes modern technology to improve process efficiency and increase crop yields. \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ai-in-agriculture\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"AI in agriculture\"})}),\" helps farmers understand weather conditions and advises them on using fertilizer, water, and the time to harvest. Furthermore, robots help farmers automate manual labor, improving efficiency and saving time. Let's look at some common use cases of AI robots in agriculture.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Robot picking\"}),/*#__PURE__*/t(\"p\",{children:[\"Farmers spend several hours in the field daily, and the process of harvesting entire fields takes up to several weeks or even months. According to \",/*#__PURE__*/e(a,{href:\"https://migration.ucdavis.edu/rmn/blog/post/?id=2497\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"2017 census data\"})}),\", it would take 500 hours for a worker to pick apples from a 38,000-acre field, and the work goes up to 1250 hours for strawberry picking.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Robots can be programmed using \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/machine-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"machine learning\"})}),\" and \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/computer-vision-applications\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"computer vision\"})}),\" to identify specific fruits and pick them out.\"]}),/*#__PURE__*/t(\"p\",{children:[\"For example, the Dexterous Hand by \",/*#__PURE__*/e(a,{href:\"https://www.shadowrobot.com/dexterous-hand-series/\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Shadow Robot\"})}),\" is an advanced robotic arm trained using \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/deep-reinforcement-learning-guide\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"reinforced learning\"})}),\" to perform specific tasks. The Dexterous Jand is an agile piece of hardware, perfect for fruit picking without crushing it.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Another AI company, \",/*#__PURE__*/e(a,{href:\"https://www.tevel-tech.com/\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Tevel\"})}),\", has developed AI drones attached to robotic arms. These drones use machine vision to identify which fruits are ripened and pluck them using an integrated arm. They have partnered with farms in Israel, the USA, and Italy, where their robots work 24/7, saving several hundred hours of manual labor.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Crop harvesting/wedding\"}),/*#__PURE__*/e(\"p\",{children:\"AI can also determine whether the crop is ripened and ready for harvesting. This information is vital for farmers who use it to identify ready-to-harvest crops using a smartphone application rather than manually monitoring the field.\"}),/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(a,{href:\"https://www.agrobot.com/e-series\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Agrobot E-Series\"})}),\" robots use an onboard short-range integrated color and depth sensor to evaluate the ripeness of fruit. It then uses its robotic arms to pluck and store the berries. Researchers from Cambridge University have developed the \",/*#__PURE__*/e(a,{href:\"https://www.cam.ac.uk/research/news/robot-uses-machine-learning-to-harvest-lettuce\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Vegebot\"})}),\", an AI-assisted robot for harvesting Iceberg lettuce which is a particularly challenging crop. It uses a series of cameras to locate the lettuce, determine its health state, and guide a robotic arm to make a precise cut.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Crop weeding is another time-consuming task that troubles farmers. Wild plants eventually develop resistance to herbicides, rendering the method useless and manual wedding a necessity. The \",/*#__PURE__*/e(a,{href:\"https://carbonrobotics.com/\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"LaserWeeder\"})}),\" from Carbon Robotics uses computer vision to identify wild plantations among crops with sub-millimeter accuracy. It then uses thermal energy to eliminate the wild growth. The all-weather robot can work 24/7, cutting weed control costs by 80%.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Manufacturing\"}),/*#__PURE__*/t(\"p\",{children:[\"Robots have been used in the manufacturing industry for decades. They perform tasks like assembling, welding, packaging, and shipping with great precision and efficiency. Recent developments in \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/blog/ai-in-manufacturing\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"AI in manufacturing\"})}),\" have introduced intelligent robots that can assess situations in real time and perform dynamic actions.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Damage control and quick maintenance\"}),/*#__PURE__*/e(\"p\",{children:\"Robots armed with computer vision technologies inspect machinery and infrastructures for damages or inconsistencies. The robots identify and assess the damages and report to relevant authorities for timely action.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://abysssolutions.co/\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Abyss Solutions\"})}),\" is an engineering firm that delivers infrastructure inspection solutions for land, air, and sea. It combines the power of computer vision and robotics to remotely inspect areas that would otherwise require several workers and hours, reducing inspection time from months to weeks.\"]}),/*#__PURE__*/e(\"p\",{children:\"To make sure their models operate at maximum accuracy, Abyss Solutions trains them on giant datasets. Without the right tools, annotation can be challenging. Abyss Solutions uses V7\u2018s image annotation tool to label more than two terabytes of data.\"}),/*#__PURE__*/e(\"video\",{autoPlay:!0,className:\"framer-image\",loop:!0,muted:!0,playsInline:!0,src:\"https://framerusercontent.com/assets/QjggJVbeqPpkxiBOl4rRiHlcc.mp4\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Read more: \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/case-study/abyss-solutions\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"How Abyss Uses V7 to Advance Critical Infrastructure Inspections\"})})]})}),/*#__PURE__*/t(\"p\",{children:[\"Quality inspection has become a vital application of AI robots in manufacturing. Another company, \",/*#__PURE__*/e(a,{href:\"https://naska.ai/solutions/\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Naska.AI\"})}),\", delivers AI solutions that inspect construction elements for structural integrity and progress tracking. The autonomous robot moves through construction sites, generating scans for analysis of quality issues and progress monitoring.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Automatic control\"}),/*#__PURE__*/e(\"p\",{children:\"Companies have started implementing integrated control solutions, creating a single access point for process monitoring.\"}),/*#__PURE__*/t(\"p\",{children:[\"For example, General Electric (GE) uses its \",/*#__PURE__*/e(a,{href:\"https://www.ge.com/news/press-releases/new-brilliant-manufacturing-module-ge-digital-changes-game-manufacturing-visibility\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Brilliant Manufacturing Suite\"})}),\" to track several manufacturing process metrics across its 500 factories globally. The Brilliant Manufacturing Suite creates a scalable and intelligent system that integrates procedures like design engineering, manufacturing, and supply chain.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Nuclear waste management\"}),/*#__PURE__*/e(\"p\",{children:\"When a nuclear plant is decommissioned, its remnants must be collected and disposed of safely. This is a dangerous job for humans as any items left over are riddled with radioactive\\xa0 waste and must be handled cautiously. Moreover, the preparation and cleaning process could take months to complete.\"}),/*#__PURE__*/t(\"p\",{children:[\"In 2020, the \",/*#__PURE__*/e(a,{href:\"https://www.the-mtc.org/\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Manufacturing Technology Centre\"})}),\" partnered with robotic firms and the Nuclear Decommissioning Authority to build an AI solution involving robots to clean up nuclear waste. They developed a cloud-based segmentation model using the V7 platform to train robots to identify and grip objects of interest. Moreover, they used V7\u2019s image annotation tool to speed up the labeling process ten times.\"]}),/*#__PURE__*/e(\"div\",{children:\" \"}),/*#__PURE__*/e(\"video\",{autoPlay:!0,className:\"framer-image\",loop:!0,muted:!0,playsInline:!0,src:\"https://framerusercontent.com/assets/Xt8Us20DmhcrWdK2bgivb3JVdk.mp4\"}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"Read more: \",/*#__PURE__*/e(a,{href:\"https://www.v7labs.com/case-study/mtc\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"How MTC is Using V7 to Build AI for Sorting and Segregating Nuclear Waste\"})})]})}),/*#__PURE__*/e(\"h3\",{children:\"Assembly line quality inspection\"}),/*#__PURE__*/e(\"p\",{children:\"Quality inspectors monitor assembly lines looking for any defective material or product entering the supply chain. This manual inspection has a significant error probability and requires 24/7 supervision.\"}),/*#__PURE__*/e(\"p\",{children:\"AI robots can perform the same task with increased accuracy and precision. Computer vision algorithms look for any irregularities in the assembly and prompt the robotic arm to remove the defective items. With computer vision models achieving ground-breaking accuracies, this methodology is less prone to error and can operate without disruptions.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(a,{href:\"https://www.novacura.com/computer-vision-quality-inspections/\",motionChild:!0,nodeId:\"GdUtHI9Ua\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Novacura\"})}),\", for example, provides computer vision solutions specialized for assembly line quality assurance. The Novacura Flow solution uses specialized cameras to monitor assembly line items, collect information and generate notifications. This information can be used to control conveyor belts or robotic arms to carry out appropriate actions.\"]})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText8\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "Link", "motion", "ComponentPresetsConsumer", "t", "CodeBlock_default", "richText1", "richText2", "richText3", "Youtube", "richText4", "richText5", "richText6", "richText7", "richText8", "__FramerMetadata__"]
}
