Rate this post

Trong thế giới hiện đại của trí tuệ nhân tạo và học máy, Convolutional Neural Networks (CNNs) đóng vai trò là một công nghệ cốt lõi, mở ra những cánh cửa mới cho việc xử lý và phân tích dữ liệu hình ảnh. Được thiết kế để mô phỏng cách thức não người nhận thức và xử lý thông tin từ thế giới tự nhiên qua thị giác, CNNs đã trở thành một công cụ quan trọng trong việc giải quyết các bài toán phức tạp liên quan đến hình ảnh, từ nhận dạng khuôn mặt đến phân tích cảm xúc và tự động lái xe. Bài viết này sẽ khám phá sâu về cấu trúc, nguyên lý hoạt động, và ứng dụng thực tế của CNNs, cung cấp cái nhìn toàn diện về cách chúng đã cách mạng hóa lĩnh vực machine learning và trí tuệ nhân tạo.

CNN (Convolutional Neural Networks) là gì?

CNN, viết tắt của Convolutional Neural Networks, là một lớp mạng nơ-ron nhân tạo chuyên biệt được thiết kế để xử lý và phân tích dữ liệu có cấu trúc lưới, chẳng hạn như hình ảnh. Mạng này bắt nguồn từ cách thức não bộ sinh vật nhìn và nhận biết thế giới xung quanh thông qua thị giác, giúp máy tính hiểu và tương tác với thế giới hình ảnh một cách hiệu quả.

Cấu trúc của CNN bao gồm nhiều lớp, trong đó lớp tích chập (convolutional layer) là trung tâm, nơi các bộ lọc (filters) được áp dụng lên dữ liệu đầu vào để trích xuất đặc trưng. Điều này giúp CNN có khả năng phát hiện các cạnh, góc cạnh, và các đặc trưng phức tạp khác trong hình ảnh. Lớp tổng hợp (pooling layer) giảm kích thước không gian của đặc trưng, giảm thiểu số lượng tham số và tính toán, giúp mô hình trở nên hiệu quả hơn. Cuối cùng, các lớp kết nối đầy đủ (fully connected layers) tổng hợp các đặc trưng đã được trích xuất để thực hiện phân loại hoặc nhận dạng.

Khả năng tự động học và trích xuất đặc trưng phức tạp từ dữ liệu hình ảnh, mà không cần sự can thiệp hoặc lập trình đặc trưng cụ thể từ phía con người, làm cho CNN trở thành công cụ vô cùng mạnh mẽ trong lĩnh vực thị giác máy tính. Từ nhận dạng khuôn mặt, phân loại ảnh, đến phát hiện vật thể và phân tích video, CNN đã mở ra một loạt các ứng dụng thực tiễn, thúc đẩy tiến bộ nhanh chóng trong cả nghiên cứu và ứng dụng thương mại của trí tuệ nhân tạo và học máy.

Cách Convolutional Neural Networks hoạt động?

Convolutional Neural Networks (CNNs) là một kiến trúc mạng nơ-ron phức tạp, được thiết kế để tự động và hiệu quả xử lý dữ liệu có cấu trúc lưới như hình ảnh. Sự hoạt động của CNN có thể được mô tả qua nhiều bước chính, từ nhận dữ liệu đầu vào, áp dụng các phép tính toán và cuối cùng đưa ra quyết định hoặc dự đoán.

Nhận Dữ Liệu Đầu Vào

CNN được thiết kế với giả định rằng đầu vào là hình ảnh, cho phép tận dụng cấu trúc 2D của hình ảnh. Điều này giúp giảm số lượng tham số cần phải học và tăng hiệu suất xử lý. Mỗi hình ảnh được biểu diễn dưới dạng ma trận 3 chiều với chiều dài, chiều rộng và chiều sâu (ví dụ: kênh màu RGB).

Tính toán tại Lớp Tích Chập (Convolution Layer)

Tại lớp này, mạng thực hiện phép tích chập giữa đầu vào và một bộ lọc (hoặc kernel) để tạo ra map đặc trưng. Quá trình này giúp trích xuất các đặc điểm quan trọng từ hình ảnh như cạnh, góc, v.v.

Áp Dụng Hàm Kích Hoạt

Sau mỗi lớp tích chập, một hàm kích hoạt như ReLU được áp dụng. Mục đích của hàm kích hoạt là giới thiệu tính phi tuyến vào mạng, giúp mạng có khả năng học được các mối quan hệ phức tạp hơn.

Lớp Pooling

Pooling (hay còn gọi là subsampling hay downsampling) giúp giảm kích thước không gian của map đặc trưng, làm giảm số lượng tham số và tính toán trong mạng, và giúp tránh overfitting. Các phương pháp pooling phổ biến bao gồm max pooling và average pooling.

Lớp Kết Nối Đầy Đủ (Fully Connected Layers)

Sau một hoặc nhiều lớp tích chập và pooling, mạng sẽ có các lớp kết nối đầy đủ, nơi tất cả neuron trong một lớp được kết nối với mọi neuron trong lớp trước đó. Đây là nơi mạng tổng hợp tất cả thông tin đã học và thực hiện phân loại hoặc dự đoán.

Hàm Mất Mát và Quá Trình Backpropagation

Cuối cùng, một hàm mất mát được tính toán để đo lường sai lệch giữa dự đoán và nhãn thực tế. CNN sử dụng quá trình backpropagation để cập nhật trọng số và giảm thiểu hàm mất mát, thông qua đó cải thiện khả năng dự đoán của mô hình.

Tóm lại, CNN hoạt động dựa trên cấu trúc phức tạp của mình, bao gồm lớp tích chập, hàm kích hoạt, pooling, và lớp kết nối đầy đủ, để tự động học các đặc trưng từ hình ảnh và thực hiện các nhiệm vụ như phân loại hình ảnh với độ chính xác.

Ví dụ cách hoạt động của CNN

Nói chung, một mạng nơ-ron hợp hiến có ba lớp. Và chúng tôi hiểu từng lớp một với sự trợ giúp của ví dụ về trình phân loại. Với nó, nó có thể phân loại một hình ảnh của một X và O. Vì vậy, với trường hợp, chúng tôi sẽ hiểu tất cả bốn lớp.

Mạng thần kinh chuyển đổi có các lớp sau:

  • Convolutional
  • ReLU Layer
  • Pooling
  • Fully Connected Layer

Có một số trường hợp phức tạp hơn khi X có thể biểu diễn ở bốn dạng này cũng như ở bên phải, vì vậy đây không là gì khác ngoài tác động của các hình ảnh bị biến dạng. Ở đây, có nhiều bản trình bày của X và O. Điều này làm cho máy tính khó nhận ra. Nhưng mục tiêu là nếu tín hiệu đầu vào trông giống như các hình ảnh trước đó mà nó đã thấy trước đây, thì tín hiệu tham chiếu “hình ảnh” sẽ được đối sánh với tín hiệu đầu vào. Tín hiệu đầu ra kết quả sau đó được chuyển sang lớp tiếp theo. Hãy xem xét sơ đồ được hiển thị bên dưới:

Máy tính hiểu một hình ảnh bằng cách sử dụng các số ở mỗi pixel.

Trong ví dụ của chúng tôi, chúng tôi đã xem xét rằng một pixel màu xanh lam sẽ có giá trị 1 và một pixel màu trắng sẽ có giá trị -1. Đây là cách chúng tôi đã triển khai để phân biệt các pixel trong phân loại nhị phân chính.

Khi chúng tôi sử dụng các kỹ thuật tiêu chuẩn để so sánh hai hình ảnh này, một là hình ảnh phù hợp của X và một hình ảnh khác là hình ảnh méo mó của X. Chúng tôi nhận thấy rằng máy tính không thể phân loại hình ảnh bị biến dạng của X. Nó đang so sánh với hình ảnh phù hợp. đại diện của X. Vì vậy, khi chúng tôi thêm các giá trị pixel của cả hai hình ảnh này, chúng tôi nhận được một cái gì đó, vì vậy máy tính không thể nhận ra đó có phải là X hay không.

Với sự trợ giúp của CNN, chúng tôi chụp các mảng nhỏ trên hình ảnh của mình, vì vậy những mảng hoặc mảng này được gọi là bộ lọc. Chúng tôi đã tìm thấy các đối tượng địa lý thô trùng khớp ở cùng một vị trí trong hai hình ảnh. CNN trở nên tốt hơn với sự tương đồng giữa toàn bộ các sơ đồ đối sánh hình ảnh. Chúng tôi có các bộ lọc này, vì vậy hãy coi bộ lọc đầu tiên này chính xác bằng với đặc điểm của một phần hình ảnh trong các hình ảnh bị biến dạng cũng như đây là một hình ảnh thích hợp.

CNN so sánh từng phần của hình ảnh.

Bằng cách tìm các kết quả trùng khớp thô, ở cùng một vị trí trong hai hình ảnh, CNN có thể nhìn thấy sự giống nhau tốt hơn nhiều so với các sơ đồ đối sánh toàn bộ hình ảnh.

Chúng tôi có ba tính năng hoặc bộ lọc, như được hiển thị bên dưới.

Nhân các giá trị pixel tương ứng

Hoạt động của mạng nơ-ron hợp hiến Hoạt động của mạng nơ-ron hợp pháp

Thêm và chia theo tổng số pixel

Tạo Bản đồ để đưa giá trị của bộ lọc vào vị trí

Để theo dõi đối tượng địa lý nơi chúng tôi tạo bản đồ và đặt một lượng bộ lọc tại vị trí đó.

Trượt Bộ lọc trong suốt Hình ảnh

Bây giờ, sử dụng chức năng tương tự và di chuyển nó đến một vị trí khác và thực hiện lại việc lọc.

Convolution Layer Output

Chúng tôi sẽ chuyển các đối tượng địa lý đến mọi vị trí khác của hình ảnh và sẽ xem các đối tượng địa lý khớp với khu vực đó như thế nào. Cuối cùng, chúng ta sẽ nhận được đầu ra là;

Tương tự, chúng tôi thực hiện cùng một phép chập với mọi bộ lọc khác.

ReLU Layer

Trong lớp này, chúng tôi loại bỏ mọi giá trị âm khỏi các hình ảnh được lọc và thay thế chúng bằng các số không.

Nó đang xảy ra để tránh các giá trị cộng lại với số không.

Rectified Linear unit(ReLU) chỉ kích hoạt một nút nếu đầu vào cao hơn một số lượng nhất định. Trong khi dữ liệu dưới 0, đầu ra bằng 0, nhưng khi thông tin tăng lên trên một ngưỡng. Nó có mối quan hệ tuyến tính với biến phụ thuộc.

Chúng tôi đã xem xét bất kỳ chức năng đơn giản nào với giá trị như đã đề cập ở trên. Vì vậy, hàm chỉ hoạt động nếu biến phụ thuộc nhận được giá trị đó. Ví dụ

, các giá trị sau nhận được.

Loại bỏ các giá trị phủ định

Đầu ra cho một tính năng

Đầu ra cho tất cả các tính năng

Pooling Layer

Trong lớp, chúng tôi thu nhỏ ngăn xếp hình ảnh thành một kích thước nhỏ hơn. Việc gộp chung được thực hiện sau khi đi qua lớp kích hoạt. Chúng tôi thực hiện bằng cách thực hiện 4 bước sau:

  • Chọn một kích thước cửa sổ (thường là 2 hoặc 3)
  • Chọn một sải chân (thường là 2)
  • Đi ngang qua Cửa sổ của bạn trên các hình ảnh đã lọc của bạn
  • Từ mỗi Cửa sổ, lấy giá trị lớn nhất

Hãy để chúng tôi hiểu điều này với một ví dụ. Xem xét thực hiện gộp với kích thước cửa sổ là 2 và sải chân cũng là 2.

Tính giá trị lớn nhất trong mỗi Cửa sổ

Hãy bắt đầu hình ảnh được lọc đầu tiên của chúng tôi. Trong Cửa sổ đầu tiên của chúng tôi, giá trị lớn nhất hoặc cao nhất là 1, vì vậy chúng tôi theo dõi điều đó và di chuyển Cửa sổ hai bước.

Di chuyển cửa sổ trên toàn bộ hình ảnh

Đầu ra sau khi đi qua lớp gộp

Stacking up the layers

Để có được khung thời gian trong một hình ảnh, chúng ta đang ở đây với ma trận 4 × 4 từ ma trận 7 × 7 sau khi chuyển đầu vào qua 3 lớp – Convolution, ReLU và Pooling như hình dưới đây:

chúng tôi giảm hình ảnh từ 4 × 4 thành một cái gì đó nhỏ hơn? Chúng tôi cần thực hiện 3 hoạt động trong lần lặp sau lần chuyển đầu tiên. Vì vậy, sau lần vượt qua thứ hai, chúng tôi đã đến ma trận 2 × 2, như hình dưới đây:

Lớp cuối cùng trong mạng được kết nối đầy đủ, có nghĩa là các nơ-ron của các lớp trước được kết nối với mọi nơ-ron trong các lớp tiếp theo.

Điều này bắt chước lý luận cấp cao, nơi tất cả các con đường có thể có từ đầu vào đến đầu ra đều được xem xét.

Sau đó, lấy hình ảnh đã thu nhỏ và đưa vào danh sách duy nhất, vì vậy chúng ta có sau khi chuyển qua hai lớp chập và gộp và sau đó chuyển đổi nó thành một tệp duy nhất hoặc một vectơ.

Chúng tôi lấy Giá trị 1 đầu tiên, sau đó chúng tôi lấy lại 0,55, chúng tôi lấy 0,55 sau đó chúng tôi thi lại 1. Sau đó chúng tôi lấy 1 rồi lấy 0,55, sau đó chúng tôi lấy 1 rồi 0,55 và 0,55 rồi lại lấy lại 0,55 lấy 0,55, 1, 1, và 0,55. Vì vậy, đây không là gì ngoài một vectơ. Lớp được kết nối đầy đủ là lớp cuối cùng, nơi diễn ra sự phân loại. Ở đây, chúng tôi lấy các hình ảnh đã lọc và thu nhỏ của chúng tôi và đưa chúng vào một danh sách duy nhất như được hiển thị bên dưới.

Output

Khi chúng tôi đưa vào, ‘X’ và ‘0’. Sau đó, sẽ có một số phần tử trong vector sẽ cao. Hãy xem xét hình ảnh bên dưới, như chúng ta có thể thấy đối với ‘X’ có các phần tử hàng đầu khác nhau, và tương tự, đối với “O”, chúng tôi có các phần tử cao khác nhau.

Có những giá trị cụ thể trong danh sách của tôi, cao và nếu chúng tôi lặp lại toàn bộ quy trình mà chúng tôi đã thảo luận cho các chi phí riêng lẻ khác nhau. Cái nào sẽ cao hơn, vì vậy với một X chúng ta có giá trị vectơ thứ 1, 4, 5, 10 và phần tử thứ 11 là cao hơn. Và đối với O, chúng ta có vectơ phần tử thứ 2, 3, 9 và 12 cao hơn. Bây giờ chúng ta biết liệu chúng ta có một hình ảnh đầu vào có giá trị vectơ phần tử thứ 1, 4, 5, 10 và 11 cao hay không. Tương tự, chúng ta có thể phân loại nó thành X nếu hình ảnh đầu vào của chúng ta có một danh sách có giá trị vectơ phần tử thứ 2 thứ 3 thứ 9 và thứ 12 cao để chúng ta có thể sắp xếp nó

Sau đó, các giá trị thứ nhất, thứ 4, thứ 5, thứ 10 và thứ 11 là cao và chúng ta có thể phân loại hình ảnh thành ‘x.’ Khái niệm này cũng tương tự đối với các bảng chữ cái khác – khi các giá trị nhất định được sắp xếp theo cách của chúng, chúng có thể được ánh xạ thành một chữ cái thực tế hoặc một số mà chúng tôi yêu cầu

So sánh Vectơ đầu vào với X

Sau khi quá trình đào tạo được thực hiện xong, toàn bộ quá trình cho cả ‘X’ và ‘O.’ Sau đó, chúng tôi nhận được véc tơ 12 phần tử này, nó có 0,9, 0,65 tất cả các giá trị này, bây giờ làm thế nào để chúng tôi phân loại nó cho dù đó là X hay O. Chúng tôi sẽ so sánh nó với danh sách X và O để chúng tôi có tệp ở phần trước trượt nếu chúng tôi nhận thấy rằng chúng tôi có hai danh sách khác nhau cho X và O. Chúng tôi đang so sánh danh sách hình ảnh đầu vào mới này mà chúng tôi đã có với X và O. Trước tiên, chúng ta hãy so sánh với X bây giờ cũng như đối với X, có một số giá trị nhất định sẽ cao hơn và không có gì khác ngoài giá trị 1, 4, 5, 10 và 11. Vì vậy, chúng ta sẽ tính tổng chúng, và chúng ta có 5 = 1+ 1+ 1+ 1 + 1 lần 1, chúng ta có 5, và chúng ta sẽ tính tổng các giá trị tương ứng của vector hình ảnh của chúng ta. Vì vậy, giá trị đầu tiên là 0,9, sau đó giá trị thứ 4 là 0,87 Giá trị thứ 5 là 0,96 và giá trị thứ 10 là 0,89 và giá trị thứ 11 là 0,94 vì vậy sau khi thực hiện tổng các giá trị này có 4,56 và chia nó cho 5 chúng ta có 0,9.

Chúng tôi đang so sánh vectơ đầu vào với 0.

Và đối với X thì chúng ta cũng thực hiện quá trình tương tự đối với O, chúng ta nhận thấy rằng các giá trị vectơ phần tử thứ 2, thứ 3, thứ 9 và thứ 12 là cao. Vì vậy, khi chúng tôi tính tổng các giá trị này, chúng tôi nhận được 4 và khi chúng tôi thực hiện tổng các giá trị tương ứng của hình ảnh đầu vào của chúng tôi. Chúng tôi có 2,07 và khi chúng tôi chia nó cho 4, chúng tôi có 0,51.

Kết quả

Bây giờ, chúng tôi nhận thấy rằng 0,91 là giá trị cao hơn so với 0,5 vì vậy chúng tôi đã so sánh hình ảnh đầu vào của chúng tôi với các giá trị của X, chúng tôi nhận được giá trị cao hơn rồi đến giá trị mà chúng tôi nhận được sau khi so sánh hình ảnh đầu vào với các giá trị của 4. Vì vậy, hình ảnh đầu vào được phân loại là X.

Các bước:

Ở đây, chúng tôi sẽ huấn luyện mô hình của mình về các loại hình ảnh chó và mèo khác nhau và sau khi huấn luyện xong. Chúng tôi sẽ cung cấp nó sẽ phân loại xem đầu vào là chó hay mèo.

Các ứng dụng của Convolutional Neural Networks

Convolutional Neural Networks hoặc CNN được phát triển để nhận dạng hình ảnh và do đó, hầu hết là trong lĩnh vực thị giác máy tính, nơi chúng được sử dụng để phân loại hình ảnh, phân đoạn chúng và cũng thực hiện bản địa hóa trên hình ảnh.

Convolutional Neural Networks (CNNs) đã tạo ra một cuộc cách mạng trong nhiều lĩnh vực của machine learning và trí tuệ nhân tạo, đặc biệt là trong xử lý và phân tích hình ảnh. Khả năng trích xuất đặc trưng và tự động học từ dữ liệu đã mở ra một loạt các ứng dụng thực tế ấn tượng. Dưới đây là một số ứng dụng nổi bật của CNNs:

Nhận Dạng Hình Ảnh

CNNs là công cụ hàng đầu trong việc phân loại hình ảnh và nhận dạng đối tượng. Chúng được sử dụng rộng rãi trong các ứng dụng từ nhận dạng khuôn mặt cho đến phân loại sản phẩm trong thương mại điện tử.

Phân Tích Cảm Xúc từ Biểu Cảm Khuôn Mặt

CNNs có khả năng phân tích biểu cảm khuôn mặt để xác định cảm xúc, hỗ trợ trong lĩnh vực tương tác máy người và cải thiện trải nghiệm người dùng.

Phát Hiện và Phân Loại Vật Thể

Trong an ninh và giám sát, CNNs được sử dụng để phát hiện và phân loại vật thể trong video hay hình ảnh, từ việc nhận diện phương tiện giao thông đến phát hiện hành vi bất thường.

Phân Tích Y Học

CNNs đóng một vai trò quan trọng trong việc phân tích hình ảnh y tế, giúp chẩn đoán bệnh qua hình ảnh X-quang, MRI, và các loại hình ảnh chẩn đoán khác, cải thiện độ chính xác và giảm thời gian chẩn đoán.

Hệ Thống Tự Động Lái

