VSCode 터미널에서 YOLO 추론 결과를 확인하는 방법#
libsixel 웹사이트의 이미지입니다.
동기#
SSH를 통해 원격 머신에 연결할 때 일반적으로 이미지 결과를 시각화하는 것은 불가능하거나 GUI가 있는 로컬 기기로 데이터를 이동해야 합니다. VSCode 통합 터미널은 이미지를 직접 렌더링할 수 있으므로, 파일을 노트북으로 다시 복사할 필요 없이 추론을 실행하는 바로 그 자리에서 예측 결과를 확인할 수 있습니다. 이 가이드에서는 설정 활성화 방법, 코드 연결 방법을 안내하고 자주 묻는 질문에 답변합니다.
Linux 및 macOS에서만 호환됩니다. Windows 지원 및 터미널에서의 이미지 뷰어(sixel) 사용에 대한 업데이트는 VSCode repository, Issue status 또는 documentation을 확인하세요.
통합 터미널을 사용하여 이미지를 보기 위해 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
-
가상 환경에
python-sixel라이브러리를 설치합니다. 이것은 더 이상 유지 관리되지 않는PySixel라이브러리의 fork입니다.pip install sixel -
모델을 로드하고 추론을 실행한 다음, 결과를 시각화(plot)하여 변수에 저장합니다. 추론 인수 및 결과 작업에 대한 자세한 내용은 예측 모드 페이지를 참조하세요.
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)!- 사용 가능한 인수를 확인하려면 시각화(plot) 메서드 매개변수를 참조하세요.
-
이제 OpenCV를 사용하여
np.ndarray을bytes데이터로 변환합니다. 그런 다음io.BytesIO을 사용하여 "파일 유사(file-like)" 객체를 만듭니다.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에 있는 객체만 필요합니다. - 사용 가능한 인수를 확인하려면 시각화(plot) 메서드 매개변수를 참조하세요.
터미널에서 이미지 보기를 "지우기" 위해 clear을 사용해야 할 수 있습니다.
FAQ#
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="ultralytics/assets/bus.jpg") 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 그래픽과 호환되는 기본 터미널 기능을 갖추고 있기 때문입니다. sixel을 사용하는 터미널 그래픽에 대한 Windows 지원은 아직 개발 중입니다. Windows 호환성에 대한 업데이트는 VSCode 이슈 상태 및 문서를 확인하세요.
아무것도 표시되지 않으면 순서대로 다음 항목을 확인하십시오:
- Process 섹션에 표시된 대로
terminal.integrated.enableImages및terminal.integrated.gpuAcceleration이 모두 활성화되어 있는지 확인한 다음, 설정이 적용되도록 통합 터미널을 다시 시작하세요. - 스크립트가 실행되는 가상 환경(
pip install sixel)에sixel이 설치되어 있는지 확인하세요. cv2.imencode는 이미지가 비어 있거나 유효한 배열이 아닌 경우 오류를 발생시키므로, 인코딩하기 전에plot이 유효한np.ndarray인지 확인하세요.results[0].plot()가 허용하는 값은 plot method parameters를 참조하세요.
문제가 지속되면 터미널 이미지 지원 상태에 대해 VSCode 저장소를 참조하세요.
- Process 섹션에 표시된 대로
터미널에서 sixel을 사용하여 비디오 추론 결과나 애니메이션 GIF 프레임을 표시하는 기능은 현재 테스트되지 않았으며 지원되지 않을 수 있습니다. 정적 이미지부터 시작하여 호환성을 확인하는 것을 권장합니다. 성능 제약 사항을 염두에 두고 비디오 결과 시도는 본인의 책임하에 진행하세요. 추론 결과 시각화에 대한 자세한 내용은 예측 모드 페이지를 방문하세요.
sixel패키지는 유지 관리되지 않는PySixel라이브러리의 fork이며, Pillow(PIL)를 감싸는 가벼운 Python 래퍼입니다.import sixel가 실패하거나SixelWriter().draw()에서 오류가 발생하는 경우, 활성화된 가상 환경에 패키지가 설치되었는지 확인하고, Pillow 사용 가능 여부를 점검하며, 플랫폼별 참고 사항은 python-sixel GitHub repository를 확인하세요.draw()에 전달할 이미지 생성에 대한 자세한 내용은 predict mode 문서를 참조하세요.