Are there any object detection libraries out there for the Arduino?

I am looking for something similar to YOLO but for Arduino. I know that there is PixyCam that can attach to the arduino however you are "jailed" to using their camera and I don't want to be locked into their camera, I want to be able to use any camera and I'd rather have AI processed on the Arduino then in a separate hardware and I want to do on an Arduino that is not an ARM processor running Linux, just one of those that runs without an operating system like Arduino Uno.

1 Like

No way are you going to run anything like YOLO on the 8 bit processor of the Arduino Uno. Far too slow, far too little memory, no IO bandwidth.

The smallest thing I have run YOLO on is a Raspberry Pi 3.

For small, micro-controlled like machines that can do some of that you might want to check out:

Seeed Studio Vision AI Module V2
Analog Devices MAX78000
STMicroelectronics STM32N6
Texas Instruments MSPM0G5187
Sipeed Maix-BiT (Kendryte K210)

I know very little about these but I was tempted to get hold of the Sipeed. It has a nice RISC-V processor and neural net hardware. But I suspect getting object detection working is not so simple.

1 Like

I didn't say that, in terms of similarity I want something that is object detection library that can run on Arduino uno.

As mentioned before I prefer if the processing was done on the Arduino, not on a separate hardware.

It seems like the pixycam you mentioned is doing a lot of the image processing and target detection on it's board. Likely the reason that specific "camera" can work with an Arduino at all is because it processes down to the "X-Y coordinates, size, and unique ID" and sends only that small amount of info over the wire to the Arduino.

Looking around Arduino's board specs, even the Atmega 2560 only has 256KB of flash memory for the program. Without specialized image processing components, I'm not sure what kind of image analysis you could do on general purpose hardware like that.

Wait a minute. You said "I am looking for something similar to YOLO but for Arduino". What am I supposed to think?

I reckon if you attached a bunch of photodiodes up to Uno, with that and a few lines of code you could detect objects with it. To some crude extent.

Or forget light, use ultrasonic transmitters/recievers to "ping" objects.

According to https://docs.arduino.cc/hardware/mega-2560/ there is only 4KB of EEPROM. The datasheet lists another 16KB of flash for the uart chip, but you would only be able to use part of it even if you manage to reprogram this chip. And the main cpu has just 8KB of SRAM. If you manage to make the camera produce a black and white image (no grayscale!) then you can only fit a 256x256 pixel image in there. You will almost certainly need to have it be at least 8bit color to have even a reasonably chance of detecting objects somewhat accurately. But then you can only have a 90x90 pixel image, which probably too small. And that is not even counting all memory you need for things like the stack or whatever processing the object detection algorithm itself does or the code that is actually going to use the output of the object detection algorithm.

Is this close to what you are after?