0%

YOLOv8本地编译

最近在看YOLOv8的相关内容,想自己偿试着在本地编译了一下,但对这个项目不是很熟悉,绕了不少弯路,这里记录一下如何在本地编译YOLOv8,我想编译其它AI项目也可以借鉴此方法。

本地编译YOLOv8

  • 第一步:下载源码,命令如下:

    1
    git clone https://github.com/ultralytics/ultralytics.git
  • 第二步:进入源码目录,命令如下:

    1
    cd ultralytics
  • 第三步:编译并安装YOLOv8,命令如下:

    1
    pip install --user <username> -e .

    其中,

    • 是本地用户名,如:Windows下的Administrator,Linux下的root。
    • -e 是安装方式,表示安装为开发模式。

通过上面的步骤就可以将YOLOv8编译、安装好了。

  • 第四步:打包YOLOv8,命令如下:
    1
    python -m build
    如果你的环境中没有安装过build模块,那执行下面的命令时会报错,此时需要安装build模块:
    1
    pip install build

打包好的YOLOv8存放在ultralytics/dist目录下。

yolo命令是如何生成的

上面我就将YOLOv8编译、安装、打包过程向你介绍清楚了,接下来我们看看yolo命令是如何生成的。

yolo命令是ultralytics的入口,它通过命令行参数来调用不同的功能。那么yolo命令是如何生成的呢?

实际上,你打开yolov8源码,可以看到一个pyproject.toml文件,它定义了项目元数据,工具脚本等内容,如项目名称、版本号、依赖项等。

无论我们是编译yolov8,打包yolov8,还是生成yolo命令,都是通过这个文件来实现的。

实际上,当你查看yolov8的源码时,你会发现它里边并没有yolo命令的代码,那yolo命令到底是怎么生成的呢?

要想弄清这个问题,我们必须打开pyproject.toml文件,其中有这样一段代码,如下:

1
2
3
[project.scripts]
yolo = "ultralytics.cfg:entrypoint"
ultralytics = "ultralytics.cfg:entrypoint"

这段代码的含义是编译yolov8时,生成两个命令,一个是yolo,一个是ultralytics。而且这两个命令都是指向ultralytics.cfg:entrypoint这个函数。

那么ultralytics.cfg:entrypoint这个函数在哪儿呢?它是在下面这个文件中定义的:

1
ultralytics/ultralytics/blob/main/ultralytics/cfg/__init__.py

因此,当我们编译yolov8时,编译工具就会根据pyproject.toml文件中的定义,生成两个命令yolo和ultralytics,而这两个命令实际上是两个python脚本,在脚本中直接调用了ultralytics.cfg:entrypoint函数。

至此,我们就将yolo命令产生的流程搞清楚了。

将Python脚本编译成二进制文件

pyinstaller是一个将python脚本编译成二进制文件的工具,它支持Windows、Linux、MacOS等操作系统,并且支持Python2和Python3。如果你想将python脚本编译成二进制文件,就可以使用它。

小结

这篇文章简单的记录了一下我对YOLOv8学习中的一点心得,记录于此是为了防止时间长了忘记这个过程,避免下次再浪费大量的时间分析这个过程。

欢迎关注我的其它发布渠道