예제 #1
0
def predict(path, debug=False):
    global net, image_size
    #    img = load_image(path)
    X = np.asarray([path])
    img = np.asarray([load_image(path)], dtype="float32")
    cats = load_classes()
    probs = net.predict_proba(X)
    if debug == True:
        for layer in net.layers:
            name = layer[0].__name__
            filename = os.path.splitext(path)[0]
            try:
                os.mkdir("debug/" + filename)
            except:
                pass
            if "2D" in name:
                real_name = layer[1]["name"]
                try:
                    plt = plot_conv_activity(net.layers_[real_name], img)
                    plt.savefig("debug/" + filename + "/" + real_name +
                                "_activity.png")
                    plt.close()
                    #plt = plot_conv_weights(net.layers_[real_name]) DISABLED: Eats too much memory, pretty useless anyhow
                    #plt.savefig("debug/"+filename+"/"+real_name+"_weights.png")
                except Exception as e:
                    print(e)

    for i, x in enumerate(probs[0]):
        print(cats[i].name, x)
    result = [(cats[np.argmax(x)].id, cats[np.argmax(x)].name, x[np.argmax(x)])
              for x in probs]
    return result[0]
예제 #2
0
def load_data(converter, test=False, return_files=False):
    images = []
    labels = []
    imgs = []
    if test:
        print("Loading test data...")
    else:
        print("Loading data...")
    cats = data.load_classes()
    for cat in cats:
        print("Loading category {0}...".format(cat.name))
        data.delete_broken_images(cat.name)
        path = cat.name
        if test:
            path = "g_" + path
        valid_images = [".jpg", ".gif", ".png", ".tga", ".jpeg"]
        for f in os.listdir(path):
            ext = os.path.splitext(f)[1]
            if ext.lower() not in valid_images:
                continue
            img = load_image(os.path.join(path, f), converter)
            imgs.append(os.path.join(path, f))
            images.append(img)
            labels.append(cat.name)
    print("Loaded data.")
    if return_files:
        return images, labels, imgs
    return images, labels
예제 #3
0
def plot_occ(path, real):
    global net
    img = load_image(path)

    cats = load_classes()
    X = np.asarray([img], dtype="float32")
    plt = plot_occlusion(net, X, [real])
    return plt
예제 #4
0
def convert_num_topics(info, num_topics):
    if isinstance(num_topics, str):
        gt = len(data.load_classes(info))
        if num_topics == "gt":
            num_topics = gt
        elif num_topics.endswith("gt"):
            num_topics = int(float(num_topics[:-2]) * gt)
        else:
            raise config.ConfigException(
                'Unknown "num_topics" format: {}'.format(num_topics))
    return num_topics
예제 #5
0
def score_exceptions():
    global net
    X_test, y_test = load_g_data()
    cats = load_classes()
    res = net.predict(X_test)
    count = 0
    for r, x, y in zip(res, X_test, y_test):
        if r != y:
            print(x)
            copyfile(
                x, "exceptions/predicted_" + cats[r].name + "_actual_" +
                cats[y].name + "_" + str(count) + os.path.splitext(x)[1])
            count += 1
예제 #6
0
from nolearn.lasagne.handlers import SaveWeights
from nolearn.lasagne.visualize import draw_to_file, plot_occlusion, plot_conv_activity, plot_conv_weights, draw_to_notebook

from skimage.io import imread
from skimage.color import gray2rgb, rgba2rgb
from skimage.transform import resize

from nolearn_utils.iterators import (BufferedBatchIteratorMixin,
                                     ShuffleBatchIteratorMixin,
                                     AffineTransformBatchIteratorMixin,
                                     ReadImageBatchIteratorMixin,
                                     RandomFlipBatchIteratorMixin,
                                     make_iterator)
from nolearn_utils.hooks import (SaveTrainingHistory, PlotTrainingHistory)

cats = load_classes()

image_size = 224
batch_size = 128
n_classes = len(cats)  #DONE:0 Determine number of classes
print(n_classes)

train_iterator_mixins = [
    ShuffleBatchIteratorMixin,
    ReadImageBatchIteratorMixin,
    RandomFlipBatchIteratorMixin,
    AffineTransformBatchIteratorMixin,
    BufferedBatchIteratorMixin,
]
TrainIterator = make_iterator('TrainIterator', train_iterator_mixins)
예제 #7
0
from __future__ import division
import os
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
import numpy as np
import cv2

from models.darknet import Darknet
from utils import *
import os
from data import load_classes, prep_image

test_dir = 'data/test_imgs'
class_names = load_classes("data/coco.names")
image_names = [os.path.join(test_dir, n_) for n_ in os.listdir(test_dir)]
images = list(map(cv2.imread, image_names))
input_images = [prep_image(im_, 416) for im_ in images]

dnet = Darknet("cfg/yolov3.cfg")
weight_file = 'checkpoints/yolov3.weights'
dnet.load_net_binary(weight_file)
dnet.eval()

#
l_0 = nn.Sequential(list(dnet.module_list)[0][:2])  # first conv layer
h = l_0(input_images[0])
h0 = torch.load(os.path.expanduser("~/tmp/c0a.pt"))
print((h-h0).abs().max())
print('')