Installing the Interactive Deep Colorization application in Linux

There are plenty of articles and videos on the Web regarding colourising old black and white photographs. Some of the resulting colourised photographs look amazing. Several Web sites offer free or commercial automated colourisation of B&W photographs using AI (artificial intelligence) techniques. The free-use sites watermark the result or limit the size of the original image. Some of the resulting colourised images are reasonable, others not so good.

Last year I scanned some 35 mm slides which are over 60 years old. The chemicals in some had degraded so much that the images are tinted red (‘redscale’ rather than ‘greyscale’!), too much to be able to fix using the GIMP. Out of curiosity I tried processing one of the scanned slides using some of the free online B&W photograph automated colourisers. The results in some cases were promising, alhough they would still require a lot of manual adjustment.

Scan of original 35 mm slide about 60 years old

Scan of original 35 mm slide about 60 years old

The image after processing using one of the free online B&W colouriser Websites

The image after processing using one of the free online B&W colouriser Websites

A few years ago Richard Zhang and colleagues at the University of California, Berkeley wrote software that uses similar AI techniques to colourise photographs but allows the user to manually influence the colourisation — see the Smithsonian Magazine article New App Makes It Easier to Colorize Old Photos for further information and a link to the GitHub repository of Jun-Yan Zhu with the team’s open-source software, written in Python. Zhang went on to join Adobe, and the software is now incorporated in Adobe PhotoShop Elements.

All my machines run Linux, and I wanted to try to install the open-source application from Jun-Yan Zhu’s GitHub repository. However, the Python code uses Qt4 but all my Linux installations use Qt5. Jun-Yan Zhu created a GitHub branch for the Python code to be modified for Qt5 but, to date, that branch still contains only Python code using Qt4:

https://github.com/junyanz/interactive-deep-colorization/tree/qt5

However, another GitHub user named Vishwaesh Rajiv cloned the code and ported it to Qt5 for use in a Docker container:

https://github.com/vwrj/interactive-deep-colorization

I decided to have a go at getting the application to work in Lubuntu 20.10 on my family’s desktop machine. Below are the results of my efforts, which unfortunately stalled because the machine only has 4 GB of RAM (the application apparently requires a lot of memory).

The installation instructions in the README.md file in both users’ repositories apply to the version using Qt4. Below is what I had to do to install the Qt5 version of the application from Vishwaesh Rajiv’s GitHub repository. Qt5 and PyQt5 are already installed in Lubuntu 20.10, so these are not included in the steps below (read Jun-Yan Zhu’s GitHub page for details). My family’s desktop machine does not have an NVIDIA GPU (it has an Intel IGP) so I used ‘CPU mode’ (see the README.md file for details).

user $ wget https://github.com/vwrj/interactive-deep-colorization/archive/master.zip
user $ unzip master.zip
user $ cp -r -p interactive-deep-colorization-master ideepcolor
user $ cd ideepcolor
user $ cp docker/ideepcolor_docker.py ideepcolor.py
user $ cp -r docker/ui_PyQt5/* ui/
user $ cp -r docker/data/* data/
user $ nano ideepcolor.py # Change the line 'from ui_PyQt5 import gui_design' to 'from ui import gui_design'
user $ bash ./models/fetch_models.sh
user $ sudo apt update
user $ sudo apt install caffe python3-caffe
user $ sudo apt install python3-opencv python3-sklearn python3-skimage
user $ sudo apt install python3-qdarkstyle
user $ sudo apt install python3-opencv

I used the following command in ~/ideepcolor/ to launch the application:

user $ python3 ideepcolor.py --cpu_mode --backend caffe --image_file test_imgs/parrot.jpg

From the output displayed in the terminal window the application seems to launch correctly:

[...]
Setting ab cluster centers in layer: pred_ab
Setting upsampling layer kernel: pred_313_us
b'test_imgs/parrot.jpg'
scale = 2.000000

but after a minute or two the memory used increases significantly (as seen in htop), no GUI is displayed and the terminal displays ‘Killed‘:

[...]
Setting ab cluster centers in layer: pred_ab
Setting upsampling layer kernel: pred_313_us
b'test_imgs/parrot.jpg'
scale = 2.000000
Killed

I could be wrong, but I assume the reason the application does not continue is because of insufficient RAM. When I get time I will try to install the various packages in Gentoo Linux on my main laptop with 16 GB RAM, to see if I can get it to work. If you are using a Linux installation that has Qt5 installed and your machine has plenty of RAM, you might be interested to try and install the Interactive Deep Colorization software to see if you can get it to work. If you do, please comment below.

About Fitzcarraldo
A Linux user with an interest in all things technical.

3 Responses to Installing the Interactive Deep Colorization application in Linux

  1. viewinghood says:

    Nice article! Please add example pics, das “raw red” and output of the free services 😁 BTW: porting Qt4 to Qt5 isn’t a big thing… The signal/ slot mechanism changed. There are good examples on stackoverflow…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.