mirror of
https://github.com/maciej3031/comixify.git
synced 2026-03-11 08:54:35 +00:00
Fix problem with CartoonGAN not change model and add timestamp to Comic
This commit is contained in:
parent
8cc301b47b
commit
fe7c388495
4 changed files with 37 additions and 12 deletions
18
api/migrations/0003_add_timestamp.py
Normal file
18
api/migrations/0003_add_timestamp.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.0.7 on 2018-11-18 10:55
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('api', '0002_add_additional_info_to_Comic'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='comic',
|
||||||
|
name='timestamp',
|
||||||
|
field=models.DateTimeField(auto_now_add=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -72,13 +72,12 @@ class Comic(models.Model):
|
||||||
rl_mode = models.PositiveIntegerField(default=0)
|
rl_mode = models.PositiveIntegerField(default=0)
|
||||||
image_assessment_mode = models.PositiveIntegerField(default=0)
|
image_assessment_mode = models.PositiveIntegerField(default=0)
|
||||||
style_transfer_mode = models.PositiveIntegerField(default=0)
|
style_transfer_mode = models.PositiveIntegerField(default=0)
|
||||||
|
timestamp = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@profile
|
@profile
|
||||||
def create_from_nparray(cls, nparray, video, yt_url, frames_mode,
|
def create_from_nparray(cls, nparray, video, yt_url, frames_mode,
|
||||||
rl_mode, image_assessment_mode, style_transfer_mode):
|
rl_mode, image_assessment_mode, style_transfer_mode):
|
||||||
# if nparray.max() <= 1:
|
|
||||||
# nparray = nparray.astype(int)
|
|
||||||
tmp_name = uuid.uuid4().hex + ".png"
|
tmp_name = uuid.uuid4().hex + ".png"
|
||||||
cv2.imwrite(jj(settings.TMP_DIR, tmp_name), nparray)
|
cv2.imwrite(jj(settings.TMP_DIR, tmp_name), nparray)
|
||||||
with open(jj(settings.TMP_DIR, tmp_name), mode="rb") as tmp_file:
|
with open(jj(settings.TMP_DIR, tmp_name), mode="rb") as tmp_file:
|
||||||
|
|
|
||||||
16
api/views.py
16
api/views.py
|
|
@ -55,18 +55,18 @@ class ComixifyFromYoutube(APIView):
|
||||||
image_assessment_mode = serializer.validated_data["image_assessment_mode"]
|
image_assessment_mode = serializer.validated_data["image_assessment_mode"]
|
||||||
style_transfer_mode = serializer.validated_data["style_transfer_mode"]
|
style_transfer_mode = serializer.validated_data["style_transfer_mode"]
|
||||||
|
|
||||||
comix = Comic.objects.filter(yt_url=yt_url,
|
try:
|
||||||
frames_mode=frames_mode,
|
comix = Comic.objects.filter(yt_url=yt_url,
|
||||||
rl_mode=rl_mode,
|
frames_mode=frames_mode,
|
||||||
image_assessment_mode=image_assessment_mode,
|
rl_mode=rl_mode,
|
||||||
style_transfer_mode=style_transfer_mode
|
image_assessment_mode=image_assessment_mode,
|
||||||
).first()
|
style_transfer_mode=style_transfer_mode
|
||||||
if comix is not None:
|
).latest('timestamp')
|
||||||
response = {
|
response = {
|
||||||
"status_message": "ok",
|
"status_message": "ok",
|
||||||
"comic": comix.file.url,
|
"comic": comix.file.url,
|
||||||
}
|
}
|
||||||
else:
|
except Comic.DoesNotExist:
|
||||||
video = Video()
|
video = Video()
|
||||||
_, yt_download_time = video.download_from_youtube(yt_url)
|
_, yt_download_time = video.download_from_youtube(yt_url)
|
||||||
video.save()
|
video.save()
|
||||||
|
|
|
||||||
|
|
@ -62,8 +62,16 @@ class StyleTransfer():
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _cartoon_gan_stylize(cls, frames, gpu=True, style='Hayao'):
|
def _cartoon_gan_stylize(cls, frames, gpu=True, style='Hayao'):
|
||||||
model_cache_key = 'model_cache'
|
if style == 'Hayao':
|
||||||
model = cache.get(model_cache_key) # get model from cache
|
model_cache_key = 'model_cache_hayao'
|
||||||
|
model = cache.get(model_cache_key) # get model from cache
|
||||||
|
|
||||||
|
elif style == 'Hosoda':
|
||||||
|
model_cache_key = 'model_cache_hosoda'
|
||||||
|
model = cache.get(model_cache_key) # get model from cache
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise Exception('No such CartoonGAN model!')
|
||||||
|
|
||||||
if model is None:
|
if model is None:
|
||||||
# load pretrained model
|
# load pretrained model
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue