Lập Trình Ứng Dụng Nhận Diện Cây Trên Nền Tảng iOS

Khám phá cách lập trình ứng dụng nhận diện cây trên nền tảng công nghệ hiện đại, giúp nâng cao trải nghiệm người dùng và bảo vệ môi trường.

Trường đại học

Thang Long University

Chuyên ngành

Lập trình ứng dụng

Người đăng

Ẩn danh

Thể loại

bachelor's thesis

2024

97
2
0

Phí lưu trữ

35 Point

Mục lục chi tiết

LỜI CẢM ƠN

LỜI CAM ĐOAN

1. CHƯƠNG MỞ ĐẦU

1.1. Động lực của bản thân

1.2. Phạm vi và phương pháp nghiên cứu

1.3. Cấu trúc khoá luận

1.4. Ngôn ngữ sử dụng

1.5. Các framework sử dụng

1.6. Tích hợp các nền tảng khác

2. PHÂN TÍCH, ĐẶC TẢ CHỨC NĂNG HỆ THỐNG

2.1. Mô tả bài toán

2.2. Nhận diện cây từ ảnh

2.3. Đặt thông báo nhắc nhở tưới cây

2.4. Cộng đồng chia sẻ kiến thức về cây

2.5. Yêu cầu nghiệp vụ

2.6. Sơ đồ Usecase các chức năng chính

2.7. Bảng ánh xạ yêu cầu nghiệp vụ với các Usecase

2.8. Sơ đồ kiến trúc tổng thể

2.9. Đặc tả các chức năng

2.9.1. UC#01: Đăng ký tài khoản

2.9.2. UC#02: Đăng nhập

2.9.3. UC#03: Đăng xuất

2.9.4. UC#04: Nhận diện cây

2.9.5. UC#05: Tìm kiếm cây

2.9.6. UC#06: Tạo cây mới

2.9.7. UC#07: Xem thông tin cây

2.9.8. UC#08: Quản lý cây trong bộ sưu tập

2.9.9. UC#09: Xem danh sách cây trong bộ sưu tập

2.9.10. UC#10: Đặt thông báo

2.9.11. UC#11: Quản lý lịch chăm sóc

2.9.12. UC#12: Xem bài viết

2.9.13. UC#13: Xem chi tiết bài viết

2.9.14. UC#14: Đăng bài viết

2.9.15. UC#15: Xem trang cá nhân

3. THIẾT KẾ CHỨC NĂNG, CƠ SỞ DỮ LIỆU VÀ API

3.1. Cấu trúc chung

3.2. Thiết kế một số chức năng

3.2.1. UC#02: Đăng nhập

3.2.2. UC#03: Đăng xuất

3.2.3. UC#04: Nhận diện cây

3.2.4. UC#05: Tìm kiếm cây

3.2.5. UC#06: Tạo cây

3.2.6. UC#07: Xem thông tin cây

3.2.7. UC#08: Quản lý cây trong bộ sưu tập

3.2.8. UC#09: Xem danh sách cây trong bộ sưu tập

3.2.9. UC#10: Đặt thông báo

3.2.10. UC#11: Quản lý lịch chăm sóc

3.2.11. UC#12: Xem bài viết

3.2.12. UC#13: Xem chi tiết bài viết

3.2.13. UC#14: Đăng bài viết

3.2.14. UC#15: Xem trang cá nhân

3.3. Thiết kế CSDL

3.3.1. Mô tả hệ thống

3.3.2. Lựa chọn các danh từ làm lớp thực thể hoặc thuộc tính

3.3.3. Xác định quan hệ giữa các lớp thực thể

3.3.4. Mô tả tổng quan từng bảng

3.3.5. Chi tiết các bảng

3.4. Thiết kế API

3.4.1. Cấu trúc tổng thể của API

3.4.2. Api hệ thống sử dụng

4. CÀI ĐẶT VÀ TRIỂN KHAI HỆ THỐNG

4.1. Môi trường cài đặt

4.2. Trình diễn các chức năng của hệ thống

4.2.1. Chức năng đăng ký qua gmail

4.2.2. Chức năng nhận diện cây từ ảnh

4.2.3. Chức năng tìm kiếm cây theo tên

4.2.4. Chức năng thêm cây

4.2.5. Chức năng đặt thông báo

4.2.6. Chức năng cộng đồng

4.2.7. Chức năng đăng bài viết

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng quan về ứng dụng nhận diện cây trên iOS

Ứng dụng nhận diện cây trên nền tảng iOS đang trở thành một công cụ hữu ích cho những người yêu thích cây cối. Với sự phát triển của công nghệ, việc nhận diện cây trở nên dễ dàng hơn bao giờ hết. Ứng dụng này không chỉ giúp người dùng xác định tên loài cây mà còn cung cấp thông tin chi tiết về cách chăm sóc. Việc sử dụng công nghệ nhận diện hình ảnh giúp giảm thiểu sai sót trong việc xác định loài cây, từ đó nâng cao trải nghiệm người dùng.

1.1. Lợi ích của ứng dụng nhận diện cây

Ứng dụng giúp người dùng nhanh chóng nhận diện cây chỉ bằng một bức ảnh. Điều này tiết kiệm thời gian và công sức trong việc tìm kiếm thông tin. Ngoài ra, ứng dụng còn cung cấp thông tin về cách chăm sóc cây, giúp người dùng có kiến thức đầy đủ hơn.

1.2. Công nghệ sử dụng trong ứng dụng

Ứng dụng sử dụng công nghệ nhận diện hình ảnhtrí tuệ nhân tạo để phân tích và nhận diện cây. Các mô hình học máy được áp dụng để cải thiện độ chính xác trong việc nhận diện các loài cây khác nhau.

II. Thách thức trong việc phát triển ứng dụng nhận diện cây

Mặc dù có nhiều lợi ích, việc phát triển ứng dụng nhận diện cây cũng gặp phải nhiều thách thức. Một trong những vấn đề lớn nhất là sự đa dạng và phức tạp của các loài cây. Nhiều loài cây có hình dáng tương tự nhau, điều này gây khó khăn trong việc nhận diện chính xác. Hơn nữa, việc thu thập và xử lý dữ liệu hình ảnh cũng là một thách thức lớn.

2.1. Độ chính xác trong nhận diện cây

Độ chính xác của ứng dụng phụ thuộc vào chất lượng dữ liệu hình ảnh. Nếu dữ liệu không đủ phong phú hoặc không chính xác, khả năng nhận diện sẽ bị ảnh hưởng. Việc cải thiện độ chính xác là một trong những mục tiêu chính trong quá trình phát triển.

2.2. Khó khăn trong việc thu thập dữ liệu

Việc thu thập dữ liệu hình ảnh cho các loài cây là một thách thức lớn. Cần có một bộ dữ liệu phong phú và đa dạng để đảm bảo ứng dụng có thể nhận diện chính xác nhiều loại cây khác nhau.

III. Phương pháp phát triển ứng dụng nhận diện cây trên iOS

Để phát triển ứng dụng nhận diện cây, một số phương pháp và công nghệ đã được áp dụng. Sử dụng ngôn ngữ lập trình Swift kết hợp với mô hình MVVM giúp tối ưu hóa quy trình phát triển. Bên cạnh đó, việc tích hợp các nền tảng như Firebase cũng giúp cải thiện hiệu suất của ứng dụng.

3.1. Sử dụng ngôn ngữ Swift

Swift là ngôn ngữ lập trình chính được sử dụng để phát triển ứng dụng. Ngôn ngữ này giúp tăng tốc độ phát triển và cải thiện hiệu suất của ứng dụng. Swift cũng hỗ trợ nhiều tính năng hiện đại giúp lập trình viên dễ dàng hơn trong việc xây dựng ứng dụng.

3.2. Tích hợp với Firebase

