天蝎什么象| 中国最大的海是什么海| 女人喝什么调节内分泌| 转氨酶高对身体有什么影响| 造影是什么意思| 蛇生肖和什么生肖相配| 异常什么意思| gender什么意思| 天性是什么意思| 老是拉肚子什么原因| 一什么椅子| pangchi是什么牌子的手表| 吃什么维生素对眼睛好| 经常做梦是什么原因| 稚嫩是什么意思| haccp认证是什么意思| 什么原因会导致月经推迟| 用什么泡脚去湿气寒气| 能的偏旁是什么| 英氏属于什么档次的| 浅绿色配什么颜色好看| 医托是什么意思| 四级什么时候报名| mdz0.2是什么药| b型血阳性是什么意思| 老年人头晕挂什么科| 恕是什么意思| 小腹隐隐作痛是什么原因女性| anca医学上是什么意思| hpv52阳性是什么病| 师长是什么意思| 髋关节积液是什么原因造成的| 黑上衣配什么颜色裤子男| pc是什么| 率真是什么意思| 九头鸟是什么意思| 益生菌什么时间吃最好| 身上皮肤痒是什么原因| 膝盖痛用什么药| 甲硝唑吃多了有什么危害| 压抑什么意思| 梦到考试是什么意思| 没字去掉三点水念什么| 树叶又什么又什么| 肌酐高什么原因| 胃气上逆吃什么药| 零七年属什么生肖| 什么是风湿病| 胰岛素起什么作用| 申字五行属什么| 午餐肉是什么肉做的| 鸡蛋可以炒什么菜| 为什么第一次进不去| 自闭症是什么人投胎| 喝茶叶有什么好处| 高血压高血糖挂什么科| 不排卵是什么原因造成| 提肛运动有什么好处| 半边脸肿是什么原因| 阴道出血用什么药| 3a是什么| 四个月读什么| 什么的闪电| 感冒发烧可以吃什么水果| 冬瓜什么时候成熟| 村书记是什么级别| 做什么检查需要空腹| 精华液是干什么的| 脂膜炎是什么病| 弱视和近视有什么区别| lp 什么意思| 梦见喝水是什么意思| ctp是什么意思| 勾芡用什么粉最好| 勇敢的生肖是什么生肖| 拍ct挂什么科| 冠脉钙化是什么意思| 五色土有什么风水作用| 肌酐激酶高是什么原因| 头痛到医院挂什么科| 什么吞什么咽| 孕妇有血窦要注意什么| 舌苔厚白吃什么药最好| 为什么睡觉会流口水| 花椒木有什么作用与功效| 什么叫潮汐车道| mansory是什么车| 米米是什么意思| 红豆薏仁水有什么功效| 偏头痛是什么原因引起的| 若叶青汁有什么功效| 鳕鱼是什么鱼| 梦见被鱼咬是什么意思| 旭日是什么意思| 利可君片是什么药| 农历五月属什么生肖| 杨梅有什么好处| 因人而异是什么意思| 探花是什么意思| 淋病挂什么科| 断交社保有什么影响| 乳腺囊肿吃什么药| 阴历七月是什么星座| 小暑吃黄鳝有什么好处| 珐琅是什么| 露骨是什么意思| 态生两靥之愁中靥指什么| mrv是什么检查| 洲际导弹是什么意思| 做梦抓鱼什么意思周公解梦| 退着走路有什么好处| sport是什么意思| 冰种翡翠属于什么档次| 浅表性胃炎吃什么药好| 每天拉肚子是什么原因引起的| 慢性非萎缩性胃炎伴糜烂吃什么药| 耳鼻喉属于什么科| 喉咙有痰咳嗽是什么原因| 夏季吃什么好| 心什么什么什么| 品行是什么意思| pad是什么| 湿气用什么药最好最快| 油光满面是什么意思| 小狗是什么意思| 胚胎和囊胚有什么区别| 发乎情止乎礼什么意思| 208是什么意思| 马牛羊鸡犬豕中的豕指的是什么| 什么回忆| 爱吃甜食是缺乏什么| 口臭吃什么药最有效| 非典型细胞是什么意思| 狗狗哭了代表什么预兆| 药流后吃什么消炎药| 庹是什么意思| 马兰头是什么菜| 要强的女人是什么性格| 飞机什么东西不能带| 什么叫做光合作用| 女人的动物是什么生肖| 什么样的菊花| 喝什么茶好| 空调干燥是什么意思| 心脏不舒服吃什么药| 低压偏高是什么原因| pp1是什么意思| 吃什么补气补血最见效| 脚底长水泡是什么原因| 什么是美育| 欲盖弥彰什么意思| 宫颈纳氏囊肿是什么意思严重吗| 做梦车丢了有什么预兆| 天秤座跟什么星座最配| 黄花菜什么人不能吃| 胸部里面有个圆圆的硬东西是什么| 副乳是什么原因造成的| 为什么一进去就软了| 冰粉是用什么做的| 莯字五行属什么| 颈椎病看什么科| 南京鸡鸣寺求什么灵| 念珠菌阳性是什么病| 腮腺炎是什么| pg在医学是什么意思| 猪红是什么| 藏语扎西德勒是什么意思| 攻坚是什么意思| kamagra是什么药| mrv是什么检查| 屎壳郎长什么样| 心里难受想吐是什么原因| 万中无一什么意思| 能力是什么| 独角仙吃什么| 受虐倾向是什么意思| 海豹油有什么功效| 夏天用什么泡脚最好| 白细胞和血小板高是什么原因| 舌头发热是什么原因| 什么是前庭功能| 男士脸黑穿什么颜色好| 陈世美是什么样的人| 黄芪和北芪有什么区别| 护法是什么意思| 脚底心发热是什么原因| 稷是什么农作物| 神经元是什么| 雄激素是什么| 角膜塑形镜什么牌子好| 望尘莫及是什么意思| 产后恶露是什么| 喝酒有什么好处| dmdm乙内酰脲是什么| 周杰伦什么学历| 幽门螺杆菌用什么药| 脉搏跳得快是什么原因| 吃维生素a有什么好处| 逸五行属性是什么| gs是什么| 女人心肌缺血吃什么药| 散光是什么症状| 姨妈期间可以吃什么水果| 送百合花代表什么意思| 活血是什么意思| 合肥为什么叫合肥| 6.1号是什么星座| 动物园里有什么动物| sunglasses是什么意思| 中国文联是什么级别| 下肢静脉曲张是什么原因引起的| 粉盒和硒鼓有什么区别| 肺肿物是什么意思| 豆角没熟中毒什么症状| lee是什么档次| 遇难呈祥是什么生肖| 长辈生日送什么花| 命宫是什么意思| cdfl是什么意思| 天麻能治什么病| 腿困是什么原因| 细菌性结膜炎用什么药| 苯磺酸氨氯地平片什么时候吃| 心脏彩超fs是什么意思| 红枣有什么功效| 肚子大是什么原因造成的| 高考明天考什么| 神机妙算是什么生肖| 山莨菪碱为什么叫6542| 高铁二等座是什么意思| a型血与o型血生的孩子是什么血型| ct检查是什么意思| 17数字代表什么意思| 毛囊炎什么症状| 脑供血不足是什么原因引起的| 不什么一什么| 吃饭快了有什么坏处| 臭虫长什么样| 罗刹女是什么意思| 对什么| 女属羊和什么属相最配| 高血压不能吃什么水果| 烧烤用什么油| spandex是什么面料| 眼睛充血用什么眼药水最好| hgh是什么意思| 什么是腺样体面容| 胸腔疼痛是什么原因| 慢性阑尾炎吃什么药好| 吃什么食物可以降低胆固醇| 生蚝有什么营养价值| 焦糖色上衣配什么颜色裤子| 锤子是什么意思| 呓语是什么意思| 哈吉是什么意思| 什么药可以延长时间| 天秤座跟什么星座最配| 什么蔬菜含铁高| 风口浪尖是什么意思| 什么首什么胸| 睡眠好的人说明什么| 梗是什么意思| 孕妇要吃什么| 丁丁历险记的狗是什么品种| 百度
资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

吃醋对身体有什么好处

Python接口

Python接口目录结构

EdgeBoard系统已经安装了python环境,用户可直接使用即可,同时python接口为用户提供了paddlemobile的python安装包以及示例工程,下载链接,包含文件如下:

文件名称 说明
paddlemobile-0.0.1.linux-aarch64-py2.tar.gz paddlemobile的python2安装包
edgeboard.py 基于python的模型预测示例
api.py edgeboard.py的api示例
configs.classification 分类模型的配置文件目录,同C++示例的配置文件
configs.detection 检测模型的配置文件目录,同C++示例的配置文件
models.classification 分类模型的模型文件目录,同C++示例的模型文件
models.detection 检测模型的模型文件目录,同C++示例的模型文件

edgeboard.py代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import errno
import math
import os
import sys
import json

import cv2
import numpy as np

import paddlemobile as pm

predictor = None
labels = []

def init(configs):
    global predictor

    model_dir = configs['model']
    pm_config = pm.PaddleMobileConfig()   # 创建paddlemobile配置对象
    pm_config.precision = pm.PaddleMobileConfig.Precision.FP32  # 对精度赋值成FP32
    pm_config.device = pm.PaddleMobileConfig.Device.kFPGA  # 选定FPGA
    pm_config.prog_file = model_dir + "/model"
    pm_config.param_file = model_dir + '/params'
    pm_config.thread_num = 4

    print('')
    print('configuration for predictor is :')
    print('\tPrecision: ' + str(pm_config.precision))
    print('\t   Device: ' + str(pm_config.device))
    print('\t    Model: ' + str(pm_config.prog_file))
    print('\t   Params: ' + str(pm_config.param_file))
    print('\tThreadNum: ' + str(pm_config.thread_num))
    print('')

    predictor = pm.CreatePaddlePredictor(pm_config)  # 创建预测器

# 读取label_list.txt文件
def read_labels(configs):
    global labels
    if not 'labels' in configs:
        return
    label_path = configs['labels']
    if label_path is None or label_path == '':
        return
    with open(label_path) as label_file:
        line = label_file.readline()
        while line:
            labels.append(line.strip().split(':')[-1])
            line = label_file.readline()

# 读取本地图片            
def read_image(configs):
    image_input = cv2.imread(configs['image'], cv2.IMREAD_COLOR)
    return image_input

# 图像预处理
def preprocess_image(image_input, configs):
    # resizing image
    print('image shape input: ' + str(image_input.shape))
    width = configs['input_width']
    height = configs['input_height']
    image_resized = cv2.resize(image_input, (width, height), cv2.INTER_CUBIC)
    print('image shape resized: ' + str(image_resized.shape))

    # to float32
    image = image_resized.astype('float32')

    # transpose to channel-first format
    image_transposed = np.transpose(image, (2, 0, 1))
    print('image shape transposed: ' + str(image_transposed.shape))

    # mean and scale preprocessing
    mean  = np.array(configs['mean']).reshape((3, 1, 1))
    scale_number = configs['scale']
    scale = np.array([scale_number, scale_number, scale_number]).reshape((3, 1, 1))

    # RGB or BGR formatting
    format = configs['format'].upper()
    if format == 'RGB':
        b = image_transposed[0]
        g = image_transposed[1]
        r = image_transposed[2]
        image_transposed = np.stack([r, g, b])
        print('image shape formatted transposed: ' + str(image_transposed.shape))

    # mean and scale
    print 'substract mean', mean.flatten(), ' and multiple with scale', scale.flatten()
    image_transposed -= mean
    image_transposed *= scale

    # transpose back
    image_result = np.transpose(image_transposed, (1, 2, 0))
    print('image shape transposed-back: ' + str(image_result.shape))

    print('')
    return image_result

# 检测模型输出结果图片
def draw_results(image, output, threshold):
    height, width, _ = image.shape
    print 'boxes with scores above the threshold (%f): \n' % threshold
    i = 1
    for box in output:
        if box[1] > threshold:
            print '\t', i, '\t', box[0], '\t', box[1], '\t', box[2], '\t', box[3], '\t', box[4], '\t', box[5]
            x_min = int(box[2]  * width )
            y_min = int(box[3]  * height)
            x_max = int(box[4]  * width )
            y_max = int(box[5]  * height)
            cv2.rectangle(image, (x_min, y_min), (x_max, y_max), (0, 255, 0), 3)
            i += 1
    cv2.imwrite('result.jpg', image)
    print('')

# 分类模型预测结果输出
def classify(output, configs):
    data = output.flatten()
    max_index = 0
    score = 0.0
    for i in range(len(data)):
        if data[i] > score and not data[i] == float('inf'):
            max_index = i
            score = data[i]

    print 'label: ', labels[max_index]
    print 'index: ', max_index
    print 'score: ', score
    print ''

# 检测模型预测结果输出    
def detect(output, configs):
    image = read_image(configs)
    draw_results(image, output, configs['threshold'])

# 模型预测
def predict(configs, detection):
    global predictor
    width = configs['input_width']
    height = configs['input_height']

    image = read_image(configs)
    input = preprocess_image(image, configs)

    tensor = pm.PaddleTensor()
    tensor.dtype = pm.PaddleDType.FLOAT32
    tensor.shape = (1, 3, width, height)
    tensor.data = pm.PaddleBuf(input)

    paddle_data_feeds = [tensor]

    print('prediction is running ...')
    outputs = predictor.Run(paddle_data_feeds)
    assert len(outputs) == 1, 'error numbers of tensor returned from Predictor.Run function !!!'

    output = np.array(outputs[0], copy = False)

    print('\nprediction result :')
    print('\t nDim: ' + str(output.ndim))
    print('\tShape: ' + str(output.shape))
    print('\tDType: ' + str(output.dtype))
    print('')
    # print(output)
    # print('')
    if detection:
        detect(output, configs)
    else:
        classify(output, configs)

