Skip to content

verBubble/Real-Time-Style-Transfer-in-QT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Real-Time-Style-Transfer-in-QT

I trained Neural-Style-Transfer network and CycleGAN to implement different style transfer. Also, I implement gui interface via guizero and PyQt5 separately.

Because guizero is not efficient for real-time video stream, the implementation via guizero can only be used to real-time photo style transfer. PyQt5 is more convinent to show an opencv video stream.

This is the initial interface:

When you click a button like "Transfer_Picasso", it will show style image, original video image and transfer-image in real-time. Just like this:

The guizero display looks like this:

When you click a button like "CycleGAN_VanGogh", it will look like this:

Preparation

Python 3.6 and Pytorch 0.4.1

guizero and PyQt5

opencv 3.4.3

To install PyQt5, run:

pip install PyQt5
pip install PyQt5-tools

To install guizero, run:

pip install guizero 

And also, in my implementation, GPU is needed. If you want to run it on CPU, just remove codes like xxx.cuda()

Test

Download the weights first.

wget https://github.com/verBubble/Real-Time-Style-Transfer-in-QT/releases/download/style-transfer/GodBearer.pth

wget https://github.com/verBubble/Real-Time-Style-Transfer-in-QT/releases/download/style-transfer/picasso.pth

Save these 2 weights into '/Neural_Style/checkpoints'.

wget https://github.com/verBubble/Real-Time-Style-Transfer-in-QT/releases/download/CycleGAN/monet.pth

wget https://github.com/verBubble/Real-Time-Style-Transfer-in-QT/releases/download/CycleGAN/VanGogh.pth

Save these 2 weights into '/CycleGAN/outputs'.

Run guizero code:

python display.py

Run PyQt5 code:

python display_pyqt.py

One more thing

My Neural_Style network is based on this repo: https://github.com/chenyuntc/pytorch-book

My CycleGAN network is based on this repo: https://github.com/aitorzip/PyTorch-CycleGAN

If you want to train by yourself, follow instructions of these two repo.