Firebase cung cấp các dịch vụ như xác thực người dùng và lưu trữ dữ liệu, giúp ứng dụng hoạt động mượt mà hơn. Việc tích hợp này không chỉ giúp tiết kiệm thời gian phát triển mà còn nâng cao trải nghiệm người dùng.

IV. Ứng dụng thực tiễn của ứng dụng nhận diện cây

Ứng dụng nhận diện cây không chỉ là một công cụ hữu ích cho những người yêu thích cây cảnh mà còn có thể được áp dụng trong nhiều lĩnh vực khác nhau. Từ việc giáo dục về thực vật đến việc hỗ trợ trong nghiên cứu sinh học, ứng dụng này mở ra nhiều cơ hội mới.

4.1. Giáo dục và nâng cao nhận thức

Ứng dụng có thể được sử dụng trong các trường học để giáo dục học sinh về thực vật. Việc nhận diện cây giúp học sinh hiểu rõ hơn về môi trường xung quanh và tầm quan trọng của việc bảo vệ thiên nhiên.

4.2. Hỗ trợ nghiên cứu sinh học

Nghiên cứu sinh học có thể được hỗ trợ thông qua việc sử dụng ứng dụng để nhận diện và phân loại các loài cây. Điều này giúp các nhà nghiên cứu tiết kiệm thời gian và nâng cao độ chính xác trong công việc của họ.

V. Kết luận và tương lai của ứng dụng nhận diện cây

Ứng dụng nhận diện cây trên nền tảng iOS không chỉ mang lại giá trị cho người dùng mà còn góp phần vào việc bảo vệ môi trường. Tương lai của ứng dụng này hứa hẹn sẽ phát triển mạnh mẽ hơn với sự hỗ trợ của công nghệ mới. Việc cải thiện độ chính xác và mở rộng tính năng sẽ là những mục tiêu quan trọng trong thời gian tới.

5.1. Hướng phát triển trong tương lai

Trong tương lai, ứng dụng có thể được mở rộng với nhiều tính năng mới như kết nối người dùng với các chuyên gia về thực vật. Điều này sẽ giúp người dùng có thêm thông tin và kiến thức về cách chăm sóc cây.

5.2. Tầm quan trọng của việc bảo vệ môi trường

Ứng dụng không chỉ giúp người dùng nhận diện cây mà còn nâng cao nhận thức về việc bảo vệ môi trường. Việc kết nối cộng đồng yêu thích thiên nhiên sẽ tạo ra một mạng lưới hỗ trợ mạnh mẽ cho việc bảo vệ và duy trì cân bằng sinh thái.

10/07/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. Ngôn ngữ sử dụng 1. Swift [1] Swift là một ngôn ngữ lập trình hướng đối tượng dành cho việc phát triển iOS và macOS, watchOS, tvOS được giới thiệu bởi Apple tại hội nghị WWDC 2014. Swift được mong đợi sẽ tồn tại song song cùng Objective- C, ngôn ngữ lập trình hiện tại dành cho các hệ điều hành của Apple.

Swift được thiết kế để hoạt động với các framework Cocoa và Cocoa Touch của Apple và phần lớn mã Objective-C. Nó được biên dịch với trình biên dịch LLVM và đã được đưa vào Xcode kể từ phiên bản 6, phát hành năm 2014. Trên các nền tảng của Apple, nó sử dụng thư viện runtime Objective-C cho phép mã C, Objective-C, C++ và Swift cùng chạy trong một chương trình. Ưu điểm: – Khả năng phát triển ứng dụng di động nhanh và dễ dàng: Các lập trình viên không phải mất công chạy các chương trình compiler và các chương trình test một cách thường xuyên nữa, mà thay vào đó tập trung vào các phần tích hợp với mức độ khó hơn.

Điều này cũng giúp tiết kiệm sức mạnh và sự hao mòn của phần cứng cho các nhà phát triển. Ngoài ra, Swift là một trong những ngôn ngữ lập trình mang lại nhiều tính năng quan trọng như: không xảy ra lỗi array-out- of-bound, không có biến xác định, quản lý bộ nhớ theo phương thức tự động,. từ đó tiết kiệm được tối đa thời gian hơn để hoàn thành một dự án. – Code ngắn gọn, dễ đọc, dễ hiểu: Điều này giúp cho các lập trình viên tiết kiệm rất nhiều thời gian hoàn thành dự án, cũng như tăng hiệu quá trong quá trình bảo trì và fix các lỗi bug trong tương lai.

Swift kế thừa và phát huy tất cả các sức mạnh của Objective-C để lại, nên các nhà lập trình sẽ có một môi trường runtime quen thuộc tuyệt vời, dễ dàng quản lý và phát triển. – Tốc độ thực thi nhanh: Theo apple, Swift nhanh gấp 8 lần python. Không những nhanh, mà Swift còn rất mạnh mẽ, giúp cho các nhà lập trình có thể viết được những đoạn mã nâng cao, phức tạp hơn như: generics, closures, tuples, multiple returns, iterators, các mẫu lập trình hàm có sẵn và nhiều hơn thế nữa. – Swift có thể dùng cho tất cả các hệ điều hành của Apple phát hành như macOS, iOS, tvOS, watchOS,.

Nhược điểm: – Swift được phát triển đặc biệt cho các sản phẩm của Apple, do đó, nó không tương thích tự nhiên với hệ điều hành hoặc thiết bị khác – Cộng đồng sử dụng Swift không lớn, có thể làm giảm nguồn thông tin, tài liệu và hỗ trợ từ cộng đồng so với các ngôn ngữ phổ biến hơn 8 Thư viện ĐH Thăng Long – Swift đã trải qua nhiều thay đổi, làm tăng khả năng phải thay đổi mã nguồn khi nâng cấp lên các phiên bản mới. Python [2] Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học. Các nhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khác nhau. Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại hệ thống và tăng tốc độ phát triển.

Python hữu ích trong việc lập trình mã phía máy chủ bởi vì ngôn ngữ này cung cấp nhiều thư viện bao gồm mã viết sẵn cho các hàm backend phức tạp. Các nhà phát triển cũng sử dụng một loạt các khung Python cung cấp tất cả những công cụ cần thiết để xây dựng ứng dụng web một cách nhanh chóng và dễ dàng hơn. Ưu điểm: – Cú pháp cơ bản giống tiếng Anh. – Cải thiện năng suất làm việc vì các nhà phát triển sử dụng ít dòng mã hơn để viết một chương trình Python.

– Thư viện tiêu chuẩn lớn, chứa nhiều dòng mã có thể tái sử dụng cho hầu hết mọi tác vụ. – Cộng đồng Python tích cực hoạt động bao gồm hàng triệu nhà phát triển nhiệt tình hỗ trợ trên toàn thế giới. Nếu gặp phải vấn đề, bạn sẽ có thể nhận được sự hỗ trợ nhanh chóng từ cộng đồng. – Có rất nhiều tài nguyên hữu ích trên internet – Python có thể được sử dụng trên nhiều hệ điều hành máy tính khác nhau như Windows, macOS, Linux và Unix.

Nhược điểm: – Tốc độ thực thi chậm – Tiêu thụ bộ nhớ lớn – Không an toàn cao và có nguy cơ bảo mật, có một số hạn chế khi sử dụng Python để truy cập cơ sở dữ liệu 1. Các framework sử dụng 1. UIKit [3] UIKit framework cung cấp một số class để tạo các tác vụ chạm (touch- based) cho giao diện người dùng, tất cả các ứng dụng iOS đều xây dựng dựa trên UIKit, nhà phát triển không thể xây dựng ứng dụng mà không sử dụng framework này. UIKit cung cấp cơ sở hạ tầng cho việc vẽ các giao diện trên màn hình, điều khiển các sự kiện, tạo ra các thành phần giao diện của 9 ứng dụng.

