Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
55e286e
Setting up GitHub Classroom Feedback
github-classroom[bot] Feb 7, 2021
e417707
Update GitHub Classroom Feedback
github-classroom[bot] Feb 7, 2021
c45003a
Setting up GitHub Classroom Feedback
github-classroom[bot] Feb 7, 2021
b320453
[add] topic
jessepinkman9900 Feb 7, 2021
ea6463d
Proposal
Feb 15, 2021
8d79652
Update README.md
AnshulP10 Feb 23, 2021
73098e5
add env
Feb 23, 2021
886e480
ignore /data
Feb 23, 2021
1540a60
code skeleton
jessepinkman9900 Feb 23, 2021
560ee55
base setup done
Feb 23, 2021
06cf640
Merge branch 'main' of https://github.com/Computer-Vision-IIITH-2021/…
Feb 23, 2021
7e4e613
update code structure
jessepinkman9900 Feb 23, 2021
f532a48
data utils
Mar 5, 2021
01f284e
Merge branch 'main' of https://github.com/Computer-Vision-IIITH-2021/…
Mar 5, 2021
26110f1
data loader code
Mar 6, 2021
d4c3953
sample model - not tested
Mar 9, 2021
7bd5646
Training Code added
Mar 14, 2021
53f57ce
Small Change in Training code
Mar 14, 2021
1ee3d54
Added kernels
AnshulP10 Mar 14, 2021
51d3e72
custom kernels
Ainsley2000 Mar 15, 2021
2089efb
Logging
Mar 15, 2021
0881ae7
add scipy
Mar 15, 2021
009d2a8
Minor train.py changes
Mar 15, 2021
1a37dc3
fixes needed
Mar 15, 2021
859cccf
add AWGN noise transform
Ainsley2000 Mar 15, 2021
9e85021
add visdom package
Mar 15, 2021
7c4cd23
need to fix next() in train.py
Mar 15, 2021
a6bf80f
resolve merge conflicts
Mar 15, 2021
29993b8
Spelling
Mar 15, 2021
178b78e
Fixed for loop
Mar 15, 2021
2bac300
Fixed for loop2
Mar 15, 2021
b8e1a97
[refactor] fix bugs
Mar 15, 2021
7c729ca
big-d pca is your battle now
Mar 15, 2021
a5ff9c4
PCA fix
Mar 15, 2021
3c71496
minor bugs fixed, code runs
Ainsley2000 Mar 16, 2021
d082df9
results need to improve
Mar 16, 2021
66e34a1
run instructions
Mar 16, 2021
c67828c
fixed PCA
Ainsley2000 Mar 16, 2021
a1d114c
Adding images print
Mar 16, 2021
5f80e9a
Adding images print2
Mar 16, 2021
2ec89a3
Adding images print3
Mar 16, 2021
641b8fd
Adding images print4
Mar 16, 2021
ef0d982
Adding images print5
Mar 16, 2021
d47eef1
Adding images print6
Mar 16, 2021
9e56b48
Adding images print7
Mar 16, 2021
e2ff6c0
Adding images print8
Mar 16, 2021
9cd14ca
Adding images print9
Mar 16, 2021
59d4254
Adding images print10
Mar 16, 2021
eaa6bc0
Adding images print11
Mar 16, 2021
387b89b
Adding images print12
Mar 16, 2021
3255131
Adding images print12
Mar 16, 2021
5103cc7
Adding images print14
Mar 16, 2021
21818c1
Adding images print15
Mar 16, 2021
1a84b4e
Adding images print16
Mar 16, 2021
9811cf7
Adding images print17
Mar 16, 2021
e3c687e
Adding images print18
Mar 17, 2021
db5a42d
Adding images print19
Mar 17, 2021
6d8a8e6
Adding images print20
Mar 17, 2021
0f45286
Adding images print21
Mar 17, 2021
7c8c0e8
Adding images print22
Mar 17, 2021
a531491
Adding images print23
Mar 17, 2021
03b9d99
Adding images print24
Mar 17, 2021
dde86e4
Adding images print25
Mar 17, 2021
beda337
Adding images print26
Mar 17, 2021
866dc7f
Adding images print26
Mar 17, 2021
8bebe58
Adding images print28
Mar 17, 2021
fb9f31d
enum
Mar 24, 2021
f19cfd3
enum2
Mar 24, 2021
86e633c
enum3
Mar 24, 2021
8cef687
enum4
Mar 24, 2021
cf98ad9
enum5
Mar 24, 2021
58ae283
enum6
Mar 24, 2021
d72c1d0
enum7
Mar 24, 2021
7ee452c
enumfinal
Mar 24, 2021
d8009fa
enumfinal2
Mar 24, 2021
34c1c34
enumfinalfinal
Mar 24, 2021
0217204
enumfinalfinal2
Mar 24, 2021
bfe1406
Added mid eval report
AnshulP10 Mar 27, 2021
132efcc
Update README.md
AnshulP10 Mar 27, 2021
4a9cc5d
update readme
Mar 27, 2021
5800b32
Merge branch 'main' of https://github.com/Computer-Vision-IIITH-2021/…
Mar 27, 2021
5a098cf
update dir structure
Mar 27, 2021
022ed06
Generalised kernels implemented
Ainsley2000 Apr 9, 2021
c8ff926
Minor fixes
Ainsley2000 Apr 9, 2021
50453f4
minor fix
Ainsley2000 Apr 9, 2021
c8491e0
Minor Fixes
Ainsley2000 Apr 15, 2021
8d7873d
Added PSNR and SSIM score
Apr 22, 2021
89e22b9
Fixed indentation
Apr 22, 2021
7160708
Added dataloader
Apr 22, 2021
eea9510
[fix, add] testing, training
Apr 22, 2021
15cabc1
Removed Noise
Apr 22, 2021
64fa391
Only bmp
Apr 23, 2021
37802db
Batch size 2
Apr 23, 2021
e4013d8
Removed bmp
Apr 23, 2021
3a823c3
ani
Apr 23, 2021
443561a
ani2
Apr 23, 2021
a894173
plssohelpmegod
Apr 23, 2021
1d017d8
plssohelpmegod2
Apr 23, 2021
b872e3d
plssohelpmegod3
Apr 23, 2021
4f43fdc
update README
Apr 24, 2021
8f23c46
Final commit
Apr 24, 2021
9202f95
Merge branch 'main' of https://github.com/Computer-Vision-IIITH-2021/…
Apr 24, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 135 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# custom
/data
src/samples/
src/models
.vscode
22 changes: 22 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
SHELL := /bin/bash
CONDA_ACTIVATE=source $$(conda info --base)/etc/profile.d/conda.sh ; conda activate ; conda activate

