Bài viết chuyên sâu

Kỹ thuật gia công dữ liệu hình ảnh

Kỹ thuật gia công dữ liệu hình ảnh

by Admin Dathoc -
Number of replies: 0

Đặt vấn đề

Dữ liệu hình ảnh, video, và công việc qua đó nhận diện xếp loại, cũng như học máy, học sâu để đầu ra nhằm tích hợp ngành nhận dạng nhận diện cá nhân, nhận diện chữ nghĩa, tích hợp kiểm soát tội phạm, thói hư tật xấu xã hội, tích hợp chấm công, tích hợp quản lý giao thông qua hình ảnh, biển số phương tiện giao thông, tích hợp cảnh báo khí tượng khí hậu..là những đầu ra của các bài toán làm về dữ liệu loại này.


Bài viết này mô tả các kiến thức cơ bản khi bạn mong muốn xử lý dữ liệu hình ảnh, video, cần qua những bước cơ bản nào. Bạn cần sử dụng kỹ thuật gì. Các vai trò nào trong toàn bộ quy trình cần lưu tâm.

Quy trình xử lý

Preprocessing

vhGAt9A3jEWyqyTEvWkYzvD4bC4u_KiTrHoP2xFHY-w_ZW9nxnuleBjxn-lDwaQNohGnIBhpN0eq5AFxp4rY8mdqFm4qiMvaqKvlbYIkDQ2da8Riz703paZ83_kecN7ov0XfdEXQ


Qua OpenCV processing

-FmY_zqS9FHU1ig_LmadlB2Kwvl0HxkJpUy5AlTIKOtcVzhMw7s3dT6DkQlagXX7OqLRTVQCKtN9QnqWBSJ6ATfyaDm6aq1auWxhwqCX8eDciGDXjIgv3XqBVUdJ_5CQ1c1eu5pT


Như vậy các bước nổi trội cần nêu như sau:

Preprocessing: Mục tiêu là rõ hơn chủ đề của ảnh, cắt lai, bỏ nhiễu, dữu liệu thừa, phân cục miếng mảng.

https://towardsdatascience.com/image-pre-processing-c1aec0b…


1. Tốt nhất là training trên cái ảnh ở hiện trường, không đc lấy ảnh từ nơi khác không phải hiện trường. Ví dụ bạn training ảnh biển số, cần chụp tại hiện trường nơi cái ảnh đc hình thành trong cam mà... train. Mặt người cũng vậy

2. Nếu không có từ thiết bị. Vậy bắt buộc phải lấy tập ảnh từ người khác có. Vậy thêm yếu tố cắt khung để chọn gần với đối tượng. Cái này các công ty 5 năm cứ lấy anh chị e thưc tập ra làm. Năng suất là 2k cái/ngày

3. Tới phần chỉnh kích cỡ -> dễ rồi... sau đó là tùy bài toán bạn áp dụng các bước tiếp:

4. Tăng tương phản, tăng xám

- Dùng light sensor, tăng cái này lên của chính cam, tới khi coef của các diểm chọn trước đạt ngưỡng. Có thể dùng overflow.

- Tăng xám với thuật look-up table

- Tới ngưỡng khi nào các line xuất hiện. Hoặc phải map hoặc recognize ra đường thẳng

5. Biến đổi hình học

- Đơn giản là pixel của 1 img tại 1 thời điểm map với 1 thời điểm khác

- 1 điểm không đc, cho nhiều điểm.

- Dùng bilinear hoăc affine transform

6. Phân ngưỡng

- Tìm điểm khác biệt với điểm hiện tại. Dò thôi. Lại scan toàn ảnh. Tool select của photoshop là ví dụ

- Các pixel có thể dùng SVM để classify

7. Khử nhiễu

- Đơn giản là flat cái ảnh cho không có chấm, sạn. Như vậy gần như ảnh đc vector toàn pixel. Và gần như không có pixel nữa.

8. Biến đổi âm bản

- Segment tốt khi tối ưu (6)

9. Cắt trích bit

- Segment tốt khi đó mới tách các khối đc

Xem thêm để hiểu tại sao preprocessing image quan trọng thế nào:

https://www.slideshare.net/ASHI14march/image-pre-processing?fbclid=IwAR3QlF92GMgSp-JeGk-5D9F3SdoYPIvlnMqYfdkPuZcTISaCJ0dAay5861E

Một ví dụ vừa làm qua python ở đây: https://towardsdatascience.com/image-pre-processing-c1aec0be3edf


Processing: Mục tiêu là qua mạng CNN, RNN để tìm ra mẫu chung, model, sau đó từ những mẫu mới mà xác định chúng có cùng phân lớp hay không.

Xem series clip triển khai kèm mã nguồn:

Các công nghệ nổi trội hiện tại giải quyết vấn đề

OpenCV kèm thư viện

Xem các hàm xử lý ảnh: https://www.analyticsvidhya.com/blog/2019/03/opencv-functions-computer-vision-python/


Python kèm thư viện

Xem công cụ từ python: https://opensource.com/article/19/3/python-image-manipulation-tools


Hiện nay các hệ trên đã được gói qua JS, tham khảo: 

OpenCV JS:

https://docs.opencv.org/3.4/d5/d10/tutorial_js_root.html


Caman JS:

http://camanjs.com/



Học sâu - Deep Learning

MLP - Mạng đa lớp

MLP phù hợp cho các vấn đề dự đoán phân loại trong đó các đầu vào được gán một lớp hoặc nhãn.


Chúng cũng thích hợp cho các vấn đề dự đoán hồi quy trong đó một đại lượng có giá trị thực được dự đoán với một bộ đầu vào. Dữ liệu thường được cung cấp ở định dạng bảng, như CSV hoặc bảng tính.



CNN - Mạng chuyển đổi

Theo truyền thống, đầu vào CNN là hai chiều, một trường hoặc ma trận, nhưng cũng có thể được thay đổi thành một chiều, cho phép nó phát triển một biểu diễn bên trong của chuỗi một chiều. Điều này cho phép CNN được sử dụng chung hơn trên các loại dữ liệu khác có mối quan hệ không gian. Ví dụ, có một mối quan hệ trật tự giữa các từ trong một tài liệu văn bản. Có một mối quan hệ được sắp xếp theo các bước thời gian của một chuỗi thời gian.


Mặc dù không được phát triển cụ thể cho dữ liệu phi hình ảnh, CNN đạt được kết quả tiên tiến về các vấn đề như phân loại tài liệu được sử dụng trong phân tích màu sắc của từ ngữ (sentiment) và các vấn đề liên quan.

CNN tốt cho:

  • Dữ liệu hình ảnh

  • Vấn đề dự đoán phân loại

  • Vấn đề dự đoán hồi quy


Ví dụ CNN so sánh với RNN

https://www.analyticsvidhya.com/blog/2018/04/solving-an-image-captioning-task-using-deep-learning/


RNN - Mạng tái phát

Các vấn đề dự đoán trình tự có nhiều dạng và được mô tả tốt nhất bằng các loại đầu vào và đầu ra được hỗ trợ.


Một-nhiều: Một quan sát khi đầu vào được ánh xạ tới một chuỗi với nhiều bước làm đầu ra.

Nhiều-một: Một chuỗi gồm nhiều bước khi đầu vào được ánh xạ tới dự đoán số lượng hoặc lớp.

Nhiều-nhiều: Một chuỗi gồm nhiều bước khi đầu vào được ánh xạ thành một chuỗi với nhiều bước là đầu ra. Vấn đề Nhiều-Nhiều thường được gọi là chuỗi liên tục hoặc viết tắt là seq2seq.


Bộ nhớ ngắn hạn dài hạn, hay LSTM, có lẽ là mạng RNN thành công nhất vì nó khắc phục được các vấn đề về đào tạo mạng lặp lại và lần lượt đã được sử dụng trên một loạt các ứng dụng. Các RNN nói chung và các LSTM nói riêng đã nhận được nhiều thành công nhất khi làm việc với các chuỗi từ và đoạn văn, thường được gọi là xử lý ngôn ngữ tự nhiên.


Điều này bao gồm cả chuỗi văn bản và chuỗi ngôn ngữ nói được trình bày dưới dạng chuỗi thời gian. Chúng cũng được sử dụng như các mô hình thế hệ yêu cầu đầu ra chuỗi, không chỉ với văn bản, mà trên các ứng dụng như tạo chữ viết tay.


RNN tốt cho:

  • Dữ liệu văn bản

  • Dữ liệu lời nói

  • Vấn đề dự đoán phân loại

  • Vấn đề dự đoán hồi quy


Bài viết rất chi tiết và quan tâm về RNN và LSTM:

https://dominhhai.github.io/vi/2017/10/what-is-lstm/

Quan trọng áp dụng và xử lý với Pytorch:

https://www.deeplearningwizard.com/deep_learning/practical_pytorch/pytorch_lstm_neuralnetwork/


LSTM - Xử lý ngắn dài hạn

Đọc hiểu: https://colah.github.io/posts/2015-08-Understanding-LSTMs/

Các LSTM được thiết kế rõ ràng để tránh vấn đề phụ thuộc dài hạn. Ghi nhớ thông tin trong thời gian dài thực tế là hành vi mặc định của họ, không phải cứ cố để học như RNN.


 LSTM cũng có cấu trúc giống như RNN này, nhưng mô đun lặp lại có cấu trúc khác. Thay vì có một lớp mạng thần kinh duy nhất, có bốn lớp, tương tác theo một cách rất đặc biệt.


zZ8Y_mOaISN0V-Ta9kByP-vLp0-j1uZrhhVH3rmoaMM-49b7BdXGCKZRl3GAS4i6Ed1472C0G8AoXzhM4E9RZJsRd6ouBhXgeZ0BbRj71cqu_nZ9qHR8mYnx6--XTl53ABwMue7g


Trong sơ đồ trên, mỗi dòng mang toàn bộ một vectơ, từ đầu ra của một nút đến đầu vào của các nút khác. Các vòng tròn màu hồng đại diện cho các hoạt động theo chiều, như phép cộng vector, trong khi các hộp màu vàng được học các lớp RNN. Các dòng hợp nhất biểu thị sự ghép nối, trong khi một dòng biểu thị nội dung của nó được sao chép và các bản sao đi đến các vị trí khác nhau.


Chìa khóa của LSTM là trạng thái ô, đường ngang chạy qua đỉnh sơ đồ.


Trạng thái node giống như một băng chuyền. Nó chạy thẳng xuống toàn bộ chuỗi, chỉ với một số tương tác tuyến tính nhỏ. Nó rất dễ dàng cho thông tin chỉ chảy dọc theo nó. LSTM có khả năng loại bỏ hoặc thêm thông tin vào trạng thái node, được điều chỉnh cẩn thận bởi các cấu trúc gọi là Gate. Gates là một cách để tùy ý cho phép thông tin thông qua. Chúng được cấu tạo từ một lớp lưới thần kinh sigmoid và một phép toán nhân theo điểm.


Lớp sigmoid xuất ra các số từ 0 đến 1, mô tả mức độ của mỗi thành phần sẽ được cho qua. Giá trị bằng 0 có nghĩa là không để bất cứ thứ gì qua, trong khi giá trị của một nghĩa là có thể cho phép mọi thứ thông qua!


Một LSTM có ba trong số các cổng này, để bảo vệ và kiểm soát trạng thái node.

Các trở ngại khó khăn

Các công ty startup AI về ảnh

  • Rất ít kinh nghiệm bán các sản phẩm AI về ảnh. Hoặc là phải là sân sau của Nhà nước hoặc các tập đoàn lớn

  • Thuật toán chưa tối ưu. Công ty VP9, nghiên cứu sản phẩm nhận diện chấm công mặt người cho 60 con người, nhưng cũng chỉ đc 98%. Tức là nếu 2% có kẻ gian đột nhập công ty, hoặc là công ty chấm công nhầm hoặc quên ngày công sẽ gây thiệt hại nhiều cho tổ chức khách hàng mua sản phẩm. Nên việc đảm bảo thuật toán phải đúng cho tổ chức 5 người, 50 người, 500 người hoặc 5000 người hoặc nhiều hơn.

  • Một số công ty tổ chức, nhóm nhanh nhảu cho ra nhận diện 3D, xong nếu là 1 ảnh, của cá nhân cá thể thì nhận diện tối ưu. Xong khi lượng lớn nhân viên 50-100-500 người tổ chức bài toán trở thành quá tải cho lưu trữ vector 3D và xử lý 3D.

Người mới làm: thực tập sinh

  • Rất sợ khi bị cho đi cắt ảnh, vì công việc hết sức nhàm chán

  • Thường bị đưa cho máy chậm, máy rởm. Vậy nên thuê máy mạnh AI

  • Chi phí cao khi thuê server training

Người làm kinh nghiệm: 1-2 năm

  • Không tự tạo cho mình những thư viện riêng chau chuốt hơn

  • Không thay đổi thái độ làm việc là cầu tiến. Hay ỷ lại những gì thành tựu mình đã làm. Thực chất những thành tựu đó đang sử dụng những công nghệ chưa tối ưu

Ngành nghề cần kỹ sư, chuyên gia tại Việt Nam và Thế Giới

Nghề cắt ảnh cho thực tập sinh

  • Lương có thể lên 10-13 triệu. Thường là những bạn suốt ngày cắt ảnh, phân loạt chạy CNN kèm gpu. Công việc khá nhàm nhưng cần overtime liên tục

Nghề tuning thuật toán xử lý ảnh

  • Lương có thể lên 20-25 triệu. Là các bạn có chuyên môn thuật toán. Đòi hỏi áp lực và tỉ mỉ

Nghề chuyển đổi công nghệ xử lý ảnh lên cloud

  • Lương có thể lên 20-25 triệu. Thường là kỹ sư biết sâu về IBM Power AI, hoặc AWS Rekognition

Kết luận

Xử lý ảnh và video cũng như ngành nhận dạng, cảnh báo qua dữ liệu hình ảnh luôn là nhu cầu cấp thiết cũng như đòi hỏi kỹ thuật khó của người kỹ sư. Vậy bạn cần đầu tư đúng mức, và bỏ thời gian nghiên cứu tập trung mới mong có ngày hái quả.


Chúc bạn thành công.