Tensorflow/Keras with django 无法与芹菜一起正常工作



我们正在构建一个用于人脸识别的脚本,主要使用用于基本识别功能的 Tensorflow,来自视频。

当我们直接使用python test-reco.py(以视频路径作为参数(尝试软时,它可以完美运行。

现在,我们正尝试通过我们的网站将其集成到芹菜任务中。

这是主要代码:

def extract_labels(self, path_to_video):
if not os.path.exists(path_to_video):
print("NO VIDEO!")
return None
video = VideoFileClip(path_to_video)
n_frames = int(video.fps * video.duration)
out = []
for i, frame in enumerate(video.iter_frames()):
if self.verbose > 0:
print(
'processing frame:',
str(i).zfill(len(str(n_frames))),
'/',
n_frames
)
try:
rect = face_detector(frame[::2, ::2], 0)[0]
y0, x0, y1, x1 = np.array([rect.left(), rect.top(), rect.right(), rect.bottom()])*2
bbox = frame[x0:x1, y0:y1]
bbox = resize(bbox, [128, 128])
bbox = rgb2gray(bbox)
bbox = equalize_hist(bbox)
y_hat = self.model.predict(bbox[None, :, :, None], verbose=1, batch_size=1)[0]
# y_hat = np.ones(7)
out.append(y_hat)
except IndexError as e:
print(out)
print(e)

我们需要尝试捕捉,因为有时第一帧中没有任何人脸。

但是我们有了这样一行:y_hat = self.model.predict(bbox[None, :, :, None], verbose=1, batch_size=1)[0]阻塞。就像一个无休止的循环。

bbox 不是空的。

芹菜工人只需阻止它,您将无法退出该过程(永远不会发生热/冷退出(

与芹菜的张量流有什么特别的关系吗?

我有一个非常相似的设置和问题。就我而言,它有助于简单地将所有引用 Keras 内容的导入转移到专用的初始值设定项函数中,从而导致这样的设置:

from celery import Celery
from celery.signals import worker_process_init
CELERY = ...
@worker_process_init.connect()
def init_worker_process(**kwargs):
// Load all Keras related imports here
import ...

@CELERY.task()
def long_running_task(*args, **kwargs):
// Actual calculation task
...

tf.Session(Tensorflow session(不是分叉安全的。如果包装不是叉子安全的,芹菜将无法工作。

我想self.model.predict会在某个地方打电话给tf.Session,但它被阻止了。

最新更新