.PHONY: help lint local build pull run

.DEFAULT: help

help:
@echo "make run"
@echo " run python main.py"

ENV_NAME := super-res
visdom:
@cd src;\
$(CONDA_ACTIVATE) $(ENV_NAME);\
python -m visdom.server;\

run:
@cd src;\
$(CONDA_ACTIVATE) $(ENV_NAME);\
CUDA_VISIBLE_DEVICES=2,3 nohup python main.py > main.log &
cd ..;
53 changes: 53 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Project 7
- Topic - Image Super Resolution
- Paper - Learning a Single Convolutional Super-Resolution Network for
Multiple Degradations
- Paper Link - https://arxiv.org/pdf/1712.06116v2.pdf


# Run Instructions
1. `make run`

# Usage
## Requirements
- `python=3.8`
- `pytorch=1.7.1`
- `cudatoolkit=10.2`

## Code structure
```
.
├── docs
| ├── TeamKota-MidEvalReport.pdf
| ├── Project Proposal
│ ├── Method.pdf
│ └── TeamKota-ProjectProposal.pdf
├── README.md
├── Makefile
├── data
├── BSDS300
├── DIV2K_train_HR
├── waterloo
├── environment.yml
└── src
├── dataset.py
├── kernels.py
├── logger.py
├── main.py
├── model.py
├── train.py
└── utils.py
```
## Setup env
- `conda env create --file environment.yaml`

## Data

- use `Name` in main.py

