This IPython notebook shows how to use pre-trained pix2pix generator to colorize black and white images. The network was trained as part of the experiments in https://github.com/skirdey/mxnet-pix2pix
I’ve been doing some self-study around machine learning and deep learning, and once upon a time stumbled on a unsupervised image to image translation network called pix2pix .
Very interesting network architecture. I’ve looked at it from the perspective of image colorization. It seems like a great option and it trains quite quickly. Although I haven’t had a large enough training set to gather any specific metrics, it feels like it would generalize well on range of images.
There are several implementations of pix2pix available in the frameworks like Tensorflow, Caffe, and Scala/MXNet.
My version of pix2pix here is in Python and MXNet, aiming to colorize 256×256 images using GPU and CUDA.
This post is a continuation and somewhat a revision of “Installing MXNet on Windows 10”
MXNet is evolving and recently there was a release of version 0.12
I want to share the upgrade process that worked for me on my Windows 10 machine. You can use this tutorial as installation tutorial of MXNet 0.12
First, we will need to create a folder somewhere called mxnet-0.12, I’ve placed mine on the D drive, so I have
After we have a folder for the installation, lets go to https://github.com/yajiedesign/mxnet/releases and download two packages:
- VC14 – vc14 v2 base package
- GPU ( or CPU) pre-built package – at the moment of writing it was 20171127_mxnet_x64_vc14_gpu_cu80.7z
Unpack VC14 v2 first in the mxnet-0.12 folder and after that do the same with the GPU archive.
If you are using GPU version of MXNet, you will need to add CUDAlibraries to the folder called 3rd party.
You can register at NVIDIA web-site and get required cuDNN library for free. You will need to use
CUDA 8 / cuDNN v5.1 Library for Windows 10
The file should be placed into:
Now in the root of the mxnet-0.12 folder look for a file called
setupenv.cmd and run it as Administrator.
This execution of the
.cmd file should adjust the
PATH, and add
MXNET_HOME environment variable.
MXNET_HOME should just point to the location of the mxnet-0.12 folder.
When all above is done, activate either Python 3.6 or Python 2.7 64-bit environment of your choice – Anaconda, virtualenv or Python binary native to the operating system.
Usually you do that by issuing command
source activate [environment name] In my case, it is just
source activate mxnet which I’ve created earlier using Anaconda Python 3.6 64bit installation.
Once the environment is active, go to the
MXNET_HOME\python and run
python setup.py install
It should upgrade or install your MXNet package. Enjoy!
Tucker and Dale vs Evil
I can see that a movie is promising just by spotting in the plot a group of students going out for an outdoors vacation. It is just the best type of plot. There are infinite amount of possibilities what could happen to a group of young, mostly intoxicated and extremely self confident people that hanging out in a forest.
For instance, our students could – hallucinate, get kidnapped, be tortured, ride ponies, try to find a way to Mordor, fight giant spiders, fight giant giants, get more intoxicated, lose confidence, and it just goes on and on. No spoilers.
The cast is on spot.
Alan Tudyk and Tyler Labine are perfect as the main characters. Their work is organic, and they bring the whole concept of empathy on a different level. You will understand them, and you will feel their struggle and, the bias they experience will be the bias you experience. Especially if you ever lived in a village or a farm.
The group of students were Great. Loud. Judgmental. They just make you side with them from the first scenes 🙂
The setting of the piece is quite a forest!
Actually, everything about this comedy is remarkable, especially an old house! The old house is one of the funniest old houses that I’ve seen. It has its own character, and its own jokes. It gets grumpy sometimes.
The story is quite self-destructive, in a good way though.
Well, please, rent it and watch it. Highly recommended.
After encountering several articles on lunch shaming of some kids, whose parent can not afford a meal – I’ve saddened.
Who in a sane mind would come up with an idea to put a label ‘poor’ on a kid, or ask a kid to clean tables in front of the peers.
Kid can not afford food not because it is his fault. Work with the damn government on the issue. Work on increasing minimum wage, introducing single payer healthcare and some sort of a social safety net.
There are million scenarios when hard-working families would not be able to afford food for their kid.
A huge medical bill, that sucks money out of a family, who is struggling on payments just not to ruin their credit history.
A minimum wage job with no over-time pay, that has to feed family of four.
A recent unemployment, when the government doesn’t provide any substantial support, besides dragging your ass to fill-out endless amount of paperwork and spend your time on artificial and in-efficient, bureaucracy run workforce re-entrance classes.
I can continue with it, but I hope you get me.
As a very brief example, a homeless and unemployed friend of mine, who lives in California, gets about $200 dollars in food stamps every month. In order to receive another $200 in cash, which he doesn’t get at the moment, he has to check his mail ( and he doesn’t have an address) almost every month for random acts of identity checks and other bureaucratic bullshit. My friend doesn’t have a kid, but if he had one, I am sure the kid would not be able to pay for his food in a school.
I hope one day people will stop poverty-blame.
Poverty, in most cases, is a side effect of an unjust system. Look around people, look at the government spending, corruption, bloated salaries of city officials, inefficient work practices of bureaucratic machines.
It is broken government who leave people behind, in debts and unemployed. It is broken government who leave kids hungry and shamed for being poor; Not a parent who is working hard and still has an anxiety every day of his or her life that tomorrow there will be nothing in the fridge to eat.
Recently watched another masterpiece from Takeshi Kitano.
Plot in a twitter format: Old yakuza gathers his very old yakuza friends to do some brutal yakuza stuff and compete for turf of a small Japanese town.
The movie is full of humor and subtle and gentle moments that reflect on the matters of our short lives and temporary friendships. It is shot in a calm, very Kitano manner and gives a great, pacifying visual experience.
If you want to get away from once again Beauty and King Kong, check it out.
8/10, yanking two points for poor special effects.
MXNet provides a Python utility to create RecordIO packages of data that are supported by framework’s data iterators.
Little detail, the im2rec.py doesn’t support .png files, unless you manually adjust the script and add it as allowed extensions.
In order to create a rec file, you first need to make a list of files using this command:
python \\mxnet-master\tools\im2rec.py --list 1 --recursive 1 --num-thread 4 --train-ratio 0.7 --test-ratio 0.2 prefix frames
--list 1 ==> tells the script to create the .lst files
--num-thread 4 ==> runs script in parallel
--train-ratio 0.7 ==> will split the data set between several list files
--test-ratio 0.2 ==> it will make sure that 20 percent of the data will be used in the test set.
After you get .lst files, lets create a record set.
Record objects will be about the same size as the data that being used for the objects.
python \\mxnet-master\tools\im2rec.py --num-thread 4 --quality 80 prefix frames
here we eliminating –list argument so the script will be working on .rec files.
At the end of its execution, it should display something like
time: 0.0130000114441 count: 0 time: 3.01699995995 count: 1000 time: 2.83000016212 count: 2000
and in the folder where you have your dataset you will see files
prefix_test.rec prefix_test.lst prefix_test.val
and same for train and validation sets.
I wanted to share a quick how-to install MXNet on Windows 10 64-bit.
The solution here is a bit opinionated as I am using Anaconda to manage Python environments.
I will start from the beginning – Anaconda installation.
We will need Anaconda 4.3. You should use 64-bit Anaconda/Python 2.7 combination, as the environment we will create will be based on Python 2.7 64-bit in order to support MXNet. You can get anaconda here:
Follow the installation instructions and once it is done, lets go to the windows command line and type this:
conda create -n mxnet python=2.7 anaconda
having ‘anaconda’ argument in there will ensure we have common data analytics libraries, that are not necessary for MXNet, but nice to have. Also, we want to use Python 2.7 in this case, as MXNet has compatibility issues with Python 3.
Once the environment creation is complete, activate it by executing:
It is all for the terminal so far.
Lets get pre-combiled MXNet dlls!
You will need to download several packages from
First, get the prebuild VC14 ( Visual Studio runtime 2015) package, it doesn’t contain any specific binaries, but it provides 3rd party libraries and helps to set all the environment variables that are necessary to run MXNet. In my case I got prebuildbase_win10_x64_vc14
Once you download VC14 base archive, extract its contents somewhere. A good folder candidate would be ‘mxnet’ in the root of C: or any other drive. Let’s imagine that you have created ‘D:\mxnet’ folder.
Open terminal in that folder an run
It should finish quickly. You can verify that it was successful by going into the System -> Advanced System Settings and making sure it has MXNET_HOME:”D:\mxnet” environment variable setup.
Now, lets download GPU or CPU version of pre-compiled MXNet from the same page where you got the base package. At the moment of writing it is 20170702_mxnet_x64_vc14_gpu.7z
We won’t need the source code of mxnet, as we are not going to compile it from scratch, so you can IGNORE Source code (zip)
The archive will have contents that you need to extract to “D:\mxnet”, it might overwrite some of the folders, which is ok.
Now, if you used GPU version of MXNet, the last part would be is to get the cuDNN nVidia library for windows, you will have to register to get it, but essentially it is free.
cuDNN is available here:
Once you download the archive, extract its contents to “D:\mxnet\3rdparty\cudnn”.
END OF Optional STEP.
It is time now to try to install python binding, so you can import mxnet inside a python project.
Go to the terminal where you had your MXNet Anaconda environment activated and jump to the location: “D:\mxnet\python”. Once you are in the correct location, run
python setup.py install
If it ran without any errors, then we are ready to do our final test. Go back to the terminal where you acivated mxnet environment and first, start Python interpreter, and then run
You should be able to import the library.
I am trying to build a small machine learning service that would use Python NLTK library. As it is a pet project, and a very small one – I’ve decided to use Heroku for the hosting. And as I am using NLTK library I needed to download models and corpora by calling nltk.download() method to parse punctuation and have some other textual tricks.
Heroku doesn’t allow that method to execute, as it requires GUI interaction.
Initially I got a bit lost, as there is a way to bypass GUI when you provide specific list of NLTK corpora to download – but for certain missing models the error message provided a name of a model that was not compatible with nltl.download().
Luckily, I’ve found the page with a list of all available corpora and associated download IDs.