Fix yolo load failing silently (#10046)

* wait for js before loading model

* use f32

* revert html changes, try both cameras and remove f16 req

* clean
This commit is contained in:
Rory Clear
2025-05-07 19:46:09 +01:00
committed by GitHub
parent 10c9ede6b7
commit 9f2931ae67
2 changed files with 15 additions and 12 deletions

View File

@@ -127,14 +127,22 @@
const offscreenContext = offscreenCanvas.getContext('2d');
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({ audio: false, video: { facingMode: { ideal: "environment" }}}).then(function (stream) {
if (navigator.mediaDevices?.getUserMedia) {
const tryCamera = facing => navigator.mediaDevices.getUserMedia({ audio: false, video: { facingMode: { ideal: facing } } });
const handle = stream => {
video.srcObject = stream;
video.onloadedmetadata = function() {
canvas.width = video.clientWidth;
canvas.height = video.clientHeight;
}
});
};
};
tryCamera("environment").then(handle).catch(() =>
tryCamera("user").then(handle).catch(e => {
wgpuError.textContent = "Error: Could not access camera."
wgpuError.style.display = "block";
loadingContainer.style.display = "none";
})
);
}
async function processFrame() {
@@ -246,7 +254,6 @@
if (!navigator.gpu) return false;
const adapter = await navigator.gpu.requestAdapter();
return await adapter.requestDevice({
requiredFeatures: ["shader-f16"],
powerPreference: "high-performance"
});
};

View File

@@ -352,13 +352,9 @@ def postprocess(output, max_det=300, conf_threshold=0.25, iou_threshold=0.45):
def get_weights_location(yolo_variant: str) -> Path:
weights_location = Path(__file__).parents[1] / "weights" / f'yolov8{yolo_variant}.safetensors'
fetch(f'https://gitlab.com/r3sist/yolov8_weights/-/raw/master/yolov8{yolo_variant}.safetensors', weights_location)
if not is_dtype_supported(dtypes.half):
f32_weights = weights_location.with_name(f"{weights_location.stem}_f32.safetensors")
if not f32_weights.exists(): convert_f16_safetensor_to_f32(weights_location, f32_weights)
weights_location = f32_weights
return weights_location
f32_weights = weights_location.with_name(f"{weights_location.stem}_f32.safetensors")
if not f32_weights.exists(): convert_f16_safetensor_to_f32(weights_location, f32_weights)
return f32_weights
if __name__ == '__main__':