Author: kanakorn.h

  • python #05 – การ Save/Load ตัวโมเดลจาก Keras แล้วนำไปใช้ใน Production Server

    ต่อจาก python #03 – Train/Validation/Test and Accuracy Assessment with Confusion Matrix

    เมื่อสร้าง Neural Network Model แล้วทำการ Train/Test ปรับค่า Hyper parameters จนได้ผลเป็นที่พอใจแล้ว (Accuracy และ Confusion Matrix ให้ค่าที่รับได้) ก็สามารถเก็บ Model นี้เอาไว้ใช้งานภายหลัง ไม่ต้องเริ่มต้น Train ใหม่ โดยใช้คำสั่ง

    ก็จะได้ไฟล์ (ตามตัวอย่างนี้) ชื่อ example_model.h5 สามารถนำไปใช้บนเครื่อง Production ได้ โดยเรียกใช้งานด้วยคำสั่ง

    จากนั้น ก็จะสามารถใช้ mode.predict() เพื่อใช้งานได้ตามต้องการ

    ต่อ การสร้าง RESTful API สำหรับใช้งานจริง ง่าย ๆ ด้วย Flask และ Waitress ก็สามารถนำ Model นี้ไป Deploy เป็น RESTful API ได้เช่นกัน โดยเพิ่ม

    # load Model
    from keras.models import load_model
    model = load_model('example_model.h5')

    และ

    y_predict=model.predict(data)		
    result=y_predict.argmax(axis=1)[0]

    จากนั้น ก็สั่ง

    python waitress_server.py

    เพื่อส่งค่าผ่าน Postman ไป ที่ Server ก็จะ Error ว่า

    เหตุ เพราะยังไม่ได้มีการสร้าง Tensorflow Graph ขึ้นมา ดังนั้น ต้องเพิ่มคำสั่งต่อไปนี้

    # Tensorflow Graph
    import numpy as np
    import tensorflow as tf
    graph = tf.get_default_graph()

    และ

    with graph.as_default():
         y_predict=model.predict(np_data)

    จากนั้น restart waitress_server แล้วส่งค่าเข้าไปใหม่

    ก็จะได้การ Prediction แล้ว

    หวังว่าจะเป็นประโยชน์ครับ

  • python #04 – Tensorboard

    เมื่อติดตั้ง Tensorflow ก็จะมี Tensorboard ติดตั้งมาให้แล้ว

    วิธีการใช้งาน ก็แสนง่าย คือ ใน Code เพิ่ม
    (ตั้งชื่อ directory ให้ดี เช่นกรณีนี้ ตั้งชื่อว่า example-logs เป็นต้น)

    from time import time
    from  keras.callbacks import TensorBoard
    tensorboard = TensorBoard(log_dir="example-logs/{}".format(time()))

    และในส่วนของ fit ให้เพิ่ม callbacks เข้าไป

    callbacks=[tensorboard]

    ดังภาพนี้

    จากนั้นก็ Train ตามปรกติ

    เมื่อต้องการดู Tensorboard ก็เพียงเปิดอีก Terminal หนึ่ง (Command Prompt) ไปที่ Directory ที่มี log อยู่ แล้วใช้คำสั่ง

    tensorboard --logdir=example-logs

    ตัว Tensorboard ก็จะทำงาน อ่าน logs จาก –logdir ที่กำหนด แล้วแสดงผลที่ Port 6006



    แต่รายละเอียดใช้ยังไง ขอศึกษาเพิ่มเติมก่อนครับ แหะ ๆ

  • Case Study: ระบบประเมินผลออนไลน์ด้วย Google Sheets แบบแก้ไขได้เฉพาะส่วนของตนเอง แต่มองเห็นของคนอื่นได้ด้วย

    โจทย์มีอยู่ว่า

    • ต้องการระบบประเมินผล Online ให้อาจารย์จากหลาย ๆ มหาวิทยาลัย จำนวน 5 ท่าน ประเมินผลการทำงาน ในมุมมองต่าง ๆ แยกตาม Sheet
    • และ ในแต่ละมุมมอง อาจารย์แต่ละท่าน สามารถเลือกตัวเลือกจาก Dropdown ในคอลัมน์ของตนเองในแต่ละหัวข้อย่อย
    • แต่ในขณะเดียวกัน สามารถมองเห็นได้ด้วยว่า อาจารย์ท่านอื่นให้คะแนนหัวข้อย่อยนั้นว่าอย่างไร แต่จะไม่สามารถแก้ไขของท่านอื่น หรือ แก้ไขส่วนอื่น ๆ ได้
    • มีระบบสรุปคะแนนอัตโนมัติ

    เริ่มกันเลย

    ลองคลิกไปดูตัวอย่างได้ที่นี่

    สร้าง Google Sheets โดยมีทั้งหมด 5 Sheets แต่ละ Sheet มีคอลัมน์แรก เป็นรายการที่จะประเมิน คอลัมน์ B – F เป็นส่วนที่ผู้ประเมินแต่ละท่านใช้ในการประเมิน

    ชีตที่ 1 -3 เป็น มุมมองในการประเมิน

    Sheet “มุมมองที่ 1”
    Sheet “มุมมองที่ 2”
    Sheet “มุมมองที่ 3”

    ชีตที่ 4 เป็น Rubric Score หรือ ค่าที่จะใช้ทำ Dropdown ด้วย V Lookup

    Rubric Score

    ชีตที่ 5 เป็น Summary เอาไว้แสดงภาพรวมการประเมิน (ใช้ในภายหลัง)

    Summary

    สร้าง Dropdown

    ไปที่ ชีต “มุมมองที่ 1” ที่เซล B7 (หัวข้อประเมินแรก ของผู้ประเมินคนแรก) แล้ว “คลิกขวา” เลือก Data Validation …

    จากนั้น ในบรรทัด On invalid data เลือก Reject input
    ในบรรทัด Criteria คลิกที่ช่องด้านหลัง

    แล้วไปคลิก ชีต “RubricScore” และเลือกส่วนที่จะมาแสดงใน Dropdown นั่นคือ “Not Met”, “Partially Met” และ “Met” แล้วคลิกปุ่ม OK

    จากนั้น กลับมาคลิกปุ่ม Save

    จากนั้น ก็ Copy เซล B7 ไปยังทุก ๆ ส่วนที่จะทำการประเมิน

    เพิ่มผู้ประเมินเป็น Editor

    คลิกปุ่ม Share แล้วกรอก Email Address ซึ่งเป็น Google Account ของผู้ประเมินทั้ง 5 คนลงไป ให้เป็น Editor จากนั้นคลิกปุ่ม Send

    ในขั้นตอนนี้ ทุกคนที่เป็น Editor สามารถเข้ามาแก้ไข ทุกส่วน ของ Google Sheets นี้ได้ ซึ่งไม่ใช่สิ่งที่ต้องการ ต่อไป จะเป็นการกำหนด ส่วนที่ แต่ละคนจะสามารถแก้ไขได้

    กำหนดส่วนที่ผู้ประเมินแก้ไขได้

    คิดเหมือนกับ การเจาะช่อง ให้เฉพาะส่วนที่กำหนดนี้ ให้มีการแก้ไขได้

    คลิกเมนู Tools > Protect sheet
    แล้วคลิก Except certain cells
    ในที่นี้คือ B:F

    แล้วเลือก Editor ทุกคน ให้สามารถ แก้ไขได้
    จากนั้นคลิกปุ่ม Done

    ตอนนี้ ทั้ง 5 คนจะสามารถแก้ไขสิ่งที่อยู่ในคอลัมน์ B-F ได้ แต่ยังมีปัญหาคือ อ.สมชาย สามารถแก้ไขข้อมูลในคอลัมน์ของ อ.สมหญิง ได้อยู่

    กำหนดให้ผู้ประเมินแก้ไขได้เฉพาะคอลัมน์ของตนเอง

    ต่อไป กำหนดให้ อ.สมศรี แก้ไขได้เฉพาะคอลัมน์ C ซึ่งเป็นของตนเองเท่านั้น
    เลือก คอลัมน์ C
    คลิกเมนู Data > Protected sheets and ranges …
    คลิกปุ่ม Set Permissions

    จากนั้น เลือกเฉพาะ email ของ อ.สมศรี เท่านั้นที่สามารถแก้ไขได้
    แล้คลิกปุ่ม Done

    ทำซ้ำกระบวนการนี้ กับ ผู้ประเมินทุกคน ให้แก้ไขได้เฉพาะของตนเองเท่านั้น
    ตอนนี้ อ.สมศรี จะเห็นหน้าจออย่างนี้
    กล่าวคือ แก้ไขได้เฉพาะส่วนของตนเองเท่านั้น

    Save เป็น Macro

    ทำเช่นนี้กับ มุมมองที่เหลือ หรือ จะ Save Macro ก็ได้
    โดยคลิก เมนู Tools > Macros
    จากนั้น ทำกระบวนการที่ต้องการให้บันทึกไปเรื่อย ๆ แล้ว Save
    แล้ว ค่อยไป Run Macro ที่สร้างขึ้น ในชีตที่ต้องการ

    Macro จะมีหน้าตาประมาณนี้

    หวังว่าจะเป็นประโยชน์ครับ

  • python #03 – Train/Validation/Test and Accuracy Assessment with Confusion Matrix

    ต่อจาก python #02 – ติดตั้ง Tensorflow และ Keras ซึ่งกล่าวถึง ขั้นตอนการสร้าง Model และ วาง Layers ต่าง ๆ ของ Keras รวมไปถึง การใช้ model.summary() เพื่อแสดงโครงสร้าง Neural Network ที่สร้างขึ้นมาแล้ว

    ต่อไป เป็นการ นำข้อมูลมาแบ่งเป็นชุด สำหรับ Train/Validate/Evaluate

    การแบ่งข้อมูล

    สมมุติมีข้อมูล ที่อาจจะมาจาก CSV File ซึ่งมี field 0 – 9 คือ ตัวแปรต้น หรือ ที่มักเรียกว่า Features และ มี field 10 เป็น ตัวแปรตาม หรือ ที่เรียกว่า Label

    ทำการแบ่งข้อมูล เป็น X และ y
    (วิธีการ Slice ข้อมูล จะเป็นรูปแบบ data[ row, column])

    ก่อนนำไปใช้ ต้องแปลง y ให้เป็น One-Hot Encode ซึ่ง Keras เองมีเครื่องมือให้อยู่แล้ว

    การแบ่งข้อมูลเป็น Train/Test สามารถทำได้หลายวิธี แต่วิธีหนึ่งที่ง่ายและสะดวก คือ ใช้ train_test_split จาก Scikit Learn ในตัวอย่างนี้ มีข้อมูลตัวอย่างน้อย คือ เพียง 5 samples จึงแบ่งสัดส่วน Test Size = 0.3 หรือ 30%

    การสร้าง Model

    สมมุติ เราออกแบบ Neural Network ตามภาพ กล่าวคือ มี Input Layer จำนวน 10 Nodes และ มี Hidden Layers เป็น Dense 2 ชั้น จำนวน 8 และ 5 Nodes ตามลำดับ โดยมี Activation Function เป็น Relu จากนั้น ส่งไปยัง Output Layer ที่มี 3 Nodes ใช้ Activation Function เป็น Softmax เพราะจะเป็น Categorial Classification

    และ ใช้ Code ตามนี้ แล้ว Compile โดยใช้ Loss Function เป็น Categorical Crossentropy, Optimizer เป็น Adam ที่ Learning Rate 0.001 (เลือกจะตั้งค่าหรือไม่ก็แล้วแต่กรณี) และกำหนด Metrics เป้น Accuracy

    การ Training

    ใช้คำสั่ง fit ในการ train โดยกำหนด X_train คือข้อมูลสำหรับการสอนโมเดล และ y_train เพื่อให้โมเดลเปรียบเทียบว่าต่างจากผลที่คำนวณแค่ไหน (ผ่าน Loss Function) จากนั้นจึงทำการ Adjust Weights กลับมา (ผ่าน Optimizer) ในกระบวนการ Backpropagation
    ในตัวอย่างนี้ ตั้งค่า epochs หรือ จำนวนรอบที่จะ Train และ batch_size เพื่อกำหนดว่า จะให้ใช้ X_train ครั้งละกี่ sample ส่วน verbose ใช้สำหรับกำหนดระดับการแสดงผล 0 คือ แสดงทุกกอย่าง 2 คือแสดงแค่สรุป 2 บรรทัด เป็นต้น

    ในการ Train โมเดล สามารถกำหนด validation_data หรือ ข้อมูลที่ใช้ในการตรวจสอบความแม่นยำของโมเดล ระหว่างการ Train ได้ โดยอาจจะแยกข้อมูลสำหรับ Validation ออกมาต่างหากก็ได้ หรือ จะใช้ X_test, y_test ก็ได้ หรือ จะใช้ข้อมูลใน X_train, y_train แบ่งออกมา โดยการตัังค่า validation_split ก็ได้เช่นกัน

    นอกจากนั้น หากข้อมูลมีความไม่สมดุลย์ของคลาส (Imbanace Classes) ก็สามารถกำหนด class_weight ให้แต่ละ Class ได้ เพื่อให้โมเดลปรับความสมดุลย์เพิ่มเติมได้ และกำหนดการสลับลำดับ (Shuffle) ได้

    ส่วน Callbacks ใช้สำหรับเชื่อมต่อกับ Tensorboard ซึ่งจะกล่าวต่อไปบทความหลังจากนี้

    การ Evaluate ความแม่นยำ

    จะใช้ evaluate() สำหรับทดสอบความแม่นยำของโมเดล

    แสดงผลในรูปของ Graph

    ต้นแบบมาจาก

    https://machinelearningmastery.com/display-deep-learning-model-training-history-in-keras/

    ดูไอเดียนะครับ ยัง Overfit และการ Learning ยังไม่ไดี (แหะ ๆ ข้อมูลน้อย และ เป็นตุ๊กตาเท่านั้น) ที่ควรจะเป็นคือ Accuracy ควรจะค่อย ๆ เพิ่มขึ้น และ Loss ค่อย ๆ ลดลง

    Confusion Matrix

    ต้นแบบจาก SciKit Learn -> Confusion Matrix

    https://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html

    วิธีการใช้งาน

    หวังว่าจะเป็นประโยชน์ครับ

  • การสร้าง RESTful API สำหรับใช้งานจริง ง่าย ๆ ด้วย Flask และ Waitress

    จาก From LAB to Production – จาก Machine Learning Model สู่ Flask RESTful ซึ่งได้นำ Machine Learning แบบ Statistical Approach อย่าง Logistic Regression ที่สร้างโมเดล และ Train กับข้อมูลเรียบร้อยแล้ว (บนเครื่อง Development) จากนั้น ได้นำโมเดลออกมาใช้งาน โดยใช้ วิธีการ Serialization ด้วย joblib ในภาษา Python ได้เป็นไฟล์ออกมา แล้วจึงนำไปใช้เพื่อใช้ในการทำนาย (predict) ชนิดของดอก Iris บนเครื่อง Production โดยรับ Input จากผู้ใช้ผ่าน HTTP Protocol ทั้ง GET/POST ที่ TCP/5000

    ตัวอย่างดังกล่าว ยังเป็นเพียงการ “ทดสอบ” แต่ในบทความนี้ จะเป็นวิธีการ ซึ่งนำไปสู่การใช้งานจริง ๆ ซึ่ง Flask แนะนำให้ใช้งานกับ “waitress” (น่าจะเลียนแบบจาก Server) ซึ่งเป็น WSGI (Web Server Gateway Interface) อีกตัวหนึ่ง ใช้งานง่าย เพราะไม่ต้องติดตั้ง Apache/Nginx เลย

    ติดตั้ง waitress

    pip install waitress

    predict.py

    from flask import Flask, request, jsonify
    from flask_restful import Resource, Api, reqparse
    from flask_cors import CORS
    
    app = Flask(__name__)
    # Enable CORS
    CORS(app)
    
    @app.route("/predict", methods=["POST"])
    def predict():
    	result = 0
    	if request.method == "POST":    		
    		input_value = request.form["input_value"]
    		# ประมวลผล
    		# ...
    		# ตัวอย่างเช่น รับค่ามา แล้ว คูณ 2
    		result=input_value * 2
    		# ###
    	return jsonify(
    		prediction=result
    	),201

    ไฟล์ predict.py เป็นตัวอย่าง python ซึ่งรับค่า input_value จาก HTML form ผ่าน POST method เข้ามา ที่ /predict ซึ่งเขียนด้วย Flask ที่จะไปเรียกใช้ฟังก์ชั่น prediction() แล้วก็ทำการคำนวณที่ต้องการ จากนั้น ตอบค่ากลับไปเป็น JSON ด้วยฟังก์ชั่น jsonify โดยสามารถกำหนด key ชื่อ prediction และ value เป็น result ที่คำนวณได้ และแจ้ง Response Code เป็น 201

    waitress_server.py

    from waitress import serve
    import predict
    serve(predict.app, host='0.0.0.0', port=8080)

    ไฟล์ waitress_server.py ก็เพียงแค่ import serve จาก waitress ที่ติดตั้งไป และ import predict ซึ่งก็คือไฟล์ predict.py ข้างต้น (อยู่ในไดเรคทอรีเดียวกัน) จากนั้น ก็เรียก predict.app โดยรับได้จากทุก IP (0.0.0.0) ที่ TCP port 8080

    วิธีใช้งาน

    ก็แค่เปิด Command Prompt (ตัวอย่างนี้ทำบน Windows Server) แล้วใช้คำสั่ง

    python waitress_server.py

    จากนั้น ก็พัฒนา web application หรือ จะใช้ postman ทดสอบติดต่อเข้ามาก็ได้ ที่ http://server-ip-address:8080/predict แล้ว POST ข้อมูลเข้ามา ก็จะได้ผลลัพธ์กลับไปเป็น JSON

    หวังว่าจะเป็นประโยชน์ครับ

  • วิธีตรวจสอบรุ่นของ CPU ว่าสามารถใช้งาน Tensorflow ได้หรือไม่

    ปัญหา

    สร้างเครื่องบน VMWare ESXi รุ่นล่าสุดก็แล้ว ลงเป็น Windows Server 2016 DataCenter ก็แล้ว ตาม Spec ของ Tensorflow (Version ล่าสุด 1.12) บอกว่า ใช้ Python 3.6 ก็ลงแล้ว (ยังใช้กับตัวล่าสุด 3.7 ไม่ได้) 

    ติดตั้ง Tensorflow ก็ลงตามปรกติ

    pip install tensorflow

    ก็สำเร็จเรียบร้อยดี แต่พอลอง import

    import tensorflow

    ปรากฏว่าเกิด Error 
    “Failed to load the native TensorFlow runtime.”

    ทั้ง ๆ ที่ลงบน Physical Server ที่ไม่ใช่ VMWare ก็ใช้งานได้ปรกติ ทำไม ???

    ตั้งสมมุติฐาน

    Hardware มีความแตกต่างอะไร ระหว่าง VMWare กับ Physical Server ?

    รวบรวมข้อมูล

    ไปดู Hardware Requirements พบว่า ตั้งแต่ Tensorflow 1.6 เป็นต้นมา ต้องใช้งานบน CPU ที่มี AVX Instruction

    และจาก 

    https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX

    บอกว่า CPU ที่มี AVX Instruction คือ เก่าสุด ชื่อรุ่น Sandy Bridge

    แล้ว … เครื่อง Windows Server 2016 DataCenter ที่สร้างบน VMWare นั้น ได้ CPU อะไร ??

    ค้นหาข้อมูล พบว่า Microsoft ให้ใช้เครื่องมือฟรี ที่ชื่อว่า coreinfo (ซึ่งบน Linux ใช้ cpuinfo) สามารถ Download ได้ที่ https://docs.microsoft.com/en-us/sysinternals/downloads/coreinfo

    เมื่อลอง Download มาติดตั้ง และ ใช้คำสั่ง coreinfo ได้ผลว่า เป็นรุ่น Intel Xeon รุ่น E7  – 4870

    ลองไปค้นหาดู ว่า รุ่น E7 – 4870 มี Code Name ว่าอะไร  จาก Intel ได้ความว่า ชื่อรุ่น Westmere ซึ่ง ไม่มี AVX !!!!!

    ไปดูลำดับ Codename จาก 

    https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures

    พบว่า Westmere เป็นรุ่นสุดท้าย ก่อนจะมีการใส่ AVX นั่นเอง (Sandy Bridge, Ivy Bridge, Haswell … เป็นต้นมา มี AVX หมด)

    สรุปผล

    เครื่องบน VMWare ปัจจุบัน นั้นจะได้ Spec ตาม CPU ตัวต่ำสุดใน Cluster ดังนั้น …. เจ้าจึงได้ Westmere ที่ไม่มี AVX ไปใช้ และ ใช้งาน Tensorflow รุ่นตั้งแต่ 1.6 เป็นต้นมาไม่ได้

    จบข่าว

  • python #02 – ติดตั้ง Tensorflow และ Keras

    ต่อจาก python #01 – ติดตั้ง jupyter notebook บน Windows

    ต่อไปเราจะใช้ Machine Learning Library “Tensorflow” และใช้ “Keras” ซึ่งเป็น High-level Neuron Network API ซึ่งจะไปเรียกใช้ Backend คือ Tensorflow อีกชั้นหนึ่ง

    จาก jupyter notebook ทำตามขั้นตอนต่อไปนี

    1.  คำสั่งต่อไปนี้ เพื่อติดตั้ง Tensorflow

    ! pip install tensorflow

    2.  คำสั่งต่อไปนี้ เพื่อติดตั้ง Keras

    ! pip install keras

    จะได้ผลประมาณนี้

    สร้าง Neural Network ด้วย Keras

    เริ่มจาก import ส่วนต่าง ๆ ได้แก่ Models และ Layers

    import keras
    from keras.models import Sequential
    from keras.layers import Input, Dense

    สมมุติเราจะสร้าง Model แบบนี้

    model = Sequential([
        Dense(8, activation='relu', input_shape=(10,), name="Hidden_Layer_1"),
        Dense(5, activation='relu', name='Hidden_Layer_2'),
        Dense(3, activation='softmax' , name='Output_Layer')
    ])

    เสร็จแล้วก็ต้อง compile ตั้งค่า Hyperparameters ต่าง ๆ

    model.compile( loss='categorical_crossentropy',
        optimizer=keras.optimizers.adam(lr=0.001),
        metrics=['accuracy'])

    ดู Summary

    model.summary()

    ได้ผลประมาณนี้

  • python #01 – ติดตั้ง jupyter notebook บน Windows

    jupyter Notebook เป็น Open Source Web Application ให้เราสามารถเขียนภาษา python ได้ง่ายขึ้น สามารถ Share ได้ด้วย และยังสามารถใส่คำอธิบาย (Markdown) ได้ด้วย ติดตั้งลงในเครื่องส่วนตัวได้ ในบทความนี้ แสดงวิธีติดตั้งและใช้งานบน Microsoft Windows ดังนี้

    1. ขั้นแรก ต้องมี Python ก่อน (หมายเหตุ: ณ เวลานี้ 27/11/61 รุ่นล่าสุดคือ 3.7.1 แต่เนื่องจากจะแนะนำการใช้งาน Tensorflow, Keras จึงยังต้องเลือกใช้ Python 3.6.7)

    https://www.python.org/ftp/python/3.6.7/python-3.6.7.exe

    เมื่อติดตั้งแล้ว ควร Restart เครื่องสักหนึ่งครั้ง

    2. ติดตั้ง pip ซึ่งใช้ในการติดตั้งเครื่องมือต่าง ๆ
    เปิด Windows Console (กดปุ่ม Win + R) แล้วพิมพ์คำสั่ง cmd
    จากนั้น ใช้คำสั่งต่อไปนี้

    python -m pip install --upgrade pip setuptools wheel

    3. (Optional) ติดตั้ง virtualenv เพื่อให้สามารถจัดการ Virtual Environment ได้ง่ายขึ้น เพราะอาจจะต้องทำหลาย Project ซึ่งใช้รุ่นของ Package/Module ที่แตกต่างกันบนเครื่องเดียวกัน

    pip install virtualenv

    4. ติดตั้ง jupyter notebook

    pip install jupyter

    5. เมื่อติดตั้งเสร็จแล้ว ก็ใช้คำสั่งต่อไปนี้

    jupyter notebook

    ระบบจะเปิด Web Browser มายัง http://localhost:8888

    จากนั้น คลิกที่ปุ่ม New > Python3

    จากนั้น เราก็จะสามารถใช้คำสั่ง Python ทั่ว ๆ ไปได้

    นอกจากนี้ ยัง Save ได้ และสามารถส่งต่อให้ผู้อื่นใช้ได้ด้วย

  • เตือนภัยอีเมลหลอกลวงว่าเป็นธนาคารกรุงไทย (Spam 2018-11-14)

    เช้านี้มีอีเมลหลอกลวงหลุดเข้ามา

    อ้างว่ามาจาก Krungthai Bank PCL ดังภาพ

    จะเห็นว่า From ก็หลอกว่ามาจาก info@ktb.co.th และในเนื้อหาก็มี Logo ของธนาคาร แถมมี Link  ที่วิ่งไป

    HTTPS://WWW.KTB.CO.TH/PERSONAL/DETAIL/VERIFY/172

    แต่ไม่ใช่ของจริง !!!

    เพราะ ถ้าท่านดูอีเมลฉบับนี้แบบ HTML จะเป็นการส่ง Link ไปที่ “เว็บไซต์หลอกลวง” หรือเรียกว่า Phishing Site 

    ไม่แนะนำให้คลิกตาม

    https://scrappse.tk/jssl/ktbnetbank/krungthai/index.html

    ซึ่งจะได้หน้าตาเหมือนกับของธนาคารจริง ๆ เพราะมันไปใช้ภาพจากเว็บไซต์จริง

    เว็บไซต์หลอกลวง !!!!

    และใช้ HTTPS และได้ “กุญแจ” ที่บอกว่า valid certificate อีกด้วย เพราะใช้ Let’s Encrypt

    ดังนั้นจึงแจ้งเตือนภัยมายังประชาคมให้รับทราบ ว่าปัจจุบันนี้

    • เห็น LINK ใน Email แล้วเป็น URL ชื่อของธนาคารจริง ก็ยังไม่พอ (กรณีนี้เป็นของ www.ktb.co.th)
    • คลิกไป เจอหน้าเว็บ หน้าตาน่าเชื่อถือ ก็ไม่พอ (ตามภาพ เลียนแบบเหมือนมาก)
    • ดูว่ามี “กุญแจ” ของ HTTPS ถูกต้องก็ไม่พอ (กรณีนี้ ได้กุญแจมาแล้ว แต่เป็นของเว็บไซต์หลอกลวง)
    • ดังนั้น ต้องดูด้วยว่า URL ที่ท่านเห็นด้านบน เป็นของธนาคารจริง ๆ หรือไม่ !!! (ในกรณีนี้ ไม่จริง เพราะเป็นของ https://scrappse.tk )

    ธนาคารกรุงไทย ได้แจ้งเตือนเรื่องนี้ไว้แล้วที่ 

    https://www.ktb.co.th/th/krungthai-update/announcement-detail/162

    ดังนั้น หากท่านได้รับ Email ในทำนองนี้ ให้ตรวจสอบกับธนาคาร หรือผู้เชี่ยวชาญก่อน เพราะคนร้ายจะหลอกให้ท่านกรอก Username/Password เพื่อเข้าสู่บัญชีธนาคารของท่านได้