1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng tensorflow vào nhận dạng ảnh đơn giản

29 849 8
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 1,18 MB

Nội dung

Source code nhỏ giúp hỗ trợ nhận dạng ảnh với input là một ảnh bất kỳ và output là nội dung của bức ảnh đó

Trang 2

LỜI NÓI ĐẦU

Là một lĩnh vực con của công nghệ Trí tuệ nhân tạo (AI), Machinelearning là phương pháp phân tích dữ liệu từ đó tự động hóa việc xây dựng

mô hình phân tích Đây là công nghệ hứa hẹn mang lại những hỗ trợ tối ưunhất cho các doanh nghiệp với nhiều ứng dụng trong thế giới thực, ví dụ nhưnhận dạng giọng nói và nhận diện hình ảnh

Machine learning sử dụng các thuật toán lặp để học từ dữ liệu và chophép máy tính tìm thấy những thông tin, giá trị ẩn sâu mà không được lậptrình một cách rõ ràng nơi để tìm Khía cạnh lặp lại của Machine learning làquan trọng bởi khi các mô hình này được tiếp xúc với dữ liệu mới thì chúng

có thể thích ứng một cách độc lập Các hệ thống Machine Learning có thểnhanh chóng áp dụng kiến thức và đào tạo từ các bộ dữ liệu lớn để thực hiệncác công việc về nhận diện khuôn mặt, nhận dạng giọng nói, … một cách xuấtsắc

Trang 3

LỜI CẢM ƠN!

Em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc tới cô NguyễnThị Tính đã nhiệt tình hướng dẫn em hoàn thành tốt nhiệm vụ trong thời gianthực tập

Trong quá trình thực tập, cũng như là trong quá trình làm bài báo cáothực tập, khó tránh khỏi sai sót, rất mong các thầy, cô bỏ qua Đồng thời dotrình độ lý luận cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáokhông thể tránh khỏi những thiếu sót, em rất mong nhận được ý kiến đónggóp của thầy, cô để em học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốthơn bài báo cáo tốt nghiệp sắp tới

Em xin chân thành cảm ơn!

Trang 4

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Thái Nguyên, ngày tháng năm 2018

Giáo viên hướng dẫn

Trang 5

Mục Lục

Trang 6

CHƯƠNG I – CƠ SỞ LÝ LUẬN

TensorFlow là một thư viện phần mềm mã nguồn mở dành chomachine learning (máy học) trong nhiều loại hình tác vụ nhận thức và hiểungôn ngữ TensorFlow hiện đang được sử dụng rất nhiều trong việc nghiêncứu và sản xuất các sản phẩm thương mại của Google như: nhận dạng giọngnói, nhận dạng hình ảnh,

TensorFlow ban đầu được phát triển bởi đội ngũ Google Brain cho mụcđích nghiên cứu và sản xuất của Google và sau đó được phát hành theo giấyphép Apache 2.0 open source vào ngày 9/11/2015

1.1.1 Lịch sử

1.1.1.1 DistBelief

Bắt đầu từ năm 2011, Google Brain xây dựng DistBelief - hệthống máy học thế hệ đầu tiên dựa trên Neural network và sử dụng độc quyền.Google và các công ty Alphabet khác đã triển khai các mạng nơ-ron họcsâu của DistBelief trong các sản phẩm thương mại của Google, baogồm Google Search ,Google Voice Search, Google Photos, GoogleMaps, Google Street View, Google Translate, Advertising và YouTube

Google đã chỉ định một đội ngũ các nhà khoa học máy tính trong đó cótiến sĩ Jeff Dean để đơn giản hóa và cải tiến mã nguồn của DistBelief để trởthành một thư viện lớp ứng dụng nhanh hơn, mạnh mẽ hơn, mà sau này trởthành TensorFlow

Năm 2009, để giảm bớt số lỗi đáng kể trong các mạng nơ-ron màDistBelief sử dụng một đội ngũ được lãnh đạo bởi Geoffrey Hinton đã cảithiện bằng cách sử dụng kỹ thuật backpropagation (giải thuật ngược) và một

số kỹ thuật cải tiến khác Đột phá đáng chú ý nhất của Hinton là đã giảm đượcđáng kể lỗi trong phần mềm nhận dạng giọng nói của Google (25%)

1.1.1.2 TensorFlow

TensorFlow là thế hệ thứ hai của hệ thống học máy của Google Brain,với một bản cài đặt tham khảo đã phát hành dưới dạng phần mềm mã nguồn

mở vào ngày 9/11/2015

Trong khi bản cài đặt tham khảo chạy trên một thiết bị đơn, TensorFlow

có thể chạy trên nhiều CPU và GPU (với nhiều mở rộng CUDA tùy chọn choviệc tính toán đa năng trên các GPU) Nó chạy trên Linux hoặc Mac OS X 64-

Trang 7

bit hoặc các hệ thống máy chủ, cũng như trên các nền tảng điện toán di động,bao gồm Android và iOS của Apple

Các tính toán của TensorFlow được thể hiện dưới dạng các biểu đồdataflow chi tiết Nhiều nhóm tại Google đã chuyển từ DistBelief sangTensorFlow để phục vụ cho việc nghiên cứu và sản xuất Thư viện thuật toánnày bắt nguồn từ nhu cầu của Google để hướng dẫn các hệ thống máy tính tìmhiểu và lý luận tương tự cách thức của con người, vì vậy mà các ứng dụngđược xuất phát từ đây có thể đảm nhận các vai trò và chức năng tương tự conngười Tên TensorFlow xuất phát từ hoạt động mà các mạng nơ-ron đó thựchiện trên mảng dữ liệu đa chiều Các mảng này được gọi là “tensor”(các mạchnối tiếp)

1.1.1.3 Đơn vị xử lý Tensor (TPU)

Vào tháng 5/2016, Google công bố bộ xử lý Tensor (TPU), một ASICđược xây dựng đặc biệt cho máy học và được điều chỉnh cho TensorFlow.Google đã vận hành các TPU bên trong các Trung tâm dữ liệu của mình tronghơn một năm và đã tìm ra cách để tạo ra hiệu suất tối ưu hóa tốt hơn dành chomáy học TPU là một máy tăng tốc AI có thể lập trình được tập trung vào một

số lượng lớn thuật toán có mức chính xác thấp và có khả năng ứng dụng nhiềuhơn trong các mô hình suy luận thực tế chứ không chỉ là huấn luyện chúng.1.1.2 Tính năng

TensorFlow hỗ trợ cả hai ngôn ngữ c và python

TensorFlow có thể chạy trên nhiều CPU cũng như GPU giúp đẩy nhanhquá trình huấn luyện cũng như xử lý dữ liệu thực từ mô mình đã được học.Ngoài ra với việc có thể sử dụng thư viện này trên các hệ thống cloud sẽ làmđẩy nhanh hiệu năng của các hệ thống sử dụng TensorFlow

Với khả năng chạy trên nhiều hệ điều hành như bao gồm cả iOS,Android, hứa hẹn sẽ phát triển được các ứng dụng thông minh nhờ áp dụngcác tính năng nổi bật của Deep Learning

1.1.3 Ứng dụng

Trong số các ứng dụng rộng rãi mà TensorFlow làm nền tảng, bao gồm

cả phần mềm tự động tạo phụ đề cho hình ảnh, chẳng hạn như DeepDream.Google chính thức triển khai thực hiện RankBrain vào ngày 26/10/2015, được

hỗ trợ bởi TensorFlow, RankBrain hiện tại có thể xử lý một lượng truy vấntìm kiếm đáng kể, thay thế và bổ sung thuật toán tĩnh truyền thống dựa trêncác kết quả tìm kiếm

Trang 8

1.2 Google API

1.2.1 API là gì?

API (Application Programming Interface) là giao diện lập trình ứngdụng Mỗi hệ điều hành, ứng dụng đều có những bộ API khác nhau Nó cungcấp cho người lập trình các hàm tương tác với cơ sở dữ liệu, lập trình thựchiện các thao tác với hệ điều hành hay phần mềm đó Hầu hết các hàm APIđược chứa trong các file DLL

Ví dụ: Các hàm API của hệ điều hành windows cho phép chúng ta lậptrình ứng dụng thay đổi icon màn hình, xem thông tin máy tính, hay cáchàm API của google cho phép lập trình viên lấy thông tin, sửa thông tin ngườidùng, Các hàm API của facebook cho chúng ta đăng status, đăng ảnh haycomment,

Vậy API có phải một ngôn ngữ lập trình không? Câu trả lời là không.Các hàm API cũng như các hàm bình thường mà chúng ta hay viết và trêntừng ngôn ngữ khác nhau cũng có các bộ API tương ứng khác nhau Ví dụnhư Google API có bộ cho NET, PHP, Và mỗi bộ API hầu như đều cóhướng dẫn sử dụng rất cụ thể và chi tiết

1.2.2 Google API

1.2.2.1 Tổng quan

Google API là một tập hợp các giao diện lập trình ứng dụng ( API )được phát triển bởi Google cho phép giao tiếp với các Dịch vụ của Google vàtích hợp với các dịch vụ khác như Search, Gmail, Translate hoặc GoogleMaps Ứng dụng của bên thứ ba có thể sử dụng các API này để tận dụng hoặc

mở rộng chức năng của các dịch vụ hiện có

Các API cung cấp chức năng như phân tích, học máy như một dịch vụ(API dự đoán) hoặc truy cập vào dữ liệu người dùng (khi được phép đọc dữliệu) Một ví dụ quan trọng khác là một bản đồ Google được nhúng vào mộttrang web có thể đạt được bằng cách sử dụng Static maps API, Places APIhoặc Google Earth API

1.2.2.2 Xác thực và ủy quyền (Authentication and authorization)

Việc sử dụng một số API đòi hỏi xác thực và ủy quyền bằng cách sửdụng giao thức OAuth 2.0 OAuth 2.0 là một giao thức đơn giản Để bắt đầu,

ta cần lấy thông tin đăng nhập từ bảng điều khiển dành cho nhà phát triển.Sau đó, ứng dụng khách có thể yêu cầu mã truy cập từ máy chủ ủy quyền của

Trang 9

Google và sử dụng mã thông báo đó để ủy quyền khi truy cập dịch vụ GoogleAPI.

1.2.2.3 Thư viện người dùng (Client libraries)

Có các thư viện người dùng bằng nhiều ngôn ngữ khác nhau cho phépcác nhà phát triển sử dụng các API của Google từ bên trong mã của họ, baogồm Java , JavaScript , NET , Objective-C , PHP và Python

Các Google Loader là một Javascript thư viện cho phép các nhà pháttriển web để dễ dàng tải các Javascript API được cung cấp bởi Google và cácnhà phát triển khác của thư viện phổ biến Google Loader cung cấp mộtphương thức JavaScript để tải một API cụ thể (còn gọi là modul), trong đó cóthể chỉ định các cài đặt bổ sung như phiên bản API, ngôn ngữ, vị trí, các góiđược chọn, gọi lại và các tham số khác cụ thể cho một API cụ thể Tải độnghoặc tự động tải cũng được hỗ trợ để nâng cao hiệu suất của ứng dụng bằngcách sử dụng API đã tải

1.2.2.4 Tập lệnh Google Apps (Google Apps Script)

Google Apps Script là nền tảng điện toán đám mây cho phép các nhàphát triển viết các tập lệnh có thể điều khiển API của các dịch vụ nhưCalendar, Docs, Drive, Gmail, Sheets và dễ dàng tạo ra các tiện ích bổ sungcho các dịch vụ này bằng các ứng dụng dựa trên chromium (crom)

1.2.2.5 Các trường hợp sử dụng phổ biến (Common use cases)

1 Đăng ký người dùng

- Đăng ký người dùng thông thường được thực hiện thông qua đăngnhập Google+, cho phép người dùng đăng nhập an toàn vào các dịch vụ củabên thứ ba bằng tài khoản Google+ của họ sử dụng API của Google+.Tínhnăng này hiện khả dụng trong Android , iOS hoặc JavaScript Phổ biến baogồm nút “Sign in with Google” trong ứng dụng Android, vì việc nhập bằngchứng xác thực đăng nhập theo cách thủ công tốn nhiều thời gian do kíchthước màn hình giới hạn

-Người dùng thường đăng nhập vào tài khoản Google của họ trên thiết

