Docker imageをビルドする

もしあなたがDocker imageを自分自身でビルドしたいならば、下記を参考にしてください。

まずFACE01_DEVリポジトリからクローンします。

git clone https://github.com/yKesamaru/FACE01_DEV.git

nvidia-docker2パッケージを使ってFACE01Docker imageをビルドする

cd FACE01_DEV
docker build -t <name:tag> -f docker/Dockerfile_gpu . --network host

nvidia-docker2パッケージを使わずにFACE01Docker imageをビルドする

cd FACE01_DEV
docker build -t <name:tag> -f docker/Dockerfile_no_gpu . --network host

あなたのDockerHubリポジトリへアップロードしたいとき

Reference is here. 日本語はこちらです。

# Built Docker Image
docker built ...
# Run Docker Image
docker run ...
# Confirm CONTAINER-ID
docker ps
# Confirm IMAGE-ID
docker images
# Commit container
docker container commit <container-id> <hub-user>/<repo-name>[:<tag>]
# Tag the Image with the repository name
docker tag <image-id> <repo-name>
# Docker login
docker login
# Docker push
docker push <hub-user>/<repo-name>[:<tag>]

ビルドされたイメージを確認する

docker images
REPOSITORY   TAG        IMAGE ID       CREATED          SIZE
face01_gpu   3.0.03_1   abd4c0896c00   48 minutes ago   21.9GB

以下の内容はDockerを使ってFACE01を使うと内容が重複します。詳細はDockerを使ってFACE01を使うをご参照ください。

DockerでGUIが使えるようにxhostの設定をする

xhost +local:

FACE01_DEVのコンテナを起動する

カメラを接続しない場合

docker run --rm -it \
  --gpus all -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix <image id>

カメラを接続する場合

docker run --rm -it \
  --gpus all -e DISPLAY=$DISPLAY \
  --device /dev/video0:/dev/video0:mwr \
  -v /tmp/.X11-unix:/tmp/.X11-unix <image id>

ホストとフォルダを共有する場合

docker run -it \
    --gpus all -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v /path/to/host/folder:/path/to/container/folder \
    <image id>

nvidia-smiでチェック

# nvidia-smiによるチェック
(FACE01_DEV) docker@02926f2467b4:~/FACE01_DEV$ nvidia-smi
Thu Aug 15 11:13:25 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 555.42.06              Driver Version: 555.42.06      CUDA Version: 12.5     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce GTX 1660 Ti     Off |   00000000:09:00.0  On |                  N/A |
| 41%   39C    P8             13W /  120W |     570MiB /   6144MiB |      3%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
+-----------------------------------------------------------------------------------------+

# nvcc --versionによるチェック
(FACE01_DEV) docker@02926f2467b4:~/FACE01_DEV$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_Mar__8_18:18:20_PST_2022
Cuda compilation tools, release 11.6, V11.6.124
Build cuda_11.6.r11.6/compiler.31057947_0

# ファイルをチェック
(FACE01_DEV) docker@02926f2467b4:~/FACE01_DEV$ ls
Docker_INSTALL_FACE01.sh  bin         docs       include  multipleFaces  output              pyvenv.cfg
SystemCheckLock           build       example    lib      noFace         preset_face_images  requirements_dev.txt
assets                    config.ini  face01lib  lib64    npKnown.npz    pyproject.toml      share

# エグザンプルコードをチェック
(FACE01_DEV) docker@02926f2467b4:~/FACE01_DEV$ ls example/
CTKtest.py               combination_similarity.py               example_logging.py                    make_npKnown_file.py
__init__.py              data_augmentation.py                    face_coordinates.py                   output.txt
__pycache__              data_augmentation_mp.py                 faiss_combination_similarity.py       pysimplegui_bk
aligned_crop_face.py     data_structure.py                       get_encoded_data.py                   similarity.py
anti_spoof.py            detect_eye_blink.py                     get_encoded_data_JAPANESE_FACE_V1.py  simple.py
average_face.py          display_GUI_window.py                   img                                   simple_JAPANESE_FACE_V1.py
benchmark_CUI.py         display_GUI_window_JAPANESE_FACE_V1.py  jitter.py                             simple_file_browser.py
benchmark_GUI_window.py  distort_barrel.py                       lightweight_GUI.py                    点検済
combination_counter.py   draw_datas.py                           make_ID_card.py                       不明_bk
(FACE01_DEV) docker@02926f2467b4:~/FACE01_DEV$

コンテナ内のPython仮想環境を起動する(重要)

docker@02926f2467b4:~/FACE01_DEV$ . bin/activate
(FACE01_DEV) docker@02926f2467b4:~/FACE01_DEV$

![NOTE]: コンテナ内の``Python仮想環境を起動しないと、FACE01`は動作しません

エグザンプルコードを実行する

動作確認のためにエグザンプルコードを実行してみましょう。

(FACE01_DEV) docker@02926f2467b4:~/FACE01_DEV$ python3 example/lightweight_GUI.py
Copyright Owner: Yoshitsugu Kesamaru
Copyright Owner: Yoshitsugu Kesamaru
[2024-08-15 11:26:42,563] [face01lib.load_preset_image] [load_preset_image.py] [INFO] Loading npKnown.npz

エグザンプルコードが正常に動作すれば、動作確認終了です。

この開発環境を使って顔認証システムの開発を行いましょう!

CUDAライセンス

コンテナの起動にあたり、以下のメッセージが出力されます。

==========
== CUDA ==
==========

CUDA Version 11.6.1

Container image Copyright (c) 2016-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

This container image and its contents are governed by the NVIDIA Deep Learning Container License.
By pulling and using the container, you accept the terms and conditions of this license:
https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license

A copy of this license is made available in this container at /NGC-DL-CONTAINER-LICENSE for your convenience.

*************************
** DEPRECATION NOTICE! **
*************************
THIS IMAGE IS DEPRECATED and is scheduled for DELETION.
    https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/support-policy.md

CUDAを使った開発環境に向けてのメッセージです。具体的なライセンスはこちらにあります。

このコンテナを使って商用利用のための開発ができます。 詳細は上記PDFをご覧ください。 このような制限が邪魔である場合には、docker/Dockerfile_gpuのベースイメージを変更してください。