CNNs là trái tim của hệ thống tự động lái xe, nơi chúng phân tích dữ liệu từ camera và cảm biến để nhận diện đường đi, vật cản và chỉ dẫn giao thông, đảm bảo an toàn cho hệ thống lái tự động.

Dịch Máy và Xử Lý Ngôn Ngữ Tự Nhiên

Mặc dù không phải là ứng dụng trực tiếp, nhưng CNNs cũng đã được áp dụng trong xử lý ngôn ngữ tự nhiên và dịch máy, nơi chúng giúp cải thiện khả năng hiểu và dịch văn bản.

Phát Hiện Gian Lận

Trong ngành tài chính và thương mại điện tử, CNNs được sử dụng để phát hiện gian lận bằng cách phân tích hành vi giao dịch và so sánh chữ ký, giúp giảm thiểu rủi ro tài chính.

Giáo Dục và Nghiên Cứu

CNNs còn được sử dụng trong giáo dục để phát triển công cụ hỗ trợ học tập tương tác, và trong nghiên cứu để phân tích và xử lý dữ liệu phức tạp.

Khả năng tự học và trích xuất đặc trưng mạnh mẽ của CNNs đã giúp chúng trở thành công cụ không thể thiếu trong cuộc cách mạng AI hiện đại, mở ra nhiều khả năng mới và giải quyết nhiều thách thức từ trước đến nay

Xem thêm 11 phần mềm machine learning hàng đầu

Ưu và nhược điểm của CNN

Mạng nơ-ron tích chập (Convolutional Neural Network – CNN) là một trong những loại mạng nơ-ron sâu được sử dụng rộng rãi trong thị giác máy tính và xử lý ảnh. Dưới đây là một số ưu và nhược điểm của CNN:

Ưu điểm của CNN:

  1. Hiệu suất cao: CNN cho phép xử lý ảnh với độ phân giải cao và độ phức tạp cao với độ chính xác cao hơn so với các phương pháp truyền thống.
  2. Tự động học các đặc trưng: CNN có khả năng tự động học các đặc trưng của ảnh một cách tự nhiên thông qua việc lặp lại các lớp tích chập, giúp cho mô hình có khả năng phân loại và nhận diện đối tượng tốt hơn.
  3. Tính đa dụng: CNN có thể được áp dụng cho nhiều bài toán trong lĩnh vực thị giác máy tính, chẳng hạn như phân loại ảnh, nhận diện đối tượng, nhận dạng chữ viết tay, nhận diện khuôn mặt và dấu vân tay, v.v.
  4. Thích ứng với các bài toán mới: CNN có khả năng học và thích ứng với các bài toán mới bằng cách sử dụng các trọng số của mạng đã được huấn luyện trước đó.

Nhược điểm của CNN:

  1. Đòi hỏi nhiều dữ liệu huấn luyện: Để đạt được hiệu suất tốt, CNN đòi hỏi một lượng lớn dữ liệu huấn luyện để có thể học các đặc trưng của ảnh một cách tự nhiên.
  2. Chi phí tính toán cao: CNN có nhiều lớp tích chập và lớp kết nối đầy đủ, do đó đòi hỏi nhiều tài nguyên tính toán và thời gian để huấn luyện.
  3. Không hiệu quả đối với các bài toán đơn giản: Khi sử dụng CNN cho các bài toán đơn giản, nó có thể dẫn đến sự quá khớp dữ liệu, khiến cho hiệu suất của mô hình không được tốt.
  4. Khó hiểu: Do CNN có nhiều lớp và nhiều tham số, nên việc hiểu và giải thích hoạt động của nó là khá khó.

Kết luận

Như vậy là tổng hợp bài viết mạng nơron. Đây là thuật toán phổ biến và quan trọng nhất để làm việc với dữ liệu hình ảnh. chúng ta đã tìm hiểu cách CNN sử dụng cho một số khu vực khác ngoài dữ liệu hình ảnh để tăng phạm vi ứng dụng của nó. chúng ta cũng đã tìm hiểu cách thức hoạt động của CNN và cách chúng có thể thực hiện nhiều hoạt động khác nhau. Hy vọng bạn thích đọc này. Nếu có bất cứ điều gì bạn muốn hỏi hoặc chia sẻ về Mạng nơ-ron Convolutions, hãy bình luận bên dưới.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now