Jetson でStyleGANを使って画像生成


StyleGAN を使ってこういう画像を生成してみます。この顔の人物は現実には存在しません。

Jetson で稼働確認済み。

Jetson Nano             Jetson Xavier NX + コンテナ

Xavier NX では問題なく実行できましたが、Nano(A02)ではOOMエラーが出ました、解消の仕方はここを参照

 

Jetpackは以下を使って環境を構築しておきます。
R32 (release), REVISION: 4.4

ホスト側で作業用ディレクトリを作っておきます。

 

/home/jetson はご自分の環境に適宜、ご変更ください。

 

学習済みモデルのダウンロードでデフォルトのコードを使うと以下のようなエラーになることがあります。事前にマニュアルでファイルをダウンロードしておきます。

OSError: Google Drive quota exceeded

現在、このファイルを閲覧、ダウンロードできません。

最近このファイルを閲覧、ダウンロードしたユーザーの数が多すぎます。しばらくしてからファイルにアクセスしてください。アクセスしようとしているファイルのサイズが非常に大きい場合や、ファイルが多くのユーザーと共有されている場合は、ファイルを閲覧、ダウンロードできるようになるまで最大 24 時間かかることがあります。24 時間が経過してもファイルにアクセスできない場合は、ドメイン管理者にお問い合わせください。

以下をクリックして直接ダウンロード

pklファイル

ダウンロードしたファイルは、/home/jetson/work-styleganに展開しておきます。

 

コンテナ用にイメージをダウンロードしておきます。

コンテナ作成

sudo docker create -it --name my_stylegan --gpus all --network host -v /home/jetson/work-stylegan/stylegan-master:/work nvcr.io/nvidia/l4t-ml:r32.4.4-py3

コンテナを起動

アップデート&アップグレードとライブラリやパッケージのインストール

 

作業用フォルダーへ移動

 

 


画像生成

以下のようなpythonファイルを作成。枚数を指定して画像を生成してみます。

【img_generate.py】

 

9枚の顔画像を生成してみます。

エラーになったらここ参照

実行画面はこんな具合。

resultsフォルダーに画像が生成されます。


 


エラーが出る場合

Jetson Nanoでは以下のようなエラーになることがあります。

 

….OP_REQUIRES failed at random_op.cc:76 : Resource exhausted: OOM when allocating tensor with shape….

とか、

tensorflow.python.framework.errors_impl.InternalError: 2 root error(s) found.
(0) Internal: Dst tensor is not initialized.
[[{{node _arg_D/4×4/Dense0/weight/new_value_0_23}}]]
[[D/FromRGB_lod6/bias/setter/_795]]
(1) Internal: Dst tensor is not initialized.
[[{{node _arg_D/4×4/Dense0/weight/new_value_0_23}}]]
0 successful operations.
0 derived errors ignored.

 

NanoはRAMが4GBしかなくTensorFlowはGPUを全部使おうとするので、OOM(Out Of Memory )になりやすいようです。

で、プロセスでTensorFlowが使うメモリを制限します。

以下のコードを追加して、img_generate.py を一回実行します。プロセスはOSのOOM killer に切断(killed)されますが、これによってTensorFlowのメモリ使用量は制限されます。その後はこれをコメントアウトして再実行すればエラーは起きません。


 

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*