Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ValueError in imagemagick.py #30

Open
IQNeoXen opened this issue May 14, 2019 · 1 comment
Open

ValueError in imagemagick.py #30

IQNeoXen opened this issue May 14, 2019 · 1 comment

Comments

@IQNeoXen
Copy link

Hi @albarji, first of all thank you for creating a dockerized version of the neural-style project! :)

However, i'm not able to get it to run properly. I'm calling it like this:

sudo nvidia-docker run --rm -v $(pwd):/images albarji/neural-style --content content.png --style style.png --output results
It starts as expected:

iqneoxen@mymachine $ nvidia-docker run --rm -v $(pwd):/images albarji/neural-style --content content.png --style style.png --output results
INFO:__main__:Running neural style transfer with
INFO:__main__:	Contents = ['/images/content.png']
INFO:__main__:	Style = ['/images/style.png']
INFO:__main__:	Algorithm = gatys
INFO:__main__:	Style weights = None
INFO:__main__:	Style scales = None
INFO:__main__:	Size = None
INFO:__main__:	Tile overlap = None
WARNING:neuralstyle.algorithms:Unknown GPU model GeForce GTX 1080, will use default tiling parameters
INFO:neuralstyle.algorithms:Starting tiling strategy
WARNING:neuralstyle.algorithms:Unknown GPU model GeForce GTX 1080, will use default tiling parameters
INFO:neuralstyle.algorithms:Running command: cd /app/neural-style; th neural_style.lua -backend cudnn -cudnn_autotune -normalize_gradients -init image -content_weight 100 -save_iter 10000 -proto_file /app/neural-style/models/VGG_ILSVRC_19_layers_deploy.prototxt -model_file /app/neural-style/models/VGG_ILSVRC_19_layers.caffemodel -num_iterations 500 -content_image /tmp/tmp8u63rldd/rgb.png -style_image /tmp/tmp8u63rldd/style.png -style_weight 500.0 -style_scale 1.0 -output_image /tmp/tmppzpmeoqt.png -image_size 466
tput: No value for $TERM and no -T specified
[libprotobuf WARNING google/protobuf/io/coded_stream.cc:537] Reading dangerously large protocol message.  If the message turns out to be larger than 1073741824 bytes, parsing will be halted for security reasons.  To increase the limit (or to disable these warnings), see CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.
[libprotobuf WARNING google/protobuf/io/coded_stream.cc:78] The total number of bytes read was 574671192
Successfully loaded /app/neural-style/models/VGG_ILSVRC_19_layers.caffemodel
conv1_1: 64 3 3 3
conv1_2: 64 64 3 3
conv2_1: 128 64 3 3
conv2_2: 128 128 3 3
conv3_1: 256 128 3 3
conv3_2: 256 256 3 3
conv3_3: 256 256 3 3
conv3_4: 256 256 3 3
conv4_1: 512 256 3 3
conv4_2: 512 512 3 3
conv4_3: 512 512 3 3
conv4_4: 512 512 3 3
conv5_1: 512 512 3 3
conv5_2: 512 512 3 3
conv5_3: 512 512 3 3
conv5_4: 512 512 3 3
fc6: 1 1 25088 4096
fc7: 1 1 4096 4096
fc8: 1 1 4096 1000
Setting up style layer  	2	:	relu1_1	
Setting up style layer  	7	:	relu2_1	
Setting up style layer  	12	:	relu3_1	
Setting up style layer  	21	:	relu4_1	
Setting up content layer	23	:	relu4_2	
Setting up style layer  	30	:	relu5_1	
Capturing content targets	
nn.Sequential {
  [input -> (1) -> (2) -> (3) -> (4) -> (5) -> (6) -> (7) -> (8) -> (9) -> (10) -> (11) -> (12) -> (13) -> (14) -> (15) -> (16) -> (17) -> (18) -> (19) -> (20) -> (21) -> (22) -> (23) -> (24) -> (25) -> (26) -> (27) -> (28) -> (29) -> (30) -> (31) -> (32) -> (33) -> (34) -> (35) -> (36) -> (37) -> output]
  (1): nn.TVLoss
  (2): cudnn.SpatialConvolution(3 -> 64, 3x3, 1,1, 1,1)
  (3): cudnn.ReLU
  (4): nn.StyleLoss
 [...............and so on]

It runs for ~10-20 minutes and then i'm getting an error like this every time:

Iteration 500 / 500	
  Content 1 loss: 27202762.500000	
  Style 1 loss: 128.602207	
  Style 2 loss: 6182.222366	
  Style 3 loss: 4729.293823	
  Style 4 loss: 187635.543823	
  Style 5 loss: 655.002296	
  Total loss: 27402093.164515	
<optim.lbfgs> 	reached max number of iterations	

neural-style-docker: artistic style between images

    --content CONTENT_IMAGES: file or files with the content images to use
    --style STYLE_IMAGES: file or files with the styles to transfer
    --output OUTPUT_FOLDER: name of the output folder in which to save results
    --size SIZE: size of the output image. Default: content image size
    --sw STYLE_WEIGHT (default 5): weight or list of weights of the style over the content, in range (0, inf)
    --ss STYLE_SCALE (default 1.0): scaling or list of scaling factors for the style images
    --alg ALGORITHM: style-transfer algorithm to use. Must be one of the following:
        gatys                   Highly detailed transfer, slow processing times (default)
        gatys-multiresolution   Multipass version of Gatys method, provides even better quality
        chen-schmidt            Fast patch-based style transfer
        chen-schmidt-inverse    Even faster aproximation to chen-schmidt through the use of an inverse network
    --tileoverlap TILE_OVERLAP: overlap of tiles in the style transfer, measured in pixels. If you experience
        artifacts in the image you should try increasing this. Default: 100

    Additionally provided parameters are carried on to the underlying algorithm.
    

Traceback (most recent call last):
  File "/app/entrypoint/entrypoint.py", line 100, in main
    styletransfer(contents, styles, savefolder, size, alg, weights, stylescales, tileoverlap, algparams=otherparams)
  File "/app/entrypoint/neuralstyle/algorithms.py", line 90, in styletransfer
    weight=weight, stylescale=scale, algparams=algparams)
  File "/app/entrypoint/neuralstyle/algorithms.py", line 162, in neuraltile
    smush(featheredtiles, xtiles, ytiles, overlap, overlap, smushedfeathered)
  File "/app/entrypoint/neuralstyle/imagemagick.py", line 59, in smush
    % (xtiles, ytiles, len(tiles)))
ValueError: Geometry (8,10) is incompatible with given number of tiles (88)

It seems like there's an issue in the "smush" function

def smush(tiles, xtiles, ytiles, smushw, smushh, outname):
"""Smush previously tiled images together"""
if len(tiles) != xtiles * ytiles:
raise ValueError("Geometry (%d,%d) is incompatible with given number of tiles (%d)"
% (xtiles, ytiles, len(tiles)))
command = "convert -background transparent "
i = 0
for _ in range(ytiles):
rowcmd = ""
for __ in range(xtiles):
rowcmd += " " + tiles[i]
i += 1
rowcmd += " +smush -%d -background transparent" % smushw
command += " '(' %s ')'" % rowcmd
command += " -background none -background transparent -smush -%s %s" % (smushh, outname)
run(command, shell=True, check=True)

Could you help me to find out what the issue is here?
Thank you very much in advance!

@albarji
Copy link
Owner

albarji commented Jul 8, 2019

Hi there! Sorry for the late answer, but I'm only finding time to maintain this project on my holidays.

At first glance I can't tell what is the source of the error. But 88 tiles seems like an awfully large number of tiles. What is the size of your input image? Can you try again using --size 512? This will force the output to be small enough to fit into a single tile, so the smush stuff won't be used.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants