Coral Edge TPU
와 Ultralytics
의 강력한 기능이 모두 한곳에 있습니다: edge-tpu-silva
. edge-tpu-silva 는 Coral TPU USB 종속성 설치를 단순화하고 PyCoral 및 Ultralytics와의 호환성을 보장하는 Python 패키지입니다. 이 패키지는 다양한 엣지 장치에서 객체 detection
, segmentation
및 classification
기능을 강화하여 더 높은 FPS
(실시간 프로세서 속도)를 달성합니다.
Coral USB Accelerator Exclusivity
:
edge-tpu-silva 라이브러리는 Coral USB Accelerator와의 원활한 통합을 위해 특별히 제작되었습니다. 이 강력한 하드웨어 가속기는 단순한 요구 사항이 아니라 전략적 선택으로, 탁월한 객체 detection
, segmentation
및 classification
위한 라이브러리의 잠재력을 최대한 활용합니다.
Coral USB Accelerator를 살펴보고 edge-tpu-silva 라이브러리를 통해 엣지 컴퓨팅에 대한 맞춤형 접근 방식을 경험해 보세요.
edge-tpu-silva
패키지는 python versions <3.10
에서만 압축 가능합니다. Python 버전이 호환되지 않으면 특정 Python 버전을 설치하십시오.
예:
Raspberry Pi
의 경우 pyenv를 사용하여 특정 Python 버전을 설치하는 방법에 대한 지침을 보려면 클릭하세요.
참고: Python 3.6~3.9가 권장됩니다. 특정 Python 버전을 설치하는 방법을 보려면 위 링크를 클릭하세요.
참고: Raspberry Pi가 최신 버전인지 확인하세요. 이렇게 하려면 터미널에서 아래 명령을 실행하세요.
sudo apt-get updatesudo apt-get upgrade
터미널에서 아래 bash 코드를 실행하여 .venv
라는 새 가상 환경을 생성하고 활성화하세요. 이 환경을 설치하려는 특정 디렉터리에 있는지 확인하세요.
python3 -m venv .venv
source .venv/bin/activate
edge-tpu-silva 를 설치하려면 지정된 Python 환경에서 다음 pip 명령을 사용하십시오.
pip install edge-tpu-silva
이 표는 다양한 장치 및 운영 체제와의 시스템 호환성에 대한 개요를 제공합니다.
호환성 | 설정 명령 | |
---|---|---|
라즈베리 파이 5 | ✔ | silvatpu-linux-설정 |
라즈베리 파이 4 | ✔ | silvatpu-linux-설정 |
라즈베리 파이 3 | ✔ | silvatpu-linux-설정 |
젯슨 나노 | ✔ | silvatpu-linux-설정 |
윈도우 | ||
macOS |
시스템에 대한 설정 도구를 구성하려면 1단계가 완료된 후 터미널에서 설정 명령을 실행하십시오.
예: Raspberry Pi 5를 사용하는 경우 1단계에 이어 터미널에서 아래 명령을 실행하세요.
silvatpu-linux-setup
이 명령은 Linux용 표준 Edge TPU 런타임을 설치하여 감소된 클럭 주파수로 디바이스를 실행합니다. 또는 최대 속도를 위한 버전을 설치할 수 있지만 전력 소비 증가 및 장치 발열에 주의하세요. 확실하지 않은 경우 안전을 위해 주파수를 줄이세요. 최대 빈도 런타임을 설치하려면 setup 명령의 속도를 max
로 지정하십시오.
silvatpu-linux-setup --speed max
두 버전의 런타임을 동시에 설치할 수는 없지만 위에 표시된 대로 대체 런타임을 설치하기만 하면 전환할 수 있습니다.
주의: 최대 클록 주파수에서 USB 가속기를 사용하면 위험할 정도로 뜨거워질 수 있습니다. 화상 부상을 방지하려면 손이 닿지 않는 곳에 두거나 감소된 클럭 주파수로 작동하십시오.
참고:
Coral USB Accelerator
usb 3.0 port (for faster speed)
. 설치 및 설정 중에 Coral USB 가속기가 연결된 경우 연결을 끊었다가 다시 연결하여proper configuration.
이 라이브러리를 사용하여 객체 detection
, segmentation
및 classification
의 강력한 기능을 활용하려면 Edge TPU 호환 .tflite 모델이 필요합니다. 이러한 모델은 Ultralytics
사용하여 내보내야 하며 edge-tpu-silva 라이브러리와의 원활한 통합을 보장합니다.
참고: YOLO 내보내기 중에 지정된
imgsz
값은 모든 프로세스에 대해imgsz
정의할 때 사용된 것과 동일한 값과 일치해야 합니다. 최적의 성능을 위해서는 이러한 설정의 일관성이 중요합니다.
작은 모델은 더 빠르게 실행되지만 정확도는 낮을 수 있고, 큰 모델은 더 느리게 실행되지만 일반적으로 정확도는 더 높습니다. edge-tpu-silva 라이브러리를 사용하여 아래 모델의 엣지 컴퓨팅 기능을 살펴보세요.
다운로드 링크 | 프로세스 | 기본 모델 | imgsz | 객체 클래스 |
---|---|---|---|---|
모델 다운로드 | 발각 | yolov8n.pt | 240 | 코코128 |
모델 다운로드 | 분할 | yolov8n-seg.pt | 240 | 코코128 |
모델 다운로드 | 발각 | yolov8n.pt | 192 | 코코128 |
모델 다운로드 | 분할 | yolov8n-seg.pt | 192 | 코코128 |
모델 다운로드 | 분류 | yolov8n-cls.pt | 640 | 이미지넷 |
모델 다운로드 | 발각 | yolov9c.pt | 240 | 코코128 |
참고: YOLOv9 모델, 특히 YOLOv9c.pt 버전은 크기가 상당하므로 TensorFlow Lite 버전도 상당히 큽니다. 결과적으로 Edge TPU의 처리 속도는 비교적 느립니다.
process_detection
함수를 사용하여 객체 감지를 수행하려면 다음 예를 따르세요.
from edge_tpu_silva import process_detection
# Run the object detection process
outs = process_detection ( model_path = 'path/to/your/model.tflite' , input_path = 'path/to/your/input/video.mp4' , imgsz = 192 )
for _ , _ in outs :
pass
process_detection
실행: 진입점 "silvatpu" 사용 명령줄에서 process_detection
함수를 사용하여 객체 감지를 수행하려면 사용자 친화적인 진입점 silvatpu
사용할 수 있습니다. 다음은 명령의 예입니다.
silvatpu -p det -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
process_segmentation
함수를 사용하여 객체 분할을 수행하려면 다음 예를 따르세요.
from edge_tpu_silva import process_segmentation
# Run the object segmentation process
outs = process_segmentation ( model_path = 'path/to/your/model.tflite' , input_path = 'path/to/your/input/video.mp4' , imgsz = 192 )
for _ , _ in outs :
pass
process_segmentation
실행: 진입점 "silvatpu" 사용 명령줄에서 process_segmentation
함수를 사용하여 객체 분할을 수행하려면 사용자 친화적인 진입점 silvatpu
사용할 수 있습니다. 다음은 명령의 예입니다.
silvatpu -p seg -m path/to/model.tflite -i path/to/input/video.mp4 -z 192 -t 0.5 -v True
detection
, segmentation
및 classification
기능 입력 매개변수매개변수 | 설명 | 기본값 |
---|---|---|
model_path | 객체 분할 모델의 경로입니다. | - |
input_path | 처리할 이미지/비디오의 파일 경로(카메라(0|1|2)). | - |
imgsz | 추론을 위한 이미지 크기를 정의합니다. | - |
threshold | 감지된 개체에 대한 임계값입니다. | 0.4 |
verbose | 터미널에 인쇄를 표시합니다. | True |
show | 분할된 프레임을 표시합니다. | False |
classes | 클래스 ID 집합으로 예측을 필터링합니다. | None |
detection
, segmentation
및 classification
기능 출력각 프로세스 함수는 다음과 같은 출력을 생성합니다.
출력 매개변수 | 설명 |
---|---|
objs_lst | 프레임에서 감지된 개체 목록입니다. |
fps | 처리된 프레임의 초당 프레임 수(fps)입니다. |
사용 예:
from edge_tpu_silva import process_detection
# Run the object detection process
outs = process_detection ( model_path = 'path/to/your/model.tflite' , input_path = 'path/to/your/input/video.mp4' , imgsz = 192 )
for objs_lst , fps in outs :
# Access the output parameters as needed
print ( f"Processed frame with { len ( objs_lst ) } objects. FPS: { fps } " )
print ( "List of object predictions in frame:" )
print ( objs_lst )
기여를 환영합니다! 문제를 발견하거나 개선을 위한 제안 사항이 있는 경우 문제를 공개하거나 풀 요청을 제출해 주세요.
Python 패키지 인덱스 유지관리자(c) [2024] David Nyarko