2019年7月9日 星期二

[密技]解決blogger圖片模糊看不清楚的問題

在blogger上的圖片樣式明明都選擇特大張了,卻還是看不清楚。

圖片太小了,被縮放過了。

但是如果選擇原始大小的話,版面會超出去,怎麼辦呢?


有一個密技可以解決這個問題。

我們在blogger的管理介面按主題/自訂。

然後按進階/新增CSS

在裡面輸入「.post-body img {max-width: 100%;}

它的意思是圖片超出頁面時會自動縮放圖片為版面大小。

然後回到文章編輯區,把圖片大小設定為原始大小,然後按預覽。

這時就會發現圖片可以自動縮放為版面大小了,而且比選項中的「特大」來得大張,看得更清楚了。


2019年7月7日 星期日

使用Keras卷積神經網路辨別肺部醫學影像(五)

上一張「使用Keras卷積神經網路辨別肺部醫學影像(四)

在上一章,我們撰寫了訓練檔的程式碼,現在來執行它,請注意,第一次執行時,其中的
from keras.models import load_model 
這一行請先註解掉。

執行時會出現這個畫面。

請稍等一會兒,因為它需要訓練很長的一段時間。

解析:
Epoch是目前訓練到第幾批次。
538s代表這一批次訓練花了多少時間。
loss是耗費了多少損失。
acc是準確度。

我們暫時不考慮過擬合的問題,因為這只是寫給初學者作練習用的,也只是給我這個初次寫教學文的新手練習寫文章的,我不想搞那麼複雜。

常態上來說,假設訓練模型正確,loss將會逐漸縮小,acc將逐漸增加(此圖片僅為參考,並非此程式的記錄)。
以這張圖片來說,這個訓練模型算合格的了。

由於訓練需要大量時間,而且會消耗許多運算資源,所以可以在訓練到一半時輸出權重:
model.save_weights("Fiborsis_sex.h5")

然後下次執行時把這一行取消註解:
from keras.models import load_model 

這樣子下次訓練時就可以接續上次的存檔繼續訓練,不必從頭開始。

訓練到一定的程度之後,我們輸出結果:

model.save("Fiborsis_sex_result.h5")

稍後就可以在驗證檔中使用它。

我們現在建立一個check0的python檔案,程式碼如下: 


import array
import sys
import numpy as np
import cv2
import glob
#設定亂數
import random
from keras.utils import np_utils
np.random.seed(0)

#設定影像的長寬
imgwidth=128
imgheight=128

#匯入需要用到的東西
from keras.models import Sequential
from keras.layers import Dense,Dropout,Activation,Flatten
from keras.layers import Conv2D,MaxPooling2D,ZeroPadding2D


model=Sequential()

from keras.models import load_model
#載入剛剛訓練好的訓練檔
model=load_model("Fiborsis_sex_result.h5")

print('載入資料')

#建立影像清單
imglist=[]
#匯入一張圖片
filestr='image_F/00001474_000.png'
img = cv2.imread(filestr,cv2.IMREAD_GRAYSCALE)
#resize它的大小
img=cv2.resize(img,(imgwidth,imgheight))
#將像素的數字縮小為0~1之間的數字
img=img/255.0
#將這張圖片加入imglist
imglist.append(img)  
#轉換成numpy的array
x_img_test=np.array(imglist)
#進行reshape動作
x_img_test=np.reshape(x_img_test,(1,imgwidth,imgheight,1))

#預測這張圖是男生還是女生
prediction=model.predict(x_img_test)
#輸出機率
print("男性機率",(int)(prediction[0][0]*100),"%")
print("女性機率",(int)(prediction[0][1]*100),"%")

現在來執行這個程式。
執行結果,這張圖是女性的機率高達99%,而這張圖的確是女性沒錯,所以這次的測試是成功的。

不過記得要拿沒加入訓練檔訓練過的圖片來作測試,比較符合實際狀況,這是為了避免「過擬合」的問題,不過這不是本章所要討論的重點。

好了,本系列「使用Keras卷積神經網路辨別肺部醫學影像」教學文就在此告一段落了,以後有機會再接續著寫下去,那我們下次再見囉。