-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mobaxterm issue #10
Comments
Hi! P.S.: I mentioned on the tutorial that you might need to insert the password "root" twice as mobaXterm for some reason doesn't identify it the first time. |
I am not sure. Ignore it for now and see if it does not pop up on a later stage. |
UMM, how do I install it?
|
Look, the problem seems to be that you don't have the correct SD card image. Try to use the one I made available as it already has all the necessary libraries. |
Certainly, I will do that and inform you accordingly. By the way, I have a
question regarding the implementation of ML, specifically YOLO, on PYNQ
(Z1/Z2). I have reviewed numerous projects and documents, but many of them
use a different approach than yours. For instance, some have created an IP
in Vivado HLS for YOLO, loaded it onto the board, and then used Jupyter to
run the model. While I don't fully understand that process, I am curious
about the rationale behind your approach. Could you please explain the
reasoning and any potential advantages of your method? And also can you
explain the flow used in this
<https://iopscience.iop.org/article/10.1088/1742-6596/2405/1/012011/pdf>
and this <https://github.com/dhm2013724/yolov2_xilinx_fpga>, if you know
about it. Thank you.
…On Fri, Jul 26, 2024 at 2:05 AM André Araújo ***@***.***> wrote:
Look, the problem seems to be that you don't have the correct SD card
image. Try to use the one I made available as it already has all the
necessary libraries.
gcc should be one of those packages and so, as it is not present there, it
means the SD car image is not correct.
Download it here
<https://drive.google.com/file/d/1ETyM51KSWX_h1DVq9ptHPIux89oTrNPy/view?usp=drive_link>and
then flash it on the micro SD card.
Good luck!
—
Reply to this email directly, view it on GitHub
<#10 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A5RZEIUDY6CPI5BCMTTFZ6LZOFOPHAVCNFSM6AAAAABLOX6YMOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJRGM2DQOJTGA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Thank you! I also added you on the end of the github page as a thank you for your help on this project!
Sorry for the long explanation. Both the approaches you linked use soemething called HLS which is High Level Synthesis. I never went on that area but what I think it is, is basically program the FPGA using High Level code like c++. So, you create a c++ program for a neural network you want and then point some parts where the program can be parallel, just like multithreading. This approach is not typically as optimized as programming in VHDL or Verilog your own neural network but surelly is a lot easier and faster. Their process is not as different as mine as it might seem:
I think the process of using HLS is a broad area of its own and might be really complicated. I don't have that experience so I can't tell for sure. But the process is a little different than what I did but kind of the same on some points haha. Sorry about the long text but I hope you understand a little bit the different approaches. There are no good (accessible) solutions for deploying object detection in real time on these boards yet. Good luck! |
Haha, I don't think there was any need to include my name, since you had
already completed the project and I was just learning. I had many doubts
along the way, and you helped me each time. I could say I was the Andre to
your Wutianze. I had been working on this project for a long time; when I
started, I didn't even know how to use Vivado and generate IP. Over time, I
learned to use HLS and Verilog/Verilog HDL to create IPs for image resizing
and other tasks.
Initially, I couldn't figure out the flow for implementing object
identification on an FPGA. I knew I needed to create an IP and a model, and
that I could use Jupyter to access it, but I wasn't sure how to proceed. I
talked to several seniors, and most had written Verilog code or used the
HLS method, writing YOLO v2 code in C++ because it was available online and
widely used.
My goal was to implement any model on an FPGA, so I was exploring different
flows. I encountered a method that involved converting the trained model
into a hardware-understood file, essentially HDL, and then calling an API
on Jupyter to implement the model. I wasn't sure how this worked or if it
would work at all. What I don't understand is how a trained model is
deployed on the board, IP is just for the neural network, but how are the
model weights being dumped on the board is something I haven't figured out
till date in the HLS or RTL process flows.
Then, I came across your GitHub and read the complete documentation, which
gave me some clarity. It seems both flows (yours and the HLS one) aim to
achieve the same purpose. The difference might be that, in your flow, you
are creating an OS for the entire system, focusing on object detection. In
the HLS flow, it seems like one has to write code for every task on Jupyter
to run the model.
When you mention RTL, do you mean writing the neural network using RTL?
Regards
Aryan Shah
|
Don't worry, you helped me validate the instructions of the tutorial and that is really helpfull. |
I have only a basic understanding of HLS, and I definitely can't write a
TensorFlow architecture with it. But feel free to ask, I'll be happy to
help where I can. I really don't like Verilog; it's just not my thing, so
writing neural network code in RTL is out of the question for me. I'm
curious about the methods used in newer boards. I have no knowledge of them
yet, but I'm open to exploring. Are there newer or better optimization
techniques available for the Zynq 7000 SoC or any other board, other than
RTL?
Also, in the YOLO test image you posted here
<https://andre-araujo.gitbook.io/yolo-on-pynq-z2/deployment-on-pynq-z2/execute-yolov3>,
do the numbers on the boxes represent accuracy or some other metric?
Regards
Aryan Shah
… Message ID: ***@***.***>
|
The optimization techniques normally used to compress neural networks is quantization and prunning. DNNDK did not use prunning. They explicitly said it was not supported on that version. I suspect they now use prunning on Vitis AI. About the numbers above the boxes on the detections, it represents the accuracy of the detection. 0,99 is 99% accuracy. |
Hey Andre,
Deployment on PYNQ z2 board has been successful however we have to repeat
this
<https://andre-araujo.gitbook.io/yolo-on-pynq-z2/dpu-implementation/implementing-the-dpu-on-a-sd-card-image#sd-card-image>
steps, after every time we power off the board. Like for example if I have
copied those image files on SD card, then setup USB connection using putty,
and everything is working fine even on MobaXterm. But after few runs if I
power off the board and remove all systems and try again connecting to
putty or MobaXterm that doesn't work. I will have to format the SD card
again , repeat the step mentioned here
<https://andre-araujo.gitbook.io/yolo-on-pynq-z2/dpu-implementation/implementing-the-dpu-on-a-sd-card-image#sd-card-image>,
and then again setup the whole system then it works. Does that make sense?
Is that normal? Do I have to do that again and again every time I want to
perform the task?
Regards
Aryan Shah
…On Mon, Jul 29, 2024 at 8:14 PM André Araújo ***@***.***> wrote:
The optimization techniques normally used to compress neural networks is
quantization and prunning. DNNDK did not use prunning. They explicitly said
it was not supported on that version. I suspect they now use prunning on
Vitis AI.
There are some frameworks for accelerating neural networks on the
Zynq-7000 chips like FINN <https://github.com/Xilinx/finn>from xilinx or
Brevitas <https://github.com/Xilinx/brevitas> also from Xilinx. They are
more easy to work with but I suspect the results will be slighly worse. But
we never know!
About the numbers above the boxes on the detections, it represents the
accuracy of the detection. 0,99 is 99% accuracy.
I hope this helps!
—
Reply to this email directly, view it on GitHub
<#10 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A5RZEIQIYQIICIO7PPIHLHDZOZIM7AVCNFSM6AAAAABLOX6YMOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJWGEZTMNBWGM>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Hello Aryan.
If that is the case let me know. If you already did those commands every time you restart the board and the problem pressists let me know so we can try to figure out the problem. |
The problem is I am not able to establish connection after powering it up
again, like putty glitches up, can't reconnect even on MobaXterm so I am
not even able to go further and run those commands.
…On Fri, Aug 9, 2024 at 12:49 PM André Araújo ***@***.***> wrote:
Hello Aryan.
No, that is not normal behaviour at all. The image shuld work evry time.
I don't see why that problem is happening, but I might suspect that due to
poor description in the tutorial, you are not executing these commands each
time you power up the board:
cd zynq7020_dnndk_v3.1
./install.sh
If that is the case let me know. If you already did those commands every
time you restart the board and the problem pressists let me know so we can
try to figure out the problem.
Good luck!
—
Reply to this email directly, view it on GitHub
<#10 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/A5RZEIT3YWHAOVEKOE2XLWDZQRUQ7AVCNFSM6AAAAABLOX6YMOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZXGMYDQMRYGY>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
That is really strange. I never saw that behaviour before. |
Can you just tell me what "zynq7020_dnndk_v3.1" is and where it came from?
Like how did you generate that file? I am using the file from your github
itself.
![Uploading image.png…]()
|
Hi! |
Why am I seeing this?
Also when I tried to login it showed this:
![image](https://private-user-images.githubusercontent.com/123965986/352171334-7b63e77b-7caa-43a7-afd3-001d10537e4d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYwODkxODAsIm5iZiI6MTcyNjA4ODg4MCwicGF0aCI6Ii8xMjM5NjU5ODYvMzUyMTcxMzM0LTdiNjNlNzdiLTdjYWEtNDNhNy1hZmQzLTAwMWQxMDUzN2U0ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkxMVQyMTA4MDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03MjE5MDFmMGUxM2EwZDRjYTg5ODM3NzQyMzk4NTllOTRiOWE0NTViY2Q3NzA0MWMzMDU4MzlhODMxY2RiY2Q0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.ZfYDL5ueL5cuWSMgIp--mQpuB3Asp8IUD6gMPJdJrRo)
though after entering the password I was on this window:
![image](https://private-user-images.githubusercontent.com/123965986/352171781-22d9ae4c-7129-4944-a8a9-7eb25bb6eb0b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYwODkxODAsIm5iZiI6MTcyNjA4ODg4MCwicGF0aCI6Ii8xMjM5NjU5ODYvMzUyMTcxNzgxLTIyZDlhZTRjLTcxMjktNDk0NC1hOGE5LTdlYjI1YmI2ZWIwYi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwOTExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDkxMVQyMTA4MDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02NmRlOTg1NWRhMzlhNDIxNjkyZGQwYTg5MTZiMTAxNDZmNmVlN2MxNTg0MzlhZjZkMWJjZmM0M2ZlNDE1MDlkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.zstp7inqCBzLAPIbdDCKvonrq3q3nbHjcNC11wM3RlM)
The text was updated successfully, but these errors were encountered: