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.
    })
相关推荐
摇滚侠1 小时前
ElasticSearch 教程入门到精通,测试工具、倒排索引、索引创建查询删除,笔记6、7、8、9
大数据·笔记·elasticsearch
就叫飞六吧1 小时前
WebService 与 REST 的区别
笔记
IMPYLH1 小时前
Lua 的 tostring 函数
开发语言·笔记·junit·单元测试·lua
ZHang......1 小时前
JDBC 笔记
java·笔记
yunhuibin1 小时前
yolov8通过百度飞桨AIstudio平台搭建
yolo·百度·paddlepaddle
Star abuse1 小时前
XML转YOLO格式数据集教程
xml·人工智能·yolo
海上飞猪1 小时前
【Mysql】Mysql的安装部署和使用
android·mysql·adb
霸王大陆2 小时前
《零基础学 PHP:从入门到实战》模块十一:成为 PHP 侦探,精通错误处理与调试实战大全-1
开发语言·笔记·php·课程设计
萝卜青今天也要开心2 小时前
2025年下半年系统架构设计师考后分享
java·数据库·redis·笔记·学习·系统架构