mirror of
https://github.com/THU-MIG/yolov10.git
synced 2025-07-07 22:04:53 +08:00
ultralytics 8.0.103
minor fixes (#2634)
Co-authored-by: kssion <appplus@icloud.com> Co-authored-by: Eli Spizzichino <diramazioni@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: xbkaishui <xxkaishui@gmail.com>
This commit is contained in:
parent
e2e3e367a2
commit
7884098857
@ -28,11 +28,6 @@ RUN python3 -m pip install --upgrade pip wheel
|
|||||||
RUN pip install --no-cache tqdm matplotlib pyyaml psutil thop pandas onnx "numpy==1.23"
|
RUN pip install --no-cache tqdm matplotlib pyyaml psutil thop pandas onnx "numpy==1.23"
|
||||||
RUN pip install --no-cache -e .
|
RUN pip install --no-cache -e .
|
||||||
|
|
||||||
# Resolve duplicate OpenCV installation issues in https://github.com/ultralytics/ultralytics/issues/2407
|
|
||||||
RUN apt_packages=$(dpkg -l | grep opencv | awk '{print $2}') && [ -n "$apt_packages" ] && apt-get remove -y $apt_packages || true
|
|
||||||
RUN pip uninstall -y opencv-python
|
|
||||||
RUN pip install "opencv-python<4.7"
|
|
||||||
|
|
||||||
# Set environment variables
|
# Set environment variables
|
||||||
ENV OMP_NUM_THREADS=1
|
ENV OMP_NUM_THREADS=1
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
||||||
|
|
||||||
__version__ = '8.0.101'
|
__version__ = '8.0.103'
|
||||||
|
|
||||||
from ultralytics.hub import start
|
from ultralytics.hub import start
|
||||||
from ultralytics.vit.rtdetr import RTDETR
|
from ultralytics.vit.rtdetr import RTDETR
|
||||||
|
@ -346,7 +346,7 @@ class RTDETRDecoder(nn.Module):
|
|||||||
bs, _, _ = memory.shape
|
bs, _, _ = memory.shape
|
||||||
# prepare input for decoder
|
# prepare input for decoder
|
||||||
anchors, valid_mask = self._generate_anchors(spatial_shapes, dtype=memory.dtype, device=memory.device)
|
anchors, valid_mask = self._generate_anchors(spatial_shapes, dtype=memory.dtype, device=memory.device)
|
||||||
memory = torch.where(valid_mask, memory, torch.tensor(0.))
|
memory = torch.where(valid_mask, memory, 0)
|
||||||
output_memory = self.enc_output(memory)
|
output_memory = self.enc_output(memory)
|
||||||
|
|
||||||
enc_outputs_class = self.enc_score_head(output_memory) # (bs, h*w, nc)
|
enc_outputs_class = self.enc_score_head(output_memory) # (bs, h*w, nc)
|
||||||
|
@ -128,7 +128,7 @@ class Mosaic(BaseMixTransform):
|
|||||||
n (int, optional): The grid size, either 4 (for 2x2) or 9 (for 3x3).
|
n (int, optional): The grid size, either 4 (for 2x2) or 9 (for 3x3).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, dataset, imgsz=640, p=1.0, n=9):
|
def __init__(self, dataset, imgsz=640, p=1.0, n=4):
|
||||||
"""Initializes the object with a dataset, image size, probability, and border."""
|
"""Initializes the object with a dataset, image size, probability, and border."""
|
||||||
assert 0 <= p <= 1.0, f'The probability should be in range [0, 1], but got {p}.'
|
assert 0 <= p <= 1.0, f'The probability should be in range [0, 1], but got {p}.'
|
||||||
assert n in (4, 9), 'grid must be equal to 4 or 9.'
|
assert n in (4, 9), 'grid must be equal to 4 or 9.'
|
||||||
|
@ -44,8 +44,7 @@ class MixAndRectDataset:
|
|||||||
indexes = transform.get_indexes(self.dataset)
|
indexes = transform.get_indexes(self.dataset)
|
||||||
if not isinstance(indexes, collections.abc.Sequence):
|
if not isinstance(indexes, collections.abc.Sequence):
|
||||||
indexes = [indexes]
|
indexes = [indexes]
|
||||||
mix_labels = [deepcopy(self.dataset[index]) for index in indexes]
|
labels['mix_labels'] = [deepcopy(self.dataset[index]) for index in indexes]
|
||||||
labels['mix_labels'] = mix_labels
|
|
||||||
if self.dataset.rect and isinstance(transform, LetterBox):
|
if self.dataset.rect and isinstance(transform, LetterBox):
|
||||||
transform.new_shape = self.dataset.batch_shapes[self.dataset.batch[index]]
|
transform.new_shape = self.dataset.batch_shapes[self.dataset.batch[index]]
|
||||||
labels = transform(labels)
|
labels = transform(labels)
|
||||||
|
@ -242,13 +242,13 @@ if WINDOWS: # emoji-safe logging
|
|||||||
LOGGER.addFilter(EmojiFilter())
|
LOGGER.addFilter(EmojiFilter())
|
||||||
|
|
||||||
|
|
||||||
def yaml_save(file='data.yaml', data=None):
|
def yaml_save(file='data.yaml', data={}):
|
||||||
"""
|
"""
|
||||||
Save YAML data to a file.
|
Save YAML data to a file.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
file (str, optional): File name. Default is 'data.yaml'.
|
file (str, optional): File name. Default is 'data.yaml'.
|
||||||
data (dict, optional): Data to save in YAML format. Default is None.
|
data (dict): Data to save in YAML format.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
None: Data is saved to the specified file.
|
None: Data is saved to the specified file.
|
||||||
@ -261,7 +261,7 @@ def yaml_save(file='data.yaml', data=None):
|
|||||||
# Convert Path objects to strings
|
# Convert Path objects to strings
|
||||||
for k, v in data.items():
|
for k, v in data.items():
|
||||||
if isinstance(v, Path):
|
if isinstance(v, Path):
|
||||||
dict[k] = str(v)
|
data[k] = str(v)
|
||||||
|
|
||||||
# Dump data to file in YAML format
|
# Dump data to file in YAML format
|
||||||
with open(file, 'w') as f:
|
with open(file, 'w') as f:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user