top | item 28324941

(no title)

jimmies | 4 years ago

I agree with you for the most part. This problem definitely doesn't require ML to achieve.

However, if doing it with a classical approach (matching sprites) takes a person half a day, and doing it with the new fangled proprietary ml takes a person 20 minutes, I do see that doing it with the new fangled ml approach does have some merits. People want to get stuff done.

I'm a barely passable programmer, so not exactly a shining benchmark, so maybe my view is distorted. I don't think I can do duck detection flawlessly with classical programming in half a day and it would be a total pain in the ass to do it that way, to be completely honest with you.

discuss

order

amelius|4 years ago

Yeah, but in the classical approach your users don't need to have a GPU installed.

This seems to be a case of "if you're holding a hammer, everything looks like a nail".

dr_zoidberg|4 years ago

Edit: I'm pretty sure I missclicked to which comment I wanted to answer and now I can't find it... It said something along the ML approach being more developer-time efficient.

You can definitely do it in 20 minutes if you know how (which is also applicable to the ML version):

    import cv2
    import numpy as np

    red_duck = cv2.imread("red_duck.png", cv2.IMREAD_GRAYSCALE)

    # boilertplate etc, up to the point where you want to match your ducks on screen:

    res = cv2.matchTemplate(img_screen, red_duck, cv2.TM_CCOEFF_NORMED)
    positions = np.zeros_like(img_screen)
    positions[res > 0.7] = 1  # we found a duck
    # now do whatever you want with each position
    # on real life images you may need to do some additional post-processing, on 8-bit rendered images you probably don't need to

awal2|4 years ago

You can do sprite matching using new fangled ML tools and save the same amount of developer time.