Friday 25 March 2022

 What is Computer Vision?

  • It's a field of artificial intelligence (AI) that enables computers and systems to derive meaningful information from digital images, videos, and other visual inputs — and take actions or make recommendations based on that information. 
  • Interdisciplinary field – computers gain a high-level understanding of digital images or videos. 
  • Automate the tasks that the human visual system does. 
  • Methods for image acquisition, processing, analysis are included. 
  • Extract high-dimensional data from the real world.


What is computer vision used for?

  • Computer vision is used to detect and classify objects (e.g., road signs or traffic lights), create 3D maps or motion estimation, and played a key role in making autonomous vehicles a reality
  • Self-driving cars collect data on their surroundings from sensors and cameras, interpret it, and respond accordingly. 


Real-time projects in Computer Vision

Here I am sharing the list of computer vision project ideas to help you get started in less than an hour:

  • People counting tool

Building a people counting solution could be both—a fun project and one that actually finds real-world applications. To detect and count people present in an image, you’ll need a relevant training dataset and a data training platform. You can use a free tool like OpenCV to label your data or an auto annotation tool like V7 to complete this project faster.

  • Colors detection

Next up is a simple colors detector that you can use for a wide variety of visual tasks. From detecting colors to build the green screen app—replacing the green background with a custom video or background—to a simple photo editing software, building a color recognizer is an awesome project to get started with Computer Vision.

  • Object tracking in videos

Consider taking on a bit more advanced computer vision task—object tracking in a video. Object tracking is about estimating the state of the target object present in the scene from previous information. 

  • Pedestrian detection

Building an object detection model to detect pedestrians is one of the simplest and fastest computer vision projects to complete.

  •  Hand gesture recognition

Hand gesture recognition is a bit more advanced computer vision task requiring you to firstly separate the hand region from the background and then to segment the fingers to predict hand gestures.

  • Human emotion recognition

If you decide to go with a bit more challenging task, consider building an emotion detection model. You can base your model on six main facial emotions: happiness, sadness, anger, fear, disgust, and surprise.

  • Road lane detection

     Road lane detection is yet another computer vision model that plays a key role in the development of the automotive industry. Used primarily for self-driving cars, a road lane detector can be a fun beginner project that will help you get hands-on experience with both images and videos. 

  •     Business card scanner

     Developing a business card scanner can be done using the OCR (Optical Character Recognition) technology. Your trained model will find and extract information from business cards. Essentially, this project will be divided into three phases: image processing (noise cancellation), OCR (text extraction), and classification (classifying key properties).

 

I hope this article is very much useful for you.

Let me know your comments.

Wednesday 9 February 2022

CSE 3002 - Programming in Java

(Click Here to get Course materials)

Unit-1   Java Platform Overview: Defining how the Java language achieves platform independence - Differentiating between the Java ME, Java SE, and Java EE Platforms Evaluating Java libraries, middle-ware, and database options - Defining how the Java language continues to evolve.

Java Syntax and Class Review:  Creating simple Java classes -Creating primitive variables using operators - Creating and manipulates strings - Using if-else and switch statements.

Iterating with loops: while, do-while, for, enhanced for Creating arrays Using Java fields - constructors, and methods.

Encapsulation and Subclass: Using encapsulation in Java class design - Modeling business problems using Java classes  - Making classes immutable  -  Creating  and  use  Java  subclasses  -  Overloading methods.

Unit-2   Overriding Methods, Polymorphism, and Static Classes: Using access levels: private, protected, default, and  public  - Overriding methods - Using virtual method invocation- Using varargs to specify variable arguments - Using the instanceof operator to compare object types - Using upward and downward casts - Modeling business problems by using the static keyword - Implementing the singleton design pattern.

Abstract and Nested Classes: Designing general- purpose base classes by using abstract classes - Constructing abstract Java classes and subclasses - Applying final keyword in Java- Distinguish between top-level and nested classes.

Interfaces and Lambda Expressions: Defining a Java interface- Choosing between interface inheritance and class inheritance- Extending an interface - Defaulting methods - Anonymous inner classes - Defining a Lambda Expression.   

Unit-3 Collections and Generics: Creating a custom generic class – Using the type inference diamond to create an object - Creating a collection by using generics - Implementing an ArrayList - Implementing a TreeSet - Implementing a HashMap - Implementing a Deque - Ordering collections.

Collections Streams, and Filters: Describing the Builder pattern - Iterating through a collection using lambda syntax - Describing the Stream interface - Filtering a collection using lambda expressions - Calling an existing method using a method reference - Chaining multiple methods together - Defining pipelines in terms of lambdas and collections.

Lambda Built-in Functional Interfaces:  Listing  the  built-in  interfaces  included  in java.util.function -  Core interfaces - Predicate, Consumer, Function, Supplier - Using primitive versions of base interfaces - Using binary versions of base interfaces.

Lambda Operations: Extracting data from an object using map - Describing the types of stream operations -  Describing  the  Optional  class  -  Describing  lazy  processing  - Sorting a stream - Saving results to a collection using the collect method - Grouping and partition data using the Collectors class.

Unit-4 Exceptions   and   Assertions:   Defining   the   purpose   of   Java exceptions - Using the try and throw statements - Using the catch, multi-catch, and finally clauses –  Auto close resources with a try- with-resources statement - Recognizing common exception classes and categories - Creating custom exceptions - Testing invariants by using assertions.

Java Date/Time API: Creating and manage date- based events - Creating and manage time-based events - Combining date and time into a single object - Working with dates and times across  time  zones  -  Managing  changes  resulting  from  daylight savings - Defining and create timestamps, periods and durations - Applying formatting to local and zoned dates and times.

I/O Fundamentals: Describing the basics of input and output in Java - Read and write data from the console - Using streams to read and write files - Writing and read objects using serialization. File I/O (NIO.2): Using the Path interface to operate on file and directory paths - Using the Files class to check, delete, copy, or move a file or directory - Using Stream API with NIO2.   

Unit-5 Concurrency:   Describing   operating   system   task   scheduling   - Creating worker threads using Runnable and Callable - Using an ExecutorService to concurrently execute tasks - Identifying potential threading problems - Using synchronized and concurrent atomic to manage  atomicity  -  Using  monitor  locks  to  control  the  order  of thread execution - Using the java.util.concurrent collections.

The Fork-Join Framework: Parallelism - The need for Fork-Join Work stealing - Recursive Task. Parallel Streams: Reviewing the key characteristics  of  streams  -  Describing  how  to  make  a  stream pipeline execute in parallel - List the key assumptions needed to use a parallel pipeline - Defining reduction - Describing why reduction requires an associative function - Calculating a value using reduce - Describing the process for decomposing and then merging work - Listing the key performance considerations for parallel streams.

Database Applications with JDBC:  Defining the layout of the JDBC API - Connecting to a database by using a JDBC driver - Submitting queries and get results from the database - Specifying JDBC driver information externally - Performing CRUD operations using the JDBC API.

Localization: Describing the advantages of localizing an application - Defining what a locale represents - Read and set the locale by using the Locale object - Building a resource bundle  for  each  locale  -  Calling  a  resource  bundle  from  an application - Changing the locale for a resource bundle.