diff --git a/.fend.yaml b/.fend.yaml index 0bde45f..0ebf48b 100644 --- a/.fend.yaml +++ b/.fend.yaml @@ -9,3 +9,4 @@ skip: - .png - .output - .jpg + - .ipynb diff --git a/examples/face_dect.ipynb b/examples/face_dect.ipynb new file mode 100644 index 0000000..ec9d861 --- /dev/null +++ b/examples/face_dect.ipynb @@ -0,0 +1,877 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "8xHff6nf0WUr" + }, + "source": [ + "# Face detection and recognition inference pipeline\n", + "\n", + "The following example illustrates how to use the `facenet_pytorch` python package to perform face detection and recogition on an image dataset using an Inception Resnet V1 pretrained on the VGGFace2 dataset.\n", + "\n", + "The following Pytorch methods are included:\n", + "* Datasets\n", + "* Dataloaders\n", + "* GPU/CPU processing" + ] + }, + { + "cell_type": "code", + "source": [ + "!apt-get install python3.12\n", + "!pip install git+https://github.com/GitDataAI/jiaozifs_client_py.git\n", + "!pip install torchvision\n", + "!pip install Pillow\n", + "!pip install numpy\n", + "!pip install facenet_pytorch\n", + "!pip install git+https://github.com/GitDataAI/jz_dataloader.git" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "pgsA56KD2wzv", + "outputId": "85506cb4-9ca5-4cff-c601-02021deede8b" + }, + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Reading package lists... Done\n", + "Building dependency tree... Done\n", + "Reading state information... Done\n", + "The following additional packages will be installed:\n", + " libpython3.12-minimal libpython3.12-stdlib mailcap mime-support python3.12-minimal\n", + "Suggested packages:\n", + " python3.12-venv binfmt-support\n", + "The following NEW packages will be installed:\n", + " libpython3.12-minimal libpython3.12-stdlib mailcap mime-support python3.12 python3.12-minimal\n", + "0 upgraded, 6 newly installed, 0 to remove and 39 not upgraded.\n", + "Need to get 6,150 kB of archives.\n", + "After this operation, 23.3 MB of additional disk space will be used.\n", + "Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 mailcap all 3.70+nmu1ubuntu1 [23.8 kB]\n", + "Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 mime-support all 3.66 [3,696 B]\n", + "Get:3 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy/main amd64 libpython3.12-minimal amd64 3.12.2-1+jammy3 [874 kB]\n", + "Get:4 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy/main amd64 python3.12-minimal amd64 3.12.2-1+jammy3 [2,516 kB]\n", + "Get:5 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy/main amd64 libpython3.12-stdlib amd64 3.12.2-1+jammy3 [2,041 kB]\n", + "Get:6 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy/main amd64 python3.12 amd64 3.12.2-1+jammy3 [692 kB]\n", + "Fetched 6,150 kB in 1s (5,187 kB/s)\n", + "Selecting previously unselected package libpython3.12-minimal:amd64.\n", + "(Reading database ... 121753 files and directories currently installed.)\n", + "Preparing to unpack .../0-libpython3.12-minimal_3.12.2-1+jammy3_amd64.deb ...\n", + "Unpacking libpython3.12-minimal:amd64 (3.12.2-1+jammy3) ...\n", + "Selecting previously unselected package python3.12-minimal.\n", + "Preparing to unpack .../1-python3.12-minimal_3.12.2-1+jammy3_amd64.deb ...\n", + "Unpacking python3.12-minimal (3.12.2-1+jammy3) ...\n", + "Selecting previously unselected package mailcap.\n", + "Preparing to unpack .../2-mailcap_3.70+nmu1ubuntu1_all.deb ...\n", + "Unpacking mailcap (3.70+nmu1ubuntu1) ...\n", + "Selecting previously unselected package mime-support.\n", + "Preparing to unpack .../3-mime-support_3.66_all.deb ...\n", + "Unpacking mime-support (3.66) ...\n", + "Selecting previously unselected package libpython3.12-stdlib:amd64.\n", + "Preparing to unpack .../4-libpython3.12-stdlib_3.12.2-1+jammy3_amd64.deb ...\n", + "Unpacking libpython3.12-stdlib:amd64 (3.12.2-1+jammy3) ...\n", + "Selecting previously unselected package python3.12.\n", + "Preparing to unpack .../5-python3.12_3.12.2-1+jammy3_amd64.deb ...\n", + "Unpacking python3.12 (3.12.2-1+jammy3) ...\n", + "Setting up libpython3.12-minimal:amd64 (3.12.2-1+jammy3) ...\n", + "Setting up mailcap (3.70+nmu1ubuntu1) ...\n", + "Setting up python3.12-minimal (3.12.2-1+jammy3) ...\n", + "Setting up mime-support (3.66) ...\n", + "Setting up libpython3.12-stdlib:amd64 (3.12.2-1+jammy3) ...\n", + "Setting up python3.12 (3.12.2-1+jammy3) ...\n", + "Processing triggers for man-db (2.10.2-1) ...\n", + "Collecting git+https://github.com/GitDataAI/jiaozifs_client_py.git\n", + " Cloning https://github.com/GitDataAI/jiaozifs_client_py.git to /tmp/pip-req-build-k4i293l2\n", + " Running command git clone --filter=blob:none --quiet https://github.com/GitDataAI/jiaozifs_client_py.git /tmp/pip-req-build-k4i293l2\n", + " Resolved https://github.com/GitDataAI/jiaozifs_client_py.git to commit f7995a5c0f06250a36aba4e729f0693f71703107\n", + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Requirement already satisfied: urllib3>=1.15 in /usr/local/lib/python3.10/dist-packages (from jiaozifs-client==1.0.0) (2.0.7)\n", + "Requirement already satisfied: six>=1.10 in /usr/local/lib/python3.10/dist-packages (from jiaozifs-client==1.0.0) (1.16.0)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from jiaozifs-client==1.0.0) (2024.2.2)\n", + "Requirement already satisfied: python-dateutil in /usr/local/lib/python3.10/dist-packages (from jiaozifs-client==1.0.0) (2.8.2)\n", + "Building wheels for collected packages: jiaozifs-client\n", + " Building wheel for jiaozifs-client (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for jiaozifs-client: filename=jiaozifs_client-1.0.0-py3-none-any.whl size=158905 sha256=0b95168160ce12154cca1cfe618f93451c5e061b9119a0e871e57f0ce65b8898\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-2o3ps6k3/wheels/2f/56/47/8b5d40bb9b30f398e0ee327501767adb630b69b90631acda18\n", + "Successfully built jiaozifs-client\n", + "Installing collected packages: jiaozifs-client\n", + "Successfully installed jiaozifs-client-1.0.0\n", + "Requirement already satisfied: torchvision in /usr/local/lib/python3.10/dist-packages (0.17.1+cu121)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from torchvision) (1.25.2)\n", + "Requirement already satisfied: torch==2.2.1 in /usr/local/lib/python3.10/dist-packages (from torchvision) (2.2.1+cu121)\n", + "Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.10/dist-packages (from torchvision) (9.4.0)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision) (3.13.1)\n", + "Requirement already satisfied: typing-extensions>=4.8.0 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision) (4.10.0)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision) (1.12)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision) (3.2.1)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision) (3.1.3)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision) (2023.6.0)\n", + "Collecting nvidia-cuda-nvrtc-cu12==12.1.105 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (23.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m23.7/23.7 MB\u001b[0m \u001b[31m60.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cuda-runtime-cu12==12.1.105 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (823 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m823.6/823.6 kB\u001b[0m \u001b[31m67.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cuda-cupti-cu12==12.1.105 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (14.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m14.1/14.1 MB\u001b[0m \u001b[31m87.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cudnn-cu12==8.9.2.26 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl (731.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m731.7/731.7 MB\u001b[0m \u001b[31m2.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cublas-cu12==12.1.3.1 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl (410.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m410.6/410.6 MB\u001b[0m \u001b[31m2.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cufft-cu12==11.0.2.54 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl (121.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m121.6/121.6 MB\u001b[0m \u001b[31m8.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-curand-cu12==10.3.2.106 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl (56.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.5/56.5 MB\u001b[0m \u001b[31m10.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cusolver-cu12==11.4.5.107 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl (124.2 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m124.2/124.2 MB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cusparse-cu12==12.1.0.106 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl (196.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m196.0/196.0 MB\u001b[0m \u001b[31m6.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-nccl-cu12==2.19.3 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_nccl_cu12-2.19.3-py3-none-manylinux1_x86_64.whl (166.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m166.0/166.0 MB\u001b[0m \u001b[31m7.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-nvtx-cu12==12.1.105 (from torch==2.2.1->torchvision)\n", + " Downloading nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (99 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m99.1/99.1 kB\u001b[0m \u001b[31m14.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: triton==2.2.0 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision) (2.2.0)\n", + "Collecting nvidia-nvjitlink-cu12 (from nvidia-cusolver-cu12==11.4.5.107->torch==2.2.1->torchvision)\n", + " Downloading nvidia_nvjitlink_cu12-12.4.99-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m49.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch==2.2.1->torchvision) (2.1.5)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch==2.2.1->torchvision) (1.3.0)\n", + "Installing collected packages: nvidia-nvtx-cu12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, nvidia-cusparse-cu12, nvidia-cudnn-cu12, nvidia-cusolver-cu12\n", + "Successfully installed nvidia-cublas-cu12-12.1.3.1 nvidia-cuda-cupti-cu12-12.1.105 nvidia-cuda-nvrtc-cu12-12.1.105 nvidia-cuda-runtime-cu12-12.1.105 nvidia-cudnn-cu12-8.9.2.26 nvidia-cufft-cu12-11.0.2.54 nvidia-curand-cu12-10.3.2.106 nvidia-cusolver-cu12-11.4.5.107 nvidia-cusparse-cu12-12.1.0.106 nvidia-nccl-cu12-2.19.3 nvidia-nvjitlink-cu12-12.4.99 nvidia-nvtx-cu12-12.1.105\n", + "Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (9.4.0)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (1.25.2)\n", + "Collecting facenet_pytorch\n", + " Downloading facenet_pytorch-2.5.3-py3-none-any.whl (1.9 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.9/1.9 MB\u001b[0m \u001b[31m26.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from facenet_pytorch) (1.25.2)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from facenet_pytorch) (2.31.0)\n", + "Requirement already satisfied: torchvision in /usr/local/lib/python3.10/dist-packages (from facenet_pytorch) (0.17.1+cu121)\n", + "Requirement already satisfied: pillow in /usr/local/lib/python3.10/dist-packages (from facenet_pytorch) (9.4.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->facenet_pytorch) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->facenet_pytorch) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->facenet_pytorch) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->facenet_pytorch) (2024.2.2)\n", + "Requirement already satisfied: torch==2.2.1 in /usr/local/lib/python3.10/dist-packages (from torchvision->facenet_pytorch) (2.2.1+cu121)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (3.13.1)\n", + "Requirement already satisfied: typing-extensions>=4.8.0 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (4.10.0)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (1.12)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (3.2.1)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (3.1.3)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (2023.6.0)\n", + "Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (12.1.105)\n", + "Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (12.1.105)\n", + "Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (12.1.105)\n", + "Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (8.9.2.26)\n", + "Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (12.1.3.1)\n", + "Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (11.0.2.54)\n", + "Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (10.3.2.106)\n", + "Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (11.4.5.107)\n", + "Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (12.1.0.106)\n", + "Requirement already satisfied: nvidia-nccl-cu12==2.19.3 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (2.19.3)\n", + "Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (12.1.105)\n", + "Requirement already satisfied: triton==2.2.0 in /usr/local/lib/python3.10/dist-packages (from torch==2.2.1->torchvision->facenet_pytorch) (2.2.0)\n", + "Requirement already satisfied: nvidia-nvjitlink-cu12 in /usr/local/lib/python3.10/dist-packages (from nvidia-cusolver-cu12==11.4.5.107->torch==2.2.1->torchvision->facenet_pytorch) (12.4.99)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch==2.2.1->torchvision->facenet_pytorch) (2.1.5)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch==2.2.1->torchvision->facenet_pytorch) (1.3.0)\n", + "Installing collected packages: facenet_pytorch\n", + "Successfully installed facenet_pytorch-2.5.3\n", + "Collecting git+https://github.com/GitDataAI/jz_dataloader.git\n", + " Cloning https://github.com/GitDataAI/jz_dataloader.git to /tmp/pip-req-build-c1hx3mat\n", + " Running command git clone --filter=blob:none --quiet https://github.com/GitDataAI/jz_dataloader.git /tmp/pip-req-build-c1hx3mat\n", + " Resolved https://github.com/GitDataAI/jz_dataloader.git to commit be92f4a1604f954a623cba3a383b2cea95f6df73\n", + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Building wheels for collected packages: jz-dataloader\n", + " Building wheel for jz-dataloader (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for jz-dataloader: filename=jz_dataloader-0.0.1-py3-none-any.whl size=9922 sha256=2042752f785714c45301b09762455d812259319157ce9cde7203f252eca726be\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-n9ixmfi8/wheels/76/85/48/7a6bb9b975ea0d8556f99cb0d2dbf04f3411d4cf40631522a1\n", + "Successfully built jz-dataloader\n", + "Installing collected packages: jz-dataloader\n", + "Successfully installed jz-dataloader-0.0.1\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "4kIYz5w70WUs" + }, + "outputs": [], + "source": [ + "from facenet_pytorch import MTCNN, InceptionResnetV1\n", + "import torch\n", + "from torch.utils.data import DataLoader\n", + "from torchvision import datasets\n", + "import numpy as np\n", + "import pandas as pd\n", + "import os\n", + "\n", + "workers = 0 if os.name == 'nt' else 4" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YpOroE8D0WUs" + }, + "source": [ + "#### Determine if an nvidia GPU is available" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "TJwR6sMz0WUs", + "outputId": "b90dfc71-b7c5-4c8e-8a34-d4c828b85314", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running on device: cpu\n" + ] + } + ], + "source": [ + "device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')\n", + "print('Running on device: {}'.format(device))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fiVYj6eO0WUt" + }, + "source": [ + "#### Define MTCNN module\n", + "\n", + "Default params shown for illustration, but not needed. Note that, since MTCNN is a collection of neural nets and other code, the device must be passed in the following way to enable copying of objects when needed internally.\n", + "\n", + "See `help(MTCNN)` for more details." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "xtHheWw-0WUt" + }, + "outputs": [], + "source": [ + "mtcnn = MTCNN(\n", + " image_size=160, margin=0, min_face_size=20,\n", + " thresholds=[0.6, 0.7, 0.7], factor=0.709, post_process=True,\n", + " device=device\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JdY9Zjo_0WUt" + }, + "source": [ + "#### Define Inception Resnet V1 module\n", + "\n", + "Set classify=True for pretrained classifier. For this example, we will use the model to output embeddings/CNN features. Note that for inference, it is important to set the model to `eval` mode.\n", + "\n", + "See `help(InceptionResnetV1)` for more details." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "sFMl6CGw0WUt", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 49, + "referenced_widgets": [ + "5ea20bab0a664855a1ff8c0053d47b0b", + "6c2c64b4f2c04660a2dd08953d1a5bca", + "b2cd0aba2e82445ca726b8548b5e029c", + "d17bc5fe5c884ed985a51a16667647c4", + "7411b0b54afa45f0a2362a9715957208", + "4f7c1ef96aee4382a089c9efb58e0e74", + "0221c74b04694a1e8e21ed5784a9177b", + "fbd0f22afc5b4a899a0daf4d4ccc6011", + "5156e9b925cf41c7a8de72149c5ba109", + "e9c6c3244b164bd9bb0aed9feb7c442b", + "51186066124e464a9c6c675a24422193" + ] + }, + "outputId": "dd88df64-cce7-4c7a-e627-a6ad18b0240b" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + " 0%| | 0.00/107M [00:00