0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度学习计算卡

分享:

米尔FZ3深度学习计算免费试用

FZ3 深度学习计算是米尔电子推出的一款以 Xilinx XCZU3EG 作为核心的嵌入式智能 AI 开发平台。采用了 Xilinx 最新的基于 16nm 工艺的 Xilinx Zynq

社区化 2020-10-09 10:21:45

【米尔FZ3深度学习计算试用体验】在米尔FZ3深度学习计算上跑自己的系统

` 本帖最后由 liujing1232 于 2020-12-10 15:30 编辑 在米尔FZ3深度学习计算上跑自己的系统米尔FZ3深度学习计算本质上是一块利用Zynq跑自定义的系统,并在

liujing1232 2020-11-27 21:21:26

【米尔FZ3深度学习计算试用体验】FZ3深度学习计算总结篇

`FZ3深度学习计算总结篇几个月的试用即将结束,也通过这个板子完成了自己的项目,具体的不方便公开,有网友私聊我相关资料,因此这里做一个统一的说明,能公开的帖子里面都发布了,其他的项目结束之后,会考

liujing1232 2021-01-10 14:39:17

【米尔FZ3深度学习计算试用体验】深度学习体验自定义硬件

balenaEtcher后烧写成功。如图1所示:图1 balenaEtcher烧写软件然后就可以体验深度学习计算的魅力了。根据官方用户手册的指示,开始操作。根据之前的连接演示,成功以串口进行连接,屏幕也已点亮

liujing1232 2020-11-20 15:32:04

【米尔FZ3深度学习计算试用体验】DPU搭建

DPU验证 将上述文件复制到SD的boot区,运行DPU的IP核得到下述信息即可验证:4 使用总结米尔FZ3深度学习计算是MPSOC+UltraScale结合的主核,该板卡能够所能达到的Ai系统

liujing1232 2020-12-10 15:23:40

【米尔FZ3深度学习计算试用体验】UDP读取摄像头图像缓存并动态显示

【米尔FZ3深度学习计算试用体验】UDP读取摄像头图像缓存并动态显示 前文再续书接上一回,UDP缓存方式传输摄像头图像这个Demo是我在上一帖之前就已经完成的,无奈传输效果实在不如UDP传输文件

donatello1996 2021-01-11 00:35:40

【米尔FZ3深度学习计算试用】开箱初体验

的是该款芯片能够运行一个B2304低DSP的深度学习计算,能够满足大部分的实时性要求场合。首先是该板卡的开箱图片:不得不说:“make your idea real”这个名字确实不错的,下面是板卡的破壳

liujing1232 2020-11-14 19:52:30

【米尔FZ3深度学习计算试用体验】一 开箱

16g这个板子没有wifi及蓝牙~~视频接口不是hdmi接口,是一个dp接口上面有按钮和拨动开关,功能说明书上有定义,后面会好好研究下接摄像头和显示器的排线接口不是一个普通的开发板,fpga,多核心,最大特点是和百度eazydl,aistudio深度融合,进行深度学习。后面会仔细研究应用下`

robot_ros 2020-11-13 15:23:41

【米尔FZ3深度学习计算试用体验】AI系统基础上扩展接口

AI系统基础上扩展接口1 扩展的必要性FZ3深度学习板卡装载了AI系统,但是其数据仅仅只能在该系统内部,缺乏与外界交流的媒介,无法将自身宝贵的数据传递给外界,尽管现有的系统以及百度AI系统自身已经

liujing1232 2020-12-29 09:58:07

【米尔FZ3深度学习计算试用体验】搭建Vitis Ai系统平台并测试

框架和最新的模型,能够执行不同的深度学习任务· 提供一系列全面的预先优化模型,这些模型现已就绪,可随时部署在 Xilinx 器件上。您可以找到最相似的模型,开始针对您的应用重新训练!· 提供功能强大

liujing1232 2020-12-03 19:22:13

【米尔FZ3深度学习计算试用体验】简单开箱补充贴

` 本帖最后由 猎国倾城 于 2020-12-3 18:17 编辑 配件清单配件16GB的SD,内含开发板的镜像。开发板正面照开发板背面照,背面只有一个SD插槽mipi-csi摄像头接口

