R/addStylesToNetwork.R

#' addContentToNetwork
#'
#' @return
#' @export
#' @import reticulate
#' @import imager
#' @references \insertRef{Simonyan2014}{neuralstyleR}
#' @references \insertRef{Gatys2016}{neuralstyleR}
#'
#' @examples
addStylesToNetwork<-function(network, styleImgs, imageSize=512, styleScale = 1.0,
                              dtype="torch.FloatTensor", styleWeights=NULL){
    if(is.null(styleWeights)){
        styleWeights <- rep(1.0, length(styleImgs))
    }


    for(i in seq_along(styleImgs)){

        styleImg <- styleImgs[[i]]

        #resize picture
        if(width(styleImg) >= height(styleImg)){
            styleImg<-resize(styleImg, imageSize * styleScale,
                             imageSize/width(contentImg)
                             * height(styleImg) * styleScale)
        }else{
            styleImg<-resize(styleImg, imageSize/height(styleImg)
                             * width(styleImg) * styleScale,
                             imageSize * styleScale)
        }

        t_styleImg<-prepcrocess(styleImg)$type(dtype)

        for(layer in network$styleLayers){
            layer$mode <- "capture"
            layer$blend_weight <- styleWeights[i]
        }

        network$net$forward(t_styleImg$type(dtype))
    }


    for(layer in network$styleLayers){
        layer$mode <- "none"
    }

}
David-J-R/neuralstyleR documentation built on May 8, 2019, 1:54 p.m.