splitting large files

This commit is contained in:
iperov 2021-07-30 13:27:11 +04:00
commit ee7d471f20
16 changed files with 805308 additions and 7 deletions

View file

@ -0,0 +1,41 @@
from pathlib import Path
import cv2
import numpy as np
from xlib.image import ImageProcessor
from xlib.file import SplittedFile
class FaceMarkerLBF:
def __init__(self):
path = Path(__file__).parent / 'lbfmodel.yaml'
SplittedFile.merge(path, delete_parts=False)
marker = self.marker = cv2.face.createFacemarkLBF()
marker.loadModel(str(path))
def extract(self, img : np.ndarray):
"""
arguments
img np.ndarray HW,HWC,NHWC
returns
[N,68,2]
"""
ip = ImageProcessor(img)
N,H,W,_ = ip.get_dims()
feed_img = ip.to_grayscale().to_uint8().get_image('NHWC')
lmrks_list = []
for n in range( max(1,N) ):
_, lmrks = self.marker.fit(feed_img[n], np.array([ [0,0,W,H] ]) )
lmrks = lmrks[0][0]
lmrks_list.append(lmrks)
return np.float32(lmrks_list)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

1
modelhub/cv/__init__.py Normal file
View file

@ -0,0 +1 @@
from .FaceMarkerLBF.FaceMarkerLBF import FaceMarkerLBF

Binary file not shown.

Binary file not shown.

View file

@ -7,6 +7,7 @@ from xlib.image import ImageProcessor
from xlib.onnxruntime import (InferenceSession_with_device, ORTDeviceInfo,
get_available_devices_info)
from xlib.file import SplittedFile
class S3FD:
@ -19,6 +20,8 @@ class S3FD:
raise Exception(f'device_info {device_info} is not in available devices for S3FD')
path = Path(__file__).parent / 'S3FD.onnx'
SplittedFile.merge(path, delete_parts=False)
self._sess = sess = InferenceSession_with_device(str(path), device_info)
self._input_name = sess.get_inputs()[0].name

Binary file not shown.

Binary file not shown.

View file

@ -6,6 +6,7 @@ import torch
import torch.nn as nn
import torch.nn.functional as F
from xlib import math as lib_math
from xlib.file import SplittedFile
from xlib.image import ImageProcessor
from xlib.torch import TorchDeviceInfo, get_cpu_device
@ -15,9 +16,12 @@ class S3FD:
if device_info is None:
device_info = get_cpu_device()
self.device_info = device_info
path = Path(__file__).parent / 'S3FD.pth'
SplittedFile.merge(path, delete_parts=False)
net = self.net = S3FDNet()
net.load_state_dict( torch.load(str(Path(__file__).parent / 's3fd.pth')) )
net.load_state_dict( torch.load(str(path) ))
net.eval()
if not device_info.is_cpu():