【问题标题】:Tensorflow classify_image张量流分类图像
【发布时间】:2017-02-20 09:01:38
【问题描述】:

这个闪亮的应用程序来自:here 它基本上在 R 闪亮中使用 tensorflow python。我的主要问题是让 py 代码在 R 中运行。

编辑:我设法通过进行一些更改使其运行。一切运行。但是,没有 wordcloud,我也无法将输出打印在闪亮上。上传图片后,输出将在 Rstudio 的控制台中。

library(wordcloud)
shinyServer(function(input, output) {
    PYTHONPATH <- "C:/Program Files/Anaconda3"  #should look like /Users/yourname/anaconda/bin if you use anaconda python distribution in OS X
    CLASSIFYIMAGEPATH <- "C:/Program Files/Anaconda3/Lib/site-packages/tensorflow/models/image/imagenet" #should look like ~/anaconda/lib/python2.7/site-packages/tensorflow/models/image/imagenet

    outputtext <- reactive({
      ###This is to compose image recognition template###
      inFile <- input$file1 #This creates input button that enables image upload
      template <- paste0("python"," ", "classify_image.py") #Template to run image recognition using Python
      if (is.null(inFile))
        {system(paste0(template," --image_file /tmp/imagenet/cropped_panda.jpg"))} else { #Initially the app classifies cropped_panda.jpg, if you download the model data to a different directory, you should change /tmp/imagenet to the location you use. 
      system(paste0(template," --image_file ",inFile$datapath)) #Uploaded image will be used for classification
        }



      })

    output$answer <- renderPrint({outputtext()})

    output$plot <- renderPlot({
      ###This is to create wordcloud based on image recognition results###
      df <- data.frame(gsub(" *\\(.*?\\) *", "", outputtext()),gsub("[^0-9.]", "", outputtext())) #Make a dataframe using detected objects and scores
      names(df) <- c("Object","Score") #Set column names
      df$Object <- as.character(df$Object) #Convert df$Object to character
      df$Score <- as.numeric(as.character(df$Score)) #Convert df$Score to numeric
      s <- strsplit(as.character(df$Object), ',') #Split rows by comma to separate rows
      df <- data.frame(Object=unlist(s), Score=rep(df$Score, sapply(s, FUN=length))) #Allocate scores to split words
      # By separating long categories into shorter terms, we can avoid "could not be fit on page. It will not be plotted" warning as much as possible
      wordcloud(df$Object, df$Score, scale=c(4,2),
                    colors=brewer.pal(6, "RdBu"),random.order=F) #Make wordcloud
    })

    output$outputImage <- renderImage({
      ###This is to plot uploaded image###
      if (is.null(input$file1)){
        outfile <- "/tmp/imagenet/cropped_panda.jpg"
        contentType <- "image/jpg"
        #Panda image is the default
      }else{
        outfile <- input$file1$datapath
        contentType <- input$file1$type
        #Uploaded file otherwise
        }

      list(src = outfile,
           contentType=contentType,
           width=300)
    }, deleteFile = TRUE)
})

Rstudio 控制台上的输出示例:

哈巴狗,哈巴狗(得分 = 0.89841)公牛獒(得分 = 0.01825) Brabancon griffon (分数 = 0.01114) 法国斗牛犬 (分数 = 0.00161) 北京人、北京人、北京人(分数 = 0.00091)W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_def_util.cc:332] 操作 BatchNormWithGlobalNormalization 已弃用。它将停止 在 GraphDef 版本 9 中工作。使用 tf.nn.batch_normalization()。

有谁知道发生了什么?我尝试了各种方法,但我无法打印输出(使用了 renderPrint、rendertext... 等)

【问题讨论】:

  • 你在 Windows 上吗?
  • 是的,我很遗憾:/

标签: python r shiny


【解决方案1】:

好的,这里有两种方法-

1

一个。为 Windows 安装 RPython [来自 CRAN 的 Linux/Mac]。下载为 zip [克隆/下载为 zip 选项] - https://github.com/cjgb/rPython-win

b.解压,重命名文件夹为rPython,修改configure.win指向你的python安装【我猜肯定是Anaconda】

c。执行 R 中的代码 -

library(devtools) # devtools needs to be installed - install.packages("devtools")
install("C:/Users/username/Downloads/rPython") # location where you have downloaded rPython

我的输出 -

Installing rPython
"C:/PROGRA~1/R/R-33~1.2/bin/x64/R" --no-site-file --no-environ --no-save --no-restore --quiet CMD  \
  INSTALL "C:/Users/vk046010/Downloads/rPython"  \
  --library="C:/Users/vk046010/Documents/R/win-library/3.3" --install-tests 

* installing *source* package 'rPython' ...
** libs
Warning: this package has a non-empty 'configure.win' file,
so building only the main architecture

c:/Rtools/mingw_64/bin/gcc  -I"C:/PROGRA~1/R/R-33~1.2/include" -DNDEBUG     -I"d:/Compiler/gcc-4.9.3/local330/include"  -I"C:/Anaconda2/include"   -O2 -Wall  -std=gnu99 -mtune=core2 -c pycall.c -o pycall.o
c:/Rtools/mingw_64/bin/gcc -shared -s -static-libgcc -o rPython.dll tmp.def pycall.o -LC:/Anaconda2/libs -lpython27 -Ld:/Compiler/gcc-4.9.3/local330/lib/x64 -Ld:/Compiler/gcc-4.9.3/local330/lib -LC:/PROGRA~1/R/R-33~1.2/bin/x64 -lR
installing to C:/Users/vk046010/Documents/R/win-library/3.3/rPython/libs/x64
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (rPython)

d。现在从 RStudio 执行这个 -

# tensorflow caller
library("rPython")


py_code <- "
def classify_image(image_loc): 
  # load tensorflow and predict here
  return image_loc+'person' # return the result here
"
python.exec(py_code)

python.call( "classify_image", 'path/loc/to/image/')

python.call 的输出应该是你要找的东西。

2

我以前没有这样做过,所以没有个人保证。您可以在 R 本身中安装 tensorflow - https://github.com/rstudio/tensorflow

【讨论】:

  • 嗨 vivek,我该如何更改 config.win。我得到了这个错误编译终止。 make: *** [pycall.o] 错误 1 ​​警告:运行命令 'make -f "Makevars.win" -f "D:/R-3.3.2/etc/x64/Makeconf" -f "D:/R -3.3.2/share/make/winshlib.mk" SHLIB="rPython.dll" WIN=64 TCLBIN=64 OBJECTS="pycall.o"' 有状态 2 错误:包 'rPython' 编译失败 * 删除 'D :/R-3.3.2/library/rPython' 错误:命令失败 (1)
  • echo 'PKG_LIBS=-LC:/python27/libs -lpython27' &gt; src/makevars.win echo 'PKG_CFLAGS=-I"C:/Python27/include"' &gt;&gt; src/makevars.win改成你的python的安装位置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多