Recognize numbers with machine learning

I have been wondering how to implement a neural network that can read numbers, like badcc’s https://twitter.com/badccvoid/status/848361514138566657. Sorry if this is obvious, but I’ve been interested in other’s implementations of it. This probably sounds like I am asking for a script (sorry :sob:), but I just want resources and to be a step in the right direction of implementing it.

Thank you for reading. (Also anything helps :+1:)

1 Like

You want a supervised machine learning system that can read numbers?

I’ve coded in a reinforcement learning algorithm into Roblox, and it was quite complicated to do so. It took about a week to get most of it done.

However, a supervised machine learning system requires data points. What are these data points you plan to provide it with?

1 Like

That’s a great question, and to be completely frank I am not sure. Do you have any suggestions on how to obtain that sort of thing? I will try to reinforce my neural networking knowledge tomorrow so that I can answer that clearer, thank you for the response! :grin:

You cannot obtain it; you must provide it. It’s entirely your choice on what you provide. To create a machine learning algorithm, you must supply some sort of data. For supervised learning, you must provide it the “correct answer for each question” or “the best choice for this state”. Reinforcement learning will do this for you, but it takes up a lot of data and time, and it also does not support a neural network.

Ah that is my fault. (Also thanks a ton for the explanation, I needed it :smile:) Ill reword what I said above since I stated it poorly. How could I obtain the correct answer to provide to the function? And what form should I keep it in? A table full of x, y points? Also I am sorry if this is getting too specific into what I need, I really appreciate your input.

Preferably something that says, “associate X with Y”. That’s what I consider supervised learning. You would want this to be as performant as possible since there will be very many indexes. I haven’t researched the best solution for this, but you can possibly index the Y table with X and store the Y table. I’m probably not doing a very good job of explaining this, but Y is the answer table and X is the data point.

1 Like

I am a bit confused what you mean by “associate X with Y,” with X being the input and Y being the answer, which I take to mean finding the difference between them, but I am not sure if that was your intended meaning.
When you say “index the Y table with X and store the Y table,” it reminds me of a hashtable. Are they at all similar or am I misunderstanding?
Thank you for reading, please enlighten me on what I am doing incorrectly :pray: . (Also sorry for my long typing times, I’m reorganizing my thoughts lol.)

edit: Also neither “meaning” I took seemed to fit neural networking, which led me to think I misunderstood it :sweat_smile:

It’s possible but with 2 things:

  • Neural Networks
  • Bias
  • MNIST Database

MNIST is a hand-written database of digits 0-9, in different shapes and sizes, and accessing these databases is a tough task, as it contains over a thousand values/dictionaries/arrays

And while this process, the laptop might even crash, so you are supposed to write it in Python or any other language and find the best possible way like API, and once accessed you should make a neural network that can discover what number is similar to the drawn image and return that value, however making a basic neural network itself is a tough task, and if you want to achieve such a complex neural network, you should have a lot of experience at making these AI systems

One good way is the chain-based system, inspired by the neural network, it finds the curves and finds the best digit with the nearest curves, and compares those selected values with the neural network to give a good accuracy like 99%

Meanwhile, achieving this for a constant use like auto pilot with images reading for traffic following can be an impossible task, doing this takes several seconds, and low-end devices might even crash, eventually if your trying to do this just for practice like the one Badcc did, you can maybe try it, but recommending this to large projects can be hazardous for your device

1 Like

Thank you for how in-depth you went! I will research the chain-based system. Also, I will not need constant use so don’t worry, maybe once per ~3-4 seconds maximum anyway. Dumb question, but is the chain-based system using MNIST? I wish to apply this to other symbols, so that may not be possible. Sorry if I am being a hassle :sweat:

edit: response will be delayed/ sleeping.

: )

Not really , the chain-based system uses an algorithm to calculate the curves, their radius, their length and their similarity

Using the chain-based system and neural network, you create another data based which is based on curve properties rather than the actual shapes/digits, using these curves the output is shown, its much faster than the MNIST method, but a bit less accurate because of the number of possible curves

Example:

local newtable = {
   ["Curve1"] = {
        ["PossibleNumbers"] = {1,2,3,4},
        ["CurveProperties"] = {}
    }
}

Here in the chain-based system, when a curve is found it will loop through the 10-50 curve dictionary values, and it will add all the possible numbers into another table like

local tableofpriority = {"1" = 10, "4" = 3"}

Here when a possible number is found, it gets added, the more the number of times a digit seems to be matching, its value/priority increases, based on this the output is calculated on the digit which occurs the most, however it might be wrong a few times

But if you combine the top 3 possible priority numbers with the drawn figure using a neural network, the neural network does not have to run a lot of times and comparatively it can run better, and get a better output

2 Likes

Ooh I see. What do you think I should do for the curve properties? I was thinking of finding the angle of the curve and maybe its position relative to the rest of the character, but I can’t think of much more than that.

1 Like

Yes you should find the angle between 2 pixels, the canvas is however made from grids of different colors, so you should do it like 90 degrees count of constant pixels to calculate the angle between the pixels drawn, however remember the distance angle is always 90 degree between each pixel

It is possible to use machine learning to recognize numbers in Roblox, but it would require training a machine learning model using a dataset of images containing numbers.

To train a machine learning model, you would need to collect a large number of images that contain numbers, and label each image with the correct number. This dataset would be used to train the model, which would learn to recognize numbers by analyzing the patterns and features in the images.

Once the model is trained, you can use it to recognize numbers in new images by feeding the images into the model and receiving the predicted numbers as output.

To implement this in Roblox, you would need to use a machine learning library or framework that is compatible with the Roblox platform. You would also need to have a way to capture images from the game and convert them into a format that the model can process.

Overall, using machine learning to recognize numbers in Roblox is possible, but it would require a significant amount of work and expertise in machine learning and image processing. It is not a simple task, but it can be done.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.