Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

how to save trained models? #6

Open
kapil1027 opened this issue Jul 6, 2019 · 3 comments
Open

how to save trained models? #6

kapil1027 opened this issue Jul 6, 2019 · 3 comments

Comments

@kapil1027
Copy link

This may sound like a stupid question but i cannot find the way to save my trained model as .t7 file to use through openCV can u tell me how you did it from the start please or direct me from where i can learn it.

@kapil1027 kapil1027 changed the title how to train models? how to save trained models? Jul 6, 2019
@ProGamerGov
Copy link
Owner

I'm not sure that these models are usable with OpenCV? They are Torch7 models meant for use with fast-neural-style: https://github.com/jcjohnson/fast-neural-style

@kapil1027
Copy link
Author

It is easy to use your torch7 models in opencv here is the code if you want.
This code i found at some other place I do not remember which was modified to run with torch models to get style transfer models.
######################################################################
from imutils.video import VideoStream
from imutils import paths
import itertools
import argparse
import imutils
import time
import cv2

construct the argument parser and parse the arguments

class Args:
#model directory
models =r"models save place DO NOT DELETE\models\instance_norm"

args=Args()

grab the paths to all neural style transfer models in our 'models'

directory, provided all models end with the '.t7' file extension

modelPaths = paths.list_files(args.models, validExts=(".t7",))
modelPaths = sorted(list(modelPaths))

generate unique IDs for each of the model paths, then combine the

two lists together

models = list(zip(range(0, len(modelPaths)), (modelPaths)))

use the cycle function of itertools that can loop over all model

paths, and then when the end is reached, restart again

modelIter = itertools.cycle(models)
(modelID, modelPath) = next(modelIter)

load the neural style transfer model from disk

print("[INFO] loading style transfer model...")
net = cv2.dnn.readNetFromTorch(modelPath)

initialize the video stream, then allow the camera sensor to warm up

print("[INFO] starting video stream...")
vs = VideoStream(src=0).start()
time.sleep(2.0)
print("[INFO] {}. {}".format(modelID + 1, modelPath))

loop over frames from the video file stream

while True:
# grab the frame from the threaded video stream
frame = vs.read()

# resize the frame to have a width of 600 pixels (while
# maintaining the aspect ratio), and then grab the image
# dimensions
frame = imutils.resize(frame, width=600)
orig = frame.copy()
(h, w) = frame.shape[:2]

# construct a blob from the frame, set the input, and then perform a
# forward pass of the network
blob = cv2.dnn.blobFromImage(frame, 1.0, (w, h),
    (103.939, 116.779, 123.680), swapRB=False, crop=False)
net.setInput(blob)

output = net.forward()

# reshape the output tensor, add back in the mean subtraction, and
# then swap the channel ordering
output = output.reshape((3, output.shape[2], output.shape[3]))
output[0] += 103.939
output[1] += 116.779
output[2] += 123.680
output /= 255.0
output = output.transpose(1, 2, 0)

# show the original frame along with the output neural style
# transfer
cv2.imshow("Input", frame)
cv2.imshow("Output", output)
key = cv2.waitKey(1) & 0xFF
# if the `n` key is pressed (for "next"), load the next neural
# style transfer model
if key == ord("n"):
    # grab the next nueral style transfer model model and load it
    (modelID, modelPath) = next(modelIter)
    print("[INFO] {}. {}".format(modelID + 1, modelPath))
    net = cv2.dnn.readNetFromTorch(modelPath)

# otheriwse, if the `q` key was pressed, break from the loop
elif key == ord("q"):
    break

do a bit of cleanup

cv2.destroyAllWindows()
vs.stop()

@kapil1027
Copy link
Author

kapil1027 commented Jul 18, 2019

thanks for the reply, but the like you provided is working with lua and i am using python 3.6 on Jupiter notebook.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants