查看: 2637|回复: 0

[评测分享] 【米尔FZ3深度学习计算卡】深度学习DEMO

[复制链接]
  • TA的每日心情
    慵懒
    2024-5-31 23:20
  • 签到天数: 302 天

    连续签到: 2 天

    [LV.8]以坛为家I

    发表于 2020-11-30 21:33:52 | 显示全部楼层 |阅读模式
    分享到:
    FZ3深度学习镜像是由百度提供的,其推理加速功能由一个FPGA软核提供,该软核也是基于百度的深度学习框架“飞桨”定制的。
    该平台可以通过百度大脑的工具( EasyDL/AIStudio)进行开发。

    (一)EasyDL/AIStudio
    1-概念

    实际上EasyDL/AIStudio这两者概念有所重叠,都提供了一个深度学习数据集训练环境和深度学习应用构建平台。
    但大致上分工明确,AIStudio定位在线实训平台,提供一体化深度学习编程环境,以及数据集汇集、竞赛等。
    而EasyDL则是一个快速的模型部署平台。
    2-区别

    在我的理解,两者最大的区别在于AIStudio更偏重于深度学习的底层,包含但不限于图像识别和音频识别,可以广泛地应用于各种领域,比如可以做情感分析的深度学习。
    而EasyDL则侧重于应用,注重于AI成熟的图像视频、文本语音的深度学习应用,提供快速的AI应用开发途径。
    (二)深度学习DEMO
    FZ3开发板出厂内置了深度学习的DEMO,分别是分类模型(classification)和目标检测(detection)
    深度截图_选择区域_20201130211253.png
    这分别对应了EasyDL平台的两个拳头产品:物体检测模型、图像分类。
    深度截图_选择区域_20201130211404.png


    (三)分类模型(classification)-图像分类
    分类模型指对图片进行分类,可以识别一张图整体是什么物体/状态/场景。
    其分类的结果是整张图片进行一个标注。


    classification的demo是识别怡宝水瓶子,搜了一下家,刚好发现个空的怡宝瓶:
    42.gif

    识别到怡宝瓶的时候标签变为cestban:
    44.png
    准确率有92.5,实时直观感受还行。


    (四)目标检测(detection)-物体检测模型
    目标检测指对图片内的物体进行检测,可以检测出图片里面多个目标物体名称、位置。
    实时的demo是检测螺丝,一下子没找到螺丝来试,先看个样子吧。

    32.gif

    (五)停止demo
    demo并没有考虑停止的问题,从代码来看:
    1. int main(int argc, char* argv[]){
    2.     std::string path;
    3.     if (argc > 1) {
    4.         path = argv[1];
    5.     } else {
    6.         path = "../configs/config.json";
    7.     }
    8.     json j;
    9.     std::ifstream is(path);
    10.     is >> j;

    11.     init(j);
    12.     signal(SIGINT, signal_handler);

    13.     // 为相机开启一个新的线程
    14.     // std::thread task_capture(capture);
    15.     // 预测线程
    16.     std::thread task_predict(predict);
    17.     std::thread task_cvcap(cv_getpic_loop);
    18.    
    19.     cv::namedWindow(name, CV_WINDOW_NORMAL);
    20.     cv::setWindowProperty(name, CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
    21.     // moveWindow(name, 20, 20);
    22.     usleep(2000); // 等待窗口初始化
    23.     while (true) {
    24.         cv::Mat mat = g_dis_queue.Take();
    25.         /* if (g_display_frame.cols == 0) {
    26.             // std::cout<< "FIXME: shouldn't be 0 of image's cols" << std::endl;
    27.             usleep(40000);
    28.             continue;
    29.         } */
    30.         // g_mtx.lock();
    31.         for (int i = 0; i < g_results.size(); ++i) {
    32.             SSDResult r = g_results[i];
    33.             cv::Rect rect(r.x, r.y,r.width,r.height);
    34.             // cv::rectangle(g_display_frame, rect, Scalar(0,0,224), 2);
    35.             cv::rectangle(mat, rect, Scalar(0,0,224), 2);
    36.         }
    37.         imshow(name, mat);
    38.         // imshow(name, g_display_frame);
    39.         // g_mtx.unlock();
    40.         cv::waitKey(10);
    41.     }
    42.     // task_capture.join();
    43.     task_cvcap.join();
    44.     task_predict.join();
    45.     return 0;
    46. }
    复制代码



    主函数里面只有一个waitkey,也没有判定key是什么类型的,根据类型进行停止。似乎并没有考虑停止的问题,因此需要在SSH远程kill这个线程:
    51.gif

    深度截图_mate-terminal_20201129183126.png







    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 17:06 , Processed in 0.116420 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.