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.
    })
相关推荐
白夜111712 小时前
C++任务调度与状态机
开发语言·c++·笔记
xian_wwq13 小时前
【学习笔记】储能系统的铁三角:BMS、PCS、EMS分别管啥
笔记·学习·储能系统
中屹指纹浏览器13 小时前
指纹浏览器自动化测试中的环境一致性与稳定性保障
经验分享·笔记
初圣魔门首席弟子13 小时前
深度学习复习笔记|多层感知机 (MLP):原理 + 从零实现 + 简洁实现
人工智能·笔记·深度学习
czlczl2002092513 小时前
IN和BETWEEN在索引效能的区别
android·adb
Volunteer Technology13 小时前
ES高级搜索功能
android·大数据·elasticsearch
码途漫谈14 小时前
Easy-Vibe开发篇阅读笔记(十二)——后端开发之如何集成Stripe等收费系统
笔记·ai·开源·状态模式·ai编程
在下_诸葛14 小时前
langgraph学习笔记
笔记·python·学习·langgraph教程
北京自在科技14 小时前
Find Hub App 小更新
android·ios·安卓·findmy·airtag
音沐mu.14 小时前
【69】果蔬新鲜度数据集(有v5/v8模型)/YOLO果蔬新鲜度检测
yolo·目标检测·数据集·果蔬新鲜度数据集·果蔬新鲜度检测