Skip to content

Commit f3a2281

Browse files
authored
Merge pull request #1360 from alo7lika/main
Style Transfer with Neural Networks
2 parents 6b362ef + c32fe3e commit f3a2281

File tree

4 files changed

+465
-0
lines changed

4 files changed

+465
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# 🎨 Style Transfer with Neural Networks 🖼️
2+
3+
Welcome to the **Style Transfer with Neural Networks** project! In this project, we explore the application of neural networks to perform artistic style transfer, allowing us to blend the artistic style of one image with the content of another.
4+
5+
## 📖 Table of Contents
6+
7+
1. [Project Overview](#-project-overview)
8+
2. [Setup & Installation](#-setup--installation)
9+
3. [File Structure](#-file-structure)
10+
4. [How to Run](#-how-to-run)
11+
5. [Sample Run](#-sample-run)
12+
6. [Concepts Behind the Project](#-concepts-behind-the-project)
13+
7. [Technologies Used](#-technologies-used)
14+
8. [Parameters & Tuning](#-parameters--tuning)
15+
9. [License](#-license)
16+
10. [Contact](#-contact)
17+
18+
## 📚 Project Overview
19+
20+
Style transfer is a technique in deep learning that involves using Convolutional Neural Networks (CNNs) to separate and combine the style of one image with the content of another image. This project implements a neural style transfer model using **PyTorch** and **pre-trained VGG19**.
21+
22+
### Key Features:
23+
- Use of **pre-trained neural networks** for feature extraction (VGG19)
24+
- Content loss and style loss based on **Gram matrices**
25+
- Supports custom content and style images
26+
- Optimization with **L-BFGS** optimizer for faster convergence
27+
28+
## 🛠️ Setup & Installation
29+
30+
To get started with this project, you'll need to install the following dependencies:
31+
32+
```bash
33+
pip install torch torchvision matplotlib Pillow
34+
```
35+
## 📁 File Structure
36+
| File/Folder | Description |
37+
|------------------------------------------|---------------------------------------------------------------------|
38+
| `Style Transfer with Neural Networks.ipynb` | The main notebook implementing style transfer |
39+
| `images/` | Directory containing sample content and style images |
40+
| `output/` | Folder to store the generated images |
41+
| `requirements.txt` | List of dependencies |
42+
43+
## 🚀 How to Run
44+
1. Clone the repository and navigate to the project folder:
45+
```bash
46+
git clone https://github.com/yourusername/style-transfer-project.git
47+
cd style-transfer-project
48+
```
49+
50+
2. Run the Jupyter Notebook to perform style transfer on your images. You can upload your custom content and style images in the notebook.
51+
52+
3. Adjust parameters like `content_weight`, `style_weight`, and `num_steps` for different results.
53+
54+
4. View and save the generated images in the `output/` folder.
55+
56+
## 📸 Sample Run
57+
58+
- **Content Image**: Defines the structure and objects in the final image.
59+
- **Style Image**: The textures, colors, and patterns are provided.
60+
61+
| Content Image | Style Image |
62+
|------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
63+
| ![Content Image](https://raw.githubusercontent.com/alo7lika/machine-learning-repos/refs/heads/main/Neural%20Style%20Transfer/Style%20Transfer%20with%20Neural%20Networks/content%20image.jpg) | ![Style Image](https://raw.githubusercontent.com/alo7lika/machine-learning-repos/refs/heads/main/Neural%20Style%20Transfer/Style%20Transfer%20with%20Neural%20Networks/style%20image.jpg) |
64+
65+
## 🔬 Concepts Behind the Project
66+
- **Content Representation**: Extracted from deeper layers of the neural network to capture the high-level structures in the image.
67+
- **Style Representation**: Captured using the Gram matrix of feature maps, representing the correlations between different feature maps.
68+
- **Optimization**: The neural network optimizes a random noise image to minimize content and style loss, blending the content and style.
69+
70+
## 🧠 Technologies Used
71+
- Python 🐍
72+
- PyTorch for deep learning
73+
- Jupyter Notebook for interactive coding
74+
- Matplotlib for visualizations
75+
76+
## 📊 Parameters & Tuning
77+
You can adjust the following parameters to control the output:
78+
79+
| Parameter | Default Value | Description |
80+
|------------------|---------------|----------------------------------|
81+
| `content_weight` | 1e5 | Weight for the content loss |
82+
| `style_weight` | 1e10 | Weight for the style loss |
83+
| `num_steps` | 300 | Number of optimization steps |
84+
| `learning_rate` | 0.01 | Learning rate for the optimizer |
85+
86+
87+
## 📄 License
88+
This project is licensed under the MIT License - see the LICENSE file for details.
89+
90+
## 💬 Contact
91+
If you have any questions, feel free to reach out to me at [[email protected]]
92+

0 commit comments

Comments
 (0)