背景说明:Darknet是一个完全开源的深度学习框架,完全由C语言实现!原作者在实现时是在Linux环境完成开发调试的,因此很多嵌入式终端可以很方便的移植Darknet的深度模型。大部分深度学习框架都可以分为模型的训练与应用两部分。训练一般需要使用GPU加速,需要大型工作站跑模型。应用部分则只需要模型加载预测就好了,这一部分可以单独在小本本上开发就好了(很多Darknet开发是针对嵌入式设备的,其计算能力一般比小本本要小,所以可以在小本本上开发应用足够了)。而目前大部分笔记本都是用window系统的,所以为了享受源码一件make的快感,我们需要在window下搭建有一个linux编译环境!在这里,我们使用Msys2搭建linux环境,并完成Darknet源码的编译(无GPU!),经过实测,在Msys2中编译过程与在Ubuntu中的完全一些,同一份代码不用任何修改,两边都能一键make!具体操作如下:
1、Msys2安装
MSYS2 是MSYS的一个升级版,准确的说是集成了pacman和Mingw-w64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。可以在Windows下实现Linux编译环境!
(1) MSys2,下载地址http://www.msys2.org/。根据不同电脑选择响应的版本,64位系统选择 msys2-x86_64-xxxx.exe。
(2) 添加环境变量,在系统属性-高级-环境变量-系统变量-Path 中 添加C:\msys64\usr\bin
(3) 如linux般,添加开源就像网站,在C:\msys64\etc\pacman.d\mirrorlist.mingw64 中添加清华镜像网站:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/
添加后如下所示
(4) 测试一下软件源是否可用
配置完成之后,再打开 MSys2。执行以下代码
pacman -Sy
如果看到了以下几句,说明没有问题:
正在同步软件包数据库...
mingw32 已经是最新版本
mingw64 已经是最新版本
msys 已经是最新版本
(5) 更新核心软件包,执行以下代码
pacman -Su
这句命令意为更新所有软件。 运行的时候会出现一行文字,询问是否继续。输入Y,然后回车,下同。 完成以后关闭MSys2。 在安装目录下找到 autorebase.bat,双击运行。
(6) 再打开 Msys2。安装gcc、gdb、make,分别执行
pacman -S gcc
pacman -S gdb
pacman -S make
测试一下make:
make -v
显示类似如下内容说明安装成功:
GNU Make 4.2.1
为 x86_64-pc-msys 编译
Copyright (C) 1988-2016 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律允许的范围内没有其他保证。
再测试一下gcc
gcc -v
显示类似如下内容说明安装成功:
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-msys/6.3.0/lto-wrapper.exe
目标:x86_64-pc-msys
配置为:/msys_scripts/gcc/src/gcc-6.3.0/configure --build=x86_64-pc-msys --prefix=/usr --libexecdir=/usr/lib --enable-bootstrap --enable-shared --enable-shared-libgcc --enable-static --enable-version-specific-runtime-libs --with-arch=x86-64 --with-tune=generic --disable-multilib --enable-__cxa_atexit --with-dwarf2 --enable-languages=c,c++,fortran,lto --enable-graphite --enable-threads=posix --enable-libatomic --enable-libcilkrts --enable-libgomp --enable-libitm --enable-libquadmath --enable-libquadmath-support --enable-libssp --disable-win32-registry --disable-symvers --with-gnu-ld --with-gnu-as --disable-isl-version-check --enable-checking=release --without-libiconv-prefix --without-libintl-prefix --with-system-zlib --enable-linker-build-id --with-default-libstdcxx-abi=gcc4-compatible
线程模型:posix
gcc 版本 6.3.0 (GCC)
如此便完成了,windows下Linux的开发环境的搭建
2、编译Darknet,可以在github上下载最新版本的Darknet源码
(1)下载darknet源码 https://github.com/pjreddie/darknet
(2)在window命令窗口中cd到darknet源码目录,make -j,效果如下
编译成功!根目录下生成 darknet.exe、libdarknet.so、libdarknet.a 三个文件,与linux下编译结果一致!
执行测试命令
.\darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/person.jpg
命令执行成功,在当前目录下生成图像如下,结果输出与预期相符,说明make出来的exe确实是可以执行的!
3、关于代码编辑器
本文提供的开发环境已经和Linux下的开发流程基本一致,所以代码编辑器可以挑选自己熟悉的来,例如SourceInsign,VScode等等。推荐使用VScode!因为他有非常丰富的扩展插件,比如github插件,SSH插件,并且可以将cmd窗口集成,提供类似python的开发界面,非常方便。一个使用方法是,本地调试好代码,通过git插件push到github仓库,然后通过SSH远程接入Linux主机,cd到项目路径Pull下刚刚更新的代码,。。。。。