diff --git a/.drone.yml b/.drone.yml index dfb85fb..24fac17 100644 --- a/.drone.yml +++ b/.drone.yml @@ -22,4 +22,5 @@ steps: - mkdir -p data - $mount_command - ls data/ - - CI=True python facenet_transfer_learning.py \ No newline at end of file + - source setenv.sh + - CI=True python finetune/facenet_transfer_learning.py \ No newline at end of file diff --git a/NearestNeighbors.py b/NearestNeighbors/NearestNeighbors.py similarity index 100% rename from NearestNeighbors.py rename to NearestNeighbors/NearestNeighbors.py diff --git a/sample_embeddings.py b/NearestNeighbors/sample_embeddings.py similarity index 100% rename from sample_embeddings.py rename to NearestNeighbors/sample_embeddings.py diff --git a/face_crop.py b/face_crop.py index febec81..5917ead 100755 --- a/face_crop.py +++ b/face_crop.py @@ -13,6 +13,7 @@ from time import sleep from io import BytesIO from math import sqrt # from insightface.app import FaceAnalysis +# pip install retinaface_pytorch from retinaface.pre_trained_models import get_model from retinaface.predict_single import Model from contextlib import redirect_stdout, redirect_stderr diff --git a/convnext_finetune.py b/finetune/convnext_finetune.py similarity index 100% rename from convnext_finetune.py rename to finetune/convnext_finetune.py diff --git a/facenet_transfer_learning.py b/finetune/facenet_transfer_learning.py similarity index 94% rename from facenet_transfer_learning.py rename to finetune/facenet_transfer_learning.py index 8d30c8b..c4003d0 100644 --- a/facenet_transfer_learning.py +++ b/finetune/facenet_transfer_learning.py @@ -1,12 +1,9 @@ from os import makedirs, environ - from torchinfo import summary -from torchvision.models import Swin_V2_B_Weights, swin_v2_b -from torch.nn import Linear, Dropout3d, Sequential, Dropout, Conv2d, CrossEntropyLoss, Identity, MaxPool2d, ReLU, \ - Softmax +from torch.nn import Linear, Sequential, Dropout, CrossEntropyLoss, Identity, ReLU from torchvision.transforms import Compose, RandomResizedCrop, RandomRotation, ToTensor, \ RandomHorizontalFlip, \ - Resize, CenterCrop, RandomAffine, GaussianBlur, RandomAutocontrast, InterpolationMode, AugMix, RandomErasing, \ + Resize, RandomAutocontrast, InterpolationMode, RandomErasing, \ RandomEqualize, RandomPosterize, RandomPerspective, RandomGrayscale import matplotlib @@ -24,11 +21,9 @@ from torch.cuda import is_available from torch import no_grad, save, Tensor, load, device from datetime import datetime from distutils.util import strtobool -from intel_extension_for_pytorch import optimize CI = bool(strtobool(environ['CI'])) -# device = device('cuda' if is_available() else 'cpu') -device = 'xpu' +device = device('cuda' if is_available() else 'cpu') model_path: str = join(datadir(), 'artifact', 'vggface2_facenet.pth') input_shape: int = 256 @@ -130,7 +125,7 @@ optimizer = Adam(params=[ {'params': model_gpu[1].parameters(), 'lr': 1e-3}, ]) -model, optimizer = optimize(model=model, optimizer=optimizer) +# model, optimizer = optimize(model=model, optimizer=optimizer) scheduler = lr_scheduler.StepLR(optimizer=optimizer, step_size=10, gamma=0.9) epochs = 100 diff --git a/inceptionnet_finetune.py b/finetune/inceptionnet_finetune.py similarity index 100% rename from inceptionnet_finetune.py rename to finetune/inceptionnet_finetune.py diff --git a/masked_or_not.py b/finetune/masked_or_not.py similarity index 99% rename from masked_or_not.py rename to finetune/masked_or_not.py index 5ab9039..bc1679f 100644 --- a/masked_or_not.py +++ b/finetune/masked_or_not.py @@ -7,7 +7,7 @@ from torchvision.transforms import Compose, RandomResizedCrop, RandomRotation, T RandomHorizontalFlip, \ Resize, RandomAffine, RandomAdjustSharpness, RandomAutocontrast, RandomEqualize, GaussianBlur, Normalize from numpy import arange, ceil, full, float32, uint8, amax, amin -from torchsummary import summary +from torchinfo import summary from torch.nn import CrossEntropyLoss from torch.cuda.amp.grad_scaler import GradScaler from torch.cuda.amp import autocast diff --git a/resnet_finetune.py b/finetune/resnet_finetune.py similarity index 100% rename from resnet_finetune.py rename to finetune/resnet_finetune.py diff --git a/resnet_finetune_update.py b/finetune/resnet_finetune_update.py similarity index 100% rename from resnet_finetune_update.py rename to finetune/resnet_finetune_update.py diff --git a/resnet_finetune_vggface.py b/finetune/resnet_finetune_vggface.py similarity index 100% rename from resnet_finetune_vggface.py rename to finetune/resnet_finetune_vggface.py diff --git a/swin_finetune.py b/finetune/swin_finetune.py similarity index 100% rename from swin_finetune.py rename to finetune/swin_finetune.py diff --git a/vit_b_finetune.py b/finetune/vit_b_finetune.py similarity index 100% rename from vit_b_finetune.py rename to finetune/vit_b_finetune.py diff --git a/get_article_and_comments.py b/hdf5_tools/get_article_and_comments.py similarity index 100% rename from get_article_and_comments.py rename to hdf5_tools/get_article_and_comments.py diff --git a/hdf5_compresser.py b/hdf5_tools/hdf5_compresser.py similarity index 100% rename from hdf5_compresser.py rename to hdf5_tools/hdf5_compresser.py diff --git a/mask_correct.py b/mask_correct.py index 2577c3e..904d473 100644 --- a/mask_correct.py +++ b/mask_correct.py @@ -2,7 +2,6 @@ from torch import zeros, load, no_grad, stack, float32, nn from torch.utils.data import DataLoader from torchvision.datasets import ImageFolder from torchvision.transforms import Compose, functional, ToTensor, Resize, ConvertImageDtype -from torch2trt import torch2trt from PIL import Image from numpy import array from os import listdir, makedirs diff --git a/dataloader_infer.py b/matrix_infer.py similarity index 100% rename from dataloader_infer.py rename to matrix_infer.py diff --git a/movie_processing/__init__.py b/movie_processing/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/movie_processing/opencv_test.py b/movie_processing/opencv_test.py index 4f53981..cb71ac8 100644 --- a/movie_processing/opencv_test.py +++ b/movie_processing/opencv_test.py @@ -1,8 +1,9 @@ from cv2 import VideoCapture, getBuildInformation from torchvision.models.mobilenetv3 import MobileNetV3 +from settings import datadir print(getBuildInformation()) -sample_video = VideoCapture('/home/tomokazu/PycharmProjects/helloproject-ai/koi_ing.webm') +sample_video = VideoCapture('/movie_processing/koi_ing.webm') assert sample_video.isOpened() ret = True diff --git a/setenv.sh b/setenv.sh new file mode 100755 index 0000000..ff6ac43 --- /dev/null +++ b/setenv.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink + DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" + SOURCE="$(readlink "$SOURCE")" + [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located +done +DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" + +PYTHONPATH=$PYTHONPATH:$DIR + +export PYTHONPATH +export DATA_DIR="${PYTHONPATH%/}/data" + +type conda >/dev/null 2>&1 && conda activate helloproject-ai \ No newline at end of file diff --git a/settings.py b/settings.py index 949162b..6042e4e 100755 --- a/settings.py +++ b/settings.py @@ -1,5 +1,5 @@ from functools import cache -from os import getcwd, pardir +from os import getcwd, pardir, environ from os.path import join, abspath, dirname blog_list = ['angerme-ss-shin', 'angerme-amerika', 'angerme-new', 'juicejuice-official', 'tsubaki-factory', @@ -53,7 +53,7 @@ def theme_curator(theme: str, blog_id: str) -> str: @cache def datadir(): - return join('/home/tomokazu/PycharmProjects/helloproject-ai/', 'data') + return environ['DATA_DIR'] request_header = { diff --git a/similar_face.py b/similar_face.py index 71cdeb1..8a14477 100755 --- a/similar_face.py +++ b/similar_face.py @@ -1,3 +1,4 @@ +import time from shutil import copyfile from insightface.app import FaceAnalysis from os import getcwd, listdir, makedirs @@ -15,7 +16,15 @@ if not isdir(argv[2]): if not isfile(argv[1]): exit(1) -face_analysis = FaceAnalysis() +face_analysis = FaceAnalysis(providers=[ + # 'CUDAExecutionProvider', + # 'CPUExecutionProvider', + ('TensorrtExecutionProvider', { + 'trt_engine_cache_enable': True, + 'trt_engine_cache_path': join(getcwd(), 'onnx_cache'), + 'trt_fp16_enable': True, + }) +], allowed_modules=['recognition', 'detection']) face_analysis.prepare(ctx_id=0, det_size=(160, 160)) print(argv) @@ -35,6 +44,7 @@ makedirs(join(getcwd(), dir_name, "true"), exist_ok=True) makedirs(join(getcwd(), dir_name, "false"), exist_ok=True) images = [] +begin = time.time() for file in image_files: if isfile(join(getcwd(), argv[2], file)): # print(join(getcwd(), argv[2], file)) @@ -50,3 +60,5 @@ for file in image_files: else: copyfile(join(getcwd(), argv[2], file), join(getcwd(), dir_name, "false", file)) + +print(f"{time.time() - begin}sec") diff --git a/split_train_val.py b/split_train_val.py index b1a9795..e0f7115 100644 --- a/split_train_val.py +++ b/split_train_val.py @@ -9,7 +9,7 @@ from asyncio import to_thread, gather, run from aiofiles import open as a_open valid_rate = 0.1 -SRC_DIR = join(r'/home/tomokazu/PycharmProjects/helloproject-ai/data/sample_set/') +SRC_DIR = join(datadir(), 'sample_set') DEST_DIR = join(datadir(), 'dataset') makedirs(DEST_DIR, exist_ok=True) @@ -51,4 +51,3 @@ with tqdm(listdir(SRC_DIR)) as pbar: coroutines.append(co) # print(name, file) run(waiting(coroutines)) - diff --git a/.face_crop_dbface.py b/test_script/.face_crop_dbface.py similarity index 100% rename from .face_crop_dbface.py rename to test_script/.face_crop_dbface.py diff --git a/facenet_gen_model.py b/test_script/facenet_gen_model.py similarity index 100% rename from facenet_gen_model.py rename to test_script/facenet_gen_model.py diff --git a/test_script/onnx_cacher.py b/test_script/onnx_cacher.py new file mode 100644 index 0000000..8334108 --- /dev/null +++ b/test_script/onnx_cacher.py @@ -0,0 +1,14 @@ +from os import getcwd +from os.path import join +from onnxruntime import InferenceSession, SessionOptions + +onnx_session = InferenceSession( + path_or_bytes="/home/tomokazu/.insightface/models/buffalo_l/w600k_r50.onnx", + providers=[ + ('TensorrtExecutionProvider', { + 'trt_engine_cache_enable': True, + 'trt_engine_cache_path': join(getcwd(), 'onnx_cache'), + 'trt_fp16_enable': True, + }) + ] +) diff --git a/transform_simulator.py b/test_script/transform_simulator.py similarity index 100% rename from transform_simulator.py rename to test_script/transform_simulator.py diff --git a/test_script/trt_test.py b/test_script/trt_test.py new file mode 100644 index 0000000..ca5c126 --- /dev/null +++ b/test_script/trt_test.py @@ -0,0 +1,17 @@ +from torch import load, randn, float, half, jit +import torch_tensorrt +from torch.nn import Module + +model: Module = load( + f='/home/tomokazu/PycharmProjects/helloproject-ai/data/artifact/facenet-tl_2023-05-28 23:05:09.874085/model.pth') +model.cuda() +model.eval() + +example_input = randn(size=[1, 3, 224, 224]).float().cuda() + +traced_script_module = jit.trace(model, example_inputs=[example_input]) +tensorrt_module = torch_tensorrt.compile(module=traced_script_module, inputs=[example_input], + enabled_precisions={float, half}, + truncate_long_and_double=True) + +jit.save(tensorrt_module, "trt_test.ts") diff --git a/torch_dataloader.py b/torch_dataloader.py deleted file mode 100644 index db25df8..0000000 --- a/torch_dataloader.py +++ /dev/null @@ -1,23 +0,0 @@ -from torchvision.transforms import Compose -import matplotlib.pyplot as plt -from numpy import transpose -import torchvision.datasets as datasets -from torchvision import models -from PIL import Image - -print(dir(datasets)) - - -def show_image(x): - fig = plt.figure(figsize=(10, 10)) - for s in range(len(x)): - img = x[s].numpy() - img = transpose(img, (1, 2, 0)) - ax1 = fig.add_subplot(1, len(x), s + 1) - plt.axis('off') - plt.imshow(img) - - -model = models.inception_v3(models.Inception_V3_Weights) - -print(model._get_name()) diff --git a/yolo_test.py b/yolo_test.py deleted file mode 100644 index 85e3408..0000000 --- a/yolo_test.py +++ /dev/null @@ -1,5 +0,0 @@ -from super_gradients.training.models import get - -yolo_nas = get(model_name='yolo_nas_l', pretrained_weights='coco').cuda() - -yolo_nas.predict('橋迫鈴=angerme-new=12687767841-1.jpg', conf=0.8).show()