最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tensorflow加載模型實(shí)現(xiàn)圖像分類識(shí)別流程詳解

 更新時(shí)間:2022年09月21日 10:04:18   作者:技術(shù)老匠  
在視覺領(lǐng)域可以分為:1、圖像分類 2、語義分割 3、實(shí)例分割 4、目標(biāo)檢測(跟蹤) 5、關(guān)鍵點(diǎn)檢測。該篇主要講解利用Tensorflow 對圖像進(jìn)行圖像分類

前言

深度學(xué)習(xí)框架在市面上有很多。比如Theano、Caffe、CNTK、MXnet 、Tensorflow等。今天講解的就是主角Tensorflow。Tensorflow的前身是Google大腦項(xiàng)目的一個(gè)分布式機(jī)器學(xué)習(xí)訓(xùn)練框架,它是一個(gè)十分基礎(chǔ)且集成度很高的系統(tǒng),它的目標(biāo)就是為研究超大型規(guī)模的視覺項(xiàng)目,后面延申到各個(gè)領(lǐng)域。Tensorflow 在2015年正式開源,開源的一個(gè)月內(nèi)就收獲到1w多的starts,這足以說明Tensorflow的優(yōu)越性以及Google的影響力。在Api方面Tensorflow為了滿足絕大部分的開發(fā)者需求,這也是Google的一貫作風(fēng),集成了Java、Go、Python、C++等編程語言。

正文

圖像識(shí)別是一件很有趣的事,話不多說,咱們先了解下特征提取VGG in Tensorflow。官網(wǎng)地址:VGG in TensorFlow · Davi Frossard。

VGG 是牛津大學(xué)的 K. Simonyan 和 A. Zisserman 在論文“Very Deep Convolutional Networks for Large-Scale Image Recognition”中提出的卷積神經(jīng)網(wǎng)絡(luò)模型。該模型在 ImageNet 中實(shí)現(xiàn)了 92.7% 的 top-5 測試準(zhǔn)確率,這是一個(gè)包含 1000 個(gè)類別的超過 1400 萬張圖像的數(shù)據(jù)集。 在這篇簡短的文章中,我們提供了 VGG16 的實(shí)現(xiàn)以及從原始 Caffe 模型轉(zhuǎn)換為 TensorFlow 的權(quán)重。這句話是VGGNet官方的介紹,直接從它提供的數(shù)字可以看出來,它的識(shí)別率是十分高的,是不是很激動(dòng),動(dòng)起手來吧。

開發(fā)步驟分4步,如下所示:

a) 依賴加載

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import os
import scipy.io
import scipy.misc
from imagenet_classes import class_names

b)定義卷積、池化等函數(shù)

def _conv_layer(input,weight,bias):
    conv = tf.nn.conv2d(input,weight,strides=[1,1,1,1],padding="SAME")
    return tf.nn.bias_add(conv,bias)
def _pool_layer(input):
    return tf.nn.max_pool(input,ksize=[1,2,2,1],strides=[1,2,2,1],padding="SAME")
def preprocess(image,mean_pixel):
    '''簡單預(yù)處理,全部圖片減去平均值'''
    return image-mean_pixel
def unprocess(image,mean_pixel):
    return image+mean_pixel

c)圖像的讀取以及保存

def imread(path):
    return scipy.misc.imread(path)
def imsave(image,path):
    img = np.clip(image,0,255).astype(np.int8)
    scipy.misc.imsave(path,image)

d) 定義網(wǎng)絡(luò)結(jié)構(gòu),這里使用的是VGG19

def net(data_path,input_image,sess=None):
    """
    讀取VGG模型參數(shù),搭建VGG網(wǎng)絡(luò)
    :param data_path: VGG模型文件位置
    :param input_image: 輸入測試圖像
    :return:
    """
    layers = (
        'conv1_1', 'conv1_2', 'pool1',
        'conv2_1', 'conv2_2', 'pool2',
        'conv3_1', 'conv3_2', 'conv3_3','conv3_4', 'pool3',
        'conv4_1', 'conv4_2', 'conv4_3','conv4_4', 'pool4',
        'conv5_1', 'conv5_2', 'conv5_3','conv5_4', 'pool5',
          'fc1'  ,   'fc2'  ,   'fc3'  ,
        'softmax'
    )
    data = scipy.io.loadmat(data_path)
    mean = data["normalization"][0][0][0][0][0]
    input_image = np.array([preprocess(input_image, mean)]).astype(np.float32)#去除平均值
    net = {}
    current = input_image
    net["src_image"] = tf.constant(current)  # 存儲(chǔ)數(shù)據(jù)
    count = 0 #計(jì)數(shù)存儲(chǔ)
    for i in range(43):
        if str(data['layers'][0][i][0][0][0][0])[:4] == ("relu"):
            continue
        if str(data['layers'][0][i][0][0][0][0])[:4] == ("pool"):
            current = _pool_layer(current)
        elif str(data['layers'][0][i][0][0][0][0]) == ("softmax"):
            current = tf.nn.softmax(current)
        elif i == (37):
            shape = int(np.prod(current.get_shape()[1:]))
            current = tf.reshape(current, [-1, shape])
            kernels, bias = data['layers'][0][i][0][0][0][0]
            kernels = np.reshape(kernels,[-1,4096])
            bias = bias.reshape(-1)
            current = tf.nn.relu(tf.add(tf.matmul(current,kernels),bias))
        elif i == (39):
            kernels, bias = data['layers'][0][i][0][0][0][0]
            kernels = np.reshape(kernels,[4096,4096])
            bias = bias.reshape(-1)
            current = tf.nn.relu(tf.add(tf.matmul(current,kernels),bias))
        elif i == 41:
            kernels, bias = data['layers'][0][i][0][0][0][0]
            kernels = np.reshape(kernels, [4096, 1000])
            bias = bias.reshape(-1)
            current = tf.add(tf.matmul(current, kernels), bias)
        else:
            kernels,bias = data['layers'][0][i][0][0][0][0]
            #注意VGG存儲(chǔ)方式為[,]
            #kernels = np.transpose(kernels,[1,0,2,3])
            bias = bias.reshape(-1)#降低維度
            current = tf.nn.relu(_conv_layer(current,kernels,bias))
        net[layers[count]] = current #存儲(chǔ)數(shù)據(jù)
        count += 1
    return net, mean

e)加載模型進(jìn)行識(shí)別

if __name__ == '__main__':
    VGG_PATH = "./one/imagenet-vgg-verydeep-19.mat"
    IMG_PATH = './one/3.jpg'
    input_image =imread(IMG_PATH)
    shape = (1, input_image.shape[0], input_image.shape[1], input_image.shape[2])
    with tf.Session() as sess:
        image = tf.placeholder('float', shape=shape)
        nets, mean_pixel, all_layers= net(VGG_PATH, image)
        input_image_pre=np.array([preprocess(input_image,mean_pixel)])
        layers = all_layers
        for i , layer in enumerate(layers):
            print("[%d/%d] %s" % (i+1,len(layers),layers))
            features = nets[layer].eval(feed_dict={image:input_image_pre})
            print("Type of 'feature' is ",type(features))
            print("Shape of 'features' is  %s" % (features.shape,))
            if 1:
                plt.figure(i+1,figsize=(10,5))
                plt.matshow(features[0,:,:,0],cmap=plt.cm.gray,fignum=i+1)
                plt.title(""+layer)
                plt.colorbar()
                plt.show()

VGG19網(wǎng)絡(luò)介紹

VGG19 的宏觀架構(gòu)如圖所示。我們在 TensorFlow 中的文件 vgg19.py 中對其進(jìn)行編碼。請注意,我們包含一個(gè)預(yù)處理層,它采用像素值在 0-255 范圍內(nèi)的 RGB 圖像并減去平均圖像值(在整個(gè) ImageNet 訓(xùn)練集上計(jì)算)。

總結(jié)

Tensorflow是一款十分不錯(cuò)的深度學(xué)習(xí)框架,它在工業(yè)上得到的十分的認(rèn)可并進(jìn)行了實(shí)踐。因此,如果你還在猶豫生產(chǎn)落地使用框架,不要猶豫啦。VGGNet家族是一個(gè)十分優(yōu)秀的網(wǎng)絡(luò)結(jié)構(gòu),它在處理特征提取過程中,也是得到了很多公司和研究學(xué)者的認(rèn)可,比較著名的有VGG16、VGG19等。

到此這篇關(guān)于Tensorflow加載模型實(shí)現(xiàn)圖像分類識(shí)別流程詳解的文章就介紹到這了,更多相關(guān)Tensorflow圖像分類識(shí)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的面向?qū)ο缶幊淘斀?上)

    Python中的面向?qū)ο缶幊淘斀?上)

    這篇文章主要介紹了Python中的面向?qū)ο缶幊淘斀?上),本文講解了創(chuàng)建類、實(shí)例化類、類屬性、特殊方法內(nèi)建屬性、靜態(tài)變量屬性、實(shí)例變量屬性、方法屬性、靜態(tài)方法、類方法等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • python中in和is的區(qū)別點(diǎn)總結(jié)

    python中in和is的區(qū)別點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python中in和is的區(qū)別點(diǎn)總結(jié),有興趣的朋友可以跟著學(xué)習(xí)下。
    2021-05-05
  • numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實(shí)現(xiàn)

    numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實(shí)現(xiàn)

    這篇文章主要介紹了numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python中字符串前面加r的作用

    python中字符串前面加r的作用

    這篇文章主要介紹了python中字符串前面加r的作用,實(shí)例分析了Python通過字符串前面加r實(shí)現(xiàn)禁止字符串轉(zhuǎn)義的功能,需要的朋友可以參考下
    2015-06-06
  • 基于PyQT5制作一個(gè)桌面摸魚工具

    基于PyQT5制作一個(gè)桌面摸魚工具

    這篇文章主要介紹了如何利用PyQT5制作一個(gè)桌面摸魚工具,利用摸魚,打開小說,可實(shí)行完美摸魚,實(shí)時(shí)保存進(jìn)度,快來跟隨小編一起動(dòng)手試一試吧
    2022-02-02
  • Python協(xié)程方式的實(shí)現(xiàn)及意義筆記分享

    Python協(xié)程方式的實(shí)現(xiàn)及意義筆記分享

    協(xié)程也被稱為微線程,是一種用戶態(tài)的上下文切換技術(shù),簡而言之,就是通過一個(gè)線程實(shí)現(xiàn)代碼互相切換執(zhí)行,本文主要給大家介紹實(shí)現(xiàn)協(xié)程的幾種方法
    2021-09-09
  • python基礎(chǔ)之并發(fā)編程(二)

    python基礎(chǔ)之并發(fā)編程(二)

    這篇文章主要介紹了詳解python的并發(fā)編程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • Python實(shí)現(xiàn)GUI圖片瀏覽的小程序

    Python實(shí)現(xiàn)GUI圖片瀏覽的小程序

    這篇文章主要介紹了Python實(shí)現(xiàn)GUI圖片瀏覽程序,程序的實(shí)現(xiàn)需要pillow庫,pillow是 Python 的第三方圖像處理庫,需要安裝才能實(shí)用,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 跟老齊學(xué)Python之用while來循環(huán)

    跟老齊學(xué)Python之用while來循環(huán)

    while,翻譯成中文是“當(dāng)...的時(shí)候”,這個(gè)單詞在英語中,常常用來做為時(shí)間狀語,while ... someone do somthing,這種類型的說法是有的。
    2014-10-10
  • Python最常用的20 個(gè)包總結(jié)

    Python最常用的20 個(gè)包總結(jié)

    這篇文章主要介紹了Python最常用的20 個(gè)包總結(jié),在平時(shí)使用Python的過程中,需要用到很多有用的包,今天就來盤點(diǎn)一下常用的包,需要的朋友可以參考下
    2023-04-04

最新評論

鄱阳县| 德庆县| 江津市| 会东县| 蓬溪县| 桂东县| 长岭县| 盐津县| 重庆市| 抚州市| 沙河市| 和平县| 安新县| 安多县| 长乐市| 沙河市| 肥城市| 龙胜| 朝阳县| 新龙县| 扎赉特旗| 红河县| 寿光市| 定日县| 广西| 常宁市| 太白县| 武宁县| 共和县| 克东县| 弋阳县| 莆田市| 合肥市| 黄山市| 平潭县| 长兴县| 安徽省| 浙江省| 鹤岗市| 马边| 同仁县|