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.
    })
相关推荐
stevenzqzq6 分钟前
android 维度和渠道
android
ab1237689 分钟前
Spring WebSocket(STOMP)
笔记·websocket·springboot·stomp
Xudde.25 分钟前
PwnLab: init 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
2402_8462957729 分钟前
eDNA常用的基因片段
笔记
xiaogai_gai1 小时前
生产汇报单查询同步实战:从金蝶云星空拉取到轻易云数据集成平台的工程化做法
android
AI视觉网奇1 小时前
3Dconnexion 按照笔记
笔记
海海不掉头发1 小时前
软件开发方法第七周笔记_CSDN博客
人工智能·笔记·学习·软件工程
Vae_Mars2 小时前
幂等性学习笔记
笔记·学习·wpf
释厄6232 小时前
错误无误公理——错误正确本同源都迭代定律——逆转有价值
android·开发语言·kotlin
FL16238631292 小时前
塔吊下方站人检测数据集VOC+YOLO格式1049张1类别
人工智能·深度学习·yolo