HRNet
HRNet là mạng tích chập duy trì luồng đặc trưng độ phân giải cao qua phép hợp nhất đa tỷ lệ lặp lại, thay vì khôi phục độ phân giải sau khi downsample. LibreYOLO bọc biến thể tư thế top-down chính thức để inference và xác thực.
- Tác vụ
- pose
- Kích thước
- Cài đặt
pip install libreyolo- Bậc hỗ trợ
- Chỉ suy luận, từ v. Chỉ dự đoán, kiểm định và xuất. Không áp dụng các tính năng huấn luyện.
- Giấy phép
- Mã nguồn MIT, trọng số MIT. Sử dụng thương mại
Cài đặt
HRNet không cần extra ngoài package cơ sở.
pip install libreyoloDetector người mặc định là checkpoint LibreYOLO9t nhẹ, được tự động tải xuống lần đầu HRNet ghép với nó.
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ộ.
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Khi không cung cấp nguồn người: HRNet tự động ghép với detector# LibreYOLO9t nhẹ và ghi log lựa chọn đó một lần.model = LibreYOLO("LibreHRNetw32-pose.pt")result = model(SAMPLE_IMAGE, save=True) print(result.keypoints.xy)print(result.boxes.xyxy)libreyolo predict model=LibreHRNetw32-pose.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreHRNetw32-pose.pt") # Bỏ qua hoàn toàn phát hiện: coi toàn bộ ảnh là một người.result = model(SAMPLE_IMAGE, cropped=True) # Hoặc đưa cho HRNet các box từ detector bạn đã chạy.result = model(SAMPLE_IMAGE, person_boxes=[[34, 12, 220, 400]]) # Hoặc ghép với detector LibreYOLO cụ thể thay cho# LibreYOLO9t mặc định.result = model(SAMPLE_IMAGE, person_detector="rfdetr")HRNet là mô hình ước lượng tư thế top-down: mô hình cần box người trước khi pose head có thể chạy, vì vậy mỗi lệnh gọi đều phân giải một box. Khi giữ nguyên thiết lập, mô hình tự ghép với detector LibreYOLO9t trong lần đầu và ghi log lựa chọn đó. cropped=True bỏ qua phát hiện và coi toàn ảnh là một người; person_boxes nhận các box từ detector bạn đã chạy; person_detector nhận "auto", "rfdetr", mọi mô hình phát hiện LibreYOLO hoặc callable thuần túy. flip_test=True cũng chạy mô hình trên crop lật ngang rồi lấy trung bình hai heatmap, đây là tăng cường khi kiểm thử riêng của HRNet; augment=True chung không được định nghĩa ở đây. Nguồn nhiều ảnh chạy tuần tự: detector của HRNet và số người thay đổi theo ảnh không hỗ trợ dự đoán xếp chồng. Xem dự đoán để biết về nguồn, xử lý luồng và kết quả.
Biến thể
Có hai kích thước w32 và w48, cả hai dự đoán tập keypoint COCO-17 tiêu chuẩn từ crop người có độ phân giải cố định; w48 là backbone rộng hơn.
Model zoo upstream báo cáo độ chính xác tư thế cho mỗi kích thước bằng detector người riêng, thiết lập kiểm thử lật riêng và giao thức đánh giá COCO chính thức. Cặp ghép mặc định của LibreYOLO dùng detector khác, vì vậy lượt xác thực ở đây đo tổ hợp đó chứ không phải tổ hợp upstream; để khớp số liệu upstream cần cùng box người, điểm detector và thiết lập lật mà đánh giá gốc sử dụng.
Xác thực
val() chạy keypoint OKS-AP kiểu COCO và chấp nhận data.yaml YOLO-pose hoặc JSON keypoint COCO cùng thư mục ảnh. Backend metric mặc định là faster-coco-eval, tự động dùng pycocotools khi chưa cài faster-coco-eval; faster_coco_eval=False buộc dùng tuyến pycocotools.
from libreyolo import LibreYOLO model = LibreYOLO("LibreHRNetw32-pose.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/keypoints_mAP50-95"])print(metrics["metrics/keypoints_mAP50"])libreyolo val model=LibreHRNetw32-pose.pt data=my-dataset.yamlQuá trình xác thực điều khiển predict() riêng của HRNet ở bên trong, vì vậy sử dụng detector người mà mô hình được xây dựng hoặc gọi cùng. Hãy khởi tạo mô hình với person_detector= rõ ràng để giữ nguồn đó cố định giữa các lượt chạy, thay vì để mỗi lệnh gọi phân giải lại giá trị mặc định.
Xuất
| Tác vụ | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pose | Pose to ONNX: được hỗ trợ | Pose to TorchScript: được hỗ trợ | Pose to ExecuTorch: không được hỗ trợ | Pose to TensorRT: được hỗ trợ | Pose to OpenVINO: được hỗ trợ | Pose to Paddle: không được hỗ trợ | Pose to MNN: không được hỗ trợ | Pose to RKNN: không được hỗ trợ | Pose to ncnn: không được hỗ trợ | Pose to TFLite: không được hỗ trợ | Pose to CoreML: không được hỗ trợ | Pose to Core AI: không được hỗ trợ |
Hợp đồng xuất của HRNet chỉ bao quát ONNX, TorchScript, OpenVINO và TensorRT; mọi định dạng khác phát sinh lỗi trước khi bắt đầu trace. Mỗi bản xuất chỉ là heatmap head canvas cố định, batch một FP32, nhận crop người và trả về heatmap thô: hình học crop affine phía trước cùng bước giải mã heatmap, khôi phục lật và loại bỏ OKS phía sau vẫn nằm trong Python, vì vậy pipeline hoàn chỉnh từ ảnh đến keypoint vẫn cần LibreYOLO ở đầu kia.
from libreyolo import LibreYOLO model = LibreYOLO("LibreHRNetw32-pose.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreHRNetw32-pose.pt format=onnximport numpy as npimport onnxruntime as ort # Graph đã xuất chỉ là heatmap head trên canvas cố định: nhận một batch# crop người đã cắt, đã chuẩn hóa và trả về heatmap thô. Phát hiện người,# hình học crop, giải mã heatmap và loại bỏ bằng OKS không thuộc graph này;# chạy ngoài LibreYOLO nghĩa là bạn phải tự triển khai lại bước giải mã đó.session = ort.InferenceSession("LibreHRNetw32-pose.onnx")name = session.get_inputs()[0].nameheatmaps = session.run( None, {name: np.zeros((1, 3, 256, 192), dtype=np.float32)})[0]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ố |
|---|---|---|
| Pose | ||
| LibreHRNetw32-pose.pt | mit | |
| LibreHRNetw48-pose.pt | mit | |
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
- HRNet, Microsoft
- Giấy phép thượng nguồn
- MIT
- Nguồn thượng nguồn
- github.com/leoxiaobin/deep-high-resolution-net.pytorch
- Mã nguồn LibreYOLO
- MIT
- Trọng số
- MIT, được phát hành lại tại huggingface.co/LibreYOLO
- Diễn giải
- MIT permits commercial and non-commercial use, modification and redistribution of both the code and the two published checkpoints, with the copyright notice retained. The official repository does not attach a separate license to its model-zoo checkpoints; LibreYOLO's redistribution basis is the MIT license the releasing project implies, the same basis the upstream repository's own files state.
Trích dẫn
@inproceedings{sun2019deep,
title={Deep High-Resolution Representation Learning for Human Pose Estimation},
author={Sun, Ke and Xiao, Bin and Liu, Dong and Wang, Jingdong},
booktitle={CVPR},
year={2019}
}Được sao chép từ khối trích dẫn của tác giả tại github.com/leoxiaobin/deep-high-resolution-net.pytorch#citation.