UIKit cũng tổ chức các ứng dụng phức tạp bằng việc quản lý nội dung ứng dụng để hiển thị lên màn hình. UIDynamics là 1 phần quan trọng trong UIKit được apple tích hợp từ năm 2007 cùng với sự xuất hiện của iOS 7. Bằng cách sử dụng UIKit Dynamics, lập trình viên có thể tạo ra các view với những tương tác vật lý như trọng lực, móc nối, va chạm, nảy lên(sau va chạm),. giữa các đối tượng với các thành phần chính: UIDynamicItem protocol, Dynamic behaviors, Dynamic animator.

Được phát triển bởi Facebook AI Research (FAIR), PyTorch đã nhanh chóng trở thành một trong những thư viện phổ biến nhất trong cộng đồng học máy và trí tuệ nhân tạo. Các nhà phát triển sử dụng framework này cho những ứng dụng như robot và thị giác máy tính, tìm kiếm thông tin từ hình ảnh và video. PyTorch đã trở thành một trong những công cụ quan trọng và ưa chuộng cho việc phát triển và thử nghiệm các mô hình học máy và học sâu. Điều này là nhờ vào tính linh hoạt, hiệu suất và cộng đồng mạnh mẽ xung quanh nó.

Các đặc điểm và tính năng chính của PyTorch bao gồm: – Dynamic Computational Graph: Một đặc điểm độc đáo của PyTorch so với các thư viện khác là việc sử dụng đồ thị tính toán động (dynamic computational graph). Điều này cho phép bạn định nghĩa và thay đổi cấu trúc của mô hình trong quá trình chạy, điều này rất hữu ích cho việc debug và xây dựng mô hình linh hoạt hơn. – Autograd: PyTorch cung cấp một hệ thống tự động tính đạo hàm (autograd), giúp tính toán gradient cho việc lan truyền ngược (backpropagation) dễ dàng. Điều này rất hữu ích trong quá trình đào tạo mô hình học sâu.

– Tích Hợp GPU: PyTorch dễ dàng tích hợp với GPU để tăng tốc quá trình tính toán. Điều này đặc biệt quan trọng khi làm việc với mô hình học sâu có tính toán phức tạp. – Dynamic Batching và Data Loading: PyTorch cho phép tạo các batch có kích thước khác nhau và tự động quản lý việc nạp dữ liệu (data loading). Điều này giúp tối ưu việc sử dụng bộ nhớ và tăng tốc quá trình đào tạo.

– Tích Hợp Numpy: PyTorch tích hợp tốt với thư viện Numpy, cho phép bạn làm việc dễ dàng với dữ liệu số và tính toán. – Module API: PyTorch cung cấp giao diện lập trình module cho việc xây dựng và quản lý mô hình. Điều này giúp tạo ra mã dễ đọc, dễ hiểu và tái sử dụng. – Rich Ecosystem: PyTorch có một hệ sinh thái phong phú với nhiều thư viện hỗ trợ như torchvision (xử lý ảnh), torchaudio (xử lý âm thanh), transformers (xử lý ngôn ngữ tự nhiên), và nhiều thư viện khác.

10 Thư viện ĐH Thăng Long – Active Community: PyTorch có một cộng đồng đông đảo và năng động, cung cấp nhiều tài liệu, ví dụ và hỗ trợ trực tuyến. Flask [5] Flask là một web frameworks, nó thuộc loại micro-framework được xây dựng bằng ngôn ngữ lập trình Python. Flask cho phép bạn xây dựng các ứng dụng web từ đơn giản tới phức tạp. Nó có thể xây dựng các API nhỏ, ứng dụng web chẳng hạn như các trang web, blog, trang wiki hoặc một website dựa theo thời gian hay thậm chí là một trang web thương mại.

