搭建一款属于你自己的图像识别系统.

图灵汇官网

上一篇文章介绍了如何使用TensorFlow和R语言进行图像识别,今天的文章将展示如何使用shiny将其包装成一个小程序。

shiny程序由两部分组成:ui.Rserver.Rui.R 负责前端展示,而 server.R 负责服务器端逻辑处理。

我最初在Windows系统上编写了ui.R,并计划在Linux系统上编写server.R。为了使界面更加美观,我在ui.R中添加了一些CSS样式,效果如下所示。然而,在Linux系统上,由于CSS的问题,背景图片无法正常显示,因此背景色被设置为单一颜色。

接下来,我们来看一下程序的效果。用户可以通过点击“选择图片”按钮,从本地选择一张图片进行识别。识别过程大约需要7到20秒的时间。下面是识别过程的截图:

识别过程截图

首先,我们分享一下ui.R的代码:

```r library(shiny)

shinyUI( fluidPage( includeCSS("style.css"), div(style="text-align:center", headerPanel("图像识别")), sidebarLayout( sidebarPanel( fileInput("image", label="上传图片", accept=c(".png",".jpg"), buttonLabel="点击选择图片", placeholder="未选择") ), mainPanel( plotOutput("distPlot") ) ) ) ) ```

以下是针对不同系统的CSS代码:

Linux系统CSS代码

css h1 {} body { background-color: #225E79; }

Windows系统CSS代码

css h1 {} body { background-image: url(back.jpg); background-size: 100% 100% auto; position: absolute; background-repeat: no-repeat; }

最后,以下是server.R的代码:

```r library(shiny) library(tensorflow) library(magrittr) library(jpeg) library(readr) library(ggplot2) library(grid)

names = readdelim("imagenetclasses.txt", "t", escapedouble = FALSE, trimws = TRUE, col_names = FALSE) slim = tf$contrib$slim

shinyServer(function(input, output) { observeEvent(input$image, { img <- input$image if (!is.null(img)) { imgpath <- img$datapath imgdata <- readJPEG(img_path) # 图像识别的后续处理步骤... } }) }) ```

以上代码展示了如何使用shiny框架将TensorFlow和R语言结合起来,实现图像识别功能。希望这些内容对您有所帮助。

本文来源: 图灵汇 文章作者: 黑马良驹