mirror of
https://github.com/THU-MIG/yolov10.git
synced 2025-05-23 13:34:23 +08:00
ultralytics 8.1.29
improved disk space checking on correct path (#8977)
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> Co-authored-by: Kayzwer <68285002+Kayzwer@users.noreply.github.com>
This commit is contained in:
parent
b44e184041
commit
ab712288f7
@ -1,6 +1,6 @@
|
|||||||
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
||||||
|
|
||||||
__version__ = "8.1.28"
|
__version__ = "8.1.29"
|
||||||
|
|
||||||
from ultralytics.data.explorer.explorer import Explorer
|
from ultralytics.data.explorer.explorer import Explorer
|
||||||
from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld
|
from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld
|
||||||
|
@ -57,7 +57,7 @@ class DFL(nn.Module):
|
|||||||
|
|
||||||
def forward(self, x):
|
def forward(self, x):
|
||||||
"""Applies a transformer layer on input tensor 'x' and returns a tensor."""
|
"""Applies a transformer layer on input tensor 'x' and returns a tensor."""
|
||||||
b, c, a = x.shape # batch, channels, anchors
|
b, _, a = x.shape # batch, channels, anchors
|
||||||
return self.conv(x.view(b, 4, self.c1, a).transpose(2, 1).softmax(1)).view(b, 4, a)
|
return self.conv(x.view(b, 4, self.c1, a).transpose(2, 1).softmax(1)).view(b, 4, a)
|
||||||
# return self.conv(x.view(b, self.c1, 4, a).softmax(1)).view(b, 4, a)
|
# return self.conv(x.view(b, self.c1, 4, a).softmax(1)).view(b, 4, a)
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ def is_url(url, check=True):
|
|||||||
Defaults to True.
|
Defaults to True.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
(bool): Returns True if the string is a valid URL. If 'check' is True, also returns True if the URL exists online.
|
(bool): Returns True for a valid URL. If 'check' is True, also returns True if the URL exists online.
|
||||||
Returns False otherwise.
|
Returns False otherwise.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@ -191,12 +191,13 @@ def unzip_file(file, path=None, exclude=(".DS_Store", "__MACOSX"), exist_ok=Fals
|
|||||||
return path # return unzip dir
|
return path # return unzip dir
|
||||||
|
|
||||||
|
|
||||||
def check_disk_space(url="https://ultralytics.com/assets/coco128.zip", sf=1.5, hard=True):
|
def check_disk_space(url="https://ultralytics.com/assets/coco128.zip", path=Path.cwd(), sf=1.5, hard=True):
|
||||||
"""
|
"""
|
||||||
Check if there is sufficient disk space to download and store a file.
|
Check if there is sufficient disk space to download and store a file.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
url (str, optional): The URL to the file. Defaults to 'https://ultralytics.com/assets/coco128.zip'.
|
url (str, optional): The URL to the file. Defaults to 'https://ultralytics.com/assets/coco128.zip'.
|
||||||
|
path (str | Path, optional): The path or drive to check the available free space on.
|
||||||
sf (float, optional): Safety factor, the multiplier for the required free space. Defaults to 2.0.
|
sf (float, optional): Safety factor, the multiplier for the required free space. Defaults to 2.0.
|
||||||
hard (bool, optional): Whether to throw an error or not on insufficient disk space. Defaults to True.
|
hard (bool, optional): Whether to throw an error or not on insufficient disk space. Defaults to True.
|
||||||
|
|
||||||
@ -212,7 +213,7 @@ def check_disk_space(url="https://ultralytics.com/assets/coco128.zip", sf=1.5, h
|
|||||||
# Check file size
|
# Check file size
|
||||||
gib = 1 << 30 # bytes per GiB
|
gib = 1 << 30 # bytes per GiB
|
||||||
data = int(r.headers.get("Content-Length", 0)) / gib # file size (GB)
|
data = int(r.headers.get("Content-Length", 0)) / gib # file size (GB)
|
||||||
total, used, free = (x / gib for x in shutil.disk_usage(Path.cwd())) # bytes
|
total, used, free = (x / gib for x in shutil.disk_usage(path)) # bytes
|
||||||
|
|
||||||
if data * sf < free:
|
if data * sf < free:
|
||||||
return True # sufficient space
|
return True # sufficient space
|
||||||
@ -319,7 +320,7 @@ def safe_download(
|
|||||||
desc = f"Downloading {url if gdrive else clean_url(url)} to '{f}'"
|
desc = f"Downloading {url if gdrive else clean_url(url)} to '{f}'"
|
||||||
LOGGER.info(f"{desc}...")
|
LOGGER.info(f"{desc}...")
|
||||||
f.parent.mkdir(parents=True, exist_ok=True) # make directory if missing
|
f.parent.mkdir(parents=True, exist_ok=True) # make directory if missing
|
||||||
check_disk_space(url)
|
check_disk_space(url, path=f.parent)
|
||||||
for i in range(retry + 1):
|
for i in range(retry + 1):
|
||||||
try:
|
try:
|
||||||
if curl or i > 0: # curl download with retry, continue
|
if curl or i > 0: # curl download with retry, continue
|
||||||
|
@ -140,7 +140,7 @@ class KeypointLoss(nn.Module):
|
|||||||
d = (pred_kpts[..., 0] - gt_kpts[..., 0]).pow(2) + (pred_kpts[..., 1] - gt_kpts[..., 1]).pow(2)
|
d = (pred_kpts[..., 0] - gt_kpts[..., 0]).pow(2) + (pred_kpts[..., 1] - gt_kpts[..., 1]).pow(2)
|
||||||
kpt_loss_factor = kpt_mask.shape[1] / (torch.sum(kpt_mask != 0, dim=1) + 1e-9)
|
kpt_loss_factor = kpt_mask.shape[1] / (torch.sum(kpt_mask != 0, dim=1) + 1e-9)
|
||||||
# e = d / (2 * (area * self.sigmas) ** 2 + 1e-9) # from formula
|
# e = d / (2 * (area * self.sigmas) ** 2 + 1e-9) # from formula
|
||||||
e = d / (2 * self.sigmas).pow(2) / (area + 1e-9) / 2 # from cocoeval
|
e = d / ((2 * self.sigmas).pow(2) * (area + 1e-9) * 2) # from cocoeval
|
||||||
return (kpt_loss_factor.view(-1, 1) * ((1 - torch.exp(-e)) * kpt_mask)).mean()
|
return (kpt_loss_factor.view(-1, 1) * ((1 - torch.exp(-e)) * kpt_mask)).mean()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user