TinyMLx Course 3: [Post 1] - Call for TinyML edX Projects, Guidelines

TinyML applications

The future of machine learning is tiny and bright.

When we first announced the HarvardX TinyML course, we set out to not only openly teach the fundamentals of a nascent technical area and foster active, hands-on learning, but also to connect participants with the bleeding edge of TinyML development. Perhaps one of the most exciting things about TinyML is that the field is young and there is so much to do that has yet to be done. At this point, anyone can make a meaningful impact on the existing state of the art. With a flourishing online community and a growing number of folks working with TFLM, we feel the time is right to open a call for TinyML projects, wherein anyone within the community can push at the boundaries of existing work within the space. To incentivize innovation, participants who submit their project for review will be eligible to receive a number of prizes for exemplary work (details follow).

What constitutes a relevant project for the competition?

Anything – no really. We appreciate that open-ended prompts like this can be daunting, but we’d rather not constrain your creativity or passion. You should be excited about the application or improvement you choose to spend your time developing. Having said this, there will be opportunities to get feedback on the project scope you propose as well as the progress you’re making, so you won’t be developing anything in a vacuum.

If you aren’t sure how to get started, consider working from one of the TinyML examples and making substantive improvements or modifying whichever example to achieve something else. Having said this, if you are of a more ambitious kind, know that you are welcome to take this as far as you’d like (including novel applications), keeping in mind that it is often prudent to scale a project’s scope according to the time you have to allocate. We’d much rather see a modest project completed, than a moonshot project merely started.

Can we collaborate?

Absolutely! We are thrilled to see how much the TinyML community has flourished of late and expect that our community will continue to play a meaningful role in pushing at the boundaries of what’s possible and think that collaboration is a key to doing just that. But, collaboration isn’t a requirement, nor does collaboration constitute an advantage for groups when it comes to project evaluation in the context of prizes. Individuals who wish to work alone may and will not be penalized when comparing technical or creative accomplishment.

At a minimum, we’d like to see engagement on this Discourse platform in seeking and providing feedback on other projects. At most, really the sky’s the limit, but we’d encourage you to find a partner (using the TinyMLx Discourse) or even form a development team if you’d like to take your ideas to the next level. After you have formed a team, you are welcome to create a separate thread on Discourse to discuss a project, or call on your preferred communication tools (Slack, Zoom, GitHub, et cetera).

What about logistics and technical feedback?

Logistically, we appreciate that some members of the community may have more time to commit to a TinyML project than others and that there will be no one universal time where greater availability is common to all. Similarly, we appreciate that there will be varying levels of comfort as it relates to taking on an independent project and a likely desire for technical feedback. As a result, we put forward a flexible structure (below) that we hope you can utilize to structure your commitment and organize community collaboration and engagement, asynchronously.

To be clear, all of the following support structures outlined below are intended to be used asynchronously and without specific temporal restrictions, with the sole exception of the submission deadline for project review. We expect some projects to start (and perhaps finish) before others, and that’s just fine. Regardless of where you are in the process, you’re on track.

Finding a developing partner or team

If you haven’t found a partner or team yet, and would like to, here is a related post that will be pinned to the Projects category, wherein you can look for or find a development team, either by technical strength or project category. More details about this search mechanism are posted there.

Proposal feedback

Once you or your team have an idea for what you’d like to accomplish, we’d encourage you to post a technical proposal here, another post pinned to the Projects category. More details about this, including a proposal template, can be found there. Notably, this thread may also serve to help you find a team, but in fairness to those who submit project summaries for the competition, we’d appreciate it if you didn’t join an existing team beyond the ideation phase.

We’d also suggest that you review and provide feedback for other projects, as this process may help you to consider things that wouldn’t otherwise occur to you for your own project. In doing so, you’d be helping out a fellow member of the community, something I’m sure you’d appreciate yourself.

We can accomplish more, together!

Progress feedback

Once you or your team have made meaningful progress and would like feedback from the community on specific technical elements of your project, we’d encourage you to post questions and demonstrations at the level of “proof of concept” here for others to see and to discuss. As before, this post will be pinned to the Projects category.

Deadlines?

There is only one potential deadline for you to keep track of, 12:00pm EST on August 31st, 2021, and it only applies if you are interested in submitting your project to be eligible for the prizes described below. Project requirements and submissions can be found here. Depending on community interest, there may be additional project rounds announced here in the future, so don’t worry if you happen to miss this one.

What about hardware or other circuitry?

The focus of a good TinyML project ought to be TinyML. We know that’s self-evident, but we also appreciate the temptation to take on a project that calls on a circuitry beyond whichever TF Micro compatible microcontroller. With this in mind, we want to draw attention to the wealth of sensors available to you on the Arduino Nano 33 BLE Sense, the go-to development board right now. While you may conceptualize a need for additional circuitry, we’d encourage you to consider (a) if you already have requisite knowledge and skills to implement this (if you do, more power to you – do your thing) and (b) if the additional hardware truly unlocks something meaningful in the context of pushing TinyML forward. For what it’s worth, you shouldn’t feel obligated to pursue hardware beyond what’s available to you on the Nano 33 BLE Sense, nor will those who do necessarily be rewarded for doing so in the context of project evaluation.

Common pitfalls

While it may be tempting to call on existing models from other frameworks, a haphazard attempt to drag and drop pre-existing models into the TensorFlow Micro framework may not be fruitful. While it is fine to be inspired by a broad body of work, we encourage you to be deliberate in your approach to implementation.

Further, we’d like to emphasize the importance of, and challenges tied to, pre and post processing.

Project review and prizes

All project summaries must be submitted by 12:00p EST on August 31st, 2021 to be eligible for the prizes described below. Project requirements and submissions can be found here.

As an incentive for innovation, we are going to offer eligible individuals or teams the following prizes (with values noted in USD) for exemplary work. Independent from these cash prizes, some projects will be selected to be featured on the TensorFlow blog.

  • $500 for the project that best demonstrates technical mastery
  • $500 for the project that is most creative in its implementation
  • $500 for the project with the most potential to impact society

A diverse committee of judges will be assembled by the HarvardX course staff. The rubric the committee will use for project evaluation will be made available in advance for transparency, wherein community voting will be considered. Prize winners will be announced by September 15th, 2021.

Good luck!

Project ideas

If you’re looking for inspiration, you can browse the final projects completed in Harvard’s CS249r. We also want to showcase a playful demonstrative project that an edX staff member put together that leverages the Nano’s IMU in a gesture recognition application to control Chrome’s offline T-Rex game.

Project submissions

Please refer to the project submission post for more details. You’ll have to give a brief description about your project and include a link to your GitHub repository and a YouTube video demonstrating your prototype.

Important!

The most important thing about doing this project is we want you to have fun!

Cheers, and remember… the future of ML is tiny and bright!! :+1:

9 Likes

Hello from Australia :wave: :australia: ! I finished the TinyML Professional Certificate and am excited to continue my journey! I’d like to propose a project I’ve been working on in my spare time.

1. Project name
The “IoT Stallion” - providing feedback to boxers on their techniques.

2. Team member names, roles (as applicable)
Me (Anthony Joseph)

3. Project summary - a description in a sentence or two (at most)
I would like to support boxers (or potentially any athlete) with their training by providing them with feedback on their technique via wearable devices programmed with TinyML models.

4. Longer project description
Boxers and athletes in general often have challenges with maintaining their technique especially without formal coaching. Poor technique can lead to reduced effectiveness to temporary and permanent injuries due to joint and muscle damage. Therefore, there’s an incentive to ensure that one is following proper technique when exercising or training.

Other passive forms of motion tracking are either extremely invasive (for example, motion capture used in film and television) or vulnerable to interference or raise privacy concerns (for example, video cameras tracking an athlete’s movement). Fitness trackers have become a commonplace item for measuring movement and health vitals: balancing privacy concerns with motion tracking capabilities. The size and power consumption of these sensors also allow for tracking movement in a minimally-invasive way.

Ultimately, I would like to study the minimum amount of sensors and data required to give an athlete enough feedback on their technique.

I have a background in embedded software development and have been recently learning about TinyML to further my embedded software development skills and learn about machine learning in a personally entertaining context.

The name of this project: “IoT Stallion” is a reference to the Rocky/Creed film series: the main character Rocky Balboa’s fight nickname is “the Italian Stallion”. Much like the sports drama film series documents the journey of a boxer reaching the worldwide heavyweight champion, I feel this case study is training an IoT device with TinyML to support a boxer’s training.

5. References (including other code or data), sources of inspiration
There’s a variety of fitness trackers right now on the market, including for boxers. However, I’d like to do investigate “cooperative TinyML”: can we use the output from multiple sensors to give insights. For example, I would like to give a boxer feedback if they are punching while having their other arm protecting their body.
I did present an overview of some of the research I’ve been doing on this concept at the tinyML Asia 2020 Video Poster session, but that used Edge Impulse with only an accelerometer. I wanted to do the TinyML professional certificate to properly understand how these machine learning models work and get further inspiration on how I could work with more sensors in an analytically-correct way.

6. Descriptions of the following, at whatever depth you feel is appropriate:

a. Hardware to be utilized
The Arduino Nano 33 BLE sense as a primary sensor with a LiPoly battery, haptic motor, Neopixel ring and external flash storage. I would like to use two Nano 33 BLE Sense’s (one for each hand) and send either the raw motion data or results from a pretrained model to a central IoT device. I’m planning on using the Seeedstudio Wio Terminal as it has an onboard LCD display, push buttons and batteries in a simple package.

b. Data collection
I plan on training models with my punching. I’m curious to see how well the model would handle boxers of different genders, physical strength, hand speed etc, especially knowing what I know after the “magic wand” chapter.

c. Preprocessing
In the first instance, I would manually measure and label the data I obtain from the sensors. In the future I would like to have a proper system built to collect data and have the data classified by a trainer watching my technique, so in addition to knowing what type of punch, I would know whether the punch was “good” or “bad”.

d. Model design
The model design would follow the “magic wand”, gesture recognition paradigm. The interesting part I’d like to explore is whether the gesture recognition can detect the difference between a boxer at rest, versus a boxer actively guarding: in both cases the arm is stationary, but oriented in a particular way.

e. Optimizations
Optimizations is an aspect I’d like to explore in this case study.

f. In system inference
In-system inference would be similar to the “magic wand” gesture recognition, albeit with the “guarding” use case.

7. Issues or roadblocks you envision and potential solutions
The only major issue I foresee with this is trying to maximise the amount of feedback I can give to an athlete (for example, haptic and visual feedback) without degrading the system performance.

8. The top unresolved question(s) you have at this point
What is the most energy-efficient and fastest way I can perform these cross-device inferences.

3 Likes