Thế giới phát triển cùng với sự bùng nổ của công nghệ thông tin,đặc biệtcủa dữ liệu, những khái niệm AI, NLP, Machine learning , DeepLearning,..ra đời để phân tích dữ liệu, học tập nguồn tri thức trợ giúp conngười đưa ra những quyết định từ nguồn dữ liệu khổng lồ.Trong kỳ học này, chúng em được học tập và tiếp thu kiến thức để hiểuthêm về học máy. Trong đó bài toán phân loại hình ảnh đang được ứngdụng rất phổ biến như trong hệ thống xử lý ảnh lớn như Facebook,Google hay Amazon đã đưa vào sản phẩm của mình những chức năngthông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự láihay drone giao hàng tự động Bạn nào mua tài liệu email mình nếu muốn lấy source nhé
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG HỌC MÁY ĐỀ TÀI: Phân loại ảnh với Mạng Noron Tích Chập Convolutional Neural Networks(CNNs) Giáo viên hướng dẫn: TS Thân Quang Khoát Sinh viên thực hiện: Nguyễn Thị Phương Hằng Đỗ Khắc Linh Nguyễn Hoài Nam Nguyễn Anh Tuấn 20131345 20130614 20132674 20144898 Hà Nội tháng 12 năm 2017 Mục lục Lời nói đầu I Bài toán II Phương pháp sử dụng tập liệu CNNs(Convoluntional Neural Network) - Mạng nơ-ron tích chập 1.1 Mạng nơ-ron thông thường 1.2 Convolutional Neural Network (CNNs/ ConvNet – Mạng nơ-ron tích chập) Tập liệu CIFAR 10 III Chức hệ thống 10 IV Thử nghiệm 10 V Vấn đề gặp phải hướng mở rộng 14 VI Danh sách tài liệu tham khảo 15 VII Hướng dẫn cài đặt 15 Kết luận 16 Lời nói đầu Thế giới phát triển với bùng nổ công nghệ thông tin,đặc biệt liệu, khái niệm AI, NLP, Machine learning , Deep Learning, đời để phân tích liệu, học tập nguồn tri thức trợ giúp người đưa định từ nguồn liệu khổng lồ Trong kỳ học này, chúng em học tập tiếp thu kiến thức để hiểu thêm học máy Trong tốn phân loại hình ảnh ứng dụng phổ biến hệ thống xử lý ảnh lớn Facebook, Google hay Amazon đưa vào sản phẩm chức thông minh nhận diện khuôn mặt người dùng, phát triển xe tự lái hay drone giao hàng tự động Chúng em lựa chọn đề tài nhằm nghiên cứu hiểu thêm mơ hình CNN, hệ thống xử lý ảnh nay.Hệ thống chúng em hy vọng nhận diện hình ảnh từ nguồn đưa vào Do kiến thức hạn chế, kinh nghiệm khơng nhiều nên cịn nhiều sai sót mong nhận góp ý từ thầy! Chúng em chân thành cảm ơn! I Bài toán - Phân loại ảnh toán tảng thị giác máy tính, muốn có ứng dụng thị giác máy tính thông minh hữu dụng > cần phải phân loại ảnh - Có nhiều ứng dụng thực tế: - Phân loại ảnh y tế, hàng không… - Nhận diện cử chỉ, cảm xúc… - Thiết lập thị giác cho robot - Đặc điểm: Trích rút đặc trưng từ ảnh tương đối khó Nếu dùng ảnh thơ kết tồi → Mạng Convolutional Neural Network Input: Hình ảnh đưa vào Output: Nhận diện vật ảnh II Phương pháp sử dụng tập liệu CNNs(Convoluntional Neural Network) - Mạng nơ-ron tích chập 1.1Mạng nơ-ron thông thường Neural Networks nhận đầu vào (một vector đơn), chuyển qua lớp ẩn Mỗi lớp ẩn tạo thành tập nơ-ron, nơi mà nơ-ron kết nối hoàn toàn với tất nơ-ron lớp trước, nơ-ron lớp hoạt động hoàn toàn độc lập không chia sẻ kết nối Lớp kết nối hoàn chỉnh cuối gọi "lớp out put".Đầu tín hiệu đầu nơron, với nơron có tối đa đầu 1.2Convolutional Neural Network (CNNs/ ConvNet – Mạng nơ-ron tích chập) Tích chập gì? Convolution (tích chập) Tích chập sử dụng xử lý tín hiệu số (Signal processing) Nhờ vào nguyên lý biến đổi thông tin, nhà khoa học áp dụng kĩ thuật vào xử lý ảnh video số Để dễ hình dung, ta xem tích chập cửa sổ trượt (sliding window) áp đặt lên ma trận Bạn theo dõi chế tích chập qua hình minh họa bên Mạng no-ron tích chập CNNs kỹ thuật đại (state of the art) cho tốn phân loại ảnh nói riêng lĩnh vực thị giác máy tính nói chung CNNs đầu vào bao gồm hình Đặc biệt,khác với mạng nơ-ron thơng thường , lớp ConvNet có no-rons xếp theo chiều: chiều rộng, chiều cao, chiều sâu (Lưu ý chiều sâu đề cập đến kích thước thứ ba khối lượng kích hoạt) Ví dụ, hình ảnh đầu vào CIFAR- 10 khối lượng đầu vào kích hoạt, khối lượng có kích thước 32x32x3 (chiều rộng, chiều cao, chiều sâu tương ứng) Như thấy, nơ-ron lớp kết nối với vùng nhỏ lớp trước nó, thay tất nơ-ron theo cách kết nối hoàn toàn Hơn nữa, lớp đầu cuối cho CIFAR-10 có kích thước 1x1x10, cuối kiến trúc ConvNet, làm giảm tồn hình ảnh thành vector nhất, xếp theo chiều sâu Đây hình ảnh: Như mô tả trên, ConvNet đơn giản dãy lớp chuyển đổi thơng qua hàm kích hoạt phi tuyến Ta sử dụng ba loại lớp để xây dựng kiến trúc ConvNet: Lớp cộng hưởng(Convolutional Layer), lớp tổng hợp(Pooling Layer), lớp kết nối hồn tồn (Fully-Connected Layer )(chính xác mạng nơ-ron thường) Xếp chồng lớp tạo thành kiến trúc đầy đủ 1.2.1 Convolutional Layer Lớp nơi thể tư tưởng ban đầu mạng nơ-ron tích chập Thay kết nối tồn điểm ảnh, lớp sử dụng lọc (filters) có kích thước nhỏ so với ảnh (thường 3×3 5×5) áp vào vùng ảnh tiến hành tính tích chập filter giá trị điểm ảnh vùng cục - Dùng filter đặt dọc theo chiều sâu nhìn tầng phía trước, tầng sử dụng trọng số riêng → Thấy đặc trưng riêng tầng phía trước - Dùng receptive field trượt bề mặt tầng trước, nhìn thấu hết dọc theo chiều sâu tầng trước - Chia sẻ tham số với neural filter Như với ảnh 32×32 filter 3×3, ta có kết ảnh có kích thước 32×32 (với điều kiện thêm padding vào ảnh gốc để tính tích chập cho trường hợp filter quét biên cạnh) kết tích chập filter ảnh Với filter lớp ta có nhiêu ảnh tương ứng mà lớp trả truyền vào lớp Các trọng số filter ban đầu khởi tạo ngẫu nhiên học dần q trình huấn luyện mơ hình 1.2.2 Lớp RELU – rectified linear unit Lớp thường cài đặt sau lớp Convolutional Lớp sử dụng hàm kích hoạt f(x) = max(0,x)f(x)=max(0,x) Nói cách đơn giản, lớp có nhiệm vụ chuyển tồn giá trị âm kết lấy từ lớp Convolutional thành giá trị Ý nghĩa cách cài đặt tạo nên tính phi tuyến cho mơ hình Tương tự mạng truyền thẳng, việc xây dựng dựa phép biến đổi tuyến tính khiến việc xây dựng đa tầng đa lớp trở nên vơ nghĩa Có nhiều cách để khiến mơ hình trở nên phi tuyến sử dụng hàm kích hoạt sigmoid, tanh, … hàm f(x) = max(0,x)f(x)=max(0,x) dễ cài đặt, tính tốn nhanh mà hiệu 1.2.3 Pooling Layer Lớp sử dụng cửa sổ trượt quét qua toàn ảnh liệu, lần trượt theo bước trượt (stride) cho trước Khác với lớp Convolutional, lớp Pooling khơng tính tích chập mà tiến hành lấy mẫu (subsampling) Khi cửa sổ trượt ảnh, có giá trị xem giá trị đại diện cho thơng tin ảnh vùng (giá trị mẫu) giữ lại Các phương thức lấy phổ biến lớp Pooling MaxPooling ( lấy giá trị lớn nhất), MinPooling (lấy giá trị nhỏ nhất) AveragePooling (lấy giá trị trung bình) Xét ảnh có kích thước 32×32 lớp Pooling sử dụng filter có kích thước 2×2 với bước trượt stride = 2, phương pháp sử dụng MaxPooling Filter duyệt qua ảnh, với lần duyệt có giá trị lớn giá trị nằm vùng cửa sổ 2×2 filter giữ lại đưa đầu Như sau qua lớp Pooling, ảnh giảm kích thước xuống cịn 16×16 (kích thước chiều giảm lần) Lớp Pooling có vai trị giảm kích thước liệu Với ảnh kích thước lớn qua nhiều lớp Pooling thu nhỏ lại nhiên giữ đặc trưng cần cho việc nhận dạng (thơng qua cách lấy mẫu) Việc giảm kích thước liệu làm giảm lượng tham số, tăng hiệu tính tốn góp phần kiểm sốt tượng khớp (overfitting) 1.2.4 Fully-Connected Layer Lớp tương tự với lớp mạng nơ-ron truyền thẳng, giá trị ảnh liên kết đầy đủ vào node lớp Sau ảnh xử lý rút trích đặc trưng từ lớp trước đó, liệu ảnh khơng cịn q lớn so với mơ hình truyền thẳng nên ta sử dụng mơ hình truyền thẳng để tiến hành nhận dạng Tóm lại, lớp fully-connected đóng vai trị mơ hình phân lớp tiến hành dựa liệu xử lý lớp trước Mơ hình hoạt động Một mạng nơ-ron tích chập hình thành cách ghép lớp nêu lại với Mơ hình bắt đầu với lớp Convolutional Lớp RELU thường cài đặt sau lớp Convolutional chí kết hợp hai lớp thành lớp Các lớp Convolutional hay Pooling tùy theo kiến trúc mà ta muốn xây dựng Cuối lớp fully-connected để tiến hành phân lớp Để xem mơ hình hoạt động ta xét kiến trúc sau đây: Conv1 (with RELU) – Pooling – Conv2 (with RELU) – Pooling – FC – FC Ví dụ: Một ConvNet đơn giản để phân loại tập liệu CIFAR-10 có kiến trúc [INPUT - CONV - RELU - POOL - FC] Chi tiết hơn: INPUT [32x32x3] giữ giá trị pixel thơ hình ảnh, trường hợp hình ảnh có chiều rộng 32, chiều cao 32 với ba kênh màu R, G, B CONV lớp tính tốn đầu nơ-ron kết nối với vùng địa phương đầu vào, sản phẩm tính tốn trọng số chúng khu vực nhỏ mà kết nối vào trọng lượng đầu vào Điều dẫn đến kết [32x32x12] ta định sử dụng 12 lọc RELU áp dụng hàm kích hoạt yếu tố, chẳng hạn ngưỡng tối đa (0, x) max (0, x) mức Điều làm cho kích thước volume không thay đổi ([32x32x12]) Lớp POOL thực hoạt động lấy mẫu dựa không gian (chiều rộng, chiều cao), kết [16x16x12] Lớp FC (tức kết nối hồn chỉnh) tính điểm lớp, kết khối lượng kích thước [1x1x10], số số 10 tương ứng với điểm số lớp, chẳng hạn số 10 loại CIFAR-10 Giống mạng nơ-ron thường ,mỗi nơ-ron lớp kết nối với tất số volume trước Tập liệu CIFAR 10 Bộ liệu CIFAR-10 bao gồm 60000 hình ảnh màu 32x32 10 lớp, với 6000 hình ảnh cho lớp Training Data: Gồm 50000 ảnh kích thước 32*32*3 cho dạng ma trận 50000 x 3072, tương ứng với 10 lớp ( 5000 ảnh cho lớp) Test Data: Gồm 10000 ảnh với số lượng ảnh lớp trước Bộ liệu chia thành năm đợt huấn luyện đợt thử nghiệm, có 10000 hình ảnh Các lơ thử nghiệm chứa xác 1000 hình ảnh lựa chọn ngẫu nhiên từ lớp Các đợt huấn luyện có chứa hình ảnh cịn lại theo thứ tự ngẫu nhiên, số đợt học chứa nhiều hình ảnh từ lớp khác Giữa chúng, đợt học chứa xác 5000 hình ảnh từ lớp Dưới lớp tập liệu, 10 hình ảnh ngẫu nhiên từ lớp : Airplane Automobile bird cat deer dog frog horse ship truck Các lớp khơng có trùng lặp, khơng chồng chéo III Chức hệ thống Chức hệ thống Nhận diện hình ảnh thông qua CNNs IV Thử nghiệm - Công nghệ sử dụng: TensorFlow Framework, Keras (với Backend TensorFlow) - Tính tốn CPU - Loss Function: Dùng hàm Cross Entropy 10 - Tiến xử lý: Quy chuẩn pixel khoảng [0,1] Mean Zero pixel để có trung bình pixel vị trí ảnh 0, giúp q trình tối ưu theo graident decent hoạt động tốt Thử nghiệm với mạng Neural Networks thông thường: Tập train chia thành 45000 ảnh cho training 5000 ảnh cho validate (500 ảnh lấy từ lớp) Sử dụng mạng neural tầng ẩn với số lượng node tầng ẩn 2048, sử dụng kỹ thuật MiniBatch Gradient decent với kích thước Batch 128, sau 20000 step kết chạy sau: Nhận xét: Kết hạn chế, mạng neural thông thường tự học đặc trưng ảnh 11 - Với mạng tầng ẩn với số lượng node tương ứng 2048 1024 kết khơng cải thiện chí cịn giảm khơng rõ lý Thử nghiệm với mạng CNN cỡ nhỏ Tương tự, tập train chia thành 45000 ảnh cho training 5000 ảnh cho validate (500 ảnh lấy từ lớp) Kiến trúc mạng: - Mạng gồm lớp convolution với stride 1, receptive field size 3*3, số lượng filter (depth) 16, xen kẽ vào lớp avarage pooling, cuối lớp fully-connected với số lượng hidden node 128 node Sử dụng tối ưu gradient decent với learning rate ban đầu 0.03 giảm theo hàm mũ sau 1000 bước với hệ số giảm 0.95 Kết thu sau: 12 Nhận xét: Độ xác tăng lên đáng kể, thời gian training không lâu so với mạng neural network thông thường, nhiên thấp 13 V Vấn đề gặp phải hướng mở rộng Khó khăn gặp phải: Thời gian để training lâu Thiếu thiết bị tốt để chạy(GPU) Khó validate hết tham số số lượng tham số lớn Chưa đủ kỹ để cài đặt mạng phức tạp Hướng mở rộng Training số lượng epochs lớn với learning thấp Fake liệu (data augmentation) với kỹ thuật lấy đối xứng gương, tịnh tiến ảnh, xoay, làm mờ, làm nhòe, Sử dụng mạng sâu hơn, với nhiều tham số ( Resnet, VGG, Inception) 14 VI Danh sách tài liệu tham khảo - http://cs231n.github.io/convolutional-networks/ - https://www.cs.toronto.edu/~kriz/cifar.html - khóa học Deep learning udacity - http://machinelearningmastery.com/object-recognition-convolutionalneural-networks-keras-deep-learning-library/ - https://github.com/Hvass-Labs/TensorFlow Tutorials/blob/master/cifar10.py Hướng dẫn cài đặt Cài đặt Python Cài đặt TensorFlow dành cho CPU window địa https://www.tensorflow.org/install/ Cài đặt Keras Pip với câu lệnh command prompt: pip install keras File cifar-10.py chứa hàm để nhập liệu cho kiểu mạng File one_hidden_layer.py two_hidden_layer.py tương ứng với mạng nn thơng thường File convolution_nn mạng convolution mà nhóm em cài đặt, thời gian training tùy thuộc vào tham số cấu hình file VII 15 Kết luận Trong khoảng thời gian học tập giảng dạy thầy Thân Quang Khốt, nhóm chúng em hồn thiện tốn phân loại ảnh với mạng no-ron tích chập (Convolution Neural Networks), kết nhóm em đạt chưa tốt,do thiếu kiến thức kinh nghiệm phân loại ảnh nên cịn nhiều thiếu sót mong nhận góp ý từ thầy bạn! Chúng em chân thành cảm ơn! 16