bị di động nênviệc đăng nhập / đăng ký một dịch vụ mới với Google rất đơngiản chỉ với một vài cú nhấp chuột

2 Drive App

- Ứng dụng Drive là các ứng dụng web khác nhau (thường là bên thứba) hoạt động trong Google Drive sử dụng API Drive

Trang 10

- Người dùng có thể tích hợp các ứng dụng này vào Drive của họ từChrome Store trực tuyến cho phép họ làm việc hoàn toàn trong đám mây.Cónhiều ứng dụng có sẵn cho chỉnh sửa tài liệu (Google Docs, Sheets), chỉnhsửa hình ảnh / video, quản lý công việc hoặc để phác hoạ sơ đồ và quy trìnhcông việc.

4 App Engine apps

- Ứng dụng của App Engine là các ứng dụng web chạy trên máy ứngdụng của Google, nền tảng máy tính điện toán đám mây như một dịch vụ(PaaS) cho phép các nhà phát triển web chạy các trang web của họ trong cáctrung tâm dữ liệu của Google Những ứng dụng web thường tận dụng lợi thếcủa các API để thao tác các dịch vụ như hàng tác vụ (một hàng đợi phânphối), BigQuery (một cơ sở dữ liệu mở rộng dựa trên Dremel) hoặcDataStore

5 Gadgets

- Gadgets là các ứng dụng nhỏ được xây dựng trong HTML,JavaScript, Flash và Silverlight có thể được nhúng trong các trang web và cácứng dụng khác Chúng có thể chạy trên nhiều trang web và sản phẩm

1.3 Tổng quan về ngôn ngữ Python

1.3.1 Lịch sử phát triển

Hiện nay, Python là một trong những ngôn ngữ lập trình đang được chú

ý bởi tính đa dạng về ứng dụng, thư viện phong phú và cộng đồng sử dụngđông đảo Python hỗ trợ hầu hết các nền tảng và rất dễ tìm thấy sẵn trên một

số hệ điều hành như Mac OS Công cụ phát triển: Chỉ cần dùng một texteditor là đã có thể viết được code python hoặc có thể dùng các công cụ caocấp hơn (IDE) như Aptana, PyCharm Các IDE thường hỗ trợ thêm quá trìnhphân tích cú pháp dòng lệnh, debug Quá trình phát triển của Python có thểđược chia thành các giai đoạn sau:

Trang 11

Python 1: Bao gồm các bản phát hành 1.x Giai đoạn này, kéo dài từ

đầu đến cuối thập niên 1990 Từ năm 1990 đến 1995, Guido làm việc tại CWI(Centrum voor Wiskunde en Informatica - Trung tâm Toán-Tin học tạiAmsterdam, Hà Lan) Vì vậy, các phiên bản Python đầu tiên đều do CWI pháthành Phiên bản cuối cùng phát hành tại CWI là 1.2

Vào năm 1995, Guido chuyển sang CNRI (Corporation for NationalResearch Initiatives) ở Reston, Virginia Tại đây, ông phát hành một số phiênbản khác Python 1.6 là phiên bản cuối cùng phát hành tại CNRI

Sau bản phát hành 1.6, Guido rời bỏ CNRI để làm việc với các lập trìnhviên chuyên viết phần mềm thương mại Tại đây, ông có ý tưởng sử dụngPython với các phần mềm tuân theo chuẩn GPL Sau đó, CNRI và FSF (FreeSoftware Foundation - Tổ chức phần mềm tự do) đã cùng nhau hợp tác để làmbản quyền Python phù hợp với GPL Cùng năm đó, Guido được nhận Giảithưởng FSF vì Sự phát triển Phần mềm tự do (Award for the Advancement ofFree Software) Phiên bản 1.6.1 ra đời sau đó là phiên bản đầu tiên tuân theobản quyền GPL Tuy nhiên, bản này hoàn toàn giống bản 1.6, trừ một số sửalỗi cần thiết

Python 2: Vào năm 2000, Guido và nhóm phát triển Python dời đến

BeOpen.com và thành lập BeOpen PythonLabs team Phiên bản Python 2.0được phát hành tại đây Sau khi phát hành Python 2.0, Guido và các thànhviên PythonLabs gia nhập Digital Creations