| Id | Name |Info | Link |
| --- | --- | ----------- | ----------- |
| 1 | DIV2K_train_HR | HR images | http://data.vision.ee.ethz.ch/cvl/DIV2K/DIV2K_train_HR.zip |
| 2 | DIV2K_train_LR_bicubic_X2 | Bicubic x2 downscaling | http://data.vision.ee.ethz.ch/cvl/DIV2K/DIV2K_train_LR_bicubic_X2.zip |
| 3 | Waterloo Exploration Database | Pristine Natural Images | http://ivc.uwaterloo.ca/database/WaterlooExploration/exploration_database_and_code.rar |
| 4 | Berkeley Segementation Dataset and Benchmark (BSDS300) | Natural Images with greyscale and color segementation | https://www2.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/BSDS300-images.tgz |
Binary file added docs/Project-Proposal/Method.pdf
Binary file not shown.
Binary file not shown.
Binary file added docs/Team Kota - Final Eval Report.pdf
Binary file not shown.
Binary file added docs/TeamKota-MidEvalReport.pdf
Binary file not shown.
13 changes: 13 additions & 0 deletions environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: super-res
channels:
- defaults
dependencies:
- python=3.8
- cudatoolkit=10.2
- torchaudio
- pytorch
- torchvision
- scipy
- visdom
- scikit-learn
- jsonpatch
84 changes: 84 additions & 0 deletions src/dataset.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import torch
from torch.utils import data
from PIL import Image
import numpy as np
from kernels import Kernels
from torchvision import transforms
import math
import random
from torchvision.utils import save_image
import glob

def Scaling(image):
return np.array(image) / 255.0

class AddGaussianNoise(object):
def __init__(self, mean=0.):
self.mean = mean

def __call__(self, vec):
vec = np.asarray(vec)
h, w, n = vec.shape
self.std = float(random.randint(0, 76))
return vec + np.random.rand(h,w,n) * self.std + self.mean

def __repr__(self):
return self.__class__.__name__ + '(mean={0}, std={1})'.format(self.mean, self.std)

class DIV2K_train(data.Dataset):
def __init__(self, config=None):

self.image_paths = []
num_images = 800
for i in range(1, num_images+1):
name = '0000' + str(i)
name = name[-4:]
Y_path = config.y_path + name + '.png'
self.image_paths.append(Y_path)
self.image_paths += glob.glob(config.y_path2)
self.image_paths += glob.glob(config.y_path3)
self.scale_factor = config.scale_factor
self.image_size = config.image_size

self.kernels = Kernels(self.scale_factor)


def __getitem__(self, index):
Y_path = self.image_paths[index]

Y_image = Image.open(Y_path).convert('RGB') # hr image
# Y_image.save("ogyimage"+str(index)+".jpg")
X_imageact,X_image, Y_image = self.transformlr(Y_image,index)

return X_imageact.to(torch.float64), X_image.to(torch.float64), Y_image.to(torch.float64)

def __len__(self):
return len(self.image_paths)

def transformlr(self, Y_image,index):
transform = transforms.RandomCrop(self.image_size * self.scale_factor)
hr_image = transform(Y_image) #image
# print(hr_image)
# hr_image.save("transyimage"+str(index)+".jpg")

kernel, degradinfo = random.choice(self.kernels.allkernels)

transform = transforms.Compose([
transforms.Lambda(lambda x: self.kernels.Blur(x,kernel)),
transforms.Resize((self.image_size, self.image_size), interpolation=3),
AddGaussianNoise()
])

lr_image = np.asarray(transform(hr_image)) #numpy
transform = transforms.ToTensor()
lr_imageact= transform(lr_image)
# print("here",lr_image.shape)
# temp = Image.fromarray(lr_image.astype(np.uint8))
# temp.save("transximage"+str(index)+".jpg")

transform = transforms.Compose([transforms.Lambda(lambda x: self.kernels.ConcatDegraInfo(x,degradinfo))])
lr_image = transform(lr_image)

transform = transforms.ToTensor()
lr_image, hr_image = transform(lr_image), transform(hr_image)
return lr_imageact,lr_image, hr_image
Loading