android yolo12 android 实战笔记

目录

[yolov12 导出ncnn](#yolov12 导出ncnn)

模型参数,分辨率:

yolov13


搜索关键词:

ncnn yolo

yolov12 导出ncnn

python 复制代码
import os
import subprocess
import glob

import torch
from ultralytics import YOLO

def export_one():
    
    MODEL_PATH = r"yolov12n.pt"  # YOLOv10 训练好的模型路径
    
    model = YOLO(MODEL_PATH)
    model.export(format="torchscript", optimize=False)
    save_dir ='yolon'
    os.makedirs(save_dir, exist_ok=True)
    
    print("正在导出TorchScript...")
    img_w = 640
    img_h = 640
    if 0:
        model = YOLO(MODEL_PATH).model  # 获取内部 PyTorch 模型(nn.Module)
        model.eval()
        dummy_input = torch.randn(1, 3, img_w, img_h)
        
        try:
            traced_script_module = torch.jit.trace(model, dummy_input)
            traced_script_module.save(f"{save_dir}/model_traced.pt")
            print("✓ TorchScript模型已保存为: model_traced.pt")
        except Exception as e:
            print(f"✗ 导出TorchScript失败: {e}")
            exit()
    
    pt_path = "B:\project\detect\yolov12-main_new\yolov12n.torchscript"
    # ===================== 3. 调用PNNX转换 =====================
    print("\n正在调用PNNX转换...")
    pnnx_cmd = [
        "pnnx",  # 确保 pnnx 在系统PATH中,或使用完整路径如 "./pnnx"
        f"{pt_path}",
        f"inputshape=[1,3,{img_w},{img_h}]"
    ]
    try:
        # 方法1:直接运行命令(推荐,可以看到详细输出)
        result = subprocess.run(pnnx_cmd, capture_output=True, text=True, check=True)
        print("✓ PNNX转换成功完成!")
        print("输出信息:", result.stdout)
        if result.stderr:
            print("注意信息:", result.stderr)
    
    except subprocess.CalledProcessError as e:
        print(f"✗ PNNX转换失败!")
        print("错误代码:", e.returncode)
        print("错误输出:", e.stderr)
        print("标准输出:", e.stdout)
    print("= " * 50)
    
    # 检查生成的文件
    expected_files = [f"{save_dir}/model_traced.ncnn.param", f"{save_dir}/model_traced.ncnn.bin"]
    for file in expected_files:
        if os.path.exists(file):
            print(f"✓ 已生成: {file}")
        else:
            print(f"✗ 未找到: {file}")

if __name__ == '__main__':

    export_one()

https://github.com/mpj1234/ncnn-yolov12-android/tree/main

模型参数,分辨率:

测试yolov12 n 报错,

但是yolov12n-turbo 可以运行,但是结果框是不准的。

cpp 复制代码
	const char *modeltypes[] =
			{
					"yolov12n",
					"yolov12s",
					"yolov12n-turbo",
					"yolov12s-turbo",
			};

	const int target_sizes[] =
			{
					320,
					320,
					320,
					320,
			};

	const float mean_vals[][3] =
			{
					{0.f, 0.f, 0.f},
					{0.f, 0.f, 0.f},
					{0.f, 0.f, 0.f},
					{0.f, 0.f, 0.f},
			};

	const float norm_vals[][3] =
			{
					{1 / 255.f, 1 / 255.f, 1 / 255.f},
					{1 / 255.f, 1 / 255.f, 1 / 255.f},
					{1 / 255.f, 1 / 255.f, 1 / 255.f},
					{1 / 255.f, 1 / 255.f, 1 / 255.f},
			};

yolov13

https://github.com/mpj1234/ncnn-yolov13-android

导出ncnn

python 复制代码
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO("./weights/yolov13n.pt")
    model.export(**{
        'format': 'ncnn',
        'opset': 12,
        'simplify': True,
        'batch': 1,
        'imgsz': 320,  # This size should be consistent with the following code.
    })
相关推荐
袁小皮皮不皮7 小时前
1.HCIP BFD 学习笔记(优化版)
服务器·网络·笔记·网络协议·学习·智能路由器·ip
-SOLO-7 小时前
备份apk 工具
android
FL16238631297 小时前
户外垃圾类型检测数据集VOC+YOLO格式4278张10类别
人工智能·yolo·机器学习
前网易架构师-高司机8 小时前
带标注的番茄成熟颜色识别数据集,可识别红色,橙色,绿色,识别率80.6%,2517张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·数据集·颜色·番茄·西红柿·成熟·红色
hhcgchpspk11 小时前
汇编语言传递数据和地址的误区
汇编·笔记·nasm·masm
智者知已应修善业11 小时前
【51单片机2个外部中断显示中断历时,初始化8左移3位共阳数码管】2024-6-6
c++·经验分享·笔记·算法·51单片机
私人珍藏库12 小时前
【Android】BotHub-多模型AI机器人聚合库-内置免费模型
android·人工智能·智能手机·app·工具·多功能
普马萨特12 小时前
Wi-Fi 扫描频率限制与 Android 演进全解析
android
张拭心13 小时前
Android 17 新特性:后台音频交互限制加强
android·前端
tq108613 小时前
OperationSequence DSL 2.1 语法规范
笔记