TensorFlow – thư viện code Deep Learning

tensorboard
tensorboard

Bài viết này không nhằm vào hướng dẫn lập trình TensorFlow. Lý do, các bạn có thể tìm thấy nhiều source code hướng dẫn khác nhau trên internet, tự cài đặt và lập trình dễ dàng. Nếu các bạn đã có kiến thức cơ bản về Neural Network thì việc nắm bắt công nghệ này cũng sẽ đơn giản hơn rất nhiều.

Thông thường, ta sẽ đi theo flow nghiên cứu sau: vào trang https://www.tensorflow.org/ để xem qua bài giới thiệu chung chung, sau đó tiến hành cài đặt, cài đặt thất bại do conflict thư viện, cài đặt thành công, đọc source code, cài đặt thuật toán từ các tutorial, hiểu sơ sơ, bắt đầu hoang mang do có quá nhiều bài viết cần đọc và cài đặt -> mất hết cảm hứng.

Do đó, mình sẽ hướng các bạn đi theo một tiếp cận khác. Đầu tiên, ta sẽ lấy cảm hứng nghiên cứu thông qua các ứng dụng ngoài thực tế, người thật việc thật của TensorFlow. Tiếp đến, ta sẽ xem mọi người đánh giá như thế nào về mã nguồn này, có đáng để ta tiếp tục nghiên cứu không. Sau cùng, ta sẽ bắt tay vào tiến hành cài đặt và ứng dụng công nghệ cùng với các tài liệu tham khảo chất lượng đã thu thập được.

TensorFlow ứng dụng vào cuộc sống

Chàng kỹ sư Makoto Koike và ứng dụng phân loại dưa leo

cucumber-farmer
How a Japanese cucumber farmer is using deep learning and TensorFlow

Giới hạn duy nhất của Machine Learning và Deep Learning là trí tưởng tượng của chúng ta.

Hằng ngày, cứ mỗi mùa thu hoạch dưa leo, ba mẹ chàng kỹ sư Makoto lại ra vườn hái những trái dưa leo và phân chi những trái dưa leo này đúng theo chín tiêu chuẩn đã đề ra dựa vào kích thước, màu sắc, độ trày xướt, hình vân, có gai hay không, … Công việc này chiếm gần như hết thời gian cả ngày làm việc. Thay vì ba mẹ anh có thể tập trung vào việc trồng trọt và cải tiến quy trình trồng trọt thì họ phải tốn nhiều thời gian vào công việc nhàm chán này. Để học được toàn bộ hệ thống phân loại này tốn vài tháng ròng và bạn không thể thuê những nông dân làm việc bán thời gian trong mùa thu hoạch này. Đây chính là động lực để Makoto thiết kế ra hệ thống phân loại dưa leo.

Với TensorFlow, bạn không cần phải có kiến thức chuyên sâu về các mô hình toán học và các thuật toán tối ưu để cài đặt được Deep Neural Networks. Bạn chỉ cần download một vài đoạn code mẫu, đọc qua một vài tutorials online là bạn có thể cài đặt hoàn tất mà không hề tốn quá nhiều thời gian.

Hệ thống sử dụng board mạch Raspberry Pi 3 để điều khiển quy trình phân loại. Anh đã dành ra ba tháng để chụp toàn bộ 7,000 bức ảnh dưa leo đã được mẹ anh phân loại. Tuy nhiên, hệ thống đã gặp phải thách thức về tập dữ liệu (overfitting: phân loại sai dưa leo không có trong tập huấn luyện) và chi phí tính toán lớn (đã scale ảnh còn 80×80 nhưng tốn hai đến ba ngày để hoàn tất quá trình huấn luyện). Giải pháp hiện tại để giảm chi phí tính toán đó là thuê server của Google Cloud Machine Learning. Anh chỉ phải trả cho những gì anh sử dụng và không cần phải đầu tư nhiều máy móc thiết bị tốn kém.

Đọc tiếp >>

Ai sử dụng những sản phẩm của tôi và họ sử dụng chúng như thế nào?

Logo Detection
Improving Brand Analytics with an Image Logo Detection

Để xác định được đâu là khách hàng tiềm năng và cách họ sử dụng sản phẩm của chúng ta như thế nào là thách thức được đặt ra đối với các doanh nghiệp hiện nay.

Thông thường, ta sẽ sử dụng surveys để lấy ý kiến khách hàng. Tuy nhiên, phương pháp này tốn nhiều thời gian và tiền bạc. Thêm vào đó, các phiếu khảo sát thường có tính chủ quan. Một cách khác đó là phân tích các bài post trên các trang mạng xã hội để xác định xem tên thương hiệu của mình được đánh giá như thế nào. Thật không may trong các trường hợp sản phẩm được post ảnh nhưng chú thích bên dưới lại không hề đề cập đến, dẫn đến nhiều thiếu sót trong việc đánh giá.

Bài viết này sử dụng code của Google Inception v3, nói về retrain model và sử dụng AWS để triển khai.

Đọc tiếp >>

har-dataset-distribution
Implementing a CNN for Human Activity Recognition in Tensorflow

Nếu bạn đã sử dụng qua các sản phẩm của Mitsfit hay App watch thì ắt hẳn bạn đã quen thuộc với hệ thống tracking cả họ. Nhiệm vụ của các hệ thống này là thu thập hoạt động của người dùng đem về tổng hợp và phân tích để đưa ra các hỗ trợ cùng với thông tin hữu ích liên quan đến sức khỏe.

Bài viết này hướng dẫn các bạn cài đặt mạng CNN cho việc nhận diện các hoạt động của con người viết tắt là HAR (Human Activity Recognition). Tập dữ liệu được thu thập từ accelerometer của smart phone và gán nhãn tương ứng với sáu hoạt động thường nhật gồm đi, đứng, ngồi, chạy, lên cầu thang, xuống cầu thang của 36 users với tỉ lệ lấy mẫu là 20Hz (20 giá trị mỗi giây).

Đọc tiếp >>.

Các ứng dụng khác

number-plate-recognition
number-plate-recognition

Number plate recognition with Tensorflow: Sử dụng sliding window, nếu có chứa biển số xe thì lưu lại vị trí, sau đó hiển thị kết quả trên ảnh (lấy intersection của các detection).

content-aware
content-aware

Image Completion with Deep Learning in TensorFlow: Ứng dụng choinpainting, phục hồi ảnh hư cũ, loại bỏ các đối tượng không liên quan trong ảnh (Content-aware fill).

Những tính năng mới cập nhật

Scikit Flow
Scikit Flow

Scikit Flow: Easy Deep Learning with TensorFlow and Scikit-learn: Dễ dàng thử nghiệm các classification khác nhau chỉ thông qua một số params.

High-level Learn Module in TensorFlow: Các thông tin của TF version mới.

The Good, Bad & Ugly of TensorFlow: Đánh giá TF.

Tài liệu học online

Awesome TensorFlow
Awesome TensorFlow

Awesome TensorFlow: đây là nguồn tài liệu tổng hợp rất hay, mình thường dùng để làm nơi tham khảo source và tài liệu.

  • Có các lớp học online bổ ích.
  • Tổng hợp các nguồn để học TF

Machine Learning Recipes with Josh Gordon: Google video training

Deep learning datasets

Lập trình cơ bản

Sau khi đã có động lực nghiên cứu thì bước cuối cùng là bắt tay vào code. Dưới đây là một số note nhỏ cho từng bài viết tham khảo.

NakedTensor: bạn có thể bắt đầu từ đoạn script nhỏ này, hoàn toàn đơn giản, ngắn gọn và dễ hiểu.

TensorFlow in a Nutshell — Part One: Basics

  • TensorFlow có thể +,-,*,/, so sánh, tạo constant, array, matrix như bên numpy.
  • n-dimensional matrix gọi là một tensor, 2-dimensional tensor tương đương với ma trận m x m.
  • Các thuật toán được đề cập ở phần sau: RNN, CNN, FNN, Linear, SVM, Random Forest, Reinforment, CRF

The Gentlest Introduction to Tensorflow – Part 1: Dự đoán giá nhà bằng TF có hình ảnh minh hoạ rõ ràng.

The Gentlest Introduction to Tensorflow – Part 2: Nói về quá trình huấn luyện diễn ra như thế nào bao gồm stocashtic, mini-batch, batch.

Hello, TensorFlow

Hiểu đầy đủ về cách sử dụng TF bên cạnh ví dụ đơn giản thường thấy ở các tutorial khác.

  • Các node của TensorFlow graph được gọi là “operations” hoặc “ops”.
  • Session mặc định sẽ chọn default graph để thực thi lệnh.
  • TensorFlow thực thi các hàm bên ngoài Python nhờ vậy có thể tăng tốc độ tính toán như lập trình song song trên CPU.
  • Để liệt kê danh sách các toán tử: for op in graph.get_operations(): print(op.name)
  • Có thể dùng TensorBoard để quan sát mô hình TF. tensorboard –logdir=log_simple_graph. localhost:6006/#graphs
tensorflow
tensorflow

An Introduction to Implementing Neural Networks using TensorFlow

  • Ứng dụng của ANN, sử dụng TensorFlow.
  • Các bước giải bài toán ANN, giới thiệu các library xử lý ảnh.
  • TensorFlow là numpy, tensors = multi-dimensional arrays.
  • Có thể build các algorithm khác: decision trees hay k-Nearest Neighbors
  • So sánh với các library khác.

Flow cơ bản

  • Build computational graph
  • Khởi tạo các variables
  • Tạo session
  • Thực thi graph bằng session
  • Đóng session

Các thuật ngữ

  • placeholder: A way to feed data into the graphs
  • feed_dict: A dictionary to pass numeric values to computational graph

Lập trình nâng cao

TensorFlow used by Nvidia
TensorFlow used by Nvidia

TensorFlow Tutorial – used by Nvidia: Sử dụng GPU để tăng tốc độ huấn luyện. Có các ví dụ cài đặt thuật toán Deep Learning. Các bài viết cần đọc về TensorFlow để cài đặt

  • Feed forward neural network (FFN) trên tập dữ liệu MNIST – TensorFlow playground, Visualizing Optimization Algos
  • Convolutional Neural Network (CNN) và Spatial Transformer trên ảnh: có visualization, học về convolution (width, height, depth) trực quan dễ hiểu, GPU hoạt động thế nào.
  • Recurrent Neural Network (RNN).
  • Hệ thống phân loại lá cây sử dụng FFN, CNN và RNN.
  • Autoencoder (AE) reconstructing the MNIST, có sách hay tự học.
Merlin photos
Merlin photos

Dive into TensorFlow with Linux: Tập trung vào GPU trên Linux, sử dụng lại code của Google

  • Thu thập dữ liệu ảnh.
  • Huấn luyện graph/model bằng TensorFlow và Inception model.
  • Viết script để phân loại ảnh mới bằng mô hình graph đã huấn luyện.
  • Testing script.

Deep Learning with Apache Spark and TensorFlow: Thử nghiệm Spark + TF.

How to Quantize Neural Networks with TensorFlow: Dùng để optimize memory space.

Kết

Dưới đây là một số chia sẻ của mình sau một thời gian tìm hiểu TensorFlow.

  • Nên cài đặt isolate bằng virtualenv hoặc docker để tránh conflict các thư viện.
  • Nên sử dụng Linux để lập trình vì có GPU để tăng tốc tính toán.
  • Cài đặt các đoạn script cơ bản trước để kiểm tra việc cài đặt đã ổn chưa. Tiếp đó, cài đặt các thuật toán thông dụng như FFN, CNN, RNN. Khi đó, ta sẽ tự tin hơn về các lý thuyết đã học.
  • Trải nghiệm các cài đặt nâng cao giúp bạn nâng cao kỹ năng Data Engineer. Nếu không có máy tính cấu hình cao thì ta có thể sử dụng các dịch vụ cloud computing của Google hoặc Amazon với giá cả phải chăng, chi phí tính được tính dựa vào những gì bạn sử dụng.
  • Khi áp dụng vào bài toán của mình, các bạn chỉ cần dựa vào các template code đã “dợt” trước đó. Cộng thêm các nguồn tài liệu hướng dẫn bổ ích mà mình đã chọn lọc bên trên chắc chắn mọi việc rồi sẽ thành công.

Hy vọng qua bài viết này, các bạn có thêm một nguồn tham khảo bổ ích về thư viện TensorFlow. Bạn nào có nguồn tài liệu hay có thể đóng góp thêm bằng cách comment bên dưới bài viết này.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s