ResNet

ResNet là bộ phân loại ảnh được xây dựng từ các residual block, với skip connection cho phép mạng thêm nhiều lớp hơn mà không bị giảm độ chính xác như các stack tích chập sâu thuần túy. LibreYOLO hỗ trợ mô hình cho một tác vụ: phân loại.

Tác vụ
classify
Kích thước
18, 34, 50, 101 at 224 px
Cài đặt
pip install libreyolo
Bậc hỗ trợ
Được hỗ trợ, từ v. Các mô hình huấn luyện bổ trợ: luôn giữ CI ở trạng thái xanh, tính năng được bổ sung khi có cơ hội.
Thượng nguồn
ResNet của Microsoft Research Asia, Apache-2.0. Bài báo, mã nguồn
Giấy phép
Mã nguồn Apache-2.0, trọng số Apache-2.0. Sử dụng thương mại

Cài đặt

ResNet không cần extra tùy chọn. Mọi thành phần mà mô hình import đều có trong bản cài đặt cơ sở.

bash
pip install libreyolo

Dự đoán

Trọng số được tải về từ Hugging Face trong lần sử dụng đầu tiên và được lưu vào bộ nhớ đệm cục bộ.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreResNet50-cls.pt")result = model(SAMPLE_IMAGE, save=True) print(result.probs.top1, result.probs.top1conf)print(result.probs.top5)
CLI
libreyolo predict model=LibreResNet50-cls.pt source=cat.jpg save=True

Đối tượng Results trả về cũng là đối tượng mà mọi họ mô hình đều trả về, vì vậy việc chuyển sang mô hình khác chỉ cần thay đổi một dòng. Bộ phân loại không có box hay mặt nạ (mask): result.probs chứa dự đoán cho toàn ảnh, với top1, top5, top1conftop5conf. conf, ioumax_det được chấp nhận để giữ tính tương đồng của API nhưng không có tác dụng vì không có gì để áp dụng ngưỡng hoặc loại bỏ trên một vector xác suất duy nhất. Xem dự đoán để biết về nguồn, xử lý luồng và kết quả.

Biến thể

Có bốn độ sâu, tất cả được huấn luyện và đánh giá theo cùng một cách, vì vậy việc chọn một độ sâu là sự đánh đổi trực tiếp giữa số lượng tham số và độ chính xác. Tác vụ được cố định: mọi kích thước chỉ hỗ trợ phân loại. Tên tệp trọng số của mọi kích thước đều kết thúc bằng -cls.pt, và hậu tố đó là thứ factory đọc để định tuyến đến họ mô hình này; không cần đối số task=.

Huấn luyện

Quá trình tinh chỉnh bắt đầu từ backbone ImageNet đã phát hành và tự động xây dựng lại lớp phân loại cuối cùng theo số lượng lớp đối tượng của tập dữ liệu (dataset) đích.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreResNet50-cls.pt")model.train(data="imagenette160", epochs=5)
CLI
libreyolo train model=LibreResNet50-cls.pt data=imagenette160 epochs=5
Multi-GPU
libreyolo train model=LibreResNet50-cls.pt data=imagenette160 \  epochs=50 device=0,1 batch=-1

Khi giữ nguyên thiết lập, trainer chạy 100 epoch ở lr0=1e-3 với AdamW, batch 64 và early stopping sau 50 epoch không có cải thiện. data chấp nhận thư mục gốc dataset (train/val/, mỗi lớp đối tượng một thư mục), tên rút gọn đã biết như imagenette160 hoặc URL .zip. lora=True không được hỗ trợ ở đây; truyền tùy chọn này sẽ phát sinh lỗi vì LoRA trong LibreYOLO nhắm đến các thành phần transformer có lớp nn.Linear, còn ResNet không có lớp đó.

Xem huấn luyện để biết về dataset, tăng cường dữ liệu (data augmentation), multi-GPU và logger.

Xác thực

val() trả về dictionary gồm các key metrics/. Với tác vụ phân loại, đó là độ chính xác top-1 và top-5 trên phần tách xác thực.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreResNet50-cls.pt")metrics = model.val(data="imagenette160") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreResNet50-cls.pt data=imagenette160

Xuất

Tác vụONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: được hỗ trợclassify to TorchScript: được hỗ trợclassify to ExecuTorch: được hỗ trợclassify to TensorRT: được hỗ trợclassify to OpenVINO: được hỗ trợclassify to Paddle: không được hỗ trợclassify to MNN: không được hỗ trợclassify to RKNN: không được hỗ trợclassify to ncnn: được hỗ trợclassify to TFLite: được hỗ trợclassify to CoreML: không được hỗ trợclassify to Core AI: được hỗ trợ

Artifact đã xuất được tải lại qua LibreYOLO() dựa trên hậu tố tệp, vì vậy tệp .onnx hoặc .engine hoạt động như checkpoint và trả về cùng đối tượng Results. Trang Xuất liệt kê các đối số được mọi định dạng chấp nhận và các extra mà một số định dạng bổ sung.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreResNet50-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreResNet50-cls.pt format=onnxlibreyolo export model=LibreResNet50-cls.pt format=tensorrt half=True
Dùng tệp đã xuất
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Factory định tuyến dựa trên hậu tố tệp, vì vậy artifact đã xuất tải# như mọi checkpoint và trả về cùng đối tượng Results.model = LibreYOLO("LibreResNet50-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoint

Mọi tệp trọng số đã phát hành cho họ mô hình này.

TệpĐầu vào (px)Giấy phép trọng số
classify
LibreResNet18-cls.pt224apache-2.0
LibreResNet34-cls.pt224apache-2.0
LibreResNet50-cls.pt224apache-2.0
LibreResNet101-cls.pt224apache-2.0

Mọi tệp ở trên hiện đều có trong tổ chức LibreYOLO và được tải xuống trong lần sử dụng đầu tiên.

Giấy phép

Hãy kiểm tra giấy phép trong repo Hugging Face của trọng số cụ thể mà bạn tải xuống. Mỗi checkpoint trong tổ chức LibreYOLO đều có giấy phép riêng và giấy phép có thể khác nhau trong cùng một họ. Repo đó là nguồn có thẩm quyền; phần tóm tắt dưới đây mô tả các điều khoản áp dụng khi trang này được kiểm chứng lần gần nhất.

Đây là phần mô tả các giấy phép liên quan, không phải tư vấn pháp lý. Nếu câu trả lời có ý nghĩa về mặt thương mại, hãy tự đọc các giấy phép và tham khảo cố vấn của riêng bạn.

Công trình gốc
ResNet, Microsoft Research Asia
Giấy phép thượng nguồn
Apache-2.0
Mã nguồn LibreYOLO
MIT
Trọng số
Apache-2.0, được phát hành lại tại huggingface.co/LibreYOLO
Diễn giải
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours. The architecture is the original Microsoft Research Asia design; the pretrained weights LibreYOLO ships are timm's resnet{18,34,50,101}.a1_in1k reproduction (the "ResNet Strikes Back" A1 recipe), trained by Ross Wightman and the timm contributors on ImageNet-1k and licensed Apache-2.0 there. LibreYOLO's module and attribute names mirror timm so the state dict loads unchanged and inference matches bit-identically.

Trích dẫn

@article{He2015,
	author = {Kaiming He and Xiangyu Zhang and Shaoqing Ren and Jian Sun},
	title = {Deep Residual Learning for Image Recognition},
	journal = {arXiv preprint arXiv:1512.03385},
	year = {2015}
}

Được sao chép từ khối trích dẫn của tác giả tại github.com/KaimingHe/deep-residual-networks#citation.

Đã kiểm chứng với LibreYOLO v1.5.0. Các bảng hỗ trợ, checkpoint và số liệu benchmark trên trang này được tạo từ thư viện đã phát hành và trọng số đã công bố, không phải viết thủ công.