Hế nhô
Chào các bạn lại là - T - đây C:
Dạo gần đây có 1 thanh niên tên Tâm Nguyễn Tường dám fake bút name của mình để bú fame các bạn report chết đi nhé.
Chúng ta không nên tạo ra những công cụ để chia rẽ đôi lứa như vầy mà thay vào đó là những công cụ giúp gia tăng mật độ dân số, thêm bạn thêm vui
Vậy nên hôm nay - T - sẽ cho ra mắt tập 2: Rekognition kiểm tra độ xinh gái của đối tượng
Recap tập trước:
Mục đích:
- Tăng skill lập trình
- Có thật nhiều Gấu
rất mong được mọi người đón nhận like share subscribe để tác giả có thể xuất bản các tập tiếp theo :>
Tập 2: kiểm tra độ xinh gái của đối tượng
1 cô gái đứng trước tôi mà cúi mặt xuống có nghĩa là cô ấy đang thẹn thùng vì thích tôi, còn nếu tôi mà cúi xuống trước mặt 1 cô gái thì đơn giản là tôi thích…cặp đùi của cô ấy.
Công cụ
- Python - ngôn ngữ lập trình tùy chọn
- AWS Rekognition - dịch vụ phân tích, nhận diện hình ảnh, học máy của aws
Bài toán
Input: Hình ảnh
Output: Xinh or bruhh và % confidence
Nói là machine learning nhưng thực ra mình cũng ko dùng mấy thứ đao to búa lớn nào ở đây cả mà sẽ sử dụng các dịch vụ có sẵn
Dựa vào đề bài thì có thể nói đây là 1 bài toán phân loại (classification) trong machine learning khá cơ bản
OK let's go
Step 1: Chuẩn bị data
Có thể nói đây là step quan trọng nhất trong machine learning.
Tự chuẩn bị hoặc crawl hình ảnh trên mạng về
vd:
pip install BeautifulSoup requests
dùng đoạn code sau để crawl ảnh
import requests
from bs4 import BeautifulSoup
site = '###########'
savePath = 'pretty/'
response = requests.get(site)
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')
urls = [img['src'] for img in img_tags]
counter = 0
for url in urls:
print(url)
counter = counter + 1
filename = str(counter) + '.jpg'
with open(savePath+filename, 'wb') as f:
if not url.startswith('http'):
url = site+url
response = requests.get(url)
f.write(response.content)
Cách này hơi sida vì 1 số trang rất tinh vi có thể block đc hoặc sử dụng image base64, khác patterm vv
Vì vậy mình hay dùng cách thủ công chút như sau:
Save website dưới dạng file html và folder image rồi dùng đoạn code dưới để lọc lấy hình ảnh
import os
path = 'C:\\Users\\4umyo\\Desktop\\GIT\\Prettycheck\\cute_image'
files = os.listdir(path)
for index, file in enumerate(files):
if 'jpg' in file:
os.rename(os.path.join(path, file), os.path.join(path, ''.join([str(index), '.jpg'])))
else:
os.remove(os.path.join(path, file))
Sau khi có được hình ảnh bạn cần lướt qua 1 vòng để xóa những ảnh không liên quan vd: ảnh đàn ông, text, ảnh đông người, vv
Tạo 2 set data cho gái xinh (pretty) và ... (bruhh)
Chuẩn bị 2 data set mỗi bên tầm 100 trở lên (càng nhiều càng tốt)
Dành cho bạn nào lười thì mình sẽ để sẵn data crawl được ở đây 500 ảnh mỗi loại Prettycheck
Step 2: Gán Label
Tạo 1 bucket trên aws S3 và ném 2 cục dataset mà ta vừa chuẩn bị được lên
Di chuyển qua dịch vụ aws Rekognition chọn Custom Label
Tạo data set lấy source từ bucket s3 ở trên
Lưu ý check mục Automatic attach label ... để ảnh của chúng ta được gán label sẵn luôn không thì phải gán tay rất lâu
Step 3: Traning
Qua tab project và tạo 1 project
Bên trong project ta tiến hành train model
Chọn dataset và option split training dataset 80/20 Rekognition sẽ tự động dùng 80% data để train và 20% để test
Tùy vào lượng data set mà thời gian training có thể từ 30p đến vài tiếng
Kết quả:
Sau khi train xong thì model của chúng ta đã có thể phân biệt thế nào là gái xinh rồi đó các bạn :))
Step 4: Check thoyy
Chuyển sang tab Use Model -> Start để bật server (cũng hơi lâu)
Upload file cần check lên S3 và dùng lệnh:
nhớ escape /" đối với window
aws rekognition detect-custom-labels \
--project-version-arn "arn:aws:rekognition:ap-northeast-1:973088304254:project/pretty-checker/version/pretty-checker.2021-07-10T11.00.39/1625882439774" \
--image '{"S3Object": {"Bucket": "MY_BUCKET","Name": "PATH_TO_MY_IMAGE"}}' \
--region ap-northeast-1
Bạn có thể viết 1 trang nodejs đơn giản để invok cli hoặc tạo hẳn 1 site với backend dùng sdk của aws
Rất tiếc là do dịch vụ này của aws giá chát quá 4$/h nên mình không thể triển khai public ra cho mọi người dùng chơi được 🙁
LƯU Ý KHI SỬ DỤNG XONG NHỚ STOP MODEL
A di đà phật
Cái đẹp không nằm ở đôi má hồng của người thiếu nữ, mà ở trong mắt của kẻ lập trình viên
Đôi khi ta hỏi tại sao vẫn chưa có gấu? phải chăng, con số 99% có là quá cao ư? ta hận, ta không bằng lòng, ta thề với non sông sẽ cumback với những công cụ còn mạnh mẽ hơn nữa!
Thân ái và quyết thắng
.- T -
Leave a Reply