hashbangCoder / Real-Time-Style-Transfer

Real Time style transfer for images
MIT License
5 stars 1 forks source link

Initial error: need to create `Logs` directory #1

Open mstllc opened 8 years ago

mstllc commented 8 years ago

I installed all dependencies and and tried to start training, but kept running into an error: attempt to index upvalue 'f' (a nil value)

Mainly for others running into the same issue, you need to create a directory named Logs relative to main.lua, or otherwise pass an argument -log with the path to another existing directory.

hashbangCoder commented 8 years ago

Hi,

Sorry about that. I forgot to add those directories to the repo. Been very busy last few days, I'll update soon. Btw lemme know if you run into any other issues when training/testing. Tuning the hyper-params values is actually kinda hard and style image specific. The output quality is highly dependent on that

mstllc commented 8 years ago

No problem, thanks.

There were a few errors like that first one, mainly whenever it needs to write to the filesystem, it doesn't create directories that don't exist. I finished training a model but it threw an error at the very end because the Styles directory didn't exist in the directory it wanted to save the final model in.

As far as the hyper-params, that's probably where I could use some help if you're able. We have a project setup what currently uses the jcjohnson implementation of style transfer, but we're looking to reduce the time/resources required to process images by using one of these feed-forward / real-time implementations. I tried the chainer implementation first, and the results weren't quite as good as we have with neural-style. Not knowing a ton about NNs, I thought I would try your implementaion as it's also built on Torch, but the results seem to be about the same as Chainer, although training with yours is much faster.

The neural-style implementation seemed to keep style image 'components' together in the generated output image. Not sure how else to word that, but for example we used a style image that was a bunch of flowers and the output image was a recreation of the input image, but made up of lots of little flowers. In these real-time implementations, I'm just seeing a lot of the same colors, and textures, but not quite as detailed as the neural-network implementation.

Anyways, maybe more than makes sense for talking about in this issue, but if you have any tips or success examples, that would be awesome!

Thanks for sharing this work, always appreciated!

hashbangCoder commented 8 years ago

Ah I see what you mean. I think a lot of it has to do with the parameter tuning of which I do not have a lot of resources to do. I usually do a uniform grid search over an interval but each run takes ~5-6 hours and I have one GPU at my disposal.

An alternative could be instance normalization. It has been shown to improve results on the real-time results. Check it out here. the author has shown results in the paper both with and without IN and there seems to be an improvement.

Another thing which I haven't tested (but its implemented) so far is using non-residual architecture. It takes longer but I'm hoping quality might be better.