资讯分类
全部资讯
最新活动
商城公告
行业信息
新品推荐
元器件知识
资讯标签
艾迈斯欧司朗(126) 艾为awinic(118) 英伟达NVIDIA(80) iCEasy商城(76) 萤火工场(61) 飞腾派V3(40) 兆易创新(31) 罗彻斯特电子(28) Jetson Orin Nano SUPER 开发套件(21) 资料下载专区(18) 赛昉科技(14) 小华半导体(13) 赛昉科技(StarFive)(13) 芯佰微(12) 灵动微电子(11) Seeed矽递科技(11) 日清纺微电子(9) NVIDIA(8) 飞腾派(8) 上海雷卯Leiditech(8) 微源半导体 LPSemi(8) 龙芯中科(7) GD32VW553-IOT(7) 物奇WuQi(7) 庆科(5) 航顺芯片(5) 日清纺微电子Nisshinbo(5) TROQ创捷电子(4) 创捷电子(4) 开源口碑分享(4) Geehy极海半导体(4) CEM5826-M11(4) 飞腾派eMMC(3) FTHR-G0001(3) 罗彻斯特(3) GD32VW553-IOT-V2(3) MM32SPIN060G(3) 中国星坤(3) 峰岹科技(3) 杭晶(HCI)(3) 野火(2) 小华EVB-HC32F4A0开发板(2) 国产开源硬件(2) 极海半导体(2) 极海(2) 社区评奖活动(2) 芯佰微电子(2) NVIDIA品牌专区(2) Mini-SPIN0230(2) 飞腾官网飞腾派(2) 技术问答专区(2) 飞腾派下载专区(2) 口碑评测(2) 教育优惠申请链接(2) EVB-L0130(2) 华润微电子(2) BeagleBoard.org®(2) iCEsay商城(2) 英伟达初创加速计划(2) 启明云端(2) 弈安云(2) 英迪芯微(2) 村田(2) TagoreTech(1) SFH 7018B(1) 一件包邮专区(1) 英伟达 NVIDIA品牌专区(1) GD32无线生态专区(1) 一件免邮专区(1) 欧达可(1) 飞腾派V3版本上新(1) 飞虹半导体(1) GD32VW553-IOT V2版本(1) 618大促专区(1) 微碧半导体(1) 8月7日竞拍竞买(1) 教育优惠(1) 萤火工场GD32VW553-IOT(1) 迈巨微(1) GD32VW553-IOT V2(1) 内存(1) VF202040-A0(1) CEM5825F(1) COMBO模组 EMC3020-PZI5(1) 松科智能(1) 台容积电(1) 格力新元(1) 周年抽奖活动(1) 庆科信息(MXCHIP)品牌专区(1) 附件(1) 乐动机器人(1) 英伟达 NVIDIA(1) 飞腾派PRO(1) 微源半导体(1) QCS6490 SOM EVB开发板(1) 附件下载地址(1) B站风扇视频(1) Jetson AGX Xavier(32GB)(1) 润石(1) NVIDIA DGX™ Spark:桌面级AI超级计算机(1) Mini-F5333(1) JETSON_AGX_ORIN_64GB_DEVELOPER_KIT(1) QCS8550 SOM EVB开发板(1) 申请样片:高光效红光OSCONIQ® P 3030, GR QSSPA1.23(1) 国产自主可控(1) NVIDIA Jetson Orin Nano 开发套件(1) 萤火工场品牌专区(1) 商城下载专区(1) 华大北斗(1) 开源社区(1) CEM5881-M11(1) Jetson AGX Orin 64GB开发套件(1) 荣湃半导体(2Pai Semi)品牌专区(1) 下载专区(1) 瑞隆源产品(1) 雷克沙(1) Arduino UNO Rev 4 Minima开发板(1) 飞腾派专链(1) 世野(Khadas)(1) 中科云(1) NVIDIA Jetson Orin Nano 开发套件(1) Arduino品牌专区(1) NVIDIA NIM(1) 微雪电子(1) 海芯微(1) CEM5861G-M11(1) 赛昉科技9折活动券(1) Jetson AGX Orin 64GB开发套件(1) 24GHz毫米波雷达模块(1) 飞腾派调研问卷链接(1) 小脚丫(1) 品牌清仓(1) QCS8550 SOM EVB(1) 天微电子商家页(1) 国产毫米波雷达模块(1) NVIDIA Jetson Nano 模组(1) QCS6490 SOM EVB(1) EV Board (MM32L0136C7P)(1) 迈巨微电子品牌专区(1) 样片申请(1) 海凌科电子(Hi-Link)(1) CEK8902-S905D3(1) 雷卯(1) 飞腾派试用申请链接(1) BeagleBone Black快速入门指南(1) 龙芯教育派(1) 轮趣科技(1) 竞买活动(1) 极海半导体(Geehy)(1) Arduino品牌页(1) 野火RK3566开发板(1) Jetson AGX Thor 开发套件/模组(1) 618大促(1)

【国产方案】飞腾派数字识别!免费试用申请!

发布时间:2026-01-23

机器视觉整合图像处理与机械控制技术,能提升工业生产灵活性与自动化水平,国产自主可控开源硬件飞腾派凭借强劲算力、良好兼容性与可扩展性,可高效支撑这类视觉应用的开发与部署。

飞腾派识别数字

项目准备

硬件规格:飞腾派

