Machine Learning on FPGAs: Circuit Architecture and FPGA Implementation

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

КОМЕНТАРІ • 58

  • @m_fadhln
    @m_fadhln 3 роки тому +15

    OMG I just started learning ML and DL implementation on FPGAs and I found your channel. Greetings from Indonesia 🎉

  • @squeakytoyrecords1702
    @squeakytoyrecords1702 3 місяці тому +1

    You hit this one out of the park!! Well done, Thank you.

  • @ahmedal-musharraf9242
    @ahmedal-musharraf9242 3 роки тому +5

    This channel is a gold nugget! ,,, keep up the amazing work,, thank you 😊

  • @olypphia
    @olypphia 2 роки тому +1

    This video inspired me that it is really possible to implement AI scenarios to hardware, via FPGA. Keep the good work Sir, and thank you for sharing this valuable knowledge.

  • @travhenry3451
    @travhenry3451 3 роки тому +4

    This is amazing and very helpful. Concepts are explained very well, keep up the great work!

  • @KristianDjukic
    @KristianDjukic 6 місяців тому +1

    very interesting and thanks for publishing this stuff

  • @jasonmurphy3731
    @jasonmurphy3731 3 роки тому +1

    Just awesome ! Thanks for publishing this.

  • @teitoklien
    @teitoklien 3 роки тому +2

    Awesome vid !
    Thanks !

  • @bouslahbrahim4168
    @bouslahbrahim4168 Рік тому +1

    Excellent Mr thanks a lot

  • @arunuday6109
    @arunuday6109 Рік тому

    Awesome ! Thanks for publishing this.

  • @mbuaesenju8514
    @mbuaesenju8514 Рік тому +1

    thank you. Perfect!

  • @theoryandapplication7197
    @theoryandapplication7197 4 місяці тому +1

    thank you sir the video that i am looking for

  • @agustinsilva447
    @agustinsilva447 3 роки тому +2

    Loving this playlist I just started working in fpga-based reinforcement learning implementations and I started looking at in youtube, this is a very good introduction, are you going to talk about RL implementations ? That woul be amazing!

  • @mehmetburakaykenar
    @mehmetburakaykenar 2 роки тому +2

    Thanks for these great tutoria videos Prof Winzker. I want to ask a question, I am new to NN world and now focused on research of NN HW acceleration structures on FPGA and ASIC. I read that the NN structures you utilized in this example is called as Multilayer Perceptron (MLP). However, I see tons of accelerators for Convolutional Neural Network (CNN) structions. Also CNN is mentioned a lot on image classification. You also work on image processing and NN application on images. Can you give some info about when to use MLP and CNN, or can you refer me a paper about which NN structures are being utilized mostly on ML applications ? Thanks a lot for everything again

    • @marcowinzker3682
      @marcowinzker3682  2 роки тому +1

      This example uses a single hidden layer to show the principle of an NN. The task is designed that it fits this architecture.
      A CNN is helpful, when you want to identify complex objects with a combination of several features. So you identify four legs, pointy ears, whiskers in the front layers. Then following layer of the CNN concludes that the image shows a cat.
      A hardware accelerator uses the structure that I presented but normally has a complex scheduling. So there is a CPU that gives small pieces of the task to the accelerator hardware. The CPU collects results, and again sends new tasks to the hardware.
      I don't really have a paper that I can point to. Sorrry.

    • @mehmetburakaykenar
      @mehmetburakaykenar 2 роки тому +1

      @@marcowinzker3682 Thanks a lot. I will look for papers and if found a good one write it to here

  • @fc3fc354
    @fc3fc354 5 днів тому

    Hi , I wanted to ask something
    Since the we will deploy the NN in FPGA to store th data persistency of the training and predicting shouldnt we convert the training images in a fixed point representation ?

    • @marcowinzker3682
      @marcowinzker3682  4 дні тому

      Hi, the training images do not go into the FPGA. They are used to determine the parameters and the parameters go into the FPGA.

    • @fc3fc354
      @fc3fc354 4 дні тому

      @@marcowinzker3682 sorry maybe we misunderstood each other
      Once the parameters have been calculated( the parameters have been defined on base of the input images) , then at inference time when the fpga gets the image data(after it has been trained) and goes on the forward propagation , is it bad if we took the images as double while in fpga they will be processed as fixed points?

    • @marcowinzker3682
      @marcowinzker3682  4 дні тому

      @@fc3fc354 There is research on doing machine learning applications without high precision arithmetic. Of course there are small differences if you do floating point or fixed point with 32, 16, 8 bit accuracy. Often 8 bit accuracy gives good results with acceptable hardware effort.

  • @muhammedfayas5907
    @muhammedfayas5907 3 місяці тому

    SIr, Do you know how to access the biult in FPGA block RAM and store the text file?

    • @marcowinzker3682
      @marcowinzker3682  3 місяці тому

      Please have a look at the video "Machine Learning on FPGAs: Sigmoid Function and Exercises".
      The sigmoid function is implemented with a built-in block RAM.
      ua-cam.com/video/dygzrBiDFnk/v-deo.html

  • @samyakjain327
    @samyakjain327 3 роки тому +1

    Great Work. I have question like if I want to perform this on real hardware then how can we check the output aka new modified image by an algorithm?

    • @marcowinzker3682
      @marcowinzker3682  3 роки тому

      The best approach for verification is simulation! And then you compare the output with another model, for example the Octave result. There is an example for this approach for the FIR filter in the video "FPGA FIR Filter: Verification with VHDL Testbench" and "FPGA FIR Filter: Self-Checking Testbench".
      If you want to check the output on real hardware, you would check the result on a monitor. You can also take the result with a frame grabber and analyze it.
      Our remote lab does this. You can click on the output image and store it on your computer. (However, the image is compressed with JPEG to save bandwidth, so the result is not bit-true.)

    • @samyakjain327
      @samyakjain327 3 роки тому

      @@marcowinzker3682 Right, but how your simulator get the output image from FPGA. I am trying to make something the same physical.

    • @marcowinzker3682
      @marcowinzker3682  3 роки тому

      @@samyakjain327 If you want something physical, you need an FPGA board with video input and video output port. Such a sytem is described in the video "Image Processing with Terasic FPGA-Boards"

    • @samyakjain327
      @samyakjain327 3 роки тому

      Okay, Thank you so much for support

  • @tonydo29
    @tonydo29 3 роки тому +1

    Dear professor!
    Your lecture very very impressive to me. I'm following your tutorial until the step of load Name filter of Cyclone IV, could you please tell to me which "name filter" did you use in your lab? Warmly thank professor so much~

    • @marcowinzker3682
      @marcowinzker3682  3 роки тому

      The Cyclone IV is a EP4CE22E22C7. You find this information in the constraints file QSF.
      And it is also in the FAQ: www.h-brs.de/de/emt/frequently-asked-questions-fpga-vision-remote-lab

    • @tonydo29
      @tonydo29 3 роки тому

      @@marcowinzker3682 Thanks professor for your reply in detail.
      However, I'm facing with a problem when execute bit file in your sever, I receive the output was "no singal". Could you please help me to check your server? thank professor so much~

    • @marcowinzker3682
      @marcowinzker3682  3 роки тому +1

      @@tonydo29 Please check the FAQ, there is a "no signal" item.
      In 95% of the cases this error is caused by missing pin assignments.

    • @tonydo29
      @tonydo29 3 роки тому

      @@marcowinzker3682 Warmly thank professor for your information. I'll take a look and check it now~

  • @ANONYMOUS-kv6wu
    @ANONYMOUS-kv6wu 3 роки тому +1

    Thank you for such great content sir!!!.I would like to try this project as part of an academic work. Could you please provide the testbench vhdl code for this for simulation? I am just a beginner. It would be of great help.

    • @marcowinzker3682
      @marcowinzker3682  3 роки тому

      A complete testbench is available for the FIR filter experiment. If you are a beginner, I recommend that lecture. Then you can adapt that testbench to this design.
      ua-cam.com/video/o3hk7xAY5-s/v-deo.html
      ua-cam.com/video/wTIHEX7WWvg/v-deo.html

    • @ANONYMOUS-kv6wu
      @ANONYMOUS-kv6wu 3 роки тому

      @@marcowinzker3682 Thank you sir... i will try

    • @EceEnthusiast
      @EceEnthusiast 3 місяці тому

      Where you able to write testbench code for this simulation? it would be really helpful for me as I am also a beginner and want to try this as an engineering project but I don't have enough time to try on my own.

  • @aratishah3691
    @aratishah3691 3 роки тому

    Thank you for video. Can you show how to implement spiking neural network in FPGA board?

    • @marcowinzker3682
      @marcowinzker3682  3 роки тому +1

      Good idea. I am supported by student thesis and will take this topic on my list.

    • @aratishah3691
      @aratishah3691 3 роки тому

      @@marcowinzker3682 Thank you, Professor. Hope to see new videos on SNN soon.

  • @mallikarjunumadi2794
    @mallikarjunumadi2794 3 роки тому

    I couldn't get the input image and image_label in previous video..can you please provide details?

    • @marcowinzker3682
      @marcowinzker3682  3 роки тому

      You can download the video from our homepage www.h-brs.de/de/fpga-vision-lab with the name "Video with road signs on motorway (CC BY)". Our you can make a screenshot from the remote-lab. Then you have to generate the image label file. Octave script are intended (and have been tested) with image size 720p, i.e. 1280x720 pixel.
      We do not provide the images. You have to generate them on your own.

  • @LSyedAkram
    @LSyedAkram 2 роки тому

    Why do we need a control block for sync signals

    • @marcowinzker3682
      @marcowinzker3682  2 роки тому

      The video signal consists of two parts:
      1) image information: red, green, blue
      2) sync signals to indicate when a new frame or a new line begins
      The control block copies the sync signals from input to output. Because the image information needs some clock cycles for processing, the sync signals needs the same delay. So, the control block copies the sync signals with some clock cycles delay.

    • @LSyedAkram
      @LSyedAkram 2 роки тому

      @@marcowinzker3682 Thanks!!!!

  • @SW-ud1wt
    @SW-ud1wt 2 роки тому

    Nice lecture. Sir i want to implement alexnet cnn arch on FPGA, is it do able or not? Please guide

    • @marcowinzker3682
      @marcowinzker3682  2 роки тому

      Basically yes, but this is a large project. You need a large FPGA and scheduling of the layers with subsampling. Use of a framework (like ua-cam.com/video/FFUyRQukGvM/v-deo.html) is recommend.
      A good approach is an architecture with a CPU for scheduling of tasks and FPGA fabris as an accelerator.

    • @SW-ud1wt
      @SW-ud1wt 2 роки тому

      @@marcowinzker3682 can i have your email so that i can email you proposed design. I'm planning to do in parallel as soon as each byte enters into system.

    • @SW-ud1wt
      @SW-ud1wt 2 роки тому

      @@marcowinzker3682 thanks for your response 👍

    • @marcowinzker3682
      @marcowinzker3682  2 роки тому

      @@SW-ud1wt I am sorry, I can not give individual support.

    • @SW-ud1wt
      @SW-ud1wt 2 роки тому

      @@marcowinzker3682 ok

  • @yoginiprabhu8048
    @yoginiprabhu8048 3 роки тому

    How was the user interface prepared?

    • @marcowinzker3682
      @marcowinzker3682  3 роки тому +1

      The remote lab uses WebLab-Deusto as the management software.

  • @user-yu3is8kx4e
    @user-yu3is8kx4e 3 роки тому

    Could you disclose the vhdl codes ?

  • @Ali-wf9ef
    @Ali-wf9ef 3 роки тому

    Your code didn't look very pipelined

    • @marcowinzker3682
      @marcowinzker3682  3 роки тому +2

      Are you joking? At minute 4:45 you see the pipeline stages. There is a lot of pipelining!
      In the code you see it at minute 8:05 inisde the neuron. You get a pipeline stage when you have a signal assignment '