api.py代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import errno
import math
import os
import sys
import argparse
import json

import cv2
import numpy as np

import edgeboard

# 参数设定
def parse_args():
    parser = argparse.ArgumentParser(description='API implementation for Paddle-Mobile')
    parser.add_argument('-d', '--detection',
                        help='flag indicating detections',
                        action="store_true")
    parser.add_argument('-j', '--json',
                        help='configuration file for the prediction')
    return parser.parse_args()

# 输出参数
def print_args(args):
    print 'Arguments: '
    print '\t', '    detection flag: ', args.detection
    print '\t', 'json configuration: ', args.json

# 主函数
def main():
    args = parse_args()
    print_args(args)
    if args.json is None or args.json == '':
        print '\nFor usage, please use the -h switch.\n\n'
        sys.exit(0)

    with open(args.json) as json_file:
        configs = json.load(json_file)

    edgeboard.init(configs)
    edgeboard.read_labels(configs)
    edgeboard.predict(configs, args.detection)

if __name__ == '__main__':
    sys.exit(main())

安装和使用

1、拷贝paddlemobile-0.0.1.linux-aarch64-py2.tar.gz到用户目录,例如拷贝至/home/root/workspace/目录下

2、安装paddlemobile-python SDK,请在根目录中展开tar.gz压缩包

//进入系统根目录
cd /

//展开tar.gz 压缩包
tar -xzvf  home/root/workspace/paddlemobile-0.0.1.linux-aarch64-py2.tar.gz

//返回用户HOME目录
cd

//检查package paddlemobile (0.0.1) 是否已经安装
pip list

3、把EdgeBoard的paddle-mobile预测库到/usr/lib目录下

EdgeBoard软核升级文件的版本(fpgadrv.ko、paddlemobile.so、image.ub&BOOT.BIN)必须版本一致才能正确运行,请升级软核版本

1.3.0版本以上的预测库包含版本号,需连同ln.sh脚本文件一同拷贝到usr/lib目录下,并执行脚本文件sh ln.sh如下图所示:

4、查看配置文件,调用python接口api.py。python接口的配置文件同C++示例配置文件结构相同,在运行自己的模型时需要更改模型文件及对应的配置文件,在此不再赘述。


本地图片预测示例

1、分类模型预测

 python api.py -j {分类模型json文件}

例如:运行预置模型Inceptionv3

 python api.py -j configs.classification/Inceptionv3/zebra.json

如下图:

2、检测模型预测

python api.py -d -j {检测模型json文件}

例如:运行预置模型vgg-ssd

python api.py -d -j configs.detection/vgg-ssd/screw.json

如下图:

预测结果图:

上一篇
C++示例
下一篇
业务模型部署
无极调光是什么意思 新生儿黄疸是什么原因引起的 渣男最怕什么样的女人 薄荷有什么作用 急性肠炎吃什么食物好
卵泡刺激素高说明什么 血压低吃什么最快最有效 208是什么意思 蜂蜜与什么食物相克 被紫外线灯照到有什么后果呀
肾结石什么原因引起的 道德制高点什么意思 毛片是什么意思 法令纹上有痣代表什么 不置可否什么意思
金牛男最烦什么女孩 梦见初恋男友是什么意思 胃酸是什么酸 elaine是什么意思 血糖高吃什么主食好
营业执照什么时候年审weuuu.com 肝火旺是什么原因引起的hcv7jop9ns6r.cn 做梦梦见搬家是什么意思hcv9jop5ns9r.cn 泰国有什么好玩0735v.com 保护心脏吃什么最好hcv9jop4ns2r.cn
间接胆红素偏高什么意思hcv8jop0ns8r.cn 观是什么意思hcv8jop4ns1r.cn 海豹油有什么作用hcv9jop1ns4r.cn 吃什么容易发胖hcv7jop4ns6r.cn 提手旁有什么字hcv9jop3ns8r.cn
附件炎吃什么药最好hcv8jop7ns1r.cn 什么叫引流hcv9jop3ns9r.cn 糜米是什么米hcv7jop6ns5r.cn 作恶多端是什么意思hcv8jop4ns8r.cn 总蛋白高是什么原因travellingsim.com
禹字五行属什么的hcv7jop7ns4r.cn 青蛙用什么呼吸hcv8jop9ns3r.cn 突然恶心想吐是什么原因hcv7jop6ns0r.cn 犟是什么意思hcv7jop7ns0r.cn 发膜和护发素有什么区别hcv9jop6ns8r.cn
百度