Skip to content

Instantly share code, notes, and snippets.

View RaphaelMeudec's full-sized avatar

Raphael Meudec RaphaelMeudec

View GitHub Profile
@RaphaelMeudec
RaphaelMeudec / renice_python_processes.py
Last active April 13, 2021 09:16
Python script to automatically renice all python processes
#!/usr/bin/python3
from datetime import datetime
import psutil
DEFAULT_DRAGO_NICENESS_VALUE = 5
DURATION_BEFORE_RENICING = 30
@RaphaelMeudec
RaphaelMeudec / training_performance_inputs_type.py
Last active April 21, 2020 16:37
Comparison of training time based on what you feed to the .fit method (np.array, ImageDataGenerator with different arguments, tf.data)
"""
Performance comparison between ImageDataGenerator and tf.data.Dataset on a simple task
Dependencies available at https://www.github.com/sicara/tf2-evonorm
"""
import math
from pathlib import Path
import click
import tensorflow as tf
@RaphaelMeudec
RaphaelMeudec / mixed_preciision.py
Created January 16, 2020 16:07
Lines to turn float32 into mixed precision training
policy = tf.keras.mixed_precision.experimental.Policy('mixed_float16')
tf.keras.mixed_precision.experimental.set_policy(policy)
# Define multi-gpu strategy
mirrored_strategy = tf.distribute.MirroredStrategy()
# Update batch size value
batch_size *= mirrored_strategy.num_replicas_in_sync
# Create strategy scope to perform training
with mirrored_strategy.scope():
model = [...]
model.fit(...)
@RaphaelMeudec
RaphaelMeudec / optimized_tensorflow_dataset_for_image.py
Created January 16, 2020 11:17
Create an optimized version of tf.data Dataset for an image deblurring task
from pathlib import Path
import tensorflow as tf
def select_patch(sharp, blur, patch_size_x, patch_size_y):
"""
Select a patch on both sharp and blur images at the same localization.
Args:
sharp (tf.Tensor): Tensor for the sharp image
blur (tf.Tensor): Tensor for the blur image
@RaphaelMeudec
RaphaelMeudec / tensorflow_dataset_for_images.py
Last active October 25, 2020 10:12
Create a simple tf.data Dataset for an image deblurring task
from pathlib import Path
import tensorflow as tf
def select_patch(sharp, blur, patch_size_x, patch_size_y):
"""
Select a patch on both sharp and blur images at the same localization.
Args:
sharp (tf.Tensor): Tensor for the sharp image
@RaphaelMeudec
RaphaelMeudec / k_way_n_shots_dataset.py
Created January 14, 2020 14:56
How to create a k-way n-shot tf.data.Dataset
def build_k_way_n_shot_dataset(annotations, n_shot, k_way, classes=None, to_categorical=True, training=True):
"""Build a dataset where each batch contains only N elements of K classes among all classes"""
# Prepare a dataframe with "image_path", "x1", "x2", "y1", "y2" columns
annotations = annotations.assign(label=pd.Categorical(annotations.label, categories=classes))
# Prepare labels as one hot vectors
targets = annotations.label.cat.codes
if to_categorical:
targets = (
pd.get_dummies(targets)
@RaphaelMeudec
RaphaelMeudec / guided_backprop.py
Created July 18, 2019 15:12
Guided Backpropagation at inference time with Tensorflow 2
with tf.GradientTape() as tape:
conv_outputs, predictions = grad_model(np.array([img]))
loss = predictions[:, CAT_CLASS_INDEX]
output = conv_outputs[0]
grads = tape.gradient(loss, conv_outputs)[0]
# Apply guided backpropagation
gate_f = tf.cast(output > 0, 'float32')
gate_r = tf.cast(grads > 0, 'float32')
@RaphaelMeudec
RaphaelMeudec / grad_cam.py
Created July 18, 2019 15:11
Grad CAM implementation with Tensorflow 2
import cv2
import numpy as np
import tensorflow as tf
IMAGE_PATH = './cat.jpg'
LAYER_NAME = 'block5_conv3'
CAT_CLASS_INDEX = 281
img = tf.keras.preprocessing.image.load_img(IMAGE_PATH, target_size=(224, 224))
img = tf.keras.preprocessing.image.img_to_array(img)
@RaphaelMeudec
RaphaelMeudec / grad_cam_no_guided_backprop.py
Last active July 18, 2019 15:10
Grad CAM (without Guided Backpropagation) with Tensorflow 2
import cv2
import numpy as np
import tensorflow as tf
IMAGE_PATH = './cat.jpg'
LAYER_NAME = 'block5_conv3'
CAT_CLASS_INDEX = 281
img = tf.keras.preprocessing.image.load_img(IMAGE_PATH, target_size=(224, 224))
img = tf.keras.preprocessing.image.img_to_array(img)