keras實現嘴唇圖像autoencoder

本文分享了我在silent speech 項目過程中實現的基于嘴唇圖像數據集的autoencoder自編碼器。輸入輸出都是64?6464*6464?64的嘴唇灰度圖。自編碼器由編碼解碼兩個部分構成,同時實現了利用checkpoint在每個epoch運算時,自動保存測試集loss更小的模型。

數據集共包含84679張圖片,其中前68728張圖片作為訓練集,后15951張圖片作為測試集。

在這里插入圖片描述

import tensorflow as tf
from tensorflow.keras import layers
from tensorflow import keras
import numpy as np
from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras import optimizers
from matplotlib import pyplot as plt
from tensorflow.keras import Input
from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, concatenate, Flatten, Conv2DTranspose, UpSampling2D
from tensorflow.keras.models import Modeldef autoencoder_lips():input_img = Input(shape=(64, 64, 1))# encodingconv1 = Conv2D(filters=16, kernel_size=(5, 5), activation='relu', padding='same', name='lip_conv1')(input_img)conv2 = Conv2D(filters=16, kernel_size=(5, 5), activation='relu', padding='same', name='lip_conv2')(conv1)pooling1 = MaxPooling2D(pool_size=(2, 2), name='lip_pooling1')(conv2)conv3 = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', name='lip_conv3')(pooling1)conv4 = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', name='lip_conv4')(conv3)pooling2 = MaxPooling2D(pool_size=(2, 2), name='lip_pooling2')(conv4)# decodingconv5 = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', name='lip_conv5')(pooling2)conv6 = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', name='lip_conv6')(conv5)upsample1 = UpSampling2D(size=(2, 2), name='lip_upsample1')(conv6)conv7 = Conv2D(filters=16, kernel_size=(5, 5), activation='relu', padding='same', name='lip_conv7')(upsample1)conv8 = Conv2D(filters=16, kernel_size=(5, 5), activation='relu', padding='same', name='lip_conv8')(conv7)upsample2 = UpSampling2D(size=(2, 2), name='lip_upsample2')(conv8)decoded = Conv2D(filters=1, kernel_size=(5, 5), activation='sigmoid', padding='same', name='lip_decoded')(upsample2)autoencoder_lip = Model(input_img, decoded, name='autoencoder_lips')autoencoder_lip.summary()return autoencoder_lipif __name__ == "__main__":X = np.load("lips_all_chapiters.npy")nb_images_chapiter7 = 15951# normalisationX = X/255.0# ch1-ch6X_train = X[:-15951, :]X_test = X[-15951:, :]model = autoencoder_lips()my_optimizer = keras.optimizers.Adam(learning_rate=0.0001, epsilon=1e-8)model.compile(optimizer=my_optimizer, loss='binary_crossentropy')filepath = "autoencoder_lips/autoencoder_lips-{epoch:02d}-{val_loss:.8f}.h5"checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1,save_best_only=True, mode='auto')  # only save improved accuracy modelcallbacks_list = [checkpoint]history = model.fit(x=X_train, y=X_train, batch_size=256, epochs=100, callbacks=callbacks_list,validation_data=(X_test, X_test))

訓練好的自編碼器最終在測試集上的表現如下 :
在這里插入圖片描述
第一行是原始輸入的圖像,第二行是自編碼器輸出的對應圖像。我們可以發現雖然自編碼器生成的圖像與原圖像相比損失了清晰度,但是整體上還原了圖像原本的形態。我們因此可以利用自編碼器的中間層作為壓縮后的圖像信息,或稱features特征。自編碼器往往可以用于壓縮信息,或作為進一步進行學習的中間標簽。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386789.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386789.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

遠程導表

exp ibmscm1/ibmscM123112.35.32.77:1532/JD3 file/home/scmimp.dmp tablesS4I_BPM.ACT_DE_MODEL url: jdbc:oracle:thin:112.35.32.77:1532:JD3 username: ibmscm1 password: ibmscM123 exp ibmscm1/ imp/exp user/pwd//host:port/sid fileurl exp 用戶名/密碼數據庫…

historyReverser array reverse

historyReverser & array reverse "use strict";/**** author xgqfrms* license MIT* copyright xgqfrms** description historyReverser* augments Reverse 逆向 / Recursive 遞歸* example* link**/const historyReverser (datas [], text , debug false)…

pip國內加載速度慢解決方法

在國內使用pip安裝包時有時會發現安裝速度非常慢,甚至連接不上源。 為了加快pip的下載速度,我們可以主動使用 -i命令來切換到國內源。 下面放出實測好用的國內源 : 清華:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http:…

oracle--導出、導入blob類型的字段

oracle--導出、導入blob類型的字段 blob是oracle中的一個數據類型,保存的是壓縮后的二進制形式的大數據。 數據遷移如果涉及到blob字段,都不好處理,因為無法用常規方法進行操作,如:使用select查看該字段,…

Feign Hystrix (HystrixCommonKey) 設置單獨接口的超時時間和FallBack

Feign設置單獨接口的超時時間和FallBack(HystrixCommonKey) HystrixCommonKey生成方法&#xff1a;類名#方法名(入參類型) final class Default implements SetterFactory { Override public HystrixCommand.Setter create(Target<?> target, Method method…

深度學習分布式訓練小結

分布式訓練本質上是為了加快模型的訓練速度&#xff0c;面對較為復雜的深度學習模型以及大量的數據。單機單GPU很難在有限的時間內達成模型的收斂。這時候就需要用到分布式訓練。 分布式訓練又分為模型并行和數據并行兩大類。 1. 數據并行 數據并行在于將不同batch的數據分別…

scrapy框架的理解

在每一次學習一個新東西之前&#xff0c;需要知道的幾個問題。這個東西是什么(what),怎么使用(how)&#xff0c;為什么(why) scrapy的概念&#xff1a;Scrapy是一個為了爬取網站數據&#xff0c;提取結構性數據而編寫的框架。 scrapy的作用&#xff1a;通過少量代碼實現快速抓取…

MAC配置JCO,與找不到sapjco3異常

①到jco官網下載jco壓縮包&#xff0c;解壓 ②把libsapjco3.jnilib 放到一個文件夾中 把該路徑配置到環境變量中 ③項目運行有可能會出現異常&#xff1a;找不到 sapjco3 &#xff1b; 第一種解決方式&#xff1a;配置虛擬機參數&#xff1a;-Djava.library.path之前環境變量路…

You must install pydot and graphviz for plotmodel to work報錯如何處理

本文主要記錄windows-anaconda環境下關于使用tensorflow.keras.utils.plot_model()方法時提示安裝pydot 和 graphviz的解決方法。 pydot的安裝非常簡單&#xff0c;進入anaconda python環境中&#xff0c;用pip進行安裝就可以了。 graphviz包的安裝就要稍顯復雜一些。 首先我們…

Java高并發之BlockingQueue

前言碎語 當系統流量負載比較高時&#xff0c;業務日志的寫入操作也要納入系統性能考量之內&#xff0c;如若處理不當&#xff0c;將影響系統的正常業務操作&#xff0c;之前寫過一篇《spring boot通過MQ消費log4j2的日志》的博文&#xff0c;采用了RabbitMQ消息中間件來存儲抗…

python中文字符串轉list

本文主要記錄了將中文字符串轉換為list的過程&#xff0c;其中我們使用了keras preprocessing中的text_to_word_sequence方法。這個方法是完全適配中文的。需要注意的是&#xff0c;中文語料一般字符之間是沒有空格分割的&#xff0c;這與英文是不同的。如下所示&#xff0c;如…

IP通信基礎回顧2(第三周)

1.TCP報文 序號字段占4個字節。TCP連接中傳送的數據流中每一個字節都編上一個序號。序號字段的值則是本報文段所發送的數據第一個字節的序號。 確認序號占4個字節。是期望收到的對方的下一個報文段字節胡序號。首部長度占4個字節。指出TCP首部長度在20-60字節之間&#xff0c;所…

ThreadPoolExecutor線程池 + Queue隊列

1&#xff1a;BlockingQueue繼承關系 java.util.concurrent 包里的 BlockingQueue是一個接口&#xff0c; 繼承Queue接口&#xff0c;Queue接口繼承 Collection BlockingQueue----->Queue-->Collection 圖&#xff1a; 隊列的特點是&#xff1a;先進先出&#xff08;FIFO…

python list pop方法

通過使用pop方法可以直接刪除列表中的某一個對應元素并返回該元素值 s [a, b, c, d] # 通過使用pop方法可以移除list中的一個元素并返回它的值 result s.pop(1) print(result) print(s)結果如下 b [a, c, d]

linux基礎文件管理軟硬鏈接

一、文件系統的基本結構 1、文件和目錄被組成一個單根倒置樹目錄結構 2、文件系統從根目錄下開始&#xff0c;用“/”表示 3、根文件系統&#xff08;rootfs&#xff09;&#xff1a;root filesystem文件名區分大小寫 4、以 . 開頭的文件為隱藏文件 5、路徑用/隔離 6文件有兩類…

mybatis動態更新xml文件后熱部署,不重啟應用的方法

mybatis應用程序&#xff0c;由于是半自動化的sql, 有大量的sql是在xml文件中配置的&#xff0c;而在開發程序的過程中&#xff0c;通常需要邊寫sql變調試應用。但在默認情況下&#xff0c;xml文件里配置的sql語句是被放入到緩存中去了&#xff0c;每次更改有sql語句的xml文件&…

Leetcode 反轉字符串 II python解法

題干&#xff1a; 給定一個字符串 s 和一個整數 k&#xff0c;從字符串開頭算起&#xff0c;每計數至 2k 個字符&#xff0c;就反轉這 2k 字符中的前 k 個字符。 如果剩余字符少于 k 個&#xff0c;則將剩余字符全部反轉。 如果剩余字符小于 2k 但大于或等于 k 個&#xff0c;…

下拉插件 (帶搜索) Bootstrap-select 從后臺獲取數據填充到select的 option中 用法詳解...

今天收到了客戶的需求&#xff0c;要求在新增停車場ID的時候要從數據庫查出來對應的停車場名稱然后顯示在界面上。保存的時候按照停車場ID進行保存。 自己首先把后臺的部分寫完了&#xff0c;測試了接口數據。成功的拿到了ajax數據。 接下來&#xff0c;自己用了select下拉標簽…

pytorch tensorboard基本用法整理

from torch.utils.tensorboard import SummaryWriterif __name__ __main__:aa SummaryWriter(logs) # 創建保存了summarywriter的log目錄for i in range(100):aa.add_scalar(y x, i, i) # 后兩個參數先y軸后x軸 x軸往往是global step y軸用于輸出loss或者其他需要觀察的變量…

php 支付寶付款接口測試

詳細去這里&#xff1a;https://blog.csdn.net/suprezheng/article/details/84931225 轉載于:https://www.cnblogs.com/LF-place/p/10898357.html