MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Phần 1:Phân loại hình ảnh với Máy chủ MariaDB và TensorFlow - Tổng quan

Các công ty tiên tiến đang chuyển sang sử dụng trí tuệ nhân tạo và máy học để đáp ứng những thách thức của kỷ nguyên chuyển đổi kinh doanh kỹ thuật số mới.

Theo Gartner:“ Tám mươi bảy phần trăm các nhà lãnh đạo doanh nghiệp cấp cao nói rằng số hóa là ưu tiên của công ty và 79% các nhà chiến lược của công ty nói rằng họ đang tái tạo lại hoạt động kinh doanh của họ — tạo ra các dòng doanh thu mới theo những cách mới “.

Nguồn :Gartner, Tăng tốc chuyển đổi doanh nghiệp kỹ thuật số của bạn, ngày 15 tháng 1 năm 2019

Nhưng cho đến nay, thay đổi kỹ thuật số vẫn còn nhiều thách thức. Sự phức tạp của các công cụ, kiến ​​trúc và môi trường tạo ra các rào cản đối với việc sử dụng học máy. Sử dụng quản lý dữ liệu quan hệ dựa trên SQL để lưu trữ và thực hiện khám phá dữ liệu về hình ảnh làm giảm các rào cản và mở ra các lợi ích của học máy.

Bài đăng trên blog này trình bày việc sử dụng các công cụ nguồn mở phổ biến Máy chủ MariaDB, thư viện TensorFlow Python và thư viện mạng thần kinh Keras để đơn giản hóa sự phức tạp của việc triển khai học máy. Sử dụng những công nghệ này có thể giúp bạn tăng tốc thời gian tiếp thị bằng cách truy cập, cập nhật, chèn, thao tác và sửa đổi dữ liệu một cách hiệu quả.

Học máy trên cơ sở dữ liệu quan hệ

Trung tâm của quá trình chuyển đổi kinh doanh kỹ thuật số được hỗ trợ bởi máy học là các công nghệ như chatbot, công cụ đề xuất, truyền thông được cá nhân hóa, nhắm mục tiêu quảng cáo thông minh và phân loại hình ảnh.

Phân loại hình ảnh có nhiều trường hợp sử dụng - từ cơ quan thực thi pháp luật và quân đội, đến xe bán lẻ và xe tự lái. Khi được triển khai với học máy, phân loại hình ảnh có thể cung cấp thông tin kinh doanh theo thời gian thực. Mục tiêu của phân loại ảnh là xác định và khắc họa, như một mức xám (hoặc màu) duy nhất, các đặc điểm xuất hiện trong ảnh. Các công cụ phổ biến nhất để phân loại hình ảnh là TensorFlow và Keras.

TensorFlow là một thư viện Python để tính toán số nhanh do Google tạo và phát hành. MariaDB Server là một cơ sở dữ liệu quan hệ mã nguồn mở với giao diện SQL để truy cập và quản lý dữ liệu. Keras là một thư viện mạng thần kinh mã nguồn mở được viết bằng Python.

Trong bài đăng này, bạn sẽ khám phá cách kiểm tra phân loại hình ảnh bằng cách kích hoạt khả năng tương tác giữa TensorFlow và Máy chủ MariaDB. Bài đăng này sử dụng tập dữ liệu Fashion MNIST chứa 70.000 hình ảnh thang độ xám trong 10 danh mục. Hình ảnh hiển thị từng mặt hàng quần áo ở độ phân giải thấp (28 x 28 pixel).

Việc tải và chuẩn bị dữ liệu vào Máy chủ MariaDB nằm ngoài phạm vi của bài đăng này. Các bảng sau đã được tạo và điền trước bằng tập dữ liệu Fashion MNIST.

Hình ảnh Vai trò hình ảnh Nhãn hình ảnh
CREATE TABLE tf_images (
img_label tinyint (4),
img_vector blob,
img_idx int (10) unsigned NOT NULL,
img_blob blob,
img_use tinyint (4)
) ENGINE =InnoDB DEFAULT CHARSET =utf8mb4
CREATE TABLE img_use (
use_id tinyint (4) NOT NULL AUTO_INCREMENT,
use_name varchar (10) NOT NULL,
use_desc varchar (100) NOT NULL,
PRIMARY KEY (use_id)
) ENGINE =InnoDB AUTO_INCREMENT =3 DEFAULT CHARSET =utf8mb4
CREATE TABLE categories (
class_idx tinyint (4) NOT NULL,
class_name char (20) DEFAULT NULL,
PRIMARY KEY (class_idx)
) ENGINE =InnoDB DEFAULT CHARSET =utf8mb4

Khám phá dữ liệu

Các thư viện sau được sử dụng để thực hiện khám phá dữ liệu cơ bản với Máy chủ MariaDB:

  1. io mô-đun cung cấp các phương tiện chính của Python để xử lý các loại I / O khác nhau.
  2. Matplotlib là một thư viện vẽ đồ thị 2D của Python để tạo ra nhiều loại biểu đồ trên các nền tảng.
  3. Gấu trúc cung cấp cấu trúc dữ liệu và các phép toán để thao tác với bảng số và chuỗi thời gian.
  4. pymysql gói chứa thư viện máy khách Python thuần túy để truy cập Máy chủ MariaDB.

Hãy bắt đầu bằng cách kết nối với máy chủ cơ sở dữ liệu thông qua Python:

import io
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import pandas as pd
import pymysql as MariaDB
%matplotlib inline

conn = MariaDB.connect( host = '127.0.0.1'
, port = 3306
, user = 'mdb'
, passwd = 'letmein'
, db = 'ml'
, charset = 'utf8')

cur = conn.cursor()

Sau khi kết nối với máy chủ MariaDB, hình ảnh trong cơ sở dữ liệu có thể dễ dàng truy cập và quản lý. Tất cả các hình ảnh được sử dụng để đào tạo và kiểm tra mô hình được lưu trữ trong một bảng duy nhất (tf_images). Hình ảnh sẽ được sử dụng như thế nào được xác định trong bảng sử dụng hình ảnh (img_use). Trong trường hợp này, bảng chỉ có hai bộ giá trị, đào tạo và kiểm tra:

sql="SELECT use_name AS 'Image Role'
          , use_desc AS 'Description'
     FROM img_use"
display( pd.read_sql(sql,conn) )

Vai trò hình ảnh Mô tả
Đào tạo Hình ảnh được sử dụng để đào tạo người mẫu
Kiểm tra Hình ảnh được sử dụng để kiểm tra mô hình

Ánh xạ các thuộc tính mục tiêu đến các đối tượng hình ảnh trong một tập dữ liệu được gọi là ghi nhãn. Định nghĩa nhãn khác nhau giữa các ứng dụng và hầu như không có một định nghĩa chung nào về nhãn “đúng” cho một hình ảnh. Việc sử dụng cơ sở dữ liệu quan hệ sẽ đơn giản hóa quy trình ghi nhãn và cung cấp cách đi từ nhãn thô đến nhãn hạt mịn.

Trong ví dụ này, bằng cách sử dụng bảng "danh mục", một hình ảnh chỉ có một nhãn (thô) như được hiển thị bên dưới:

sql="SELECT class_name AS 'Class Name' FROM categories"
display( pd.read_sql(sql,conn) )
Túi
Tên lớp
0 áo phông / áo trên
1 Quần
2 Áo chui đầu
3 Váy
4 Áo khoác
5 Sandal
6 Áo sơ mi
7 Giày thể thao
8
9 Khởi động cổ chân

Hình ảnh bảng chứa tất cả các hình ảnh được sử dụng để đào tạo và kiểm tra. Mỗi hình ảnh có một số nhận dạng duy nhất, một nhãn và liệu nó có được sử dụng để đào tạo hoặc thử nghiệm mô hình hay không. Các hình ảnh được lưu trữ ở định dạng PNG gốc của chúng và dưới dạng bộ căng dấu phẩy động được xử lý trước. Một phép nối bên trong đơn giản trên bảng này có thể được thực hiện để hiển thị các biểu diễn hình ảnh (định dạng vectơ hoặc png), nhãn của nó và mục đích sử dụng.

sql="SELECT cn.class_name AS 'Class Name' 
          , iu.use_name AS 'Image Use' 
          , img_vector AS 'Vector Representation' 
          , img_blob AS 'Image PNG' 
     FROM tf_images AS ti 
          INNER JOIN categories AS cn ON ti.img_label = cn.class_idx
          INNER JOIN img_use AS iu ON ti.img_use  = iu.use_id
     LIMIT 5"
display( pd.read_sql(sql,conn) )

Tên lớp Sử dụng Hình ảnh Biểu diễn vectơ Hình ảnh PNG
Khởi động cổ chân Đào tạo b ’\ x80 \ x02cnumpy.core.multiarray \ n_reconstruct… b ’\ x89PNG \ r \ n \ x1a \ n \ x00 \ x00 \ x00 \ rIHDR \ x00 \ x00 \…
áo phông / đầu Đào tạo b ’\ x80 \ x02cnumpy.core.multiarray \ n_reconstruct… b ”\ x89PNG \ r \ n \ x1a \ n \ x00 \ x00 \ x00 \ rIHDR \ x00 \ x00 \…
áo phông / đầu Đào tạo b ’\ x80 \ x02cnumpy.core.multiarray \ n_reconstruct… b ’\ x89PNG \ r \ n \ x1a \ n \ x00 \ x00 \ x00 \ rIHDR \ x00 \ x00 \…
Váy Đào tạo b ”\ x80 \ x02cnumpy.core.multiarray \ n_reconstruct… b ’\ x89PNG \ r \ n \ x1a \ n \ x00 \ x00 \ x00 \ rIHDR \ x00 \ x00 \…
áo phông / đầu Đào tạo b ’\ x80 \ x02cnumpy.core.multiarray \ n_reconstruct… b ’\ x89PNG \ r \ n \ x1a \ n \ x00 \ x00 \ x00 \ rIHDR \ x00 \ x00 \…

Sử dụng câu lệnh SQL giúp quá trình khám phá dữ liệu trở nên dễ dàng. Ví dụ:câu lệnh SQL bên dưới hiển thị phân phối hình ảnh theo nhãn hình ảnh.

sql="SELECT class_name AS 'Image Label' \
     , COUNT(CASE WHEN img_use = 1 THEN img_label END) AS 'Training Images'\
     , COUNT(CASE WHEN img_use = 2 THEN img_label END) AS 'Testing Images'\
     FROM tf_images INNER JOIN categories ON class_idx = img_label \
     GROUP BY class_name"
df = pd.read_sql(sql,conn)
display (df)
ax = df.plot.bar(rot=0)

Túi
Nhãn hình ảnh Hình ảnh Đào tạo Kiểm tra hình ảnh
0 Khởi động cổ chân 6000 1000
1 6000 1000
2 Áo khoác 6000 1000
3 Váy 6000 1000
4 Áo chui đầu 6000 1000
5 Sandal 6000 1000
6 Áo sơ mi 6000 1000
7 Giày thể thao 6000 1000
8 áo phông / áo trên 6000 1000
9 Quần 6000 1000

Có 6.000 hình ảnh cho mỗi nhãn trong bộ đào tạo và 1.000 hình ảnh cho mỗi nhãn trong bộ thử nghiệm. Có tổng số 60.000 hình ảnh trong bộ đào tạo và tổng số 10.000 hình ảnh trong bộ thử nghiệm.

Các mặt hàng quần áo riêng lẻ được lưu trữ dưới dạng hình ảnh có độ phân giải thấp. Vì cơ sở dữ liệu có thể lưu trữ những hình ảnh đó một cách hiệu quả dưới dạng Binary Large OBjects (BLOB), nên rất dễ dàng để lấy một hình ảnh bằng SQL, như được hiển thị bên dưới:

sql="SELECT img_blob \
     FROM tf_images INNER JOIN img_use ON use_id = img_use \
     WHERE use_name = 'Testing' and img_idx = 0"

cur.execute(sql)
data = cur.fetchone()
file_like=io.BytesIO(data[0])
img = mpimg.imread(file_like)
plt.imshow(img)

above:hình ảnh từ tập dữ liệu fashion_mnist

Phần đầu tiên của loạt bài blog này đã trình bày cách sử dụng cơ sở dữ liệu quan hệ để lưu trữ và thực hiện khám phá dữ liệu hình ảnh bằng các câu lệnh SQL đơn giản. Phần 2 sẽ trình bày cách định dạng dữ liệu thành các cấu trúc dữ liệu mà TensorFlow cần, sau đó là cách huấn luyện mô hình, thực hiện các dự đoán (tức là xác định hình ảnh) và lưu trữ các dự đoán đó trở lại cơ sở dữ liệu để phân tích hoặc sử dụng thêm.

Giấy phép MIT

Tập dữ liệu Fashion MNIST (fashion_mnist) được blog này tận dụng được cấp phép theo Giấy phép MIT.

Giấy phép MIT (MIT) Bản quyền © 2017 Zalando SE, https://tech.zalando.com

Theo đây, quyền được cấp miễn phí cho bất kỳ người nào có được bản sao của phần mềm này và các tệp tài liệu liên quan (“Phần mềm”), để giao dịch trong Phần mềm mà không bị hạn chế, bao gồm nhưng không giới hạn các quyền sử dụng, sao chép, sửa đổi, hợp nhất, xuất bản, phân phối, cấp phép phụ và / hoặc bán các bản sao của Phần mềm và cho phép những người được cung cấp Phần mềm làm như vậy, tuân theo các điều kiện sau:

Thông báo bản quyền ở trên và thông báo cấp phép này sẽ được bao gồm trong tất cả các bản sao hoặc các phần quan trọng của Phần mềm.

PHẦN MỀM ĐƯỢC CUNG CẤP “NGUYÊN TRẠNG”, KHÔNG BẢO ĐẢM BẤT KỲ HÌNH THỨC NÀO, RÕ RÀNG HOẶC NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN ĐẢM BẢO VỀ KHẢ NĂNG LAO ĐỘNG, PHÙ HỢP VỚI MỤC ĐÍCH CỤ THỂ VÀ KHÔNG HỢP LỆ. TRONG MỌI TRƯỜNG HỢP SẼ KHÔNG CÓ TÁC GIẢ HOẶC CHỦ BẢN QUYỀN CHỊU TRÁCH NHIỆM VỀ BẤT KỲ KHIẾU NẠI, THIỆT HẠI HOẶC TRÁCH NHIỆM PHÁP LÝ KHÁC NÀO TRONG MỘT HÀNH VI HỢP ĐỒNG, KHAI THÁC HOẶC CÁCH KHÁC, PHÁT SINH TỪ, NGOÀI HOẶC KẾT NỐI VỚI PHẦN MỀM HOẶC VIỆC SỬ DỤNG HOẶC KINH DOANH KHÁC TRONG PHẦN MỀM.

Tài liệu tham khảo

Chuyển đổi hình ảnh của chính mình thành hình ảnh của MNIST
matplotlib:Hướng dẫn bằng hình ảnh
5 cách AI đang chuyển đổi trải nghiệm khách hàng
Số hóa đang tái tạo lại hoạt động kinh doanh
Phân loại hình ảnh là gì?
Giới thiệu về Python Thư viện học sâu TensorFlow


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 Chức năng để Nhận Giờ từ Giá trị Thời gian trong MariaDB

  2. MariaDB CURRENT_DATE () được giải thích

  3. Cách cài đặt, bảo mật và điều chỉnh hiệu suất của máy chủ cơ sở dữ liệu MariaDB

  4. Sử dụng Plugin nhật ký kiểm tra Percona để bảo mật cơ sở dữ liệu

  5. Hiểu các chỉ mục trong MySQL:Phần một