猎国倾城 2020-11-09 20:15:07

【米尔FZ3深度学习计算免费试用】+Coremark跑个分

本帖最后由 猎国倾城 于 2021-1-6 21:01 编辑 首先下载CoreMark源码,然后上传到开发版解压。cd coremarkmakePORT_DIR=linux64注意开发板的系统是64位的,所以PORT_DIR=linux64,如果是32位系统PORT_DIR=linux编译生成coremark.exe文件,运行make PORT_DIR=linux64,编译完成,他会自动运行,生成run1.log和run2.logrun1.log结果:run2.log结果:总结:才3900多,比STM32H745XI 跑分强点,是我没设置好,还是什么东西限制了它的发挥。真正跑分在16400,差的好远,应该是我设置不对,没有发挥出开发板真正性能,另外这个跑分只能证明SOC上ARM处理器的性能,其他的证明不了。

猎国倾城 2021-01-06 20:59:27

【米尔FZ3深度学习计算试用体验】厂家版上例程解读&移植

分类是以一张图片为输入参数,附加二进制参数文件(param文件),与库上模型(model文件)进行对比,此过程调用了FPGA核上的逻辑计算单元,米尔厂家对调用FPGA逻辑单元的操作封装成内核库文件(ko

donatello1996 2020-12-22 01:01:03

百度/米尔基于百度大脑EdgeBoard加速平台推出FZ3深度学习计算

百度大脑是百度 AI 核心技术引擎,包括视觉、语音、自然语言处理、知识图谱、深度学习等AI核心技术和AI开放平台。

2020-04-01 09:03:51

百度联合米尔推出基于FPGA可伸缩计算架构的FZ3深度学习计算

(及Video Decode)的架构,既具有多核处理能力、也有视频流硬解码处理能力,还具有FPGA的可编程的特点。内置Linux 4.14.0系统和深度学习预装环境,与百度大脑模型定制平台(AIStudio、EasyDL、EasyEdge)深度打通,实现模型的训练、部署、推理等一站式服务。

2020-03-31 17:02:42

【米尔FZ3深度学习计算试用体验】DPDK相关源码编译&运行体验(不成功)

指令查看,比如插入了RTL8111网下打印信息如下:这个01:00.0就是PCIe地址信息。目前存在的问题是,即使FZ3板子安装了RTL8111和igb驱动,插上两种PCIe网卡,ifconfig

donatello1996 2021-02-28 23:43:41

【米尔FZ3深度学习计算试用体验】移植Debian文件系统及framebuffer外设相关开发心得

两行的话,那么用普通用户登录之后,无法通过sudo -s指令切换到root权限,很麻烦。将厂家的1.5.1petaLinux系统烧录到SD上并在虚拟机或者Linux系统下挂载出来:可以看到,当烧录

donatello1996 2021-01-17 23:50:45

【米尔FZ3深度学习计算试用体验】内核源码编译&RTL8192EU驱动

编译完毕之后把16G的SD的大部分空间都占了:然后是给RTL8192EU驱动源码编译,需要将源码路径做相应修改:make cleanmake -j3编译,要在Makefile文件里面填入正确的内核

donatello1996 2020-12-20 17:46:07

【米尔FZ3深度学习计算试用体验】在自定义的Ai系统上跑深度学习推理模型

`上一次试用将DPU成功移植在了FZ3开发板上,并将DNNDK开发套件安装在了自定义的AI系统上,并通过相关指令验证了已经安装成功,现在根据xilinx官方提供的模型跑深度学习推理模型。本次验证

liujing1232 2020-12-19 11:23:36

【米尔FZ3深度学习计算试用体验】PCIe网卡驱动编译&DPDK相关源码编译&运行体验VOL2(成功)

应该分给FPGA模块的2G内存也全部开放给文件系统,刘工说,也就是这个内核有设置正确的PCIe时钟而使得可以启用板子引出的PCIe接口(如PCIe网卡,PCIe加速,与别的机器进行PCIe通信等)。烧录

donatello1996 2021-03-22 00:13:27

【米尔FZ3深度学习计算免费试用】+疲劳驾驶检测系统第二部分眼睛状态识别

的shape_predictor_68_face_landmarks.dat,可以得到68个特征点位置的坐标,68个特征点如下图所示:第二原理这个疲劳驾驶监测系统是通过计算眼睛纵横比(Eye Aspect Ratio)来估计疲劳程度的。具体原理如下图所示:数学公式表述如下:`

猎国倾城 2021-01-10 18:24:30

【米尔FZ3深度学习计算试用体验】使用正确的内核源码编译RTL8192EU无线网卡和RTL8118有线网卡驱动

推测应该就是petaLinux的编译环境本体了,压缩包占用空间是700多M,这两个压缩包编译出来的目标文件夹占用空间非常大,板子SD16GB有可能放不下,于是我将这两个压缩包放到一个32GB的U盘里

donatello1996 2021-01-31 18:26:17

【米尔FZ3深度学习计算试用体验】开箱&上电&开发环境搭建&USBHID驱动初尝(失败)

,这个接口可厉害了,可以接市面上常规的PCIE转接,比如PCIE转光纤口,PCIE加速,PCIE固态,PCIE开发板等,但可惜我手上没有这些设备,之后有机会再试一下咯。板子支持三种启动方式,分别

donatello1996 2020-12-13 12:24:32

【米尔FZ3深度学习计算免费试用】+疲劳驾驶检测系统第一部分环境准备

本次采用python3.5+opencv3.3.0+dlib+numpy实现其中python3.5+opencv3.3.0+numpy开发板已经集成了,不需要自己装,主要自己装的就是dlib这个人脸识别库。首先要说明的是系统里有两个版本的python,一个是2.7的一个是3.5,默认3.5的。我们要改一下默认版本,改一下软链接就可以了。第二步升级一下pip,不能使用 pip install --upgrade pip,要使用easy_install pip来更新pip第三步安装dlib人脸识别库。使用pip install dlib便可以安装dlib。另外多说几句:目前这个开发板预装的库(*.so)非常有限,很多库要自己编译安装,这就造成python能装的库非常有限,这次能装上dlib实属万幸,比如我还想装一下scipy库,就装不上,因为没有openblas 、atlas、lapack的动态库,所以无法安装scipy库。有些库是c写的,可以自己编译安装,而lapack是Fortran写的,无法在开发板上编译安装,比较棘手。

猎国倾城 2021-01-10 16:36:47

【米尔FZ3深度学习计算免费试用】+疲劳驾驶检测系统第三部分嘴巴状态识别

` 本帖最后由 猎国倾城 于 2021-2-5 11:20 编辑 打哈欠也是判断疲劳程度的指标之一,可以通过打哈欠来判断驾驶员的疲劳程度,判断嘴巴的状态其实和眼睛的算法是一样的,原理不在细讲,嘴巴参考点选取如下:效果:************************************分界线*************************************本来想用视频,但是开发板上的GStreamer有问题,导致OpenCV无法解码视频,所以退而求其次用图片做了,已经编译安装了,但解码还是有问题,可能是Gst的版本问题,我安装的是1.12.2的,各位可以试试其他版本的。附gst-libav安装教程:源码:https://gstreamer.freedesktop.org/src/gst-libav/`

猎国倾城 2021-01-10 19:20:36

【米尔FZ3深度学习计算试用体验】双端口UDP通信实现图片文件的收发&物品检测例程的解读与移植

本帖最后由 donatello1996 于 2021-1-13 17:25 编辑 UDP通信调通之后用于传输各种各样的数据非常方便,不管是直接传缓存数组,文件,还是字符都非常简便,而UDP还有一个非常好用的功能那就是多端口实现同机器多应用通信,每个端口所通信的信息互不干扰,代码也非常好处理,这个就是我写好的代码:int UDP_Send_Picture(socklen_t socket_send,struct sockaddr_in addr,char* filename){struct Package{int length;char data[UDP_FRAME_LEN];int fin;}picture;socklen_t addr_len = sizeof(struct sockaddr_in);FILE *fp;fp = fopen(filename, "rb+");printf("fp = %d\n",fp);fseek(fp, 0, SEEK_END);int fend = ftell(fp);fseek(fp, 0, 0);int sendbytes;printf("fend = %d\n",fend);while(fend > 0){memset(picture.data, 0, sizeof(picture.data));fread(picture.data, UDP_FRAME_LEN, 1, fp);if(fend >= UDP_FRAME_LEN){picture.length = UDP_FRAME_LEN;picture.fin = 0;}else{picture.length = fend;picture.fin = 1;}//printf("sendbytes = %d \n",sendbytes);sendbytes = sendto(socket_send, (char *)&picture, sizeof(struct Package), 0, (struct sockaddr*)&addr,addr_len);if(sendbytes == -1){printf("Send Picture Failed!d\n");return -1;}else{fend -= UDP_FRAME_LEN;}}fclose(fp);}int UDP_Recv_Picture(socklen_t socket_recv,struct sockaddr_in addr,char* filename){struct Package{int length;char data[UDP_FRAME_LEN];int fin;}picture;FILE* fp;bool flag = true;picture.fin = 0;socklen_t addr_len = sizeof(struct sockaddr_in);while(!picture.fin){memset(picture.data, 0, sizeof(picture.data));int recvbytes = recvfrom(socket_recv, (char*)&picture, sizeof(struct Package),0, (struct sockaddr *)&addr, &addr_len);printf("recvbytes = %d \n",recvbytes);if(flag){if(!(fp = fopen(filename, "wb+"))){printf("Open image Failed!\n");}flag = false;}if(recvbytes == 0)break;fwrite(picture.data, picture.length, 1, fp);}printf("Socket Server: IP: %s Connected!\n", inet_ntoa(addr.sin_addr));char sendbuffer[256] = "Server Response";int sendbytes = sendto(socket_recv, sendbuffer, sizeof(sendbuffer), 0, (struct sockaddr *)&addr, addr_len);fclose(fp);}int UDP_Send_Found(socklen_t* socket_found,struct sockaddr_in *addr,char* ip,int port){*socket_found = socket(AF_INET, SOCK_DGRAM, 0);if(*socket_found == (~0)){printf("Create Socket Failed! \n");return -1;}addr->sin_family = AF_INET;addr->sin_addr.s_addr = inet_addr(ip);addr->sin_port = htons(port);memset(addr->sin_zero, 0, 8);}int UDP_Recv_Found(socklen_t* socket_found,struct sockaddr_in *addr,int port){ *socket_found = socket(AF_INET, SOCK_DGRAM, 0); if(*socket_found == (~0)) {printf("Create Socket Failed! \n");return -1; } //bzero(*addr, sizeof(addr)); addr->sin_family = AF_INET; addr->sin_addr.s_addr = htonl(INADDR_ANY); addr->sin_port = htons(port); if (bind(*socket_found,(struct sockaddr *)addr, sizeof(sockaddr_in))

donatello1996 2021-01-12 10:35:13

【米尔FZ3深度学习计算试用体验】+基于百度EasyDL电动车识别系统第一部分

这次图片有点多,我拿word写的,不敢在拿论坛直接发内容了,害怕被吞,白干。文章CSDN链接:h/t/t/p/s://blog.csdn.net/qq_15242011/article/details/111182648可以直接下载附件:

猎国倾城 2020-12-14 18:31:03

【米尔FZ3深度学习计算试用体验】+基于百度EasyDL电动车识别系统第二部分

文章CSDN:https://blog.csdn.net/qq_15242011/article/details/111300494

猎国倾城 2020-12-21 20:52:25

【米尔FZ3深度学习计算试用体验】UDP&TCP双模式读取摄像头图像并动态显示

` 本帖最后由 donatello1996 于 2021-1-11 00:52 编辑 既然是要做图像分类识别,那么从摄像头获取图像那也是必须的,电脑端的QT上位机通过TCP或者UDP两种协议从开发板处获得连续帧图像,这里有三种方式可以实现,第一种就是直接在开发板上生成每一帧的图片,QT上位机直接通过FTP方式读取图片,这个直接用传统的FTP协议即可实现,不需要做任何传输处理,图片可编程性最低,因为图片文件是在板子上面的,只能在板子上面做图片编程,而且QT上位机读取图片也会出现冲突的情况;第二种方式也是直接在开发板上生成每一帧的图片,通过TCP或者UDP协议将图片切割传输,每一帧传输1024个字节,再在QT上位机上组合生成图片,这种方法同样图片可编程性很低,不过还是可以可以直接读取图片信息的,因为这种方式会在QT上位机上生成图片文件,就可以进行对图片的编程了;最后一种方式是直接通过TCP或UDP协议传输图片的点阵数据部分,也就是不以文件形式传输,相当于传输一个二维数组,这种方式可编程性最高,但是TCP方式会出现延迟或图片撕裂现象,最好是用UDP实现,UDP方式传输图片缓存这个会在我之后的帖子中写出来。首先是板子的代码,这里我的设计是板子做TCP客户端以及UDP发送端,并封装好了 TCP_Client_Found()和UDP_Found()函数,这两个函数的作用就是初始化socket接口以及sockfd套接字文件符(socklen_t型),对于TCP通信,只需要传出sockfd参数即可,将socket_found变量以指针方式传出,因为不是TCP服务器端,因此不需要bind() accept()等操作,只需要socket()和connect()操作:int TCP_Client_Found(socklen_t* socket_found,char* ip,int port){ struct sockaddr_in servaddr; if( (*socket_found = socket(AF_INET,SOCK_STREAM,0)) == -1) {printf(" create socket error: %s (errno :%d) ",strerror(errno),errno);return -1;} memset(&servaddr,0,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(port); servaddr.sin_addr.s_addr=inet_addr(ip); if(connect(*socket_found , (struct sockaddr*)&servaddr,sizeof(servaddr)) <0) {printf(" connect socket error: %s(errno :%d) ",strerror(errno),errno);return -2; } return 0;}对于UDP通信的话传出参数就多了一个sockaddr_in地址信息,因为UDP通信的靶向信息是存放在addr结构体里面的,同样是使用指针方式进行传出:int UDP_Found(socklen_t* socket_found,struct sockaddr_in *addr,char* ip,int port){ *socket_found = socket(AF_INET, SOCK_DGRAM, 0); if(*socket_found == (~0)) {printf("Create Socket Failed! ");return -1; } addr->sin_family = AF_INET; addr->sin_addr.s_addr = inet_addr(ip); addr->sin_port = htons(port); memset(addr->sin_zero, 0, 8); }传输文件的方式借用了网上代码,大致就是用FILE指针读取文件,将文件切片读取并传输,除去最后一片外,所有切片均是相同大小,文件信息存放在Package结构体中:int TCP_Send_Picture(socklen_t socket_send,char* filename){ struct Package {int length;char data[TCP_FRAME_LEN];int fin; }picture; socklen_t addr_len = sizeof(struct sockaddr_in); FILE *fp; fp = fopen(filename, "rb+"); printf("fp = %d ",fp); fseek(fp, 0, SEEK_END); int fend = ftell(fp); fseek(fp, 0, 0); int sendbytes; printf("fend = %d ",fend); while(fend > 0) {memset(picture.data, 0, sizeof(picture.data));fread(picture.data, TCP_FRAME_LEN, 1, fp);if(fend >= TCP_FRAME_LEN){picture.length = TCP_FRAME_LEN;picture.fin = 0;}else{picture.length = fend;picture.fin = 1;}printf("sendbytes = %d ",sendbytes);sendbytes = send(socket_send, (char *)&picture, sizeof(struct Package), 0);if(sendbytes == -1){printf("Send Picture Failed!d ");return -1;}else{fend -= TCP_FRAME_LEN;} }}UDP方式基本相同,比TCP方式少了accept()握手操作:int UDP_Send_Picture(socklen_t socket_send,struct sockaddr_in addr,char* filename){ struct Package {int length;char data[UDP_FRAME_LEN];int fin; }picture; socklen_t addr_len = sizeof(struct sockaddr_in); FILE *fp; fp = fopen(filename, "rb+"); printf("fp = %d ",fp); fseek(fp, 0, SEEK_END); int fend = ftell(fp); fseek(fp, 0, 0); int sendbytes; printf("fend = %d ",fend); while(fend > 0) {memset(picture.data, 0, sizeof(picture.data));fread(picture.data, UDP_FRAME_LEN, 1, fp);if(fend >= UDP_FRAME_LEN){picture.length = UDP_FRAME_LEN;picture.fin = 0;}else{picture.length = fend;picture.fin = 1;}//printf("sendbytes = %d ",sendbytes);sendbytes = sendto(socket_send, (char *)&picture, sizeof(struct Package), 0, (struct sockaddr*)&addr,addr_len);if(sendbytes == -1){printf("Send Picture Failed!d ");return -1;}else{fend -= UDP_FRAME_LEN;} }}操作函数(分开两个main):TCP方式:int main(int argc, char**argv){ int recvbytes; socklen_t socklen_tcp; TCP_Client_Found(&socklen_tcp,IP_ADDRESS,TCP_PORT); V4L2_Init(CAMERA_DEV); while(1) {V4l2_Grab();Yuyv_2_RGB888(buffers,frame_buffer);Encode_Jpeg(frame_buffer,640,480,"1.jpg");TCP_Send_Picture(socklen_tcp,(char*)"/home/workspace1/1.jpg");sleep(1);// char recvbuffer[256];// recvbytes = recv(socklen_tcp , recvbuffer , sizeof(recvbuffer) , 0);// printf("Server: %s ",recvbuffer);// printf("Please input img to send: "); } close(socklen_tcp); return 0;}UDP方式:int main(int argc, char* argv[]){ int recvbytes; struct sockaddr_in sockaddr_udp; socklen_t socklen_udp,addr_len = sizeof(struct sockaddr_in); UDP_Found(&socklen_udp,&sockaddr_udp,IP_ADDRESS,UDP_PORT); V4L2_Init(CAMERA_DEV); while(1) {V4l2_Grab();Yuyv_2_RGB888(buffers,frame_buffer);Encode_Jpeg(frame_buffer,640,480,"1.jpg");UDP_Send_Picture(socklen_udp,sockaddr_udp,(char*)"/home/workspace1/1.jpg");char recvbuffer[256];recvbytes = recvfrom(socklen_udp , recvbuffer , sizeof(recvbuffer) , 0, (struct sockaddr*)&sockaddr_udp , &addr_len);printf("Server: %s ",recvbuffer);printf("Please input img to send: "); } close(socklen_udp);}电脑QT上位机设计:这是TCP和UDP两种不同传输方式的实际效果:可以看出来UDP方式要比TCP更为顺畅,但是即使是UDP方式显示效果依然很差,这里有两个原因,第一是摄像头太低档,帧生成时间长,即使是在开发板本机输出也快不到哪里去,第二是网络传输文件的速率还可以再改进。`

donatello1996 2021-01-11 00:28:17

加载更多
相关标签