C#调用YOLOv3算法dll动态链接库(YOLO算法落地)

C#调用YOLOv3算法dll动态链接库

前段时间在搞一个软件,目标是实现细胞计数的功能,当时我细胞计数的算法用到的是YOLOv3目标检测算法,所以就涉及到怎么实现模型落地的问题。当时有个同学在帮老师做项目,他比较懂,我于是向他寻求帮助,但是…可能涉及到了商业机密吧,于是我就自己研究。
我看了很多博客,感觉讲的也不是很到位,或者说没有给出一些干货,今天我来给大家带点干货,当然我是用**C#**调用的YOLOv3动态链接库,如果有需要的小伙伴就拿去吧。

yolov3编译成动态库

大家按照这个链接去GitHub下载YOLOv3的源码:https://github.com/AlexeyAB/darknet?tdsourcetag=s_pcqq_aiomsg.我是按照这个教程做的:https://zhuanlan.zhihu.com/p/97605980,这个教程还是很详细的,我就不讲了。

C#调用YOLOv3动态链接库

我已经将软件打包到GitHub上了:https://github.com/NameZth/AICounter-master.git,由于YOLOv3的权重文件和配置文件太大就没有上传,所以需要小伙伴自己训练一下模型. 当然我也是参考别人做的:https://github.com/RaminAbbaszadi/YoloWrapper-WPF,下面是文件的分布:
在这里插入图片描述在***DeepLearningWrapper***这个文件中调用的YOLOv3的动态链接库:

using System;
using System.IO;
using System.Text;
using System.Linq;
using DeepLearning.Base;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace DeepLearning
{
   
    public class DeepLearningWrapper : IDisposable
    {
   
        #region Const

        public const int MAX_OBJECTS_NUMBER = 1000;
        private const string DEEP_LEARNING_LIBRARY_DLL_CPU_VERSION = @"\x64\yolo_cpp_dll.dll";
        private const string DEEP_LEARNING_LIBRARY_DLL_GPU_VERSION = @"\x64\yolo_cpp_gpu.dll";

        #endregion

        #region Fields

        private static Dictionary<int, string> m_ObjectType = new Dictionary<int, string>();
        private static NetConfigaration m_NetConf;

        #endregion

        #region Initilizing

        public DeepLearningWrapper()
        {
   
        }

        #endregion

        #region DllImport Cpu

        [DllImport(DEEP_LEARNING_LIBRARY_DLL_CPU_VERSION, EntryPoint = "init")]
        public static extern int InitializeNetInCpu(string configrationFilenamr, string weightFileanme, int gpu);

        [DllImport(DEEP_LEARNING_LIBRARY_DLL_CPU_VERSION, EntryPoint = "detect_image")]
        internal static extern int DetectImageInCpu(string filename, ref BoundingBoxContainer container);

        [DllImport(DEEP_LEARNING_LIBRARY_DLL_CPU_VERSION, EntryPoint = "detect_mat")]
        internal static extern int DetectImageInCpu(IntPtr pArray, int nSize, ref BoundingBoxContainer container);

        [DllImport(DEEP_LEARNING_LIBRARY_DLL_CPU_VERSION, EntryPoint = "dispose")]
        internal static extern int DisposeNetInCpu();

        #endregion

        #region DllImport Gpu

        [DllImport(DEEP_LEARNING_LIBRARY_DLL_GPU_VERSION, EntryPoint = "init")]
        internal static extern int InitializeNetInGpu(string configurationFilename, string weightsFilename, int gpu);

        [DllImport(DEEP_LEARNING_LIBRARY_DLL_GPU_VERSION, EntryPoint = "detect_image")]
        internal static <
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值