Python 2.1 ra đời kế thừa từ Python 1.6.1 và Python 2.0 Bản quyền củaphiên bản này được đổi thành Python Software Foundation License Từ thờiđiểm này trở đi, Python thuộc sở hữu của Python Software Foundation (PSF),một tổ chức phi lợi nhuận được thành lập theo mẫu Apache SoftwareFoundation

Python 3: Còn gọi là Python 3000 hoặc Py3K Dòng 3.x sẽ không hoàn

toàn tương thích với dòng 2.x, tuy vậy có công cụ hỗ trợ chuyển đổi từ cácphiên bản 2.x sang 3.x Nguyên tắc chủ đạo để phát triển Python 3.x là "bỏcách làm việc cũ nhằm hạn chế trùng lặp về mặt chức năng của Python".Trong PEP (Python Enhancement Proposal) có mô tả chi tiết các thay đổitrong Python

1.3.2 Các bản thực hiện

Python được viết từ những ngôn ngữ khác, tạo ra những bản hiện thực khácnhau Bản hiện thực Python chính, còn gọi là CPython, được viết bằng C, và

Trang 12

được phân phối kèm một thư viện chuẩn lớn được viết hỗn hợp bằng C vàPython CPython có thể chạy trên nhiều nền và khả chuyển trên nhiều nềnkhác Dưới đây là các nền mà trên đó CPython có thể chạy.

Các hệ điều hành họ Unix: AIX, Darwin, FreeBSD, Mac OS X, NetBSD,Linux, OpenBSD, Solaris,…

Các hệ điều hành dành cho máy desktop: Amiga, AROS, BeOS, Mac OS 9,Microsoft Windows, OS/2, RISC OS

Các hệ thống nhúng và các hệ đặc biệt: GP2X, Máy ảo Java, Nokia 770Internet Tablet, Palm OS, PlayStation 2, PlayStation Portable, Psion, QNX,Sharp Zaurus, Symbian OS, Windows CE/Pocket PC, Xbox/XBMC,VxWorks

Các hệ máy tính lớn và các hệ khác: AS/400, OS/390, Plan 9 from Bell Labs,VMS, z/OS

Ngoài CPython, còn có hai hiện thực Python khác: Jython cho môi trườngJava và IronPython cho môi trường NET và Mono

Trang 13

3 Boolean và Toán tử logic

Giá trị đúng và sai tương ứng là True và False

not để đảo giá trị

and phép tính logic và (AND)

or phép tính logic hoặc (OR)

Một số phép so sánh thông thường như < (bé hơn), <= (bé hơn hoặcbằng), > (lớn hơn), >= (lớn hơn hoặc bằng), == (bằng), != (khác) để so sánh 2giá trị

Hỗ trợ dạng so sánh kép như:

1 < x < 3 # True

10 < x < 20 # False

4 Cấu trúc điều khiển

Python hỗ trợ một số cấu trúc điều khiển thông dụng Hầu hết các cấutrúc điều khiển đều dựa vào thụt đầu dòng (indention) để tạo thành một block

xử lý, thay vì sử dụng { } như các ngôn ngữ khác (PHP, Javascript)

a/Cấu trúc điều khiển if elif else

if condition1 :

indentedStatementBlockForTrueCondition1elif condition2 :

indentedStatementBlockForFirstTrueCondition2else:

while expression:

statement(s)

Trang 14

5 Hàm

Khai báo hàm theo cú pháp:

def functionname(param, param2, ):

a/ Nối chuỗi

Có thể tạo một chuỗi dài từ việc nối các chuỗi lại theo cú pháp:

str = str1 + " " + str2

b/ Trích xuất chuỗi con

Có thể tạo các chuỗi con thông qua toán tử lấy khoảng [start:end](range) Mặc định start là từ vị trí đầu chuỗi ( 0 ) và end là đến vị trí cuốichuỗi

Ví dụ: str = 'Hello world'

print str[0:4]

(Hiển thị "Hell")print str[:4]

(Hiển thị "Hell")print str[-3:]

(Hiển thị "rld")

Ngày đăng: 04/12/2018, 21:23

TỪ KHÓA LIÊN QUAN

w