터미널에서 추론 결과 보기
libsixel 웹사이트의 이미지.
동기
원격 시스템에 연결할 때 일반적으로 이미지 결과를 시각화하는 것은 불가능하거나 GUI가 있는 로컬 장치로 데이터를 이동해야 합니다. VSCode 통합 터미널을 사용하면 이미지를 직접 렌더링할 수 있습니다. 다음은 ultralytics와 예측 결과를 함께 사용하여 이를 수행하는 방법에 대한 간단한 시연입니다.
Linux 및 MacOS에서만 호환됩니다. VSCode 저장소를 확인하거나, 이슈 상태 또는 문서에서 sixel을 사용하여 터미널에서 이미지를 보는 것에 대한 Windows 지원 업데이트를 확인하십시오.
통합 터미널을 사용하여 이미지를 보기 위한 VSCode 호환 프로토콜은 sixel 및 iTerm입니다. 이 가이드에서는 sixel 프로토콜 사용법을 설명합니다.
절차
-
먼저 VSCode에서
terminal.integrated.enableImages및terminal.integrated.gpuAcceleration설정을 활성화해야 합니다."terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": true
-
Install the
python-sixellibrary in your virtual environment. This is a fork of thePySixellibrary, which is no longer maintained.pip install sixel -
모델을 로드하고 추론을 실행한 다음, 결과를 플롯하고 변수에 저장하십시오. 추론 인수 및 결과 작업에 대한 자세한 내용은 예측 모드 페이지를 참조하십시오.
from ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # Run inference on an image results = model.predict(source="ultralytics/assets/bus.jpg") # Plot inference results plot = results[0].plot() # (1)!- 사용 가능한 인수를 보려면 플롯 메서드 매개변수를 참조하십시오.
-
이제 OpenCV를 사용하여
np.ndarray를bytes데이터로 변환하십시오. 그런 다음io.BytesIO를 사용하여 "파일과 유사한" 객체를 만드십시오.import io import cv2 # Results image as bytes im_bytes = cv2.imencode( ".png", # (1)! plot, )[1].tobytes() # (2)! # Image bytes as a file-like object mem_file = io.BytesIO(im_bytes)- 다른 이미지 확장자를 사용하는 것도 가능합니다.
- 반환된 인덱스
1의 객체만 필요합니다.
-
SixelWriter인스턴스를 생성한 다음.draw()메서드를 사용하여 터미널에 이미지를 그립니다.from sixel import SixelWriter # Create sixel writer object w = SixelWriter() # Draw the sixel image in the terminal w.draw(mem_file)
추론 결과 예시
비디오나 애니메이션 GIF 프레임에 이 예제를 사용하는 것은 테스트되지 않았습니다. 시도할 경우 발생하는 위험은 사용자 본인의 책임입니다.
전체 코드 예제
import io
import cv2
from sixel import SixelWriter
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model.predict(source="ultralytics/assets/bus.jpg")
# Plot inference results
plot = results[0].plot() # (3)!
# Results image as bytes
im_bytes = cv2.imencode(
".png", # (1)!
plot,
)[1].tobytes() # (2)!
mem_file = io.BytesIO(im_bytes)
w = SixelWriter()
w.draw(mem_file)- 다른 이미지 확장자를 사용하는 것도 가능합니다.
- 반환된 인덱스
1의 객체만 필요합니다. - 사용 가능한 인수를 보려면 플롯 메서드 매개변수를 참조하십시오.
터미널에서 이미지 보기를 "지우기" 위해 clear를 사용해야 할 수도 있습니다.
FAQ
macOS 또는 Linux의 VSCode 터미널에서 YOLO 추론 결과를 어떻게 볼 수 있습니까?
macOS 또는 Linux의 VSCode 터미널에서 YOLO 추론 결과를 보려면 다음 단계를 따르십시오:
-
필요한 VSCode 설정을 활성화하십시오:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto" -
sixel 라이브러리를 설치하십시오:
pip install sixel -
YOLO 모델을 로드하고 추론을 실행하십시오:
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model.predict(source="path_to_image") plot = results[0].plot() -
추론 결과 이미지를 바이트로 변환하고 터미널에 표시하십시오:
import io import cv2 from sixel import SixelWriter im_bytes = cv2.imencode(".png", plot)[1].tobytes() mem_file = io.BytesIO(im_bytes) SixelWriter().draw(mem_file)
자세한 내용은 예측 모드 페이지를 방문하십시오.
sixel 프로토콜이 왜 Linux와 macOS에서만 작동합니까?
sixel 프로토콜은 현재 Linux와 macOS에서만 지원되는데, 이는 이 플랫폼들이 sixel 그래픽과 호환되는 기본 터미널 기능을 갖추고 있기 때문입니다. sixel을 사용하는 터미널 그래픽에 대한 Windows 지원은 아직 개발 중입니다. Windows 호환성 업데이트는 VSCode 이슈 상태 및 문서를 확인하십시오.
VSCode 터미널에서 이미지를 표시할 때 문제가 발생하면 어떻게 해야 합니까?
sixel을 사용하여 VSCode 터미널에서 이미지를 표시할 때 문제가 발생하면 다음을 수행하십시오:
-
VSCode에서 필요한 설정이 활성화되었는지 확인하십시오:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto" -
sixel 라이브러리 설치를 확인하십시오:
pip install sixel -
이미지 데이터 변환 및 플롯 코드에 오류가 있는지 확인하십시오. 예를 들어:
import io import cv2 from sixel import SixelWriter im_bytes = cv2.imencode(".png", plot)[1].tobytes() mem_file = io.BytesIO(im_bytes) SixelWriter().draw(mem_file)
문제가 지속되면 VSCode 저장소를 참조하고, 추가 안내를 위해 플롯 메서드 매개변수 섹션을 방문하십시오.
YOLO가 sixel을 사용하여 터미널에 비디오 추론 결과를 표시할 수 있습니까?
터미널에서 sixel을 사용하여 비디오 추론 결과나 애니메이션 GIF 프레임을 표시하는 것은 현재 테스트되지 않았으며 지원되지 않을 수 있습니다. 정적 이미지로 시작하여 호환성을 확인하는 것을 권장합니다. 비디오 결과는 성능 제한을 고려하여 사용자의 책임하에 시도하십시오. 추론 결과 플로팅에 대한 자세한 내용은 예측 모드 페이지를 방문하십시오.
python-sixel 라이브러리 문제를 어떻게 해결합니까?
python-sixel 라이브러리 문제를 해결하려면 다음을 수행하십시오:
-
가상 환경에 라이브러리가 올바르게 설치되었는지 확인하십시오:
pip install sixel -
필요한 Python 및 시스템 종속성이 있는지 확인하십시오.
-
추가 문서 및 커뮤니티 지원은 python-sixel GitHub 저장소를 참조하십시오.
-
코드에서
SixelWriter사용 및 이미지 데이터 변환 단계와 같은 잠재적인 오류를 다시 확인하십시오.
YOLO 모델 작업 및 sixel 통합에 대한 추가 지원은 내보내기 및 예측 모드 문서 페이지를 참조하십시오.