乐于分享
好东西不私藏

YOLOE-26的安卓APP数人头、数木桩、数硬币、数牛羊等等

YOLOE-26的安卓APP数人头、数木桩、数硬币、数牛羊等等
      YOLO模型推出到12版本后直接出了一个比较新的模型YOLOE。看这个命名就觉得架构调整比较大。据说是支持无提示的万物识别,以前的模型大概就40多种到80多种左右。这个模型看了下可以分类4000多种,种类蛮多的,但是发现实际项目需要关注的种类比较少,什么黑夜、白天、天花板、蓝天这些类型够奇葩的。在电脑端试了一下可以运行。于是导出模型部署在手机端试试看。
        当然这里主要给大家介绍使用ONNX部署到手机端。可以直接按官网教程在电脑端正常运行后,使用例子中的方法导出onnx模型。最后把这个模型放在手机端,通过安装安卓的onnxruntime库来加载和推理模型。
把yoloe模型导出onnx模型例子:
def main():    #detect()    export_model()def detect():    # Load a model    model = YOLOE("./models/YOLOE-26x-seg.pt")  # load an official    results = model.predict("./bus.jpg")    print(results)def export_model():    model = YOLOE("./models/yoloe-26x-seg-pf.pt")    model.export(format="onnx", dynamic=False, quantize=8, simplify=True)
onnxruntime推理核心代码例子
OrtSession.SessionOptions opts = new OrtSession.SessionOptions();opts.setOptimizationLevel(OrtSession.SessionOptions.OptLevel.ALL_OPT);session = env.createSession("加载模型数据", opts);long[] actualShape = inputShape.clone();actualShape[0] = 1;actualShape[2] = 640;actualShape[3] = 640;OnnxTensor inputTensor = OnnxTensor.createTensor(env, FloatBuffer.wrap(inputData), actualShape);Map<String, OnnxTensor> inputs = new HashMap<>();inputs.put(inputName, inputTensor);OrtSession.Result result = session.run(inputs);
反正技术路线已经通了,至于精度准确率看怎么用吧,导出int8后准确度直接不忍直视,经过一般测试,发现最好的还是yoloe-26x,但是这个模型太大放在手机加载模型就崩溃了,只能加载int8量化的,其他不多说了直接看效果:
想要自己试一下的可以下载:

http://auth.bouyeijiang.com:8088/api/Base/GetDownloadFile?fpath=S_2026072208002940.apk&orgname=countview_v26.7.20.apk

或网盘下载:

https://pan.baidu.com/s/1bcSDvfEBlP7XkjmZyKPn3w 提取码: v7ke