Can AI + Synthetic Data Beat Classic Computer Vision? - Decoding Chess Boards | Part 2

Поділитися
Вставка
  • Опубліковано 8 вер 2024

КОМЕНТАРІ • 13

  • @johnmeo1532
    @johnmeo1532 Місяць тому

    Love the video! I think my previous comment with links got moderated by UA-cam, was it deleted in full or just auto-hidden?

    • @samobot
      @samobot  Місяць тому

      Thanks for enjoying the video! --And I only see this comment from you ¯\_(ツ)_/¯--
      *Future edit: I saw your comment, here's my reply!*
      Thanks so much for the kind words! I'm glad you like the process of trying to solve a problem instead of just being given then solution, as that feeling of exploration is exactly what I'm trying to convey!
      And yes ChessboardDetect on github is me, everything from the first video is open source on github already, including edge detection/contours/grid etc. if in a very hacked-together form.
      The AR app sounds like a lot of fun! And that's cool about ChessCog, I hadn't seen that before, it looks very nice. I agree that almost everyone jumps to hough transforms first, but it does seem to be surprisingly brittle to occlusions/noise in the image.
      Appreciate the in depth message and I'm excited to hear about it as you progress, I don't have discord but happy to continue a chat over email (you can get the email from my github)

    • @johnmeo1532
      @johnmeo1532 Місяць тому

      @@samobot Idk what's going on -- this is the third time I've rewritten this comment because UA-cam hates me for some reason.
      YES OMG YES THIS IS PERFECT!!
      This is absolutely amazing work and I'm excited to see this project going forward. I am guessing you are the author of the ChessboardDetect GitHub page based on the shared media in the README. :P Do you plan on making your future work open source? Even though it is a messy hodge-podge of code, could you please help outline the method to get the ML trained/running? I've been unable to make head or tail of that section and with edge detection performing so poorly for me I would really like to get something actually functioning.
      I am currently working on an augmented reality chess application (with MR+VR options for headeset owners) that will allow you to play with anyone online with a physical board and a phone. I am completely new to computer vision and this is very, very inspiring. With such a wide variety of techniques, you demonstrate what it feels like to attack a computer vision problem rather than simply present a complete solution. That is quite valuable to not only this specific problem but to anyone trying to learn about computer vision.
      As for the techniques presented in the video: I've always been skeptical of how synthetic data could ever be useful but this is such a great example of it working! Interestingly enough, the current "state of the art" on the general topic of chess-detection, ChessCog, also uses Blender-produced synthetic data, but for piece detection. It takes a one-shot approach where it trains on synthetic pieces and transfers that learning to an unseen chess set with a couple pictures of the pieces in the starting positions. It is remarkably good at this, but by far its weakest point is the chessboard detection as it uses edge detection + Hough transform similar to the method outlined in Part 1. Out of the half a dozen or so Hough transform / RANSAC implementations I've tried, I haven't been able to get any to successfully detect my own chessboard, regardless of how clearly I take the picture. Furthermore, that synthetic dataset is sorely lacking in variety of camera angles and backgrounds.
      Thank you for the brilliant work, I'm extremely impressed! I see great potential in transforming how online chess is played, and perfecting this step is such a vital component in realizing that vision. If you are interested in discussing further, please reach out to me on Discord (krakenmeister) -- I would love your insight and to offer help if you need any.

    • @johnmeo1532
      @johnmeo1532 Місяць тому

      ​@@samobot Idk what's going on -- this is the third time I've rewritten this comment because UA-cam hates me for some reason.
      YES OMG YES THIS IS PERFECT!!
      This is absolutely amazing work and I'm excited to see this project going forward. I am guessing you are the author of the ChessboardDetect GitHub page based on the shared media in the README. :P Do you plan on making your future work open source? Even though it is a messy hodge-podge of code, could you please help outline the method to get the ML trained/running? I've been unable to make head or tail of that section and with edge detection performing so poorly for me I would really like to get something actually functioning.
      I am currently working on an augmented reality chess application (with MR+VR options for headeset owners) that will allow you to play with anyone online with a physical board and a phone. I am completely new to computer vision and this is very, very inspiring. With such a wide variety of techniques, you demonstrate what it feels like to attack a computer vision problem rather than simply present a complete solution. That is quite valuable to not only this specific problem but to anyone trying to learn about computer vision.
      As for the techniques presented in the video: I've always been skeptical of how synthetic data could ever be useful but this is such a great example of it working! Interestingly enough, the current "state of the art" on the general topic of chess-detection, ChessCog, also uses Blender-produced synthetic data, but for piece detection. It takes a one-shot approach where it trains on synthetic pieces and transfers that learning to an unseen chess set with a couple pictures of the pieces in the starting positions. It is remarkably good at this, but by far its weakest point is the chessboard detection as it uses edge detection + Hough transform similar to the method outlined in Part 1. Out of the half a dozen or so Hough transform / RANSAC implementations I've tried, I haven't been able to get any to successfully detect my own chessboard, regardless of how clearly I take the picture. Furthermore, that synthetic dataset is sorely lacking in variety of camera angles and backgrounds.
      Thank you for the brilliant work, I'm extremely impressed! I see great potential in transforming how online chess is played, and perfecting this step is such a vital component in realizing that vision. If you are interested in discussing further, please reach out to me (maybe this information is why I'm getting censored but idk how else to share my contact) -- I would love your insight and to offer help if you need any.

    • @johnmeo1532
      @johnmeo1532 Місяць тому

      @@samobot ​ Idk what's going on -- I've rewritten my comment like 5 times and it keeps getting censored. Is there a better way I can contact you?

    • @samobot
      @samobot  Місяць тому

      _Note: Looks like your comment is coming through (at least to me, hopefully publicly now, I don't see anything blocking it on my end, perhaps its putting discord links or similar causing issues? I've copied most of it below for anyone reading) now!_
      --- *Your message below*
      > YES OMG YES THIS IS PERFECT!!
      This is absolutely amazing work and I'm excited to see this project going forward. I am guessing you are the author of the ChessboardDetect GitHub page based on the shared media in the README. :P Do you plan on making your future work open source? Even though it is a messy hodge-podge of code, could you please help outline the method to get the ML trained/running? I've been unable to make head or tail of that section and with edge detection performing so poorly for me I would really like to get something actually functioning.
      I am currently working on an augmented reality chess application (with MR+VR options for headeset owners) that will allow you to play with anyone online with a physical board and a phone. I am completely new to computer vision and this is very, very inspiring. With such a wide variety of techniques, you demonstrate what it feels like to attack a computer vision problem rather than simply present a complete solution. That is quite valuable to not only this specific problem but to anyone trying to learn about computer vision.
      As for the techniques presented in the video: I've always been skeptical of how synthetic data could ever be useful but this is such a great example of it working! Interestingly enough, the current "state of the art" on the general topic of chess-detection, ChessCog, also uses Blender-produced synthetic data, but for piece detection. It takes a one-shot approach where it trains on synthetic pieces and transfers that learning to an unseen chess set with a couple pictures of the pieces in the starting positions. It is remarkably good at this, but by far its weakest point is the chessboard detection as it uses edge detection + Hough transform similar to the method outlined in Part 1. Out of the half a dozen or so Hough transform / RANSAC implementations I've tried, I haven't been able to get any to successfully detect my own chessboard, regardless of how clearly I take the picture. Furthermore, that synthetic dataset is sorely lacking in variety of camera angles and backgrounds.
      Thank you for the brilliant work, I'm extremely impressed! I see great potential in transforming how online chess is played, and perfecting this step is such a vital component in realizing that vision. ---Cut out this portion--- -- I would love your insight and to offer help if you need any.

  • @joshchang1656
    @joshchang1656 24 дні тому

    Enjoyed this video! I am also working on a similar approach using Unreal Engine. Looking forward to see how you progress using the blender synthetic data generation process!

    • @samobot
      @samobot  24 дні тому

      Cheers! I'm working on that one now! How do you like using Unreal engine so far?

  • @ayoCC
    @ayoCC Місяць тому

    loved it 😆

    • @samobot
      @samobot  Місяць тому

      Thanks! I love to hear when people vibe with this sort of stuff!

  • @inkmanworkshop
    @inkmanworkshop Місяць тому +1

    Awesome!
    Love your style of teaching.
    Do you think having the additional 2D & 3D bounding box information would have sped up your process?
    Also how did you generate the semantic segmentation masks in Blender?
    Any links to a tutorial please?
    Thanks

    • @samobot
      @samobot  Місяць тому

      Thanks for the comment! Yes I think so, since the chessboard is a simple box getting the bounding box from it of pretty simple, but as I go to segmentation etc this will come back as a problem.
      You can do composite nodes to get the segmentation mask, not I'm not certain it's the best way yet, I'll be posting a video on this soon!
      I'll comment here if I find a relevant tutorial that I used!

    • @inkmanworkshop
      @inkmanworkshop Місяць тому

      @@samobot Great.
      Thank you so much.
      I would check out the composite nodes then.