darknet(yolov4)在win环境下编译和使用

前言

        使用环境 win+mingw64+CPU,无GPU

1. 准备工作

   安装mingw

   安装CMAKE

   下载源程序:git clone https://github.com/AlexeyAB/darknet

2. CMAKE生成makefile

选择源文件路径和目标路径

选择opencv路径,取消CUDA选项

configure generate

在目标路径打开终端,输入make,编译。

3. 编译问题处理

1.  src/httplib.h报错 _gthread_time_t __ts' has incomplete type

根据错误,查找发现是std::this_thread::sleep_for(std::chrono::milliseconds(1));引起的。因为貌似并没有用到http部分,直接屏蔽该行。

2. :classifier.c:(.text+0x6d6a): undefined reference to `timersub'

在src/gettimeofday.h文件中timersub只在MSVC编译器下被编译。在ifdef外加上

#define timersub(a, b, result)                       \

  do {                                               \

    (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;    \

    (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \

    if ((result)->tv_usec < 0) {                     \

      --(result)->tv_sec;                            \

      (result)->tv_usec += 1000000;                  \

    }                                                \

  } while (0) 

4. 开启优化

下载预训练模型yolov4.weight,输入

./darknet.exe detect ./cfg/yolov4.cfg yolov4.weights ./data/dog.jpg

 结果得到一个36秒的超慢结果。。

./data/dog.jpg: Predicted in 36142.325000 milli-seconds.
bicycle: 92%
dog: 98%
truck: 92%
pottedplant: 33%

 回到CMAKE中,打开AVX

在openmp后面加上-ffp-contract=fast  -mavx -mavx2 -msse3 -msse4.1 -msse4.2 -msse4a

编译问题:

gemm.c报错未定义__cpuidex。

gemm.c修改为

void cpuid(int info[4], int InfoType) {
    __cpuid(InfoType , info[0], info[1], info[2], info[3]);
}
// #ifdef _WIN32
// //  Windows
// #define cpuid(info, x)    __cpuidex(info, x, 0)
// #else
// //  GCC Intrinsics
// void cpuid(int info[4], int InfoType) {
//     __cpuid_count(InfoType, 0, info[0], info[1], info[2], info[3]);
// }
// #endif

若还有错误,则修改C:\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\include\cpuid.h。

输入测试命令,跑了14秒。

./data/dog.jpg: Predicted in 14656.837000 milli-seconds.
bicycle: 92%
dog: 96%
truck: 92%
pottedplant: 33%

5 其他模型

yolov4-tiny.weights 0.6s

./data/dog.jpg: Predicted in 624.065000 milli-seconds.
bicycle: 60%
dog: 84%
truck: 79%
car: 45%

yolov3.weights 3s

./data/dog.jpg: Predicted in 3315.204000 milli-seconds.
bicycle: 99%
dog: 100%
truck: 93%

yolov3-tiny.weights 0.4s

./data/dog.jpg: Predicted in 476.301000 milli-seconds.
dog: 81%
bicycle: 38%
car: 71%
truck: 41%
truck: 62%
car: 40%

6. 继续优化

调整cfg中的参数,可以继续优化识别速度和准确率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值