谷歌的Deepdream實現
最近學習tensorflow,聽說谷歌的Deepdream比較有趣,就實現一下,但是,畫面有的好恐怖。
先上程式碼:
gen_deepdream.py
# coding:utf-8 from __future__ import print_function import os from io import BytesIO import numpy as np from functools import partial import PIL.Image import scipy.misc import tensorflow as tf graph = tf.Graph() model_fn = 'tensorflow_inception_graph.pb' sess = tf.InteractiveSession(graph=graph) with tf.gfile.FastGFile(model_fn, 'rb') as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) t_input = tf.placeholder(np.float32, name='input') # define the input tensor imagenet_mean = 117.0 t_preprocessed = tf.expand_dims(t_input - imagenet_mean, 0) tf.import_graph_def(graph_def, {'input': t_preprocessed}) def savearray(img_array, img_name): scipy.misc.toimage(img_array).save(img_name) print('img saved: %s' % img_name) def visstd(a, s=0.1): return (a - a.mean()) / max(a.std(), 1e-4) * s + 0.5 def resize_ratio(img, ratio): min = img.min() max = img.max() img = (img - min) / (max - min) * 255 img = np.float32(scipy.misc.imresize(img, ratio)) img = img / 255 * (max - min) + min return img def resize(img, hw): min = img.min() max = img.max() img = (img - min) / (max - min) * 255 img = np.float32(scipy.misc.imresize(img, hw)) img = img / 255 * (max - min) + min return img def calc_grad_tiled(img, t_grad, tile_size=512): sz = tile_size h, w = img.shape[:2] sx, sy = np.random.randint(sz, size=2) img_shift = np.roll(np.roll(img, sx, 1), sy, 0) # 先在行上做整體移動,再在列上做整體移動 grad = np.zeros_like(img) for y in range(0, max(h - sz // 2, sz), sz): for x in range(0, max(w - sz // 2, sz), sz): sub = img_shift[y:y + sz, x:x + sz] g = sess.run(t_grad, {t_input: sub}) grad[y:y + sz, x:x + sz] = g return np.roll(np.roll(grad, -sx, 1), -sy, 0) def tffunc(*argtypes): placeholders = list(map(tf.placeholder, argtypes)) def wrap(f): out = f(*placeholders) def wrapper(*args, **kw): return out.eval(dict(zip(placeholders, args)), session=kw.get('session')) return wrapper return wrap def render_deepdream(t_obj, img0, iter_n=10, step=1.5, octave_n=4, octave_scale=1.4): t_score = tf.reduce_mean(t_obj) t_grad = tf.gradients(t_score, t_input)[0] img = img0 # 同樣將影象進行金字塔分解 # 此時提取高頻、低頻的方法比較簡單。直接縮放就可以 octaves = [] for i in range(octave_n - 1): hw = img.shape[:2] lo = resize(img, np.int32(np.float32(hw) / octave_scale)) hi = img - resize(lo, hw) img = lo octaves.append(hi) # 先生成低頻的影象,再依次放大並加上高頻 for octave in range(octave_n): if octave > 0: hi = octaves[-octave] img = resize(img, hi.shape[:2]) + hi for i in range(iter_n): g = calc_grad_tiled(img, t_grad) img += g * (step / (np.abs(g).mean() + 1e-7)) print('.', end=' ') img = img.clip(0, 255) savearray(img, 'deepdream.jpg') if __name__ == '__main__': img0 = PIL.Image.open('test.jpg') img0 = np.float32(img0) name = 'mixed4d_3x3_bottleneck_pre_relu' channel = 139 layer_output = graph.get_tensor_by_name("import/%s:0" % name) render_deepdream(layer_output[:, :, :, channel], img0) # name = 'mixed4c' # layer_output = graph.get_tensor_by_name("import/%s:0" % name) # render_deepdream(tf.square(layer_output), img0)
結果:
是它:
和它:
生成所得。
程式碼中其他需要的,可以留言傳送給你。
相關推薦
【深度學習】谷歌deepdream原理及tensorflow實現
什麼是DeepDream? DeepDream是谷歌釋出的對卷積神經網路(CNN)進行視覺化的方法,當然它的用途不僅限於此,我們可以通過它讓機器“做夢”,以下是一些效果: 可以看到計算機將自然影象的
谷歌瀏覽器實現跨域
大家在做http請求的時候可能會遇到跨域問題,這裡為大家提供解決方案,親自實驗有效。 一般是報上述錯誤。 首先在C盤新建一個資料夾,命名按照下面的來。 開啟谷歌瀏覽器的設定 在“目標” 的exe後面新增下面這段內容,不要忘記打空格。並且下面這段內容不要放在包含“exe”的雙
chrome谷歌瀏覽器實現多使用者登入
Chrome谷歌瀏覽器實現多使用者登入 在工作和生活中,有時候會用不同的賬戶登入同一個系統,總是退出再換另一個賬號登入的話就比較麻煩,也很浪費時間,今天學到了一個小技巧–谷歌瀏覽器的多使用者管理,使用之後,對於多使用者登入的切換方便多了~ 工具/原料 Chrome瀏覽器 實現
谷歌地圖實現車輛位置實時跟蹤
谷歌地圖沒有直接給路書的功能,在這裡模擬一個,車輛上會隨時傳一個座標值,通過後端的橋接,即時反饋給前端這些資料,得到座標點,就可以進行地圖打點,實現一種類似導航的效果,來展示位置所在。 本 Chat 內容有: 實時位置展示; 路線回放功能; 路線記錄功能。 通過本次 Chat
谷歌的Deepdream實現
最近學習tensorflow,聽說谷歌的Deepdream比較有趣,就實現一下,但是,畫面有的好恐怖。先上程式碼:gen_deepdream.py# coding:utf-8 from __future__ import print_function import os fr
谷歌廣告Admob在cocos2dx上通過回調實現底部Banner
rac dea oncreate match orien googl sid onresume clu 首先說明我的開發平臺,以免由於平臺問題造成不必要的誤解: cocos2dx-3.4 ndk-r9d eclipse Admob是谷歌官方廣告,已經集成在google_
谷歌開源的TensorFlow Object Detection API視頻物體識別系統實現教程
cti blog tail xiaoxiao pan clas post ont 谷歌 教程:http://blog.csdn.net/xiaoxiao123jun/article/details/76605928 全部代碼:https://github.com/lyj83
js 利用canvas + flv.js實現 視頻流 截屏 、本地下載功能實現,兼容火狐,谷歌, 截屏跨域的坑
font 方案 function can 屬性和方法 load() com DG ren 1 本地視頻截屏(canvsa) <!DOCTYPE html> <html> <head> <meta charset=
谷歌開源整合學習工具AdaNet:2017年提出的演算法終於實現了
曉查 編譯整理量子位 報道 | 公眾號 QbitAI 最近,谷歌在GitHub上釋出了用TensorFlow實現的AutoML框架——AdaNet,它改進了整合學習的方法,能以最少的專家干預實現自動習得高質量模型。 谷歌AI研究團曾在2017年的ICML上提出了AdaNet:人
谷歌兄弟公司暫停隱形眼鏡測血糖研究:技術無法實現
@央廣軍事11月10日訊息,2018中國航展上首次公開展出的“瞭望者Ⅱ”察打一體導彈無人艇,是剛剛成功進行首發導彈飛行試驗命中靶心的實艇,試驗成功後隨即吊裝到展位與公眾見面。據媒體此前報道,該艇是中國第一艘導彈無人艇,也是繼以色列拉斐爾海上騎士後全球第二個成功發射導彈的無人艇,填補了國內導彈無人艇這一技術空白
谷歌雲配置FTP主動模式,使用寶塔的FTP儲存空間外掛實現自動備份資料
最近谷歌雲註冊就送300刀,就擼了一個用來做資料備份,發現FTP使用flashfxp能連線上,但用寶塔的FTP儲存空間外掛就一直連線不上,按寶塔論壇的方法還是不管用(https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=1903&extra=),
使用谷歌翻譯讓你的網站也實現多國語言版
我們經常會看到訪問一些外國網站的時候,會在網站底部或者頂部出現您當前網頁的網頁需要翻譯的工具條,讓你很輕鬆的翻譯成自己熟悉的語言,這樣的網站使用者體驗絕對是非常讚的,所以呢,當你發現自己的網站只有簡體中文,但卻被不同語言的使用者訪問,他們很苦惱,你網站上有大篇大篇精彩的文章,他們卻不知所云。你是不是自己也很鬱
1094 谷歌的招聘——C++實現
題目 1094 谷歌的招聘 (20 分) 2004 年 7 月,谷歌在矽谷的 101 號公路邊豎立了一塊巨大的廣告牌(如下圖)用於招聘。內容超級簡單,就是一個以 .com 結尾的網址,而前面的網址是一個 10 位素數,這個素數是自然常數 e 中最早出現的 10 位連續數字。能找
基於谷歌開源的TensorFlow Object Detection API視訊物體識別系統實現教程
安裝Python 進入Python3.6.2下載頁,選擇 Files 中Windows平臺的Python安裝包,下載並安裝(本人安裝的是3.6.2版本的python,可根據實際情況下載不同版本的python) 安裝TensorFlow 進入TensorFlow
利用谷歌object_detection API實現物體識別(知識總結)
這兩天想著實現一個實時物體識別的程式,正好了解到谷歌的object_detection API可以實時呼叫攝像頭進行識別畫面內的物體,所以就收集了相關資料學習了一下。 要準備的東西: 安裝谷歌object_detection API 安裝python3.5(本人的Mac
selenium+python實現谷歌頁面開啟-自動化第一步
1python和selenium環境配置完成 2需要下載對應的谷歌瀏覽器版本的chromedriver 3將下載的chromedriver解壓之後放在python安裝的根目錄下面 4程式碼編寫 如: from selenium import webdriver driver
用js實現複製內容到作業系統貼上板(相容IE、谷歌、火狐等瀏覽器)
一、如果只考慮IE瀏覽器,可以直接用原聲js實現 if(window.clipboardData){ //清空作業系統貼上板 window.clipboardData.clearData(); //將需要複製的內容複製到作業系統貼上板 window.clipbo
js實現伺服器端pdf檔案下載,支援谷歌
1.txt文字檔案實現下載而不是在瀏覽器中開啟 對於txt檔案發現下面的方法並不適用,ie瀏覽器會自動開啟,通過查詢發現通過《download.js》下載download.js,頁面引用此js後,直接呼叫 download("檔案路徑","檔名稱","text/plain") 就可以直接
對於谷歌開源的TensorFlow Object Detection API視訊物體識別系統實現教程
本教程針對Windows10實現谷歌近期公佈的TensorFlow Object Detection API視訊物體識別系統,其他平臺也可借鑑。 本教程將網路上相關資料篩選整合(文末附上參考資料連結),旨在為快速搭建環境以及實現視訊物體識別功能提供參考,關於此
谷歌DataFlow程式設計模型以及Spark/Flink/StreamCQL的相關實現
流式計算框架程式設計介面的標準化,傻瓜化,SQL化,自打穀歌發表Dataflow程式設計模型的Paper起,就有走上臺面的趨勢。各家計算框架都開始認真考慮相關的問題,儼然成為大家競爭的熱點方向。在過去一年多的時間裡,Beam/Flink/Spark在這方面的努力和相關工作也逐