Toybrick

楼主: troy

Rock-X AI组件库1.2.0 SDK发布(C&&Python)

 

jwseey2019

注册会员

积分
120
发表于 2020-2-19 15:06:52 | 显示全部楼层
troy 发表于 2020-2-1 19:55
正面人脸即可,比如你想识别两个人,那可以拍两张人脸,AAA.jpg和BBB.jpg。按照说明打包成数据库,即可识 ...

有没有办法排查或调试的,我的人脸文件夹下只有一张图片,data/image/beauty.jpg,而且就是一个人脸,而    max_face = get_max_face(results)
    print("alex====line: %d, max_face:%s"%(sys._getframe().f_lineno, max_face))
打印出来的结果如下:
max_face:Object(id=0, cls_idx=0, box=Rect(left=3, top=4, right=163, bottom=188), score=0.9992316961288452)

ret, align_img = face_landmark5_handle.rockx_face_align(img, img_w, img_h,
                                                            RockX.ROCKX_PIXEL_FORMAT_BGR888,
                                                            max_face.box, None)
这一句执行也没报错,打印出来内容如下
align_img:[[[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

[[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

[[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

...

[[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

[[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

[[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]]
但是这一句        ret, face_feature = face_recog_handle.rockx_face_recognize(align_img)
传递进去就出问题了



回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-2-19 15:42:03 | 显示全部楼层
troy 发表于 2020-2-1 19:55
正面人脸即可,比如你想识别两个人,那可以拍两张人脸,AAA.jpg和BBB.jpg。按照说明打包成数据库,即可识 ...

再请教一个问题,之前老的sdk里的sample都分了主动模式和被动模式,主动模式是透过socket把frame传递给rk1808计算棒,得到结果再透过socket送json回来,可是sdk1.1.2里似乎已经找不到类似的sample,是否已经放弃原来的那种做法?还是仍然可以使用
回复

使用道具 举报

troy

版主

积分
1134
 楼主| 发表于 2020-2-20 08:50:08 | 显示全部楼层
jwseey2019 发表于 2020-2-19 15:42
再请教一个问题,之前老的sdk里的sample都分了主动模式和被动模式,主动模式是透过socket把frame传递给rk ...

1.在你的环境下,官方代码是否正常。你自己是否有修改过代码,使用的图片是什么样子,是否可以打包发出来看一下。从你打印的信息来看align_img是空的。
2。仍然可以使用,最开始的时候,sdk没有提供python库,我们部门内临时写了个python的sdk调用,输出直接就是json格式。在1.1.0之后,sdk自带了python库,我对原理的全平台演示代码进行了升级,修改成使用sdk自带python库,参考帖子http://t.rock-chips.com/forum.php?mod=viewthread&tid=800&extra=
回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-2-20 09:20:37 | 显示全部楼层
troy 发表于 2020-2-20 08:50
1.在你的环境下,官方代码是否正常。你自己是否有修改过代码,使用的图片是什么样子,是否可以打包发出来 ...

感谢回复,我对官方代码的修改只有一处,就是把    parser.add_argument('-c', '--camera', help="camera index", type=int)改为    parser.add_argument('-c', '--camera', help="camera index", type=str),其他都是原有代码,我的运行方式如下
cd ~/RockX_SDK_V1.1.2_20191218/python/test/camera目录下
直接用python3 rockx_face_recog.py -b t.db -i data/image/,指定人脸资料库的路径和要执行的py文件以生产t.db,这个过程就会出现段错误
我用的人脸资料库看附件


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-2-20 09:24:06 | 显示全部楼层
另外我觉得和align_img内容无关,我后来用rockx_face_analyze.py试验了一下,在这个文件中加入了一句            ret, face_feature = face_recog_handle.rockx_face_recognize(align_img),仍然出现段错误,加入这一句之前的测试视频,是可以准确运行得到年龄和性别输出的。

回复

使用道具 举报

troy

版主

积分
1134
 楼主| 发表于 2020-2-20 10:52:04 | 显示全部楼层
jwseey2019 发表于 2020-2-20 09:24
另外我觉得和align_img内容无关,我后来用rockx_face_analyze.py试验了一下,在这个文件中加入了一句       ...

你的人脸图像是有问题的,正常拍摄半身照即可。
生成数据库主要会做以下几步操作
1.人脸检测
2.人脸对齐
3.人脸添加到数据库中

由于你放置的是整个人脸,人脸区域占了全部的画面,会导致人脸检测识别不到。人脸检测要求人脸在画面的占比不能太高,否则会识别不到人脸。重新拍张半身照,再尝试即可。
回复

使用道具 举报

jwseey2019

注册会员

积分
120
发表于 2020-2-20 14:25:05 | 显示全部楼层
本帖最后由 jwseey2019 于 2020-2-20 14:27 编辑
troy 发表于 2020-2-20 10:52
你的人脸图像是有问题的,正常拍摄半身照即可。
生成数据库主要会做以下几步操作
1.人脸检测

不是这个原因,我从网上找的半身照也不行。检测对齐都没问题,就是最后一步识别出的问题。这是对齐后的align img的内容
align_img =  [[[254 249 255]
  [254 249 255]
  [253 248 254]
  ...
  [183 215 235]
  [182 214 235]
  [181 213 234]]


[[254 249 255]
  [254 249 255]
  [253 248 254]
  ...
  [183 215 235]
  [182 214 235]
  [182 214 235]]


[[255 250 255]
  [255 250 255]
  [254 249 255]
  ...
  [182 214 234]
  [182 214 235]
  [182 214 235]]


...


[[ 12   3  34]
  [ 17   8  39]
  [ 15   6  35]
  ...
  [ 43  17  42]
  [ 54  29  53]
  [ 65  39  64]]


[[ 14   5  36]
  [ 16   7  38]
  [ 16   7  37]
  ...
  [ 46  23  46]
  [ 54  32  55]
  [ 53  31  54]]


[[ 17   8  39]
  [ 15   6  37]
  [ 16   7  38]
  ...
  [ 42  23  45]
  [ 52  32  54]
  [ 51  32  54]]]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

lodestar

wiki编辑

积分
284
发表于 2020-2-20 16:47:45 | 显示全部楼层
您好,在3399pro板子上用Python接口进行人脸特征值提取的时候,昨天和今天16点前都是好的,但是突然就一直报“Segmentation fault”错,跟踪代码是在提取特征值的时候出现的。这部分是和你们给的例子一样的,麻烦帮忙看看是什么问题

代码如下:报错代码位置有标红

ret, results = face_det_handle.rockx_face_detect(frame, in_img_w, in_img_h, RockX.ROCKX_PIXEL_FORMAT_BGR888)
end = time.time()
print('face detect use: ', end - start)

index = 0
for result in results:
    if result.score < 0.97:
        continue

    ret, align_img = face_landmark5_handle.rockx_face_align(frame, in_img_w, in_img_h,
                                                            RockX.ROCKX_PIXEL_FORMAT_BGR888,
                                                         result.box, None)
    target_name = None
    # get face feature
    if ret == RockX.ROCKX_RET_SUCCESS and align_img is not None:
        
ret, face_feature = face_recog_handle.rockx_face_recognize(align_img)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

troy

版主

积分
1134
 楼主| 发表于 2020-2-21 09:40:36 | 显示全部楼层
jwseey2019 发表于 2020-2-20 14:25
不是这个原因,我从网上找的半身照也不行。检测对齐都没问题,就是最后一步识别出的问题。这是对齐后的ali ...

你的python包是哪个版本,更新成1.1.2试试
pip3 install --upgrade --user rockx -i http://repo.rock-chips.com/pypi/simple  --trusted-host=repo.rock-chips.com
回复

使用道具 举报

troy

版主

积分
1134
 楼主| 发表于 2020-2-21 09:40:50 | 显示全部楼层
lodestar 发表于 2020-2-20 16:47
您好,在3399pro板子上用Python接口进行人脸特征值提取的时候,昨天和今天16点前都是好的,但是突然就一直 ...

你的python包是哪个版本,更新成1.1.2试试
pip3 install --upgrade --user rockx -i http://repo.rock-chips.com/pypi/simple  --trusted-host=repo.rock-chips.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表