ultralytics / ultralytics

NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite
https://docs.ultralytics.com
GNU Affero General Public License v3.0
23.76k stars 4.74k forks source link

How can I handle images with a resolution of 3840*2160 directly? #11677

Open shengyuqing opened 1 week ago

shengyuqing commented 1 week ago

Search before asking

Question

The primary application is detecting small defects in products, where reducing the size, for example to 640, would compromise the detection capability."

Additional

No response

github-actions[bot] commented 1 week ago

👋 Hello @shengyuqing, thank you for your interest in Ultralytics YOLOv8 🚀! We recommend a visit to the Docs for new users where you can find many Python and CLI usage examples and where many of the most common questions may already be answered.

If this is a 🐛 Bug Report, please provide a minimum reproducible example to help us debug it.

If this is a custom training ❓ Question, please provide as much information as possible, including dataset image examples and training logs, and verify you are following our Tips for Best Training Results.

Join the vibrant Ultralytics Discord 🎧 community for real-time conversations and collaborations. This platform offers a perfect space to inquire, showcase your work, and connect with fellow Ultralytics users.

Install

Pip install the ultralytics package including all requirements in a Python>=3.8 environment with PyTorch>=1.8.

pip install ultralytics

Environments

YOLOv8 may be run in any of the following up-to-date verified environments (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled):

Status

Ultralytics CI

If this badge is green, all Ultralytics CI tests are currently passing. CI tests verify correct operation of all YOLOv8 Modes and Tasks on macOS, Windows, and Ubuntu every 24 hours and on every commit.

glenn-jocher commented 1 week ago

You can handle high-resolution images directly by setting the imgsz parameter to your desired resolution (3840x2160) during inference or training. However, processing such high-resolution images can be computationally expensive, so ensure your hardware setup can handle it. Here’s an example of how you can set this up:

yolo detect predict model=yolov8n.pt source='path/to/high-res.jpg' imgsz=3840,2160

Adjust your model’s architecture and training parameters for best results with high-resolution images, especially for small object detection. If performance is an issue, consider using techniques like a sliding window approach or image tiling.

shengyuqing commented 1 week ago

You can handle high-resolution images directly by setting the imgsz parameter to your desired resolution (3840x2160) during inference or training. However, processing such high-resolution images can be computationally expensive, so ensure your hardware setup can handle it. Here’s an example of how you can set this up:

yolo detect predict model=yolov8n.pt source='path/to/high-res.jpg' imgsz=3840,2160

Adjust your model’s architecture and training parameters for best results with high-resolution images, especially for small object detection. If performance is an issue, consider using techniques like a sliding window approach or image tiling.

Thank you very much for your answer to my question. Okay, I'll try it with the original image first. Another point is that the current defect detection is rectangular. Do I need to adjust it to a square image during training and inference?

glenn-jocher commented 1 week ago

@shengyuqing no need to adjust your rectangular images to square. YOLOv8 can handle different aspect ratios effectively. Just set the imgsz parameter to your image’s resolution. Here's an example command for running inference with original rectangular dimensions:

yolo detect predict model=yolov8n.pt source='path/to/rectangular-image.jpg' imgsz=3840,2160

This approach should work well without modifying the shape of your images. Give it a try and see how it performs! 😊

shengyuqing commented 4 days ago

@glenn-jocher Thank you very much for your reply. What I used for training before was model.train(data='data/train_Normal.yaml', epochs=epochs, workers=0,save=True,device=gpus,imgsz=500,batch=batch,close_mosaic=1) This line of code, how to change“ imgsz=500 ”to “imgsz=3840,2160”?