Tải bản đầy đủ (.pdf) (32 trang)

đồ án 1 photo transfer using gans

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (824.06 KB, 32 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH </b>

<b>TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH </b>

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN </b>

<b>KHOA CÔNG NGHỆ PHẦN MỀM </b>

<b>Trương Nguyễn Phước Trí – 21521571 Hồ Thị Thanh Thảo – 21521456 </b>

<b>ĐỒ ÁN 1 </b>

<b>Photo Transfer using GANs</b>

<b>GIẢNG VIÊN HƯỚNG DẪN </b>

<b>TS. NGUYỄN TẤN TRẦN MINH KHANG </b>

<b>TP. HỒ CHÍ MINH, 2023</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

1.4. Mục tiêu và phạm vi nghiên cứu... 6

1.5. Đóng góp của nghiên cứu ... 7

1.6. Bố cục của báo cáo ... 8

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

3.3. Hướng dẫn run code ... 26

Chương 4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ... 27

4.1. Kết luận ... 27

4.2. Hướng phát triển ... 28

<b>DANH MỤC HÌNH </b>

Hình 1-1 Đầu vào và đầu ra của bài tốn image-to-image ... 2

Hình 2-1 Kiến trúc GANs – Mạng đối nghịch tạo sinh... 5

Hình 2-2 Đơn giản hóa kiến trúc GANs – Mạng đối nghịch tạo sinh ... 6

Hình 2-3 Kết quả hình ảnh trực quan hóa ... 6

<b>DANH MỤC BẢNG </b>

Bảng 2-1 Dataset và mơ hình ...8

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>[1]. TÓM TẮT </b>

Photo Transfer là một bài tốn thuộc nhóm bài tốn image-to-image sử dụng phương pháp GANs (Mạng đối nghịch tạo sinh), cụ thể ở bài toán này là CycleGANs. Bộ dữ liệu của bài toán được xây dựng từ 4 bộ dữ liệu bao gồm: cezanne2photo, monet2photo, ukiyoe2photo, vangogh2photo với tổng số ảnh là 31,569 ảnh. Trong đó có 27,715 ảnh train và 3,854 ảnh test. Đây là một bài toán hỗ trợ cho việc tùy chỉnh ảnh chụp theo các phong cách tranh vẽ của 4 họa sĩ nổi tiếng bao gồm: Monet, Cezanne, Van Gogh, Ukiyo E, nhằm phục vụ cho các mục đích sáng tạo, cũng như nhu cầu sử dụng hình ảnh của người dùng đa lĩnh vực.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>Chương 1. MỞ ĐẦU </b>

<b>1.1. Động lực nghiên cứu </b>

Từ khi điện thoại thông minh xuất hiện, việc chụp và lưu trữ hình ảnh hàng ngày đã trở thành một phần không thể thiếu trong cuộc sống của chúng ta. Công nghệ di động ngày càng phát triển, mang đến cho chúng ta sự tiện lợi và linh hoạt khi ghi lại những khoảnh khắc đáng nhớ, từ những cảnh đẹp tự nhiên đến những khoảnh khắc giao thoa cuộc sống hàng ngày.

Tuy nhiên, không chỉ dừng lại ở việc chụp và lưu trữ, ngày nay, việc biến những bức ảnh thành những tác phẩm ấn tượng hơn thông qua việc áp dụng các bộ lọc hình ảnh mới lạ đã trở thành một trào lưu phổ biến, đặc biệt trong cộng đồng thanh niên. Việc này không chỉ giúp tạo ra những bức ảnh độc đáo mà còn là cách để thể hiện cá nhân, phong cách riêng của mỗi người thông qua việc sáng tạo và tinh tế trong việc chỉnh sửa hình ảnh.

Các bộ lọc hình ảnh mới mang lại cho người dùng sự đa dạng và phong phú trong việc biến đổi ảnh, từ việc tạo ra hiệu ứng màu sắc độc đáo, đến việc áp dụng các hiệu ứng đặc biệt tạo điểm nhấn cho bức ảnh. Nhờ vào sự sáng tạo của các nhà phát triển, người dùng có thể tận dụng và khám phá những tính năng mới này để làm cho bức ảnh của mình trở nên thú vị hơn, độc đáo hơn và phản ánh đúng ý nghĩa mà họ muốn chia sẻ.

Tuy nhiên, việc sử dụng bộ lọc cũng đòi hỏi sự khéo léo và cảm nhận để không làm mất đi chất lượng gốc của bức ảnh. Sự cân nhắc cẩn thận giữa việc tinh chỉnh và việc giữ nguyên vẹn bức ảnh gốc là điều quan trọng để không làm mất đi sự tự nhiên và ý nghĩa ban đầu của nó.

Tóm lại, việc chụp ảnh và biến chúng trở nên đặc sắc hơn thông qua việc sử dụng bộ lọc hình ảnh mới là một phần khơng thể thiếu trong cuộc sống số hiện đại. Điều này không chỉ là cách để tạo ra những bức ảnh ấn tượng mà còn là phương tiện để thể hiện sự sáng tạo và cá nhân hóa trong mỗi tác phẩm của chính mình.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>1.2. Phát biểu bài toán </b>

Đầu vào của bài toán là một bức ảnh chụp bình thường, đầu ra là một bức ảnh đã được họa theo phong cách của họa sĩ người dùng chọn.

<b>Đầu vào Đầu ra theo phong cách Van Gogh </b>

Hình 1-1 Đầu vào và đầu ra của bài toán image-to-image

- Claude Monet (1840-1926) là một trong những họa sĩ hàng đầu của trường phái Ấn tượng. Ông được biết đến với những bức tranh phong cảnh rực rỡ, phản ánh ánh sáng và chuyển động của thiên nhiên. Các tác phẩm của Monet thường được vẽ ngồi trời, và ơng thường sử dụng các nét vẽ ngắn, rời rạc để thể hiện sự thay đổi của ánh sáng và bầu khí quyển.

- Paul Cézanne (1839-1906) là một họa sĩ người Pháp, được coi là một trong những nhân vật quan trọng nhất trong lịch sử nghệ thuật. Ông là một trong những người tiên phong của trường phái Lập thể, và các tác phẩm của ông đã cách mạng hóa cách nhìn nhận về nghệ thuật.

- Vincent van Gogh (1853-1890) là một họa sĩ người Hà Lan, được coi là một trong những họa sĩ vĩ đại nhất trong lịch sử. Ông là một trong những người tiên phong của trường phái Biểu hiện, và các tác phẩm của ông thường thể hiện cảm xúc mãnh liệt và sự rung động.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

- Ukiyo-e là một phong cách nghệ thuật Nhật Bản phát triển vào thế kỷ 17. Ukiyo-e thường được sử dụng để vẽ các cảnh đời thường, phong cảnh và các nhân vật nổi tiếng. Ukiyo-e sử dụng các màu sắc tươi sáng và các nét vẽ đơn giản để tạo ra những hình ảnh sống động và hấp dẫn.

<b>1.3. Các thách thức </b>

- Bộ dữ liệu tương đối lớn.

- Ý tưởng ứng dụng khá mới nên chưa có nhiều nguồn tham khảo. - Việc kết nối dataset với ứng dụng khá khó khăn.

- Mơ hình gốc cần điều chỉnh để phù hợp với ứng dụng.

<b>1.4. Mục tiêu và phạm vi nghiên cứu </b>

Mục tiêu mà chúng tôi đặt ra cho dự án này là một hành trình thú vị và đầy tiềm năng trong việc phát triển thuật toán làm filter cho ảnh. Điều này không chỉ giúp nâng cao chất lượng và sự sáng tạo trong việc chỉnh sửa hình ảnh mà còn mở ra cơ hội khám phá và áp dụng những phong cách nghệ thuật của các họa sĩ nổi tiếng như Monet, Cezanne, Van Gogh, và Ukiyo E vào việc tạo hiệu ứng filter độc đáo.

Để đạt được mục tiêu này, phạm vi của dự án bao gồm nghiên cứu sâu rộng về các phương pháp và thuật toán xử lý ảnh liên quan đến việc tạo filter. Chúng tôi sẽ tiến hành nghiên cứu cũng như phát triển thuật toán mới hoặc cải tiến các thuật tốn hiện có để tối ưu hóa q trình tạo ra filter với chất lượng cao và tính sáng tạo.

Một phần quan trọng của dự án này là việc huấn luyện một model để thực hiện việc chuyển đổi ảnh theo các phong cách của các họa sĩ nổi tiếng mà chúng tôi đã đề ra. Việc này địi hỏi sự kết hợp giữa kiến thức chun mơn về xử lý ảnh và sự sáng tạo trong việc tạo ra các mơ hình học máy hiệu quả.

Khơng chỉ dừng lại ở việc nghiên cứu và phát triển thuật tốn, chúng tơi cũng đặt ra kế hoạch xây dựng một ứng dụng xử lý ảnh để thử nghiệm và đánh giá hiệu năng của mơ hình. Việc này sẽ giúp chúng tôi kiểm tra và tinh chỉnh mô hình, đảm bảo rằng thuật tốn của chúng tơi khơng chỉ có khả năng tạo ra filter độc đáo mà cịn có hiệu suất cao và thân thiện với người dùng.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Tóm lại, dự án này không chỉ là về việc nghiên cứu và phát triển thuật tốn mà cịn là việc áp dụng và thử nghiệm tính hiệu quả của chúng thơng qua việc xây dựng một ứng dụng thực tế. Chúng tôi hy vọng rằng việc này sẽ đem lại không chỉ những bước tiến quan trọng trong lĩnh vực xử lý ảnh mà còn mở ra những cơ hội mới trong việc sáng tạo và ứng dụng của công nghệ trong nghệ thuật.

<b>1.5. Đóng góp của nghiên cứu </b>

- Việc tận dụng khả năng biến hóa một bức ảnh theo nhiều phong cách khác nhau là một trong những điểm mạnh của ứng dụng "Artistic Lens". Việc này không chỉ đơn thuần là việc thêm bộ lọc và hiệu ứng mà còn là khai thác sức mạnh của sự sáng tạo và tùy chỉnh theo mục đích sử dụng của người dùng. Việc chuyển đổi một bức ảnh từ chân dung đến cảnh thiên nhiên hoặc từ một bức ảnh chụp hàng ngày đơn giản thành một tác phẩm nghệ thuật sẽ mang đến sự mới mẻ, độc đáo và cá nhân hóa cho mỗi ấn tượng hình ảnh.

- Khả năng tùy chỉnh và điều chỉnh theo mục đích sử dụng là một điểm quan trọng trong việc nâng cao sự hấp dẫn của ứng dụng. Với các phong cách nghệ thuật khác nhau, người dùng có thể lựa chọn và áp dụng bộ lọc phù hợp để biến đổi hình ảnh theo mong muốn của họ. Từ việc tạo ra những bức ảnh sắc nét, đậm chất nghệ thuật đến việc tạo ra ảnh có màu sắc tươi sáng, hoặc thậm chí là biến đổi chúng thành các phiên bản trừu tượng, "Artistic Lens" cho phép người dùng thể hiện sự đa dạng và sáng tạo của mình thơng qua việc chỉnh sửa ảnh.

- Với tiềm năng của mình, ứng dụng này không chỉ dừng lại ở việc biến đổi ảnh cho mục đích cá nhân mà cịn có thể mang lại nhiều ứng dụng tiềm năng trong các lĩnh vực chuyên nghiệp. Trong lĩnh vực làm phim, việc áp dụng các bộ lọc và phong cách nghệ thuật từ "Artistic Lens" có thể tạo ra các hiệu ứng đặc biệt, làm phong phú và tạo điểm nhấn cho tác phẩm điện ảnh. Từ việc tạo cảm giác cổ điển, retro cho đến tạo ra một thế giới hoàn toàn mới và tưởng tượng, ứng

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

dụng này có khả năng làm giàu thêm các yếu tố thị giác và cảm xúc cho các bộ phim.

- Ngoài ra, trong lĩnh vực thiết kế đồ họa, việc sử dụng "Artistic Lens" cũng mở ra một khoảng không gian sáng tạo lớn. Từ việc tạo ra các hiệu ứng động lực, sức mạnh đến việc biến đổi vị trí, tỉ lệ và màu sắc của hình ảnh, ứng dụng này có thể trở thành một cơng cụ hữu ích để thiết kế các ấn phẩm quảng cáo, bộ nhận diện thương hiệu và nhiều tác phẩm nghệ thuật đa dạng khác.

- Với khả năng linh hoạt và đa dạng trong việc biến đổi hình ảnh theo nhiều phong cách khác nhau, "Artistic Lens" không chỉ là một công cụ giải trí mà cịn là một nguồn cảm hứng và cơng cụ sáng tạo mạnh mẽ trong nhiều lĩnh vực chuyên nghiệp. Điều này làm nổi bật tiềm năng và giá trị thực tế của ứng dụng này trong cộng đồng sáng tạo và công nghiệp đa dạng ngày nay.

<b>1.6. Bố cục của báo cáo </b>

Phần còn lại của báo cáo được trình bày theo bố cục như sau:

<b>CHƯƠNG 2 – PHƯƠNG PHÁP: trình bày những phương pháp, thuật tốn được áp </b>

dụng trong q trình nghiên cứu, phát triển mơ hình

<b>CHƯƠNG 3 – TRIỂN KHAI ỨNG DỤNG: trình bày q trình phát triển và thử </b>

nghiệm mơ hình

<b>CHƯƠNG 4 – KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: trình bày tổng kết kết </b>

quả và tương lai của bài toán

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>Chương 2. PHƯƠNG PHÁP </b>

<b>2.1. Mạng đối nghịch tạo sinh </b>

Hình 2-1 Kiến trúc GANs – Mạng đối nghịch tạo sinh

Hình 2.1 mô tả tổng quan phương pháp 1 về Mạng đối nghịch tạo sinh có tên tiếng Anh là Generative Adversarial Networks được giới thiệu vào năm 2014 bởi Ian Goodfellow. GANs có khá nhiều phiên bản và trong đồ án này, chúng tôi sử dụng CycleGAN.

Mạng đối nghịch tạo sinh(hay còn gọi là mạng đối nghịch phát sinh, tiếng Anh: generative adversarial network hay viết tắt GAN) là một lớp của khung (framework) học máy do Ian Goodfellow và cộng sự thiết kế vào năm 2014. GAN chứa hai mạng thần kinh (mạng phân biệt và mạng tạo sinh) cạnh tranh lẫn nhau trong một trò chơi (ở dạng một trò chơi có tổng bằng khơng, trong đó bên thắng sẽ chiếm phần của bên thua, hay nói cách khác là bên thua sẽ bị mất phần cho bên thắng).

Cho một tập huấn luyện, kỹ thuật này học cách tạo ra dữ liệu mới với cùng chỉ số thống kê như tập huấn luyện. Ví dụ, một mạng đối nghịch tạo sinh (GAN) huấn luyện các bức ảnh để có thể tạo ra các ảnh mới mà ít nhất nhìn từ bề ngoài là chân thực đối

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

với những người quan sát, chứa nhiều đặc tính thực tế. Mặc dù ban đầu được đề xuất dưới dạng một hình thức mơ hình tạo sinh (mơ hình phát sinh) cho phương pháp học khơng có giám sát, GAN cũng được chứng minh là hữu ích cho học nửa giám sát, học có giám sát đầy đủ,và học tăng cường.

Ý tưởng cơ bản của GAN dựa trên sự huấn luyện "gián tiếp" thông qua bộ phân biệt (discriminator), mà bản thân nó cũng đang được cập nhật động.Về cơ bản, điều này có nghĩa là bộ tạo sinh (generator) không được đào tạo để giảm thiểu khoảng cách đến một hình ảnh cụ thể, hơn là để đánh lừa bộ phân biệt. Do đó, điều này cho phép mơ hình học theo cách khơng bị giám sát.

Các mạng GAN tương tự bắt chước trong sinh học tiến hóa, với một sự chạy đua tiến hóa ở cả hai bộ, bộ phân biệt và bộ tạo sinh..

Hình 2-2 Đơn giản hóa kiến trúc GANs – Mạng đối nghịch tạo sinh

<b>2.2. CycleGANs </b>

CycleGAN được giới thiệu bởi Zhu et al. vào năm 2017, cho phép chuyển đổi hình ảnh giữa hai miền khơng giống nhau mà không cần cặp dữ liệu huấn luyện tương ứng. Thay vì cần cặp dữ liệu tương ứng giữa hai miền, CycleGAN tập trung vào việc xây dựng một mơ hình có khả năng ánh xạ từ miền A sang miền B và ngược lại thông qua hai mạng tạo sinh và hai mạng phân biệt.

CycleGAN được tạo ra với mục đích sử dụng sự tương quan giữa hai chuỗi ánh xạ ngược lại (A->B->A và B->A->B) để đảm bảo tính nhất qn giữa hai miền dữ liệu. Có nghĩa là mơ hình sẽ học cách tạo ra một biểu diễn tương tự cho cùng một đối tượng trong hai miền dữ liệu khác nhau.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

CycleGAN được thiết kế dựa trên Generative Adversarial Network (GAN). Kiến trúc GAN là một cách tiếp cận để huấn luyện một mô hình sinh ảnh bao gồm hai mạng neural: một mạng generator và một mạng discriminator. Generator sử dụng một vector ngẫu nhiên lấy từ latent space làm đầu vào và tạo ra hình ảnh mới và Discriminator lấy một bức ảnh làm đầu vào và dự đốn xem nó là thật (lấy từ dataset) hay giả (được tạo ra bởi generator). Cả hai mơ hình sẽ thi đấu với nhau, Generator sẽ được huấn luyện để sinh ảnh có thể đánh lừa Discriminator và Discriminator sẽ được huấn luyện để phân biệt tốt hơn hình ảnh được tạo.

Generator đầu tiên gọi là G, nhận đầu vào là ảnh từ domain X (ngựa vằn) và convert nó sang domain Y (ngựa thường). Generator cịn lại gọi là Y, có nhiệm vụ convert ảnh từ domain Y sang X. Mỗi mạng Generator có 1 Discriminator tương ứng với nó

Hình 2-3 Kết quả hình ảnh trực quan hóa

<b>2.3. Mơ hình </b>

Link source code, dataset, model: pytorch-CycleGAN-and-pix2pix

Ứng dụng được phát triển với 4 mơ hình có sẵn tương ứng với 4 bộ dữ liệu trong Bảng 2-1:

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

STT Dataset

Số lượng

Tổng Train

A

Train B

Test A

Test B

1 cezanne2photo 526 6,288 59 752 7,625

2 monet2photo 1,073 6,288 122 752 8,235 3 ukiyoe2photo 563 6,288 264 752 7,867 4 vangogh2photo 401 6,288 401 752 7,842 Tổng: 31,569 Bảng 2-1 Dataset và mơ hình

Trong mỗi bộ dữ liệu trong Bảng 2-1:

− Tập Train A sẽ chứa các hình vẽ có phong cách tương ứng với bộ dữ liệu dùng để đào tạo mơ hình.

− Tập Train B sẽ chứa các hình ảnh bình thường dùng để đào tạo mơ hình. − Tập Test A sẽ chứa các hình vẽ có phong cách tương ứng với bộ dữ liệu dùng

để khi thực nghiệm mơ hình trên tập Test A thì các hình vẽ có phong cách tương ứng với bộ dữ liệu trong tập này sẽ được chuyển thành các hình ảnh bình thường tương ứng.

− Tập Test B sẽ chứa các hình ảnh bình thường dùng để khi thực nghiệm mơ hình trên tập Test B thì các hình ảnh bình thường này sẽ được chuyển thành các hình vẽ có phong cách tương ứng với bộ dữ liệu tương ứng.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>Chương 3. TRIỂN KHAI ỨNG DỤNG </b>

<b>3.1. Thiết kế </b>

Việc tập trung vào khả năng tương thích với thiết bị di động hồn tồn phù hợp với việc sử dụng điện thoại thông minh phổ biến trong bối cảnh kỹ thuật số ngày nay. Quyết định này nhấn mạnh sự hiểu biết về sở thích và hành vi của người dùng, thừa nhận sự phụ thuộc rộng rãi vào thiết bị di động cho nhiều tác vụ khác nhau, bao gồm chỉnh sửa ảnh và sử dụng ứng dụng.

Khả năng tương thích với thiết bị di động đảm bảo rằng ứng dụng của bạn có thể tích hợp liền mạch vào cuộc sống hàng ngày của người dùng, tận dụng sự quen thuộc và tiện lợi của điện thoại thông minh. Cách tiếp cận này phục vụ cho tính chất thường xuyên di chuyển của người dùng, cho phép họ tương tác với các tính năng chuyển đổi từ ảnh sang tranh vẽ một cách thuận tiện từ thiết bị cầm tay của họ.

Hơn nữa, việc phù hợp với sự phổ biến của công nghệ di động sẽ khuếch đại khả năng truy cập ứng dụng của bạn. Nó cho phép phạm vi tiếp cận rộng hơn, khai thác cơ sở người dùng lớn hơn, chủ yếu tương tác với các dịch vụ kỹ thuật số thông qua điện thoại thông minh của họ.

Cuối cùng, việc ưu tiên khả năng tương thích với thiết bị di động phản ánh nhận thức sâu sắc về sở thích và hành vi của người dùng, nâng cao khả năng truy cập và sự tiện lợi, đồng thời định vị ứng dụng của bạn để phục vụ hiệu quả cho nhiều đối tượng người dùng trong thế giới tập trung vào thiết bị di động ngày nay.

<b>3.1.1. Công nghệ sử dụng </b>

<b>- Front-end: React Native (Ngơn ngữ lập trình JavaScript) </b>

o React Native là một framework mã nguồn mở được sử dụng để phát triển ứng dụng di động đa nền tảng. Nó sử dụng ngôn ngữ lập trình JavaScript để tạo ra các ứng dụng di động trên các hệ điều hành iOS và Android với một cơ sở mã duy nhất.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

o React Native sử dụng thư viện React JavaScript để xây dựng các giao diện ứng dụng cực nhanh và đáp ứng nhiều nhu cầu. Ngoài ra, framework này có khả năng kết xuất tuyệt vời và sử dụng cách tiếp cận dựa trên thành phần giúp dễ dàng tạo ra các ứng dụng với giao diện người dùng đơn giản, hoặc phức tạp.

o Một số tính năng nổi bật của React Native bao gồm:

▪ Tái sử dụng mã: React Native cho phép bạn tái sử dụng tới 90% mã nguồn giữa các ứng dụng iOS và Android, giúp tiết kiệm thời gian và chi phí phát triển.

80-▪ Tính năng đáp ứng: React Native sử dụng các thành phần dựa trên Flexbox, giúp các ứng dụng của bạn có thể thích ứng với các kích thước màn hình khác nhau.

▪ Khả năng kết nối với API gốc: React Native cho phép bạn kết nối các ứng dụng của mình với các API gốc của hệ điều hành, giúp bạn truy cập các tính năng và dữ liệu hệ thống.

o React Native là một lựa chọn phổ biến cho các nhà phát triển ứng dụng di động. Nó là một framework mạnh mẽ và linh hoạt, có thể được sử dụng để tạo ra các ứng dụng chất lượng cao cho cả iOS và Android. o Một số ứng dụng nổi tiếng được xây dựng bằng React Native bao gồm:

▪ Facebook ▪ Instagram ▪ Airbnb ▪ Uber ▪ Walmart

o Nếu bạn đang tìm kiếm một framework để phát triển ứng dụng di động đa nền tảng, React Native là một lựa chọn tuyệt vời.

o JavaScript là một ngơn ngữ lập trình phổ biến được sử dụng chủ yếu để làm việc trên trình duyệt web. Nó được sử dụng để thêm các tính năng tương tác động đến trang web, làm cho trải nghiệm người dùng trở nên

</div>

×