YOLOv3
YOLOv3 是那个基于 Darknet-53 的检测器,它给 YOLO 这条线加上了多尺度预测和相互独立的逻辑回归分类器。LibreYOLO 以冻结、仅推理的展品形式收录它的 tiny、base 和 SPP 三种尺寸。
- 任务
- detection
- 尺寸
- t, b, spp at 416 to 608 px
- 安装
pip install libreyolo- 支持层级
- 博物馆,自 v 起。一件冻结的展品。只修 bug。
- 许可
- 代码采用 MIT,权重采用 Public domain (Darknet "YOLO LICENSE")。商用
安装
YOLOv3 在基础包之外不需要任何 extra。
pip install libreyolo预测
这个家族只提供推理:train() 会抛出 NotImplementedError,所以本页没有训练一节。
预测、验证和导出都支持。权重在首次使用时从 Hugging Face 下载,并缓存在本地。
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO3b.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreYOLO3b.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # SPP 变体在检测 head 之前加了一个空间金字塔池化块,# 并以它自己的原生输入尺寸运行model = LibreYOLO("LibreYOLO3spp.pt")result = model(SAMPLE_IMAGE)返回的 Results 对象就是每个家族都会返回的那一个,所以换成另一个检测器只是改一行
的事。conf 过滤置信度阈值,iou 过滤 NMS 阈值,两者都在三个 head 的检测框合并
之前逐尺度施加。数据源、流式处理和结果处理见预测。
验证
val() 返回一个由 metrics/ 键组成的字典,涵盖查准率、查全率、mAP 50 和
mAP 50-95,在任何采用你验证时所用格式的数据集上测量。
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO3b.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreYOLO3b.pt data=my-dataset.yaml导出
| 任务 | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX:支持 | Detection to TorchScript:支持 | Detection to ExecuTorch:支持 | Detection to TensorRT:支持 | Detection to OpenVINO:支持 | Detection to Paddle:不支持 | Detection to MNN:不支持 | Detection to RKNN:不支持 | Detection to ncnn:支持 | Detection to TFLite:不支持 | Detection to CoreML:不支持 | Detection to Core AI:支持 |
导出的产物按文件后缀经由 LibreYOLO() 重新加载,所以一个 .onnx 或 .engine
文件的表现和检查点(checkpoint)一样,返回同样的 Results。在不装 LibreYOLO 的裸
运行时里跑这张计算图也是支持的,但那样预处理和后处理就得你自己写。
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO3b.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreYOLO3b.pt format=onnxlibreyolo export model=LibreYOLO3b.pt format=tensorrt half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # 工厂按文件后缀分发,所以导出的产物加载方式和任何检查点一样,# 返回的也是同一个 Results 对象model = LibreYOLO("LibreYOLO3b.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)检查点
这个家族已发布的全部权重文件。
| 文件 | 输入(px) | 权重许可 |
|---|---|---|
| Detection | ||
| LibreYOLO3t.pt | 416 | other |
| LibreYOLO3b.pt | 416 | other |
| LibreYOLO3spp.pt | 608 | other |
上面的每个文件目前都在 LibreYOLO 组织中,并会在首次使用时下载。
许可证
请检查你所下载的具体权重在 Hugging Face 仓库中的许可。LibreYOLO 组织里的每个检查点都附有许可,同一家族内也不一定相同。该仓库是权威来源;以下摘要说明本页上次验证时适用的情况。
这里只说明涉及的许可证,不构成法律意见。如果答案对商用很重要,请自行阅读许可证并咨询法律顾问。
- 原始工作
- YOLOv3, Joseph Redmon
- 上游许可
- Public domain (Darknet "YOLO LICENSE")
- LibreYOLO 代码
- MIT
- 权重
- 采用 Public domain (Darknet "YOLO LICENSE") 许可,重新发布在 huggingface.co/LibreYOLO
- 解读
- Darknet's bundled NOTICE quotes its own license in full: "Darknet is public domain. Do whatever you want with it." That covers both the architecture and the pretrained weights LibreYOLO converts from it, with no attribution requirement and no restriction on commercial use. LibreYOLO's own code around this architecture is MIT.