操作系统:飞腾OS(飞腾派OS系统下载:‍https://www.iceasy.com/cloud/Phytium?pid=1877647545995448322)

具体操作

一、安装Tensorflow lite

安装pip

LeNet = keras.models.Sequential(    [        keras.layers.Conv2D(            input_shape=(32, 32, 1), filters=6, kernel_size=(3, 3), activation="relu"        ),        keras.layers.AveragePooling2D(),        keras.layers.Conv2D(filters=16, kernel_size=(3, 3), activation="relu"),        keras.layers.AveragePooling2D(),        keras.layers.Flatten(),        keras.layers.Dense(units=120, activation="relu"),        keras.layers.Dense(units=84, activation="relu"),        keras.layers.Dense(units=10, activation="softmax"),    ])

安装tflite-runtime

def read_mnist(images_path: str, labels_path: str):    with gzip.open(labels_path, "rb") as labelsFile:        labels = np.frombuffer(labelsFile.read(), dtype=np.uint8, offset=8)    with gzip.open(images_path, "rb") as imagesFile:        length = len(labels)        # Load flat 28x28 px images (784 px), and convert them to 28x28 px        features = (            np.frombuffer(imagesFile.read(), dtype=np.uint8, offset=16)            .reshape(length, 784)            .reshape(length, 28, 28, 1)        )        # LeNet architecture accepts a 32x32 pixel images as input,        # mnist data is 28x28 pixels. We simply pad the images with zeros to overcome        features = np.pad(features, ((0, 0), (2, 2), (2, 2), (0, 0)), "constant")    return features, labelsx_train, y_train = read_mnist(    "train-images-idx3-ubyte.gz", "train-labels-idx1-ubyte.gz")x_test, y_test = read_mnist("t10k-images-idx3-ubyte.gz", "t10k-labels-idx1-ubyte.gz")x_train, x_test = x_train / 255.0, x_test / 255.0

二、训练LeNet模型

LeNet模型由Yann LeCun在1998年设计并提出的,是一种非常经典的卷积神经网络模型,先使用Tensorflow API实现这个模型

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)LeNet.compile(optimizer='adam',              loss=loss_fn,              metrics=['accuracy'])LeNet.fit(x_train, y_train, epochs=5)

载入数据

def read_mnist(images_path: str, labels_path: str):    with gzip.open(labels_path, "rb") as labelsFile:        labels = np.frombuffer(labelsFile.read(), dtype=np.uint8, offset=8)    with gzip.open(images_path, "rb") as imagesFile:        length = len(labels)        # Load flat 28x28 px images (784 px), and convert them to 28x28 px        features = (            np.frombuffer(imagesFile.read(), dtype=np.uint8, offset=16)            .reshape(length, 784)            .reshape(length, 28, 28, 1)        )        # LeNet architecture accepts a 32x32 pixel images as input,        # mnist data is 28x28 pixels. We simply pad the images with zeros to overcome        features = np.pad(features, ((0, 0), (2, 2), (2, 2), (0, 0)), "constant")    return features, labelsx_train, y_train = read_mnist(    "train-images-idx3-ubyte.gz", "train-labels-idx1-ubyte.gz")x_test, y_test = read_mnist("t10k-images-idx3-ubyte.gz", "t10k-labels-idx1-ubyte.gz")x_train, x_test = x_train / 255.0, x_test / 255.0

设置损失函数以及优化器开始训练

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)LeNet.compile(optimizer='adam',              loss=loss_fn,              metrics=['accuracy'])LeNet.fit(x_train, y_train, epochs=5)

评估模型

LeNet.evaluate(x_test,  y_test, verbose=2)
1875/1875 [==============================] - 9s 3ms/step - loss: 0.2255 - accuracy: 0.9328Epoch 2/51875/1875 [==============================] - 6s 3ms/step - loss: 0.0749 - accuracy: 0.9767Epoch 3/51875/1875 [==============================] - 6s 3ms/step - loss: 0.0529 - accuracy: 0.9836Epoch 4/51875/1875 [==============================] - 5s 3ms/step - loss: 0.0408 - accuracy: 0.9869Epoch 5/51875/1875 [==============================] - 5s 3ms/step - loss: 0.0329 - accuracy: 0.9895313/313 - 1s - loss: 0.0341 - accuracy: 0.9897 - 628ms/epoch - 2ms/step

将模型导出为TFLite格式

# convert modelconverter = tf.lite.TFLiteConverter.from_keras_model(LeNet)tflite_model = converter.convert()# Save the model.with open('lenet5.tflite', 'wb') as f:  f.write(tflite_model)
  

在飞腾派部署LeNet模型

首先设置track装饰器,让我们了解飞腾派的推理速度

import timeimport logging as logimport syslog.basicConfig(format='[ %(levelname)s ] %(message)s', level=log.INFO, stream=sys.stdout)def timer(label:str, ms_:bool=True):    def out_wrapper(func):        def wrapper(*args, **kwargs):            st = time.perf_counter()            ret = func(*args, **kwargs)            measure = time.perf_counter() - st            if ms_:                measure *= 1e3            tag = "ms" if ms_ else "s"            log.info(f"{label} elapsed {(measure):.3f} {tag}.")            return ret        return wrapper    return out_wrapper
    

推理函数

@timer("infer")def infer(model:str, input_blob:np.array) -> int:    interpreter = tflite.Interpreter(model_path=model, num_threads=4)    interpreter.allocate_tensors()    input_details = interpreter.get_input_details()    # Get input and output tensors.    output_details = interpreter.get_output_details()    interpreter.set_tensor(input_details[0]['index'], input_blob)    interpreter.invoke()    return np.argmax(interpreter.get_tensor(output_details[0]['index']))
    

运行结果

数字识别全部正确!而且识别速度特别快,轻松满足各类应用需求!

飞腾派免费试用!轻松带走定制文创礼品!

➡️点击查看活动详情

(内附测评分享小tips)