Hacker News new | past | comments | ask | show | jobs | submit login
Machine Learning That’s Light Enough for an Arduino (ieee.org)
115 points by bryanrasmussen 82 days ago | hide | past | web | favorite | 24 comments

What does a Cortex have to do with the Arduino? These processors have a difference of many orders of magnitude in power, so much so that this title is basically pure clickbait.

The Arduino has 2 KB of RAM, you can't even record much sound on it, much less do ML.

"Arduino" is the company - it doesn't refer to an ATMega328p. It's just a thin wrapper around the Processing IDE, and it supports lots of different boards and chipsets.

So I agree, the title is sort of odd, but you absolutely can use Arduino for ML. Personally I think it is clunky and difficult to use compared to modern offerings like PlatformIO or MicroPython, but it's familiar to a lot of people and there is value in that.

> it doesn't refer to an atmega328p

You're right, it refers to an ide. That definition is restrictive, it would imply that Arduino is not capable of running anything itself (you need a board for that). Or that I can run anything provided you can compile it from arduino ide(you can run gcc).

I'm sorry but whatever the official description is, for many people including me, runs on an arduino means runs on an at mega with a bootloader and maybe on some kind of specific board with funny connectors.

If you mean runs on a cortexM4 with 8megs of flash, say it I'm sure many people will understand. And doing AI (inference) on such boards has been done and demonstrated a few years ago and is still cool.

You know what ? I could play super Mario Wii u on a cortex m4 .. of course it was tongue in cheek as I was playing a video of the game on a cortex m4 plugged into a VGA screen. But technically I was right, my point being you can be right, and misleading.

>I'm sorry but whatever the official description is, for many people including me, runs on an arduino means runs on an at mega with a bootloader and maybe on some kind of specific board with funny connectors.

Why? The Arduino stack will work on ARM chips - better, cheaper chips than the 328p. Arduino.cc make, sell and officially support ARM boards; there are a huge range of cheap Arduino-compatible boards with modern microcontrollers. The cheapest M4 chips are priced competitively with the 328p and M0 chips are available for as little as $0.24 in quantity.

The 328 is an ancient, inefficient, overpriced chip and I see absolutely no reason to endure it any longer.

> Why?

Because, despite your obviously correct arguments, the brand name Arduino is pretty diluted and commonly just associated with the range of chipsets that made them popular these days (maybe with the addition of the ESP32/8266s in the last few years). That might change in the future but the common usage of the brand name is pretty independent of their product lines.

Because everyone I've ever met using an 'Arduino' are using an Arduino Uno, whose dev boards are about 4 USD on ebay and very popular in hobby and education markets. The m0 boards cost 3 times as much.

Despite its low power its simple enough to wrap your mind around, making it good for intro to ECE and programming.

I didnt say that arduino does not work on other boards or that atmega328p are the best. I said that if you say runs on an arduino it means runs on a 328p, same as you can say I can run faster than a Ferrari (keyholder)

> "Arduino" is the company

I'd argue it's more the "ecosystem" today, rather than just the organization/company (or the "board").

In many cases, if you want your microcontroller to gain wide acceptance in the hobbyist community (if you're targeting it), you have to provide a "core" or something similar for the official IDE.

At one time, "arduino" meant "ATMega168/328 carrier board loved by hobbyists and despised by everyone else" - but those days are long, long past.

In fact - I think there's a core available for the SoC on the Raspberry Pi - ah (well, something):


> What does a Cortex have to do with the Arduino?

Note that they don't say THE Arduino but AN Arduino. What you're thinking about is probably the Arduino Uno which is the original model.

These days Arduino is a platform made up by a common software (IDE, libraries etc) and a family of products that employ different microcontrollers (Different AtMegas but also Cortex processors), different form size (from the original "big" size to the small Arduino Nano) different amount of memories and different extras.

For example Arduino MKR1000 is AN Arduino employing a 32bit SAMD21 Cortex-M0+

> The Arduino has 2 KB of RAM

That is Arduino "Uno", not Arduino itself. Arduino now refers a platform and an ecosystem for quick microcontroller prototyping. Almost every popular microcontrollers has arduino API support (either officially or by community).

So the term "Arduino" sounds as "microcontrollers" to me.

There are many arduino boards, some more powerfull than other, many based on ARM MCUs (for example, arduino due) Afair some even run openwrt

The headline should say “Arduino-compatible boards” but otherwise it’s all applicable. There are plenty of Arduino-compatible Cortex M0 and M4 boards out there.

Amusingly, the USB interface MCU on the new Arduino Nano (SAMD11 Cortex-M0+) is more powerful than the AVR that runs the sketch (ATmega4809). Less flash and SRAM though, which seems to be the primary cost driver these days.

[1] https://store.arduino.cc/usa/nano-every

The Arduino Due has a big Cortex M3 chip on it, costs ten bucks more than an Uno, and came out 7 years ago. Doesn't have enough RAM to run the demo in the OP though.

Oh, like the Leonardo et al? I guess that makes sense, I forgot about those, thanks.

You know the make arduinos with cortex processor right? Arduino primo, blue fruit nrf52,...

There are Arduinos with Cortex processors. I think they have around 196kb RAM, yay!

It could be enough to perhaps implement a very rudimentary voice recognition, which could indeed be interesting for these low cost devices. And if it is just about being activated by a specific key word.

Speaking of machine learning is perhaps a bit much, but isn't it the same in other applications?

You could run a smallish linear model on 2kb easily. Definitely not a deep net though.

Take this for what it is... an interesting exercise in what's possible - not necessarily practical.

I'm a big fan of everything Lady Adafruit does. She has been and continues to be a huge contributor to the IoT ecosystem and OSS ever since she started her little shop 15 years ago.

It's not little now. Had $45 million in yearly revenues and over a 100 employees already in 2016.


> The kind of AI we can squeeze into a US $30 or $40 system won’t beat anyone at Go, but it opens the door to applications we might never even imagine otherwise.

I wonder whether it can beat professionals at chess. Last time I checked (a few years ago), software running on ordinary smartphones reached really high ELO. The improvements since Deep Blue are really impressive.

I once tried yolo3 on rpi3 to get less than 1fps performance. To me it’s not acceptable. Will have to try rpi4.

Does anyone know if I could do facial recognition reliably with an Arduino?

You could probably do something crude on an M4. Here's a fairly performant face detector in tensorflow: https://github.com/iitzco/faced

You'd probably need to roll your own lightweight face vectorizer though.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact