[{"data":1,"prerenderedAt":404},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fcomputer-vision":286,"\u002Fblog\u002Fcomputer-vision-surround":397},[4],{"title":5,"path":6,"stem":7,"children":8,"page":285},"Blog","\u002Fblog","blog",[9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273,277,281],{"title":10,"path":11,"stem":12},"2020 - The best Javascript Frameworks","\u002Fblog\u002F2020-the-best-javascript-frameworks","blog\u002F2020 - The best Javascript Frameworks",{"title":14,"path":15,"stem":16},"5 Essential Reasons for E2E Testing","\u002Fblog\u002F5-essential-reasons-for-e2e-testing","blog\u002F5 Essential Reasons for E2E Testing",{"title":18,"path":19,"stem":20},"5 Mistakes Front-end Developers should Avoid","\u002Fblog\u002F5-mistakes-front-end-developers-should-avoid","blog\u002F5 Mistakes Front-end Developers should Avoid",{"title":22,"path":23,"stem":24},"5 Things to motivate you to perform Unit Testing","\u002Fblog\u002F5-things-to-motivate-you-to-perform-unit-testing","blog\u002F5 Things to motivate you to perform Unit Testing",{"title":26,"path":27,"stem":28},"52 Articles, 7 Books and a Pandemic","\u002Fblog\u002F52-articles-7-books-and-a-pandemic","blog\u002F52 Articles, 7 Books and a Pandemic",{"title":30,"path":31,"stem":32},"6 Levels of Autonomous Vehicles","\u002Fblog\u002F6-levels-of-autonomous-vehicles","blog\u002F6 Levels of Autonomous Vehicles",{"title":34,"path":35,"stem":36},"ADAS","\u002Fblog\u002Fadas","blog\u002FADAS",{"title":38,"path":39,"stem":40},"Ambient Intelligence","\u002Fblog\u002Fambient-intelligence","blog\u002FAmbient Intelligence",{"title":42,"path":43,"stem":44},"Best 5 Hybrid Mobile App Development Frameworks","\u002Fblog\u002Fbest-5-hybrid-mobile-app-development-frameworks","blog\u002FBest 5 Hybrid Mobile App Development Frameworks",{"title":46,"path":47,"stem":48},"Best Practices for Code Testing","\u002Fblog\u002Fbest-practices-for-code-testing","blog\u002FBest Practices for Code Testing",{"title":50,"path":51,"stem":52},"Blockchains - How and Why?","\u002Fblog\u002Fblockchains-how-and-why","blog\u002FBlockchains - How and Why",{"title":54,"path":55,"stem":56},"Brain Computer Interfaces","\u002Fblog\u002Fbrain-computer-interfaces","blog\u002FBrain Computer Interfaces",{"title":58,"path":59,"stem":60},"Computational Fluid Dynamics","\u002Fblog\u002Fcomputational-fluid-dynamics","blog\u002FComputational Fluid Dynamics",{"title":62,"path":63,"stem":64},"Computer Vision","\u002Fblog\u002Fcomputer-vision","blog\u002FComputer Vision",{"title":66,"path":67,"stem":68},"Cryptography","\u002Fblog\u002Fcryptography","blog\u002FCryptography",{"title":70,"path":71,"stem":72},"Cyber-Physical Systems: Where Digital Meets Reality","\u002Fblog\u002Fcyber-physical-systems","blog\u002FCyber-Physical Systems",{"title":74,"path":75,"stem":76},"Design Patterns - Why and How?","\u002Fblog\u002Fdesign-patterns-why-and-how","blog\u002FDesign Patterns - Why and How",{"title":78,"path":79,"stem":80},"Edge AI: Revolutionizing Intelligence at the Edge","\u002Fblog\u002Fedge-ai","blog\u002FEdge AI",{"title":82,"path":83,"stem":84},"Edge Computing","\u002Fblog\u002Fedge-computing","blog\u002FEdge Computing",{"title":86,"path":87,"stem":88},"Embracing Decentralized Development","\u002Fblog\u002Fembracing-decentralized-development","blog\u002FEmbracing Decentralized Development",{"title":90,"path":91,"stem":92},"Extended Reality Simplified","\u002Fblog\u002Fextended-reality-simplified","blog\u002FExtended Reality Simplified",{"title":94,"path":95,"stem":96},"Good practices for Git","\u002Fblog\u002Fgood-practices-for-git","blog\u002FGood practices for Git",{"title":98,"path":99,"stem":100},"How do browsers work","\u002Fblog\u002Fhow-do-browsers-work","blog\u002FHow do browsers work",{"title":102,"path":103,"stem":104},"How to be a Full Stack Engineer","\u002Fblog\u002Fhow-to-be-a-full-stack-engineer","blog\u002FHow to be a Full Stack Engineer",{"title":106,"path":107,"stem":108},"How to be an effective Engineer?","\u002Fblog\u002Fhow-to-be-an-effective-engineer","blog\u002FHow to be an effective Engineer",{"title":110,"path":111,"stem":112},"How to choose components for a desktop PC on your own","\u002Fblog\u002Fhow-to-choose-components-for-a-desktop-pc-on-your-own","blog\u002FHow to choose components for a desktop PC on your own",{"title":114,"path":115,"stem":116},"Industry 4.0","\u002Fblog\u002Findustry-4","blog\u002FIndustry 4",{"title":118,"path":119,"stem":120},"Industry 4.0 & Mixed Reality","\u002Fblog\u002Findustry-4-and-mixed-reality","blog\u002FIndustry 4 & Mixed Reality",{"title":122,"path":123,"stem":124},"Internet of Behaviours","\u002Fblog\u002Finternet-of-behaviours","blog\u002FInternet of Behaviours",{"title":126,"path":127,"stem":128},"Internet of Things","\u002Fblog\u002Finternet-of-things","blog\u002FInternet of Things",{"title":130,"path":131,"stem":132},"Let's talk about SOLID Principles","\u002Fblog\u002Flets-talk-about-solid-principles","blog\u002FLets talk about SOLID Principles",{"title":134,"path":135,"stem":136},"LiDAR","\u002Fblog\u002Flidar","blog\u002FLiDAR",{"title":138,"path":139,"stem":140},"Machine Vision -Transforming Industries AI","\u002Fblog\u002Fmachine-vision-transforming-industries-ai","blog\u002FMachine Vision -Transforming Industries AI",{"title":142,"path":143,"stem":144},"Mathematics in Software Engineering","\u002Fblog\u002Fmathematics-in-software-engineering","blog\u002FMathematics in Software Engineering",{"title":146,"path":147,"stem":148},"Micro Frontends - A Modern Approach to Front-End Development","\u002Fblog\u002Fmicro-frontends-a-modern-approach-to-front-end-development","blog\u002FMicro Frontends - A Modern Approach to Front-End Development",{"title":150,"path":151,"stem":152},"Natural Language Processing","\u002Fblog\u002Fnatural-language-processing","blog\u002FNatural Language Processing",{"title":154,"path":155,"stem":156},"Optimizing for Search Engines","\u002Fblog\u002Foptimizing-for-search-engines","blog\u002FOptimizing for Search Engines",{"title":158,"path":159,"stem":160},"Physics Engine","\u002Fblog\u002Fphysics-engine","blog\u002FPhysics Engine",{"title":162,"path":163,"stem":164},"Point cloud","\u002Fblog\u002Fpoint-cloud","blog\u002FPoint cloud",{"title":166,"path":167,"stem":168},"Processes for Better Software Volume 1","\u002Fblog\u002Fprocesses-for-better-software-volume-1","blog\u002FProcesses for Better Software Volume 1",{"title":170,"path":171,"stem":172},"Processes for Better Software Volume 2","\u002Fblog\u002Fprocesses-for-better-software-volume-2","blog\u002FProcesses for Better Software Volume 2",{"title":174,"path":175,"stem":176},"Processes for Better Software Volume 3","\u002Fblog\u002Fprocesses-for-better-software-volume-3","blog\u002FProcesses for Better Software Volume 3",{"title":178,"path":179,"stem":180},"Quantum Computers","\u002Fblog\u002Fquantum-computers","blog\u002FQuantum Computers",{"title":182,"path":183,"stem":184},"Quantum Computing and its Potential Impact on Software Development","\u002Fblog\u002Fquantum-computing-and-its-potential-impact-on-software-development","blog\u002FQuantum Computing and its Potential Impact on Software Development",{"title":186,"path":187,"stem":188},"Quantum Cryptography","\u002Fblog\u002Fquantum-cryptography","blog\u002FQuantum Cryptography",{"title":190,"path":191,"stem":192},"Ray tracing - What you need to know","\u002Fblog\u002Fray-tracing-what-you-need-to-know","blog\u002FRay tracing - What you need to know",{"title":194,"path":195,"stem":196},"Reflections on how we code","\u002Fblog\u002Freflections-on-how-we-code","blog\u002FReflections on how we code",{"title":198,"path":199,"stem":200},"Robotic Process Automation","\u002Fblog\u002Frobotic-process-automation","blog\u002FRobotic Process Automation",{"title":202,"path":203,"stem":204},"Self Driving Cars - A Better Tomorrow","\u002Fblog\u002Fself-driving-cars-a-better-tomorrow","blog\u002FSelf Driving Cars - A Better Tomorrow",{"title":206,"path":207,"stem":208},"Semantic Web - A Smarter Future","\u002Fblog\u002Fsemantic-web-a-smarter-future","blog\u002FSemantic Web A Smarter Future",{"title":210,"path":211,"stem":212},"Sensor Fusion","\u002Fblog\u002Fsensor-fusion","blog\u002FSensor Fusion",{"title":214,"path":215,"stem":216},"Serverless Computing and the Future","\u002Fblog\u002Fserverless-computing-and-the-future","blog\u002FServerless Computing and the Future",{"title":218,"path":219,"stem":220},"Shaders","\u002Fblog\u002Fshaders","blog\u002FShaders",{"title":222,"path":223,"stem":224},"Smart Home Automation","\u002Fblog\u002Fsmart-home-automation","blog\u002FSmart Home Automation",{"title":226,"path":227,"stem":228},"The Horizon of Cybersecurity","\u002Fblog\u002Fthe-horizon-of-cybersecurity","blog\u002FThe Horizon of Cybersecurity",{"title":230,"path":231,"stem":232},"The Perils of Ray-Tracing","\u002Fblog\u002Fthe-perils-of-ray-tracing","blog\u002FThe Perils of Ray-Tracing",{"title":234,"path":235,"stem":236},"The Psychology of Software Bugs Understanding and Preventing Common Mistakes","\u002Fblog\u002Fthe-psychology-of-software-bugs-understanding-and-preventing-common-mistakes","blog\u002FThe Psychology of Software Bugs - Understanding and Preventing Common Mistakes",{"title":238,"path":239,"stem":240},"Top 5 Advantages of MongoDB","\u002Fblog\u002Ftop-5-advantages-of-mongodb","blog\u002FTop 5 Advantages of MongoDB",{"title":242,"path":243,"stem":244},"Top Trends in Augmented Reality","\u002Fblog\u002Ftop-trends-in-augmented-reality","blog\u002FTop Trends in Augmented Reality",{"title":246,"path":247,"stem":248},"Top features of Unreal Engine","\u002Fblog\u002Ftop-features-of-unreal-engine","blog\u002FTop features of Unreal Engine",{"title":250,"path":251,"stem":252},"Unity 3D - Why to go with it?","\u002Fblog\u002Funity-3d-why-to-go-with-it","blog\u002FUnity 3D - Why to go with it",{"title":254,"path":255,"stem":256},"Virtual Reality Advantages","\u002Fblog\u002Fvirtual-reality-advantages","blog\u002FVirtual Reality Advantages",{"title":258,"path":259,"stem":260},"Virtual Test Drive & Autonomous Driving","\u002Fblog\u002Fvirtual-test-drive-and-autonomous-driving","blog\u002FVirtual Test Drive & Autonomous Driving",{"title":262,"path":263,"stem":264},"WebAssembly and Progressive Web Apps","\u002Fblog\u002Fwebassembly-and-progressive-web-apps","blog\u002FWebAssembly and Progressive Web Apps",{"title":266,"path":267,"stem":268},"What are Best Practices?","\u002Fblog\u002Fwhat-are-best-practices","blog\u002FWhat are Best Practices",{"title":270,"path":271,"stem":272},"What are Digital Twins?","\u002Fblog\u002Fwhat-are-digital-twins","blog\u002FWhat are Digital Twins",{"title":274,"path":275,"stem":276},"What makes Mixed Reality the next big thing?","\u002Fblog\u002Fwhat-makes-mixed-reality-the-next-big-thing","blog\u002FWhat makes Mixed Reality the next big thing",{"title":278,"path":279,"stem":280},"Why Game Engines?","\u002Fblog\u002Fwhy-game-engines","blog\u002FWhy Game Engines",{"title":282,"path":283,"stem":284},"Why we need User Experience Design?","\u002Fblog\u002Fwhy-we-need-user-experience-design","blog\u002FWhy we need User Experience Design",false,{"id":287,"title":62,"author":288,"body":292,"date":388,"description":389,"extension":390,"image":391,"meta":392,"minRead":393,"navigation":394,"path":63,"seo":395,"stem":64,"__hash__":396},"blog\u002Fblog\u002FComputer Vision.md",{"name":289,"avatar":290},"Aghil Jose",{"src":291,"alt":289},"\u002Fassets\u002Fimages\u002Fabout.jpg",{"type":293,"value":294,"toc":384},"minimark",[295,299,302,305,308,315,318,321,327,330,333,336,339,342,345,348,351,354,357,360,366,369,375,378,381],[296,297,298],"p",{},"Human vision is amazingly beautiful and complex. It all started billions of\nyears ago when small organisms developed a mutation that made them sensitive\nto light.",[296,300,301],{},"Fast forward to today, and there is an abundance of life on the planet which\nall have very similar visual systems. They include eyes for capturing light,\nreceptors in the brain for accessing it, and a visual cortex for processing\nit. Genetically engineered and balanced pieces of a system which help us do\nthings as simple as appreciating a sunrise.",[296,303,304],{},"But this is really just the beginning. In the past 30 years, we've made even\nmore strides to extending this amazing visual ability, not just to ourselves,\nbut to machines as well. The first type of photographic camera was invented\naround 1816 where a small box held a piece of paper coated with silver\nchloride. When the shutter was open, the silver chloride would darken where it\nwas exposed to light. Now, 200 years later, we have much more advanced\nversions of the system that can capture photos right into digital form. So,\nwe've been able to closely mimic how the human eye can capture light and\ncolour. But it's turning out that that was the easy part. Understanding what's\nin the photo is much more difficult.",[296,306,307],{},"Consider this picture.",[296,309,310],{},[311,312],"img",{"alt":313,"src":314},"flower","\u002Fassets\u002Fimages\u002Fblog\u002F301120\u002Fflower.jpg",[296,316,317],{},"A human brain can look at it and immediately know that it's a flower. Our\nbrains are cheating since we've got a couple million years worth of\nevolutionary context to help immediately understand what this is.",[296,319,320],{},"But a computer doesn't have that same advantage. To an algorithm, the image\nlooks like this.",[296,322,323],{},[311,324],{"alt":325,"src":326},"flowerComputer","\u002Fassets\u002Fimages\u002Fblog\u002F301120\u002FflowerComputer.jpg",[296,328,329],{},"Just a massive array of integer values which represent intensities across the\ncolour spectrum. There's no context here, just a massive pile of data.",[296,331,332],{},"It turns out that the context is the crux of getting algorithms to understand\nimage content in the same way that the human brain does. And to make this\nwork, we use an algorithm very similar to how the human brain operates using\nmachine learning.",[296,334,335],{},"Machine learning allows us to effectively train the context for a data set so\nthat an algorithm can understand what all those numbers in a specific\norganization actually represent. And what if we have images that are difficult\nfor a human to classify? Can machine learning achieve better accuracy?",[296,337,338],{},"Computer vision is taking on increasingly complex challenges and is seeing\naccuracy that rivals humans performing the same image recognition tasks. But\nlike humans, these models aren't perfect. They do sometimes make mistakes.",[296,340,341],{},"The specific type of neural network that accomplishes this is called a\nconvolutional neural network or CNN. CNNs work by breaking an image down into\nsmaller groups of pixels called a filter. Each filter is a matrix of pixels,\nand the network does a series of calculations on these pixels comparing them\nagainst pixels in a specific pattern the network is looking for.",[296,343,344],{},"In the first layer of a CNN, it is able to detect high-level patterns like\nrough edges and curves. As the network performs more convolutions, it can\nbegin to identify specific objects like faces and animals.",[296,346,347],{},"How does a CNN know what to look for and if its prediction is accurate? This\nis done through a large amount of labelled training data. When the CNN starts,\nall of the filter values are randomized. As a result, its initial predictions\nmake little sense. Each time the CNN makes a prediction against labelled data,\nit uses an error function to compare how close its prediction was to the\nimage's actual label. Based on this error or loss function, the CNN updates\nits filter values and starts the process again. Ideally, each iteration\nperforms with slightly more accuracy.",[296,349,350],{},"What if instead of analysing a single image, we want to analyse a video using\nmachine learning? At its core, a video is just a series of image frames. To\nanalyse a video, we can build on our CNN for image analysis. In still images,\nwe can use CNNs to identify features. But when we move to video, things get\nmore difficult since the items we're identifying might change over time. Or,\nmore likely, there's context between the video frames that's highly important\nto labelling.",[296,352,353],{},"For example, if there's a picture of a half full cardboard box, we might want\nto label it packing a box or unpacking a box depending on the frames before\nand after it. This is where CNNs come up lacking. They can only take into\naccount spatial features, the visual data in an image, but can't handle\ntemporal or time features - how a frame is related to the one before it.",[296,355,356],{},"To address this issue, we have to take the output of our CNN and feed it into\nanother model which can handle the temporal nature of our videos. This type of\nmodel is called a recurrent neural network or RNN. While a CNN treats groups\nof pixels independently, an RNN can retain information about what it's already\nprocessed and use that in its decision making. RNNs can handle many types of\ninput and output data.",[296,358,359],{},"For example, we train the RNN by passing it a sequence of frame descriptions -\nempty box, open box, closing box - and finally, a label - packing.",[296,361,362],{},[311,363],{"alt":364,"src":365},"RNN","\u002Fassets\u002Fimages\u002Fblog\u002F301120\u002FRNN.jpg",[296,367,368],{},"As the RNN processes each sequence, it uses a loss or error function to\ncompare its predicted output with the correct label. Then it adjusts the\nweights and processes the sequence again until it achieves a higher accuracy.",[296,370,371],{},[311,372],{"alt":373,"src":374},"wolf","\u002Fassets\u002Fimages\u002Fblog\u002F301120\u002Fwolf.jpg",[296,376,377],{},"The challenge of these approaches to image and video models, however, is that\nthe amount of data we need to truly mimic human vision is incredibly large. If\nwe train our model to recognize a picture of a wolf, as long as we're given\nthis one picture with the same lighting, colour, angle, and shape, we can see\nthat it's a wolf. But if you change any of that or even just rotate the wolf,\nthe algorithm might not understand what it is anymore.",[296,379,380],{},"Now, this is the big picture problem. To get an algorithm to truly understand\nand recognize image content the way the human brain does, you need to feed it\nincredibly large amounts of data of millions of objects across thousands of\nangles all annotated and properly defined.",[296,382,383],{},"Disclaimer : The views and opinions expressed in the article belong solely to\nthe author, and not necessarily to the author's employer, organisation,\ncommittee or other group or individual.",{"title":385,"searchDepth":386,"depth":386,"links":387},"",2,[],"2020-11-29","How does a computer see the world","md","\u002Fassets\u002Fimages\u002Fblog\u002F301120\u002Ftitle.jpg",{},7,true,{"title":62,"description":389},"yOp2YuKqGskckgjO174dzZU5vbixnEN_ciHELy5lz8A",[398,401],{"path":179,"title":178,"description":399,"date":400},"What is a quantum computer and how is different from a traditional computer?","2020-12-06",{"path":51,"title":50,"description":402,"date":403},"The basic structure and functioning of the blockchains.","2020-11-22",1790439209225]