Khóa học về "Trí tuệ nhân tạo cho vật lý thiên văn trong kỷ nguyên dữ liệu lớn" được tổ chức tại Đài Thiên văn Paris. Một nửa thời lượng là lý thuyết, một nửa là thực hành. Yêu cầu máy tính sử dụng hệ điều hành Linux và người học có kiến thức về lập trình python. Hiện nay toàn bộ tài liệu của khoa học đã được công khai trên mạng. VLTV xin phép giới thiệu và hướng dẫn cơ bản cách tiếp cận các nội dung của khoá học này.

Tài liệu của khoá học có thể tải về tại đây: deeplearning4astronomy, deeplearning4astro_labs_2019

Thiết lập môi trường

1. Tải tài liệu về máy tính từ Github

git clone https://github.com/aboucaud/deeplearning4astro_labs_2019.git
cd deeplearning4astro_labs_2019

2. Cài đặt Python

Khuyến khích cài đặt gói quản lý môi trường lập trình độc lập conda để tránh xung đột với python đã có sẵn trong máy tính.

conda install -y -c conda conda-env     # Đầu tiên cài conda-env
conda env create                        # Dùng environment.yml để tạo môi trường 'dl4astro19' 
source activate dl4astro19       # Kích hoạt môi trường ảo

Nếu không dùng Conda, thì nên sử dụng môi trường ảo:

python -m pip install -r requirements.txt

3. Nếu máy tính của bạn có đồ hoạ rời NVIDIA và không phải là máy Mac

Kiểm tra xem máy đã có driver nvidia chưa bằng cách chạy thử trong terminal:

nvidia-smi

Nếu chưa có thì cài ở đây. Gói cài đặt này cần truy cập root và model của GPU.

conda install tensorflow-gpu cudatoolkit=9.0

Lý thuyết buổi 1

Các bạn đọc tài liệu theo các liên kết sau:

Lý thuyết buổi 2

Các bạn đọc tài liệu theo các liên kết sau:

Thực hành: Hình thái các thiên hà SDSS

Mục tiêu của bài thực hành là dùng cả học máy "cổ điển" và học sâu (CNN) để phân loại các thiên hà SDSS thành elip (loại sớm) và xoắn ốc (loại muộn). Chúng ta cũng có thể thử phân loại chi tiết hơn.

Thiết lập môi trường

• Thực hiện các bước 1, 2 (+3 nếu có GPU) ở phần trước nếu chưa làm.
• Chạy môi trường ảo:

source activate dl4astro19

• Chuyển đến thư mục:

cd deeplearning4astro_labs_2019/morphology

• Cài Pillow nếu cần:

conda install -c intel pillow

• Mở jupyter notebook:

jupyter notebook&

Dữ liệu

• Tập huấn luyện là bảng phân loại trực quan chi tiết của khoảng 14.000 thiên hà SDSS của Nair & Abraham2010.

Cột TType cho giá trị phân loại trực quan như sau: -5--> E -3 to -2 --> S0 0 --> S0/a 1 --> Sa 2 --> Sab 3 --> Sb 4 --> Sbc 5 --> Sc 7 --> Sd 8 --> Im v.v...

• Đối với phương pháp "nông", chúng ta sẽ sử dụng số liệu trong catalog đã cho, bao gồm các tham số cấu trúc (kích thước v.v...), màu sắc, SFR (tốc độ hình thành sao) và các đặc tính khác.

Code: Jupyter notebook

Thuật toán ở đây là Rừng Ngẫu nhiên (Random Forest) và Mạng Neuron Nhân tạo (Artificial Neuron Network), dùng thư viện scikit-learn.

• Đối với phương pháp "sâu", đầu vào là ảnh jpeg, tải về tại đây và giải nén trong folder morphology. Tên file trùng với ID trong catalog.

Code: Jupyter notebook

Thuật toán ở đây là Mạng Neuron Chập (Convolutional Neural Network) chứa vài lớp dùng thư viện Keras.

Lý thuyết buổi 3

Các bạn đọc tài liệu theo liên kết sau:

Lý thuyết buổi 4

Các bạn đọc tài liệu theo các liên kết sau:

Thực hành: Phân tách thiên hà

Mục tiêu của bài thực hành là tạo ra các mô hình học sâu nhằm phân tách các thiên hà chồng lấp trong ảnh, đầu tiên là phát hiện và sau đó là hồi quy hình ảnh.

1. Kích hoạt môi trường

conda activate dlastro19

2. Cài đặt bộ công cụ

cd labs/deblending
pip install .

3. Tải dữ liệu

python download_data.py        # bộ dữ liệu "mini" ~ 60 MB
python download_data.py full   # bộ dữ liệu hoàn chỉnh ~ 4 GB

Bộ dữ liệu mini chỉ để chạy thử xem có lỗi hay không. Máy phải có GPU mới chạy nổi bộ dữ liệu hoàn chình.

4. Tạo mô hình như tệp alex_testfcnn.py (tên tệp có 2 phần cách nhau bởi dấu "_")

5. Chạy mô hình

python main_detection.py alex_testfcnn.py

Minh họa: Jupyter notebook

Trong trường hợp máy không có GPU, có thể sử dụng Colaboratory của Google:

1. Mở Google Colaboratory: https://colab.research.google.com

2. Vào tab "Github", nhập notebook dưới đây rồi ấn nút "Search" bên cạnh: link.

3. Vào menu "Runtime" > "Change runtime type", trong mục "Hardware accelerator" chọn "GPU".

4. Sửa lại phần "Data" và "Load data" như sau để chạy dữ liệu hoàn chỉnh:

#main(output_dir='data', full=False)                
main(output_dir='data', delete=True, full=True)
datadir = "data"
#suffix = "_mini"
suffix = ""
X_train = np.load(os.path.join(datadir, f"train_blends{suffix}.npy"), mmap_mode='r')
Y_train = np.load(os.path.join(datadir, f"train_target_masks{suffix}.npy"), mmap_mode='r')
Y_train = Y_train[:,1,...]

X_test = np.load(os.path.join(datadir, f"test_blends{suffix}.npy"), mmap_mode='r')
Y_test = np.load(os.path.join(datadir, f"test_target_masks{suffix}.npy"), mmap_mode='r')
Y_test = Y_test[:,1,...]

5. Chạy notebook

Chúc các bạn thành công!

Author: Nguyễn Tùng Lâm
Thành viên Hội thiên văn Nghiệp dư Hà Nội (HAS), Nghiên cứu sinh ngành Vật lý thiên văn tại Đài thiên văn Meudon, Đài thiên văn Paris.