Automatic archery scoring system using mobile phone camera
Background: I have been doing archery ever since my first year in university. I thought I was going to be uncertain about what I’m going to do for the final year project (I’m uncertain about most of the things in life). But now it has become clearer – I’m going to develop a portable app that can score the archery targets using phone camera, instead of the approach we use right now which requires manually input the scores to an app.
I’m doing this project with my supervisor, Professor Michael Madden from the university.
This set of blog posts contains my development progress as well as some of the email communications between my FYP meetings.
Oct 14, 2022, mail to Michael:
Here’s the things I’ve done since the last time we met:
Oct 14:
First meeting with Prof Michael since the FYP list was sent out.
Searching for ML based archery scoring approach on Google scholar, the first page results are about selecting potential archers using machine learning based on their physical performance.
Search for ML based image processing, or when is it good to use machine learning in the image processing field.
https://nanonets.com/blog/machine-learning-image-processing/
Here’s the content we talked about in the meeting today:
– Literature and general:
Broaden the search to e.g., darts and guns
Search those CNN and other deep neural networks.
Reflects on the meetings – have objectives before meetings and taking notes – active learning.
Literature reviews, after that then have the understand the high-level technology that’s used.
– Tech:
Two approaches:
- Pure deep learning data driven approach: get tons of images of archery and annotate them.
- Do we draw boxes around arrows, or do we draw X mark on the tips of arrows?
- Do we use coordinate or just a ring number? If we go for coordinates, use (0,0) for bull’s eye?
- toolkit: deep learning is not OpenCV task
- Tensor flow + scikit and other combinations, there are more dedicated deep learning packages.
- Classic CV approach:
- Find the circle then find the center, calculate, and correct the image to transform. De-skewing the image. This is mostly explained in the Leiden Uni thesis.
Maybe use OpenCV for preprocessing and then use TensorFlow for the deep learning stuff.
K nearest neighbor is not applicable bc it is not suitable for image data (they are multi-dimensional).
Some correction from Michael
kNN is able to deal with multi-dimensional data, as are all ML algorithms. The issue is that image data is very high dimensional, if each pixel is treated as an input dimension, and convolutional neural nets and other related deep learning methods are much better suited to handling very high dimensional inputs because of their biases/assumptions. On the other hand, if you did feature extraction using classic computer vision methods to extract a relatively small number of high-level features, you could use those as inputs to kNN.
AR tools, to produce a model using the video feed.
Machine learning steps: Collect, train, deploy. — AR kit is useful in collecting and annotating parts.
A technique in machine learning (deep learning?): data augmentation: e.g. flip the target, rotations, adjustments to brightness and contrasts to generate more training data. Possibly use separate frames in the video to do that?
Here’s the thing I want to do next:
Search for more related works in other targeting sports, or similar image tasks.
Start learning some common deep learning packages and how they work.