在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【EASY EAI Nano開源套件試用體驗(yàn)】5AI功能測(cè)試之多人臉識(shí)別

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-10-11 16:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文來源電子發(fā)燒友社區(qū),作者:碼農(nóng)愛學(xué)習(xí), 帖子地址:https://bbs.elecfans.com/jishu_2308719_1_1.html



上篇文章,測(cè)試了EASY EAI Nano的人臉檢測(cè)功能,本篇進(jìn)行人臉識(shí)別功能。

人臉檢測(cè),只是將圖像中的人臉的位置檢測(cè)出來,人臉識(shí)別,又增加了一部,在檢測(cè)到人臉后,還要識(shí)別出這張臉是誰的臉。

本篇參考官方文檔:https://www.easy-eai.com/document_details/3/110
1.png

1 API介紹

組件 頭文件以及庫(kù)路徑 描述
系統(tǒng)操作組件 easyeai-api/common_api/system_opt 提供線程操作函數(shù)
攝像頭組件 easyeai-api/peripheral_api/camera 提供攝像頭操作函數(shù)
顯示屏組件 easyeai-api/peripheral_api/display 提供顯示屏操作函數(shù)
平面幾何組件 easyeai-api/algorithm_api/geometry 提供簡(jiǎn)單幾何運(yùn)算函數(shù)
人臉檢測(cè)組件 easyeai-api/algorithm_api/face_detect 提供人臉檢測(cè)操作函數(shù)
人臉校正組件 easyeai-api/algorithm_api/face_alignment 提供人臉校正操作函數(shù)
人臉識(shí)別組件 easyeai-api/algorithm_api/face_recognition 提供人臉識(shí)別操作函數(shù)

主要來看下人臉識(shí)別組件。

face_recognition.h的主要內(nèi)容

//人臉識(shí)別初始化函數(shù)
int face_recognition_init(rknn_context *ctx, const char * path);
?
//人臉識(shí)別執(zhí)行函數(shù)
int face_recognition_run(rknn_context ctx, cv::Mat *face_image, float (*feature)[512]);
?
//人臉識(shí)別特征比對(duì)函數(shù)
float face_recognition_comparison(float *feature_1, float *feature_2, int output_len);
?
//人臉識(shí)別釋放函數(shù)
int face_recognition_release(rknn_context ctx);

一些參數(shù):

  • ctx:輸入?yún)?shù),rknn_context句柄
  • path:輸入?yún)?shù),算法模型路徑
  • face_image:輸入?yún)?shù),圖像數(shù)據(jù)輸入(cv::Mat是Opencv的類型)
  • feature:輸出參數(shù),算法輸出的人臉特征碼

face_alignment.h的主要內(nèi)容

cv::Mat face_alignment(cv::Mat img, cv::Point2f* points);

geometry.h的主要內(nèi)容

typedef struct{
    float x;
    float y;
}fPoint_t;
?
typedef struct{
    float left;   //x1
    float top;    //y1
    float right;  //x2
    float bottom; //y2
}fRect_t;
?
typedef struct{
    int32_t x;
    int32_t y;
}s32Point_t;
?
typedef struct{
    int32_t left;   //x1
    int32_t top;    //y1
    int32_t right;  //x2
    int32_t bottom; //y2
}s32Rect_t;
?
//判斷點(diǎn)是否在矩形內(nèi)
extern bool point_in_rect(s32Point_t point, s32Rect_t rect);
?
//計(jì)算矩形面積
extern int32_t calc_rect_square(s32Rect_t rect);
?
//找出面積較小矩形
extern s32Rect_t min_rect(s32Rect_t rect1, s32Rect_t rect2);
?
//找出面積較大矩形
extern s32Rect_t max_rect(s32Rect_t rect1, s32Rect_t rect2);
?
//判斷矩形是否相交或相切
extern bool rect_is_intersect(s32Rect_t rect1, s32Rect_t rect2);
?
//計(jì)算兩矩形相交部分面積(若相切,面積也為0)
extern int32_t calc_rect_intersect_square(s32Rect_t rect1, s32Rect_t rect2);
?
//計(jì)算[兩矩形相交部分面積]與[小矩形面積]之比
extern double calc_intersect_of_min_rect(s32Rect_t rect1, s32Rect_t rect2);
?
//計(jì)算兩矩形的交并比
extern double calc_intersect_of_union(s32Rect_t rect1, s32Rect_t rect2);

2 代碼分析與修改

主要的修改是將紅外攝像頭采集和活體檢測(cè)去掉,改用外接RGB攝像頭,另外,識(shí)別結(jié)果的顯示,將更多的信息(識(shí)別的id,人物名稱,耗時(shí)等)展示在屏幕上。

2.1 圖像采集與顯示線程(主線程)

重新定義識(shí)別結(jié)果:

typedef struct{
    bool bHasFace;     //是否檢測(cè)到人臉
    bool bMatch;       //是否與注冊(cè)的人臉匹配
    char idStr[128];   //匹配的人臉的id
    char nameStr[128]; //匹配的人臉的名稱
    float similarity;  //匹配的相似度
    uint64_t useTime;  //匹配用時(shí)
    uint32_t x1;       //識(shí)別到的人臉框的4個(gè)點(diǎn)
uint32_t y1;
uint32_t x2;
uint32_t y2;
}Result_t;

官方例程用到了紅外攝像頭,用于活體檢測(cè),此次測(cè)試,為了使用電腦屏幕上的人物圖片進(jìn)行人臉檢測(cè),去掉了活體檢測(cè)功能,并換做只使用USB攝像頭采集RGB圖像進(jìn)行人臉識(shí)別。

主函數(shù)邏輯如下,和上篇進(jìn)行人臉檢測(cè)的代碼邏輯類似。

#define COLOR_RED Scalar(255, 0, 0)
#define COLOR_GREEN Scalar(0, 255, 0)
?
int main(int argc, char **argv)
{
int ret = 0;
    int rgbRet = 0;
    disp_screen_t screen = {0};

char *pRGBbuf = NULL;
int skip = 0;

pthread_t mTid;
Result_t *pResult = NULL;

Mat image;
// 1.打開USB攝像頭
ret = usbcamera_init(USB2_0, USB_DIRECT, CAMERA_WIDTH, CAMERA_HEIGHT, 180);
if (ret) {
printf("error: %s, %dn", __func__, __LINE__);
goto exit_donothing;
}

pRGBbuf = NULL;
pRGBbuf = (char *)malloc(IMAGE_SIZE);
if (!pRGBbuf) {
printf("error: %s, %dn", __func__, __LINE__);
ret = -1;
goto exit_freeusb;
}

// 跳過前10幀
skip = 10;
while(skip--) {
ret = usbcamera_getframe(USB2_0, USB_DIRECT, pRGBbuf);
if (ret) {
printf("error: %s, %dn", __func__, __LINE__);
goto exit_freeusb_freebuf;
}
}
?
// 2.創(chuàng)建識(shí)別線程,以及圖像互斥鎖
pthread_mutex_init(&img_lock, NULL);
pResult = (Result_t *)malloc(sizeof(Result_t));
if(NULL == pResult){
goto exit_free_all;
}
memset(pResult, 0, sizeof(Result_t));
if(0 != CreateNormalThread(detect_thread_entry, pResult, &mTid)){
free(pResult);
}
?
// 3.顯示初始化
    screen.screen_width = SCREEN_WIDTH;
    screen.screen_height = SCREEN_HEIGHT;
    screen.wins[0].enable = 1;
    screen.wins[0].in_fmt = IMAGE_TYPE_RGB888;
    screen.wins[0].in_w = CAMERA_WIDTH;
    screen.wins[0].in_h = CAMERA_HEIGHT;
    screen.wins[0].rotation = 90;
    screen.wins[0].win_x = 0;
    screen.wins[0].win_y = 0;
    screen.wins[0].win_w = 720;
    screen.wins[0].win_h = 1280;
    ret = disp_init_pro(&screen);
if (ret) {
printf("error: %s, %dn", __func__, __LINE__);
goto exit_free_all;
}
    
// 4.(取流 + 顯示)循環(huán)
while(1)
    {
// 4.1、取流
pthread_mutex_lock(&img_lock);
ret = usbcamera_getframe(USB2_0, USB_DIRECT, pRGBbuf);
        if (0 != rgbRet) 
        {
            printf("error: %s, %dn", __func__, __LINE__);
pthread_mutex_unlock(&img_lock);
            continue;
        }
algorithm_image = Mat(CAMERA_HEIGHT, CAMERA_WIDTH, CV_8UC3, pRGBbuf);
image = algorithm_image.clone();
pthread_mutex_unlock(&img_lock);
?
// 4.2、顯示
        if (pResult->bHasFace) //檢測(cè)到人臉
        {
            Scalar color;
            //識(shí)別到已注冊(cè)的人臉
            if(pResult->bMatch)
            {
                color = COLOR_GREEN;
                cv::putText(image, std::string("idStr: ") + std::string(pResult->idStr), cv::Point2f(30, 50), cv::FONT_HERSHEY_SIMPLEX, 1.45, CV_RGB(255,0,0),3.0);
                cv::putText(image, std::string("name: ") + std::string(pResult->nameStr), cv::Point2f(30, 100), cv::FONT_HERSHEY_SIMPLEX, 1.45, CV_RGB(255,0,0),3.0);
                cv::putText(image, std::string("similarity: ") + std::to_string(pResult->similarity), cv::Point2f(30, 150), cv::FONT_HERSHEY_SIMPLEX, 1.45, CV_RGB(255,0,0),3.0);
                cv::putText(image, std::string("use time: ") + std::to_string(pResult->useTime), cv::Point2f(30, 200), cv::FONT_HERSHEY_SIMPLEX, 1.45, CV_RGB(255,0,0),3.0);
            }
            else
            {
                color = COLOR_RED;
                cv::putText(image, std::string("unknow face"), cv::Point2f(30, 50), cv::FONT_HERSHEY_SIMPLEX, 1.45, CV_RGB(0,0,255),3.0);
            }
            // 畫框
            rectangle(image, Point(pResult->x1, pResult->y1), Point(pResult->x2, pResult->y2), color, 3);
        }
        disp_commit(image.data, IMAGE_SIZE);

        usleep(20*1000);
}
?
exit_free_all:
pthread_mutex_destroy(&img_lock);
exit_freeusb_freebuf:
free(pRGBbuf);
pRGBbuf = NULL;
exit_freeusb:
usbcamera_exit(USB2_0, USB_DIRECT);
exit_donothing:
    return ret;
}

2.2 人臉識(shí)別處理

去掉紅外攝像頭的活體檢測(cè)邏輯,只使用USB攝像頭的圖像進(jìn)行人臉識(shí)別
2.png

void *detect_thread_entry(void *para)
{
int ret;
uint64_t start_time,end_time;
Result_t *pResult = (Result_t *)para;
    
// 初始化人臉檢測(cè)
rknn_context detect_ctx;
std::vector detect_result;
Point2f points[5];
    s32Rect_t rgbRect;
printf("face detect init!n");
ret = face_detect_init(&detect_ctx, "./face_detect.model");
if( ret < 0)
    {
printf("face_detect fail! ret=%dn", ret);
return NULL;
}
    
// 初始化人臉識(shí)別
rknn_context recognition_ctx;
float face_feature[512];
printf("face recognition init!n");
ret =  face_recognition_init(&recognition_ctx, "./face_recognition.model");
if( ret < 0)
    {
printf("face_recognition fail! ret=%dn", ret);
return NULL;
}
?
    // 初始化數(shù)據(jù)庫(kù)
    database_init();
    // 同步數(shù)據(jù)庫(kù)所有數(shù)據(jù)到內(nèi)存
faceData_t *pFaceData = (faceData_t *)malloc(MAX_USER_NUM * sizeof(faceData_t));
    memset(pFaceData, 0, MAX_USER_NUM * sizeof(faceData_t));
    int peopleNum = database_getData_to_memory(pFaceData);

// 初始化按鍵事件
keyEvent_init();
set_event_handle(dataBase_opt_handle);
    
Mat image;
Mat face_algin;
float similarity; //特征值相似度比對(duì)
int face_index = 0;
while(1)
{
if(g_delete_all_record)
        {
g_delete_all_record = false;
// 刪除庫(kù)
database_delete_all_record();
// 重載數(shù)據(jù)庫(kù)
peopleNum = database_getData_to_memory(pFaceData);
}

        if(algorithm_image.empty()) 
        {
usleep(5);
            continue;
        }

pthread_mutex_lock(&img_lock);
image = algorithm_image.clone();
pthread_mutex_unlock(&img_lock);
        
// 人臉檢測(cè),計(jì)算出人臉位置
ret = face_detect_run(detect_ctx, image, detect_result);
if(ret <= 0)
        {
// 識(shí)別結(jié)果數(shù)據(jù),復(fù)位
memset(pResult, 0 , sizeof(Result_t));
g_input_feature = false;
usleep(1000);
continue;
}
        
        
        rgbRect.left   = (uint32_t)(detect_result[0].box.x);
        rgbRect.top    = (uint32_t)(detect_result[0].box.y);
        rgbRect.right  = (uint32_t)(detect_result[0].box.x + detect_result[0].box.width);
        rgbRect.bottom = (uint32_t)(detect_result[0].box.y + detect_result[0].box.height);
pResult->bHasFace = true;
pResult->x1 = rgbRect.left;
pResult->y1 = rgbRect.top;
pResult->x2 = rgbRect.right;
pResult->y2 = rgbRect.bottom;
for (int i = 0; i < (int)detect_result[0].landmarks.size(); ++i) {
points[i].x = (int)detect_result[0].landmarks[i].x;
points[i].y = (int)detect_result[0].landmarks[i].y;
}
        
// 人臉校正(從圖像中裁出人臉)
face_algin = face_alignment(image, points);
        
// 人臉識(shí)別,計(jì)算特征值
start_time = get_timeval_ms();
face_recognition_run(recognition_ctx, &face_algin, &face_feature);
end_time = get_timeval_ms();
        pResult->useTime = end_time - start_time;
printf("n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>n");
printf("face_recognition_run use time: %llun", pResult->useTime); // 【打印耗時(shí)】
        
        // 特征值比對(duì),得出id
similarity = -0.5;
if(peopleNum > 0)
        {
for(face_index = 0; face_index < peopleNum; ++face_index)
            {
similarity = face_recognition_comparison(face_feature, (float *)((pFaceData + face_index)->feature), 512);
if(similarity > 0.5) 
                {
                    break;
                }
}
}
        pResult->similarity = similarity;
printf("similarity:%fn", similarity); //【打印得分】
if((face_index < peopleNum)&&(similarity > 0.5))
        {
            pResult->bMatch = true;
            
// 用id,找名字
            memcpy(pResult->idStr, (pFaceData + face_index)->id, 128);
printf("idStr : %sn", pResult->idStr); //【打印id】
database_id_is_exist(pResult->idStr, pResult->nameStr, sizeof(pResult->nameStr));
printf("person name : %sn", pResult->nameStr); //【打印名字】

            // 按鍵被按下,更新特征值
if(g_input_feature)
            {
g_input_feature = false;
// 特征值入庫(kù)
database_add_record(pResult->idStr, pResult->nameStr, (char *)face_feature, sizeof(face_feature));
// 重載數(shù)據(jù)庫(kù)
peopleNum = database_getData_to_memory(pFaceData);
}
}
        else
        {
            pResult->bMatch = false;
            
// 按鍵被按下,錄入特征值
if(g_input_feature)
            {
g_input_feature = false;
char idStr[32]={0};
char nameStr[32]={0};
sprintf(idStr, "%05d", face_index+1);
sprintf(nameStr, "people_%d", face_index+1);
// 特征值入庫(kù)
database_add_record(idStr, nameStr, (char *)face_feature, sizeof(face_feature));
// 重載數(shù)據(jù)庫(kù)
peopleNum = database_getData_to_memory(pFaceData);
}
}
        usleep(16*1000);
}

/* 數(shù)據(jù)庫(kù)內(nèi)存數(shù)據(jù)釋放 */
free(pFaceData);
/* 數(shù)據(jù)庫(kù)釋放 */
    database_exit();
/* 人臉識(shí)別釋放 */
face_recognition_release(recognition_ctx);
/* 人臉檢測(cè)釋放 */
face_detect_release(detect_ctx);
return NULL;
}

3 測(cè)試

測(cè)試視頻見文章底部視頻,這里再放一張測(cè)試圖片:
3.png

4 總結(jié)

本篇介紹了EASY EAI Nano的人臉識(shí)別功能,與上篇的人臉檢測(cè)相比,在檢測(cè)到有人臉的基礎(chǔ)上,通過先錄入人臉顯示到數(shù)據(jù)庫(kù),可以對(duì)比當(dāng)前識(shí)別的誰的臉,實(shí)際測(cè)試,去掉活體檢測(cè)功能后,通過外接USB攝像頭來識(shí)別電腦屏幕上的3個(gè)人的多張不同人臉,可以分辨出不同人的人臉。


-----------



附上EASY EAI Nano多人臉識(shí)別測(cè)試【視頻】,詳見作者原帖子內(nèi)容。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    35041

    瀏覽量

    279166
  • 人臉識(shí)別
    +關(guān)注

    關(guān)注

    77

    文章

    4081

    瀏覽量

    84197
  • 靈眸
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    3307
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】人臉識(shí)別提升

    【前言】【新提醒】【EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】人臉識(shí)別體驗(yàn) -
    發(fā)表于 07-05 15:21

    EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】EASY-EAI-Toolkit通用組件體驗(yàn)

    -Toolkit modbus組件源碼放在EASY-EAI-Toolkit-3576/Demos/common-modbus/ 目錄下。 先修改slave的源碼,設(shè)置為RTU運(yùn)行模式。 然后保存退出,編譯源碼: 四、功能測(cè)試
    發(fā)表于 07-04 23:38

    EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】EASY-EAI-Toolkit初體驗(yàn)

    的軟件開發(fā)包,旨在簡(jiǎn)化 AI算法 的開發(fā)、轉(zhuǎn)換和部署過程。? EASY-EAI-Toolkit包含多種算法組件,如 人臉檢測(cè) 、 人臉識(shí)別
    發(fā)表于 06-28 21:21

    EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】開箱和固件燒錄更新體驗(yàn)

    /A) 看看系統(tǒng)版本: root@EASY-EAI-ORIN-NANO:/# uname -a Linux EASY-EAI-ORIN-NANO 6.1.99 #5 SMP Wed Jun 18 15
    發(fā)表于 06-26 23:41

    EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】人臉識(shí)別體驗(yàn)

    /nfs -o nolock 【注】此處需要插上網(wǎng)線連上網(wǎng),要不提示連接服務(wù)器出錯(cuò)。 3、進(jìn)入人臉識(shí)別目錄,并執(zhí)行./build.sh編譯: root@EASY-EAI-ORIN-NANO:/home
    發(fā)表于 06-26 06:54

    EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】--開發(fā)板開箱了解

    感謝靈眸科技與論壇提供的開發(fā)板與平臺(tái)。EASY EAI Orin-Nano開發(fā)板實(shí)物如下: EASY EAI Orin
    發(fā)表于 06-25 23:32

    EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】01-開箱報(bào)告及開發(fā)環(huán)境準(zhǔn)備

    前言 首先要特別感謝發(fā)燒友論壇和廣州靈眸科技給我們提供的本次EASY EAI Orin Nano開發(fā)板試用機(jī)會(huì), 在申請(qǐng)通過后很快就收到順豐郵過來的板子,這次發(fā)燒友論壇提供了很多不錯(cuò)的
    發(fā)表于 06-24 19:04

    EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】安裝nfs服務(wù)器

    /developer/nfsroot * developer@EASY-EAI-Develop:~$ 測(cè)試: 使用typec連上開發(fā)板后,執(zhí)行adb shell登錄開發(fā)板。 在Desktop中創(chuàng)建nfs 然后
    發(fā)表于 06-22 17:32

    EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】開發(fā)環(huán)境準(zhǔn)備

    【前言】 首先感謝電子發(fā)燒友論壇以及靈眸科技給示了我這次非常難得的【EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】的機(jī)會(huì),在進(jìn)行評(píng)測(cè)之前首先需要?jiǎng)?chuàng)建開發(fā)環(huán)境。 靈眸科技有非常詳細(xì)
    發(fā)表于 06-22 16:42

    基于RK3576處理器,EASY EAI Orin Nano開發(fā)板免費(fèi)試用

    EASY EAI Orin Nano是廣州靈眸科技有限公司的旗艦級(jí)硬件產(chǎn)品?;谌鹦疚⒌腞K3576處理器設(shè)計(jì),集成了4個(gè)Cortex-A72和4個(gè)Cortex-A53及支持NEON指令集,支持
    的頭像 發(fā)表于 06-09 15:01 ?440次閱讀
    基于RK3576處理器,<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b> Orin <b class='flag-5'>Nano</b>開發(fā)板免費(fèi)<b class='flag-5'>試用</b>

    無需接線!1個(gè)底板可測(cè)試海凌科5人臉識(shí)別模塊

    買一個(gè)人臉識(shí)別模塊就要買不同的測(cè)試底板?試用一款新的人臉識(shí)別模塊,每次都要重新接線?海凌科通用型
    的頭像 發(fā)表于 05-12 12:06 ?314次閱讀
    無需接線!1個(gè)底板可<b class='flag-5'>測(cè)試</b>海凌科<b class='flag-5'>5</b>款<b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b>模塊

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】人臉識(shí)別

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】人臉識(shí)別 本文介紹了幸狐 Omni3576 邊緣計(jì)算套件結(jié)合 Retinaface 算法實(shí)現(xiàn)
    發(fā)表于 04-01 21:46

    安信可AI人臉識(shí)別方案

    作為神仙世界的高科技,"無接觸式開鎖",人臉識(shí)別技術(shù)也被廣泛應(yīng)用在現(xiàn)代生活中,安信可也有AI人臉識(shí)別方案!
    的頭像 發(fā)表于 02-25 14:39 ?420次閱讀
    安信可<b class='flag-5'>AI</b><b class='flag-5'>人臉</b><b class='flag-5'>識(shí)別</b>方案

    NVIDIA發(fā)布小巧高性價(jià)比的Jetson Orin Nano Super開發(fā)者套件

    Nano Super開發(fā)者套件體積小巧,僅相當(dāng)于一個(gè)手掌大小,但其功能卻異常強(qiáng)大。該套件旨在為商業(yè)AI開發(fā)者、科技愛好者以及學(xué)生等各類用戶
    的頭像 發(fā)表于 12-19 11:28 ?1070次閱讀

    基于迅為RK3568/RK3588開發(fā)板的AI圖像識(shí)別方案

    01_官方模型測(cè)試 02_人臉識(shí)別 03_口罩檢測(cè) 04_工地防護(hù) 05_撲克牌識(shí)別 06_手掌關(guān)鍵點(diǎn)檢測(cè) 07_人臉特征點(diǎn)檢測(cè)
    發(fā)表于 08-28 09:50
    主站蜘蛛池模板: 粗又长好猛好爽 | 久久精品国产亚洲婷婷 | 性欧美1819 | 萌白酱白丝护士服喷水铁牛tv | 深夜视频免费看 | 欧美三级视频网站 | 美女操网站 | 国产99久久九九精品免费 | 亚洲69视频 | 午夜资源网 | 色视频在线 | 亚洲 欧美 自拍 另类 欧美 | 男女交性视频免费 | 18岁女人毛片 | 免费在线观看大片影视大全 | 六月婷婷在线观看 | 在线观看永久免费视频网站 | 中文字幕第15页 | 久久lu| 日本xxxxxxx69xx| 欧美性视频一区二区三区 | 中文免费观看视频网站 | 午夜看大片 | 色婷婷亚洲精品综合影院 | 高清配种视频xxxxx | 国产成人亚洲影视在线 | 国产色综合一区二区三区 | 亚洲a成人 | 国产黄色三级三级三级 | 欧美一区二区三区不卡片 | 亚洲精品美女 | yy4080一级毛片免费观看 | 亚洲不卡视频 | 在线免费视频国产 | 久久久久久午夜精品 | 亚洲h视频 | 天天干天天操天天透 | 中文字幕不卡在线播放 | 亚洲婷婷综合色高清在线 | 免费在线黄网站 | 激情有码|