Flask được thiết kế để đơn giản và linh hoạt, giúp người phát triển xây dựng các ứng dụng web một cách nhanh chóng và dễ dàng. Một số điểm nổi bật và đặc điểm chính của Flask: – Micro Framework: Flask được gọi là "micro" framework vì nó cung cấp một số chức năng cơ bản để xây dựng ứng dụng web mà không có nhiều thành phần phức tạp và tích hợp sẵn. Điều này giúp người phát triển có sự linh hoạt để lựa chọn các thành phần khác để sử dụng theo ý muốn. – Cấu trúc Đơn Giản: Flask không yêu cầu một cấu trúc dự án phức tạp.

Bạn có thể tổ chức mã nguồn của mình theo cách bạn muốn, giúp dễ dàng hiểu và quản lý mã nguồn. – Routing: Flask cho phép bạn định nghĩa các đường dẫn (routes) và liên kết chúng với các hàm xử lý để xác định cách ứng dụng xử lý các yêu cầu từ người dùng. – Templates: Flask hỗ trợ sử dụng các template engine như Jinja2 để tạo giao diện người dùng động và tái sử dụng các thành phần giao diện. – HTTP Methods: Flask hỗ trợ các phương thức HTTP như GET, POST, PUT, DELETE để xử lý các loại yêu cầu khác nhau.

– Extensions: Flask có cộng đồng phong phú với nhiều extension hữu ích giúp bạn dễ dàng tích hợp các tính năng như đăng nhập, xác thực, gửi email, và nhiều thứ khác vào ứng dụng của mình. – Lightweight: Flask có kích thước nhẹ và yêu cầu ít dependencies, giúp ứng dụng chạy nhanh và hiệu quả. – RESTful API: Flask rất thích hợp để xây dựng các dịch vụ API với cấu trúc dự án đơn giản và hỗ trợ tốt cho việc xử lý yêu cầu API từ người dùng. Tích hợp các nền tảng khác 1.

MediaWiki API [6] Wikipedia là một bách khoa toàn thư tự do, là kết quả của sự cộng tác của chính những người đọc từ khắp nơi trên thế giới. Tất cả mọi người đều có thể sửa đổi ở các trang wiki, ngoại trừ các cá nhân bị tước quyền sửa đổi và những trang bị khóa. 11 MediaWiki API là một API được cung cấp bởi phần mềm MediaWiki, một hệ thống quản lý nội dung được sử dụng rộng rãi để xây dựng và quản lý các trang web dựa trên wiki, trong đó Wikipedia là một ví dụ nổi bật. API này cho phép người dùng tương tác và truy cập dữ liệu trên các trang web dựa trên MediaWiki thông qua các yêu cầu HTTP, đồng thời cung cấp các phương thức để truy vấn và chỉnh sửa dữ liệu trên các trang web này.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu này cung cấp cái nhìn tổng quan về việc phát triển ứng dụng di động, đặc biệt là trong lĩnh vực y tế và thương mại điện tử. Nó nhấn mạnh tầm quan trọng của việc sử dụng các công nghệ hiện đại như React Native và Node.js để xây dựng các ứng dụng tiện ích, giúp người dùng dễ dàng tiếp cận dịch vụ khám bệnh trực tuyến và mua sắm.

Để mở rộng kiến thức của bạn về chủ đề này, bạn có thể tham khảo thêm các tài liệu liên quan như Đồ án hcmute xây dựng app khám bệnh online với react native và nodejs, nơi bạn sẽ tìm thấy thông tin chi tiết về quy trình phát triển ứng dụng khám bệnh trực tuyến. Ngoài ra, tài liệu Đồ án chuyên ngành xây dựng ứng dụng di động bán hoa dflower cho cửa hàng ld ở bình dương cũng cung cấp cái nhìn sâu sắc về việc phát triển ứng dụng thương mại điện tử. Cuối cùng, bạn có thể khám phá thêm về Luận văn tốt nghiệp xây dựng ứng dụng chat trong android với firebase, giúp bạn hiểu rõ hơn về việc tích hợp các tính năng giao tiếp trong ứng dụng di động.

Mỗi tài liệu đều là cơ hội để bạn khám phá sâu hơn về các khía cạnh khác nhau của phát triển ứng dụng, từ y tế đến thương mại điện tử và giao tiếp.