【初心者OK】PCで学習したYOLOモデル(best.pt)をJetson NanoでTensorRT化して爆速推論する方法(Dockerで完結)

【初心者OK】PCで学習したYOLOモデル(best.pt)をJetson NanoでTensorRT化して爆速推論する方法(Dockerで完結)

この記事でのファイル名ルール(混乱防止)

この記事では モデル名を最後まで best.pt で統一します。

  • PCで学習してできたファイル:best.pt
  • Jetsonへコピーした先:~/yolo_docker/models/best.pt
  • JetsonでTensorRT化してできるファイル:best.engine
  • リネーム後:best_640_fp16.engine

「名前を付け替えたい」場合は、最後にまとめてやるのがおすすめです。まずは best.pt 固定で進めると迷いません。

手順1:PCで作った best.pt をJetsonへコピー

Jetson(ホスト側)でフォルダを作る:

mkdir -p ~/yolo_docker/models

WinSCPなどで、PCの runs/detect/xxx/weights/best.pt をjetson側の以下にコピー:

  • ~/yolo_docker/models/best.pt

手順2:JetsonでDocker起動

Jetson(ホスト側):

DISPLAY=:0 xhost +SI:localuser:root

Docker起動(例):

sudo docker run --rm -it --name yolo12_gui \
  --runtime nvidia --net=host --privileged --device=/dev/video0 \
  -e DISPLAY=:0 \
  -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
  -v $HOME/yolo_docker:/workspace -w /workspace \
  yolo12-gui-jp4 bash

手順3:Docker内で best.pt が見えるか確認

ここ、あなたの指摘どおり **ls -lh だとサイズ情報が目立って「ファイル名が見えにくい」**ので、初心者向けには次の形が分かりやすいです。

✅ ファイル名が見えやすい確認コマンド

ls -la /workspace/models

「一覧でファイル名が必ず見える」ので迷いません。

さらに「サイズも見たい」なら:

ls -lah /workspace/models

best.pt が表示されていればOKです。

手順4:JetsonでTensorRT化(engine作成)

TensorRT化(エンジン作成)はこれです:

yolo export model=/workspace/models/best.pt format=engine imgsz=640 half=True device=0

ここでのポイント

  • format=engine:TensorRTのエンジン(.engine)を作る
  • imgsz=640:エンジンが想定する入力サイズ(推論時も基本これに合わせる)
  • half=True:**FP16(半精度)**で最適化する設定(速度が出やすい)

手順5:できた .engine を分かりやすい名前に変更(任意だけどおすすめ)

5-1) まず生成物を確認

ls -la /workspace/models

ここに best.engine(もしくは近い名前)ができていればOKです。

5-2) リネーム(fp16の意味を先に説明)

ここで出てくる fp16 は、さっきの half=True の意味です。

  • FP32:通常の精度(重め)
  • FP16:半分の精度で計算(軽い・速いことが多い)
    → Jetsonでは 速度優先でFP16を使うのが定番です

だから、リネームで fp16 と書いておくと、
「このengineはFP16で作ったやつだ」と後で見返したときに分かります。

例:best.enginebest_640_fp16.engine に変更

mv -f /workspace/models/best.engine /workspace/models/best_640_fp16.engine

もし best.engine という名前じゃなかったら、ls -la の結果に出ている「実際の.engine名」を使ってください。


手順6:engineで推論して確認(表示は同じ)

例:yolo_live.py を使う場合(指定記事と同じ考え方で「MODELだけ差し替え」):

MODEL=/workspace/models/best_640_fp16.engine IMGSZ=640 python3 yolo_live.py

推論で見るポイント(最低限)

  • 速くなったか(FPS/体感)
  • 検出がおかしくなってないか
  • IMGSZがengine作成時と同じか(ここ超大事)

まとめ(修正版)

fp16half=True のこと(FP16最適化で速くなりやすいので、名前に入れると管理が楽)

ファイル名は 最後まで best.pt で統一(混乱しない)

ファイル確認は ls -la(ファイル名が見やすい)

ここまで出来てれば自前のデータでモデルを作ってjetsonでTensorRT化して使える手順を確立できます。

ぜひ試してみてください。

About The Author

Hideki
東京大学発AIスタートアップ企業でロボット開発室室長、画像解析室室長、動画解析室室長を務め、AIエンジニアとしても画像認識関連の特許を在籍中に3つ取得。その後、KDDIグループ内でプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRISTのテックリードとして農業の人手不足の解決に向けた収穫ロボットの開発にチャレンジしている。ロボットは技術の総合格闘技との考え方から、AIだけでなく、ハードやエレキ、通信からクラウド、IOTまで幅広く手掛けることができる。最近では人とロボットの共存を目指すべく、性能だけを追い求める開発から「感動やワクワク体験」をデザインできるロボットの研究を進めており、人とロボットがうまく共存できる世界を作り出したいと日々行動している。

LEAVE A REPLY

*
*
* (公開されません)