1. 程式人生 > >tensorflow入門之---------影象大小調整

tensorflow入門之---------影象大小調整

在深度學習的過程中,往往對輸入影象的大小需要進行一個調整,特別是對於擁有全連線層的神經網路,因為全連線層的節點數是固定的。因此,為了滿足全連線層的一個輸入的要求,我們可以利用tensorflow自帶的函式來進行影象大小的調整。

總體來說一共有三個函式。原始影象大小為1242*375.

一、tf.image.resize_images(image,shape,method)

一共有三個引數,第一個是原始影象,第二個是重取樣目標影像大小,第三個是重取樣的方法。雙線性插值演算法(Bilinear interpolation);Method取值為:0;最近鄰居法(Nearest  neighbor interpolation);Method取值為:1;雙三次插值法(Bicubic interpolation);Method取值為:2;

這個函式是通過插值的方式實現影象的大小變換,包括最近鄰插值,雙線性插值,雙三次插值等。

雙線性插值影象變小 雙線性插值影象變大

二、tf.image.resize_image_with_crop_or_pad(image,IMG_W,IMG_H)

一共有三個引數,分別是原始影象,目標影象的寬,目標影象的高。

這個函式不是通過插值改變影象大小,而是直接通過裁剪和填充。這麼做的好處就是不會讓影象看上去又明顯的畸變,但是會使得原始影象不完整。

cropping padding

三、tf.image.central_crop(image,rate)

這個函式一共有兩個引數,一個是原始影象,另一個是原始影象調整的比例。注意,這種演算法rate只能在0-1之間,否則會出現錯誤。

raise ValueError('central_fraction must be within (0, 1]')

ValueError: central_fraction must be within (0, 1]

這個函式是對原始影象整體的比例進行調整。實際上,有點類似於第二個函式,在縮小的時候實際上是採用了類似於裁剪的方法,圖片中的部分物體是被裁剪掉的。

所有實驗的原始碼如下: 

# -*- coding: utf-8 -*-
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt#這個可以用來
"""
Created on Thu Jul 19 15:42:38 2018

@author: Lenovo
"""
IMG_W1 = 208  # resize影象,太大的話訓練時間久
IMG_H1 = 208
IMG_W2=2000
IMG_H2=2000
BATCH_SIZE = 2

picdir1 = 'E:/Study/研究生文件/密集匹配程式/train/image_2/000000_10.png'

image_raw=tf.gfile.GFile(picdir1,'rb').read()
image_raw = tf.image.decode_png(image_raw)

with tf.Session() as sess:
      plt.imshow(image_raw.eval())
      plt.show()
     #第一種方法,採用resize函式,採用雙線性插值
      img_resized1 = tf.image.resize_images(image_raw, [100,800],method=0) 
      img_resized1 = np.asarray(img_resized1.eval(),dtype='uint8')
      plt.imshow(img_resized1)
      plt.show()
      
      img_resized1 = tf.image.resize_images(image_raw, [900,2700],method=0) 
      img_resized1 = np.asarray(img_resized1.eval(),dtype='uint8')
      plt.imshow(img_resized1)
      plt.show()
     
      croped = tf.image.resize_image_with_crop_or_pad(image_raw,300,300)    #目標影象大小<原始影象的大小,則擷取原始影象的居中部分,
      padded = tf.image.resize_image_with_crop_or_pad(image_raw,1500,1500)    #目標影象大小>原始影象的大小,則會在原始影象的四周填充全為0背景
      plt.imshow(croped.eval())
      plt.show()
      plt.imshow(padded.eval())
      plt.show()
      
      central_cropped = tf.image.central_crop(image_raw,0.25)                #按照比例裁剪影象,第二個引數為調整比例,比例取值[0,1]
      plt.imshow(central_cropped.eval())
      plt.show()

 總結,這次主要試驗了三種不同的影象大小調整的方式。有些方式會產生形變,但內容中的物體不會丟失。有些方法雖然不會產生形變,但是內容中的物體會丟失。所以應該根據自己的需要使用。

相關推薦

tensorflow入門---------影象大小調整

在深度學習的過程中,往往對輸入影象的大小需要進行一個調整,特別是對於擁有全連線層的神經網路,因為全連線層的節點數是固定的。因此,為了滿足全連線層的一個輸入的要求,我們可以利用tensorflow自帶的函式來進行影象大小的調整。 總體來說一共有三個函式。原始影象大小為1242

使用TensorFlow進行常用的影象處理-影象轉為矩陣以及影象大小調整1

影象編碼處理 將影象轉為一個三維矩陣,並使用三維矩陣形成一個影象: import tensorflow as tf import matplotlib.pyplot as plt # 讀取原始影象資料 image_raw_data = tf.gfile.FastGFi

使用TensorFlow進行常用的影象處理-影象轉為矩陣以及影象大小調整

影象編碼處理 將影象轉為一個三維矩陣,並使用三維矩陣形成一個影象: import tensorflow as tf import matplotlib.pyplot as plt # 讀取

TensorFlow入門二:tensorflow手寫數字識別

一、基礎知識 基礎知識可以跳過,可以直接看後面的程式碼實現 MNIST資料集 MNIST資料集的官網是Yann LeCun’s website。可以使用下面的python程式碼自動下載資料集。 #已經下載input_data.py #import input_data #沒有

TensorFlow入門訓練mnist資料集

import sys,os import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.

Tensorflow入門 Win10 執行 linux 子系統

前言 早在 win10 剛出的時候就流傳著 win10 可以直接執行 linux 程式的傳言,頓時讓人覺得吊炸天,Win10 逆襲。 然而,win10 真正出來後,這個功能被推遲了,直到最近才真正的大範圍推出。 win10 下的 linux 子系統並沒有

tensorflow入門訓練簡單的神經網路

這幾天開始學tensorflow,先來做一下學習記錄 一.神經網路解決問題步驟: 1.提取問題中實體的特徵向量作為神經網路的輸入。也就是說要對資料集進行特徵工程,然後知道每個樣本的特徵維度,以此來定義輸入神經元的個數。 2.定義神經網路的結構,並定義如何從

TensorFlow入門MNIST樣例程式碼分析

這幾天想系統的學習一下TensorFlow,為之後的工作打下一些基礎。看了下《TensorFlow:實戰Google深度學習框架》這本書,目前個人覺得這本書還是對初學者挺友好的,作者站在初學者的角度講解TensorFlow,所以比較容易理解。這篇博文主要是為了分析其中的一個經

pygame視窗大小調整

對於不同的情況我門需要調整不同的視窗,在pygame中pygame.display.set_mode((640,480),0,32)為調整視窗的函式,例如,我們可以通過設定第二個引數為FULLSCREEN來讓整個視窗全屏,基本的語法我就不說了,這裡我展示可以使自定義調整視窗

【課程筆記】opencv+tensorflow入門人工智慧影象處理(2018-4-19)

計算機視覺(opencv+tensorflow) 1.1 mac環境搭建 1、下載安裝anaconda 2、下載安裝tensorflow+配置opencv 3、下載安裝notebook Anaconda中搭建環境都是使用Environment進行搭

tensorflow入門使用feed來對變數賦值

本節主要詳述tensorflow的使用feed來對變數賦值,以下程式碼在python3.5,tensorflow1.5.0,numpy1.13.3下測試通過,想學習的小夥伴可以直接拷貝執行,一塊學習提高呀。需要用到feed來賦值的操作可以通過tf.placeholder()說

TensorFlow入門三:tensorflow手寫數字識別進階-卷積神經網路

一、基礎知識 基礎知識可以跳過,可以直接看後面的程式碼實現,碰到問題回頭來查 1.邊界檢測示例 假如你有一張如下的影象,你想讓計算機搞清楚影象上有什麼物體,你可以做的事情是檢測影象的垂直邊緣和水平邊緣。 如下是一個6*6的灰度影象,構造一個3*3的矩陣,在卷積

TensorFlow入門MNIST最佳實踐-深度學習

模型保存 tro 網絡 選擇 手寫 找到 default 輸入 自定義 在上一篇《TensorFlow入門之MNIST樣例代碼分析》中,我們講解了如果來用一個三層全連接網絡實現手寫數字識別。但是在實際運用中我們需要更有效率,更加靈活的代碼。在TensorFlow實戰這本書中

Tensorflow影象預處理(2)大小調整

簡單的影象預處理,包含對影象的反轉和裁剪等基本操作,程式碼中有詳細註釋 #影象大小調整 import matplotlib.pyplot as plt image_raw_data=tf.gfile.FastGFile("pic/ma.jpg","rb").read()

Tensorflow入門教程手寫數字MINST識別

Tensorflow入門教程之手寫數字MINST識別 MNIST是在機器學習領域中的一個經典問題。該問題解決的是把28x28畫素的灰度手寫數字圖片識別為相應的數字,其中數字的範圍從0到9. MNIST 資料下載 Yann LeCun's MNIST page也提供了訓練集與測試集資料

TensorFlow入門教程:8:訓練資料Iris資料集

Irises,聞名於世的不只是梵高那副價值超過5000萬美元的鳶尾花,同時還有Iris資料集。 Iris資料集由英國統計學家/生物學家Ronald Fisher在1936年所收集,共包含150條資料,

不懂錘爆我係列Tensorflow入門學習—— 張量拓展函式tile()詳解

第二期,第二期,開始,開始。 在tensorflow中有個很常用的張量擴充套件函式——tile(),看過了許多講解部落格之後,覺得有必要系統的進行一下整理。同時,我將講解一維、二維、乃至多維張量使用tile()的運算過程與規則。 下面,我們還是以一段程式碼為例: imp

“毛星雲OpenCV3程式設計入門python實現”第七篇影象拆分、合併

5.3影象拆分、合併 python程式碼: # -*- coding: utf-8 -*- import cv2 import numpy as np srcImage = cv2.imread("E:/Study/python/OpenCV_study/i

分享《機器學習實戰基於Scikit-Learn和TensorFlow》中英文PDF原始碼+《深度學習TensorFlow入門原理與進階實戰》PDF+原始碼

下載:https://pan.baidu.com/s/1qKaDd9PSUUGbBQNB3tkDzw 《機器學習實戰:基於Scikit-Learn和TensorFlow》高清中文版PDF+高清英文版PDF+原始碼 下載:https://pan.baidu.com/s/1IAfr-tigqGE_njrfSA

TensorFlow學習--入門基本使用

原文地址http://www.cnblogs.com/flyu6/p/5555161.html 整體介紹 使用 TensorFlow, 你必須明白 TensorFlow: 使用圖 (graph) 來表示計算任務.在被稱之為 會話 (Session) 的上下文 (c