Inspecting and controlling the quality of a product is a tedious task when done manually. It requires proper hand-eye coordination, which can get tiring after long durations, leading to serious errors and thus affecting the accuracy of the process.
 So to solve this issue and make the process more reliable, today you will learn to make an AI-based camera with which you can create an ML model to detect the fault in parts/product manufacturing defects in a factory assembly line. The camera uses an SBC board that runs the pre-trained model for monitoring purposes.
Fig 1
Fig 2.
Bill of Materials 
Begin with shopping of the following components. 

Feeding Datasets 
To create the ML model, you can use various platforms like TensorFlow, Google’s Teachable Machine, Lobe, Edge Impulse etc. Because Edge Impulse is used here, below are the commands for installing it:
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt install -y gcc g++ make build-essential nodejs sox gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps
npm config set user root && sudo npm install edge-impulse-linux -g – unsafe-perm
After installation, run the Edge Impulse using the following command in the terminal: 
Edge-impulse-linux
You will then see a login screen to start Edge Impulse from the web GUI. Upon login, you will be asked to select the project to connect with. The project name and its URL is then given so that you can start feeding the dataset for training and testing the ML model. 
If you have connected the RPi camera to the Raspberry Pi board, then you can view the camera video output upon opening the link. Now assemble the correct objects or parts in front of the camera and label them. Make sure to feed the dataset. 
Repeat the same process and feed the images of parts with manufacturing defects. Here I have used Lego parts to train and test. 
Fig 3. Connecting to Impulse
Fig 4.
Fig 5. Feeding Dataset
Training ML Model 
Next, go to the Train menu. Select the image for processing and Keras for learning. 
Then create the feature and parameter for the ML model to learn. After getting the option to add layers for neutral networks and SSD mobile net model, use the SSD mobile net v2 model to train and test the ML model. After getting the option to tune the model, we select the board here ie RPI 4 and use the model. 

Deploying 
After testing the model, deploy it by going to the deploy menu and selecting the board. Since the RPi board is being used here, select the Linux board. Our model will then be ready to deploy. You can also connect the HDMI LCD or SPI LCD display to RPI to see the output and run the following command: 
edge-impulse-linux-runner
Now a new GUI will appear and show the results with a camera video feed. 

Testing 
When you run the Impulse runner, you get a URL, which when opened in the RPi web browser shows the live camera video feed on the LCD screen. Point the camera in assembly line or for  inspection of manufacturing defect