200 Artificial Intelligence Jika Anda tahu sesuatu tentang pengembangan untuk komputer, Anda mungkin tahu komputer membaca data dalam format biner. Data dinyatakan sebagai rangkaian panjang dari satu dan nol seperti 101011001110001010111, dan sebagainya. Jadi, bagaimana komputer dapat membaca gambar yang kompleks hanya sebagai serangkaian satu dan nol? Jika Anda memperbesar data dalam gambar, Anda akan menemukan gambar dalam foto diwakili dalam file gambar sebagai piksel. Setiap piksel adalah warna tertentu yang memiliki kode unik. Setelah komputer mengonversi foto menjadi gambar dengan kodekode ini, komputer dapat membaca dan menguraikan data piksel biner. Berikut adalah contoh yang menunjukkan cara komputer mengubah foto menjadi serangkaian angka dalam file gambar: Menampilkan foto di Jupyter Notebook Sekarang kita akan melihat beberapa gambar yang kita muat ke dalam komputer. Kami akan memberi mereka label untuk menunjukkan jenis batuan apa di setiap foto.
201 Artificial Intelligence a) Mengubah dan menampilkan gambar Di bagian ini, kita akan menambahkan kode untuk mencocokkan setiap gambar batu dengan jenis bebatuan, berdasarkan folder gambar. Kami memanggil transforms.Compose kelas lagi untuk mengubah setiap gambar menjadi piksel dan mengubah ukurannya menjadi dimensi pilihan kami. Kami memilih sekumpulan gambar secara acak dengan cara yang mirip dengan cara kami menggunakan load_split_train_test dan SubsetRandomSampler fungsi dalam latihan terakhir. Kode berulang pada gambar yang diacak dalam kumpulan data pengujian. Bagian terakhir kode menampilkan gambar yang dimuat ke dalam program. Kami menggunakan fungsi dari pustaka PIL untuk memanipulasi gambar, dan plt.show perintah untuk mencetaknya. b) Menambahkan kode untuk mengubah dan memilih gambar secara acak Kami siap untuk menambahkan kode untuk mengubah gambar. 1. Kembali ke Visual Studio Code, dan buka file Jupyter Notebook Anda. 2. Tambahkan kode berikut di sel baru. Setelah Anda menambahkan kode baru, jalankan sel. # Transform an image into pixels and resize it test_transforms = transforms.Compose([ transforms.RandomResizedCrop(224), transforms.Resize(224), transforms.ToTensor(), ]) # Randomly select a set of images by using a similar approach as the load_split_train_test function def get_random_images(num): data = datasets.ImageFolder(data_dir, transform=test_transforms) classes = data.classes
202 Artificial Intelligence indices = list(range(len(data))) np.random.shuffle(indices) idx = indices[:num] from torch.utils.data.sampler import SubsetRandomSampler sampler = SubsetRandomSampler(idx) loader = torch.utils.data.DataLoader(data, sampler=sampler, batch_size=num) # Create an iterator to iterate over the shuffled images in the test image dataset dataiter = iter(loader) # Get and return the images and labels from the iterator images, labels = dataiter.next() return images, labels c) Menambahkan kode untuk menampilkan gambar yang dipilih secara acak Ikuti langkah-langkah ini untuk menambahkan kode untuk menampilkan gambar. 1. Tambahkan kode berikut di sel baru. Setelah Anda menambahkan kode baru, jalankan sel. # Show five images - you can change this number images, labels = get_random_images(5) # Convert the array of pixels to an image to_pil = transforms.ToPILImage() fig=plt.figure(figsize=(20,20)) # Get a list of all classes in the training data classes=trainloader.dataset.classes
203 Artificial Intelligence # Draw the images in a plot to display in the notebook for ii in range(len(images)): image = to_pil(images[ii]) sub = fig.add_subplot(1, len(images), ii+1) plt.axis('off') plt.imshow(image) # Display all of the images plt.show() 2. Masukkan Ctrl + S untuk menyimpan perubahan ke file Jupyter Notebook Anda. Setelah menjalankan kode baru ini, Anda akan melihat lima gambar yang dibersihkan dalam output. Kode diatur untuk menampilkan lima gambar, tetapi Anda dapat mengubah angkanya. 4. Klasifikasikan jenis batuan luar angkasa dalam foto acak menggunakan kecerdasan buatan Kita akan mempelajari cara membuat model kecerdasan buatan yang dapat memprediksi jenis batuan luar angkasa dalam gambar. Kita akan melatih dan menguji model menggunakan gambar-gambar acak untuk mengklasifikasikan batuan-batuan tersebut. Pada tahap ini, data telah berhasil diimpor, dibersihkan, dan siap untuk digunakan dalam pelatihan dan pengujian. Anda sekarang dapat mulai membuat dan melatih model kecerdasan buatan (AI) dengan menggunakan data. Pustaka-pustaka yang telah Anda impor akan menangani sebagian besar tugas yang kompleks. Tugas Anda adalah memberi instruksi kepada komputer tentang cara melatih model agar dapat membuat prediksi. Anda akan membangun model AI menggunakan jaringan saraf (neural network). Model ini akan dirancang untuk mengidentifikasi jenis batu ruang angkasa dalam gambar. Proses ini akan melibatkan penggunaan Visual
204 Artificial Intelligence Studio Code, bahasa pemrograman Python, dan Jupyter Notebook untuk membangun, melatih, dan menguji model tersebut. 1) Mengekstrak fitur dari gambar untuk pemrosesan AI Kita telah membersihkan dan memisahkan data pada program kita. Sekarang kita siap untuk melatih komputer untuk mengenali fitur-fitur dari berbagai jenis batuan ruang angkasa. Untuk melatih komputer, Anda harus mengekstrak fitur dari gambar. Langkah ini mungkin kurang masuk akal. Otak kita secara otomatis mengekstrak fitur dari gambar, jadi kita biasanya tidak menyadari aktivitas tersebut. Kita telah mempelajari bahwa setiap gambar adalah kumpulan piksel, dan piksel diwakili oleh angka. Untuk melatih model, kita akan meninjau setiap gambar sebagai matriks angka. Untuk mengekstrak fitur dari sebuah gambar, kita mengalikan gambar dengan filter. Setiap filter digunakan untuk mengekstrak sebuah fitur tertentu. Pada foto berikut, kita melihat filter bergerak di atas gambar untuk mengekstrak fitur seperti tepi, kurva, dan tekstur batu. Kita akan menggunakan 32 filter untuk mengklasifikasikan batuan dalam model kita, tetapi ada banyak filter lain yang tersedia. 2) Membangun jaringan neural untuk mengklasifikasikan batuan ruang angkasa Kita akan membangun jaringan neural (atau jaringan pembelajaran dalam) untuk mempelajari asosiasi antara fitur dan setiap jenis batuan. Fitur dapat mencakup hal-hal seperti kurva, tepi, dan tekstur. a) Neuron dan jaringan kabel Jaringan neural memproses informasi yang mirip dengan cara kerja otak kita. Otak kita memiliki neuron atau sel saraf yang mengirimkan dan memproses informasi dari indra kita. Banyak sel saraf diatur sebagai jaringan saraf di otak.
205 Artificial Intelligence Saraf tersebut melewati impuls listrik dari satu neuron ke neuron berikutnya dalam jaringan. Jaringan neural memiliki jutaan neuron dan saraf. Untuk membangun jaringan neural yang berfungsi, kami menyambungkan neuron dan saraf bersamasama dalam dua langkah: Langkah A Bangun semua neuron. Langkah B Ikat neuron dengan cara yang tepat. (Ada ribuan cara untuk menyambung neuron). Dalam model kami, kami akan mengumpulkan fitur untuk sebuah batuan dari gambar dan menyimpannya sebagai urutan parameter linier. Langkah ini membangun satu neuron. Setiap gambar baru yang dianalisis adalah neuron lain. Kami menyediakan data pelatihan untuk komputer kami untuk membangun semua neuron. Kemudian kita akan memberi tahu komputer untuk menggabungkan urutan tersebut ke dalam matriks. Matriks tersebut mewakili pola terbaik yang kita miliki untuk menggambarkan fitur untuk jenis batuan ruang angkasa. Matriks ini adalah jaringan kabel. Kita akan melatih model kita untuk memprediksi jenis batuan tersebut. Kita akan membandingkan fitur batuannya dalam gambar baru dengan pola matriks. Setiap kali kita menjalankan model tersebut, matriks akan tumbuh dan akurasi prediksi meningkat. Tujuan kami adalah menguji model dan mencapai akurasi prediksi mendekati 100%. b) Periksa lingkungan kerja Anda Sebelum Anda dapat menambahkan kode baru ke model AI Anda, kami perlu memastikan lingkungan pengembangan Anda masih aktif. Jika Anda menutup prompt Anaconda, atau Visual Studio Code, Anda perlu menghidupkan ulang. Anda harus mengkonfigurasi lingkungan untuk terus mengerjakan model AI Anda. Jika prompt Anaconda Anda masih terbuka dari pekerjaan Anda untuk
206 Artificial Intelligence modul sebelumnya, dan Anda belum menutup Visual Studio Code, lanjutkan ke bagian, Membuat jaringan neural. c) Memverifikasi lingkungan Anaconda Anda (myenv) Jika Anda menutup prompt Anaconda Anda setelah menyelesaikan latihan di modul sebelumnya, ikuti langkah-langkah ini untuk menghidupkan ulang lingkungan Anda. 1. Mulai aplikasi prompt Anaconda (atau terminal di Mac). 2. Pada prompt Anaconda, masukkan perintah berikut untuk mengaktifkan lingkungan Anda: conda activate myenv 3. Gunakan perintah berikut untuk memeriksa penginstalan paket torchvision: conda install -c pytorch torchvision Sistem akan melaporkan bahwa semua paket yang diminta sudah diinstal. Anda dapat mengabaikan peringatan tentang versi Anaconda (conda). d) Hidupkan ulang Visual Studio dan kernel Python Jika Anda me-refresh lingkungan Anaconda dengan mengikuti langkahlangkah sebelumnya, atau Anda menutup Visual Studio Code setelah menyelesaikan latihan di modul sebelumnya, Anda perlu menghidupkan ulang aplikasi dan kernel Python myenv. 1. Hidupkan ulang Visual Studio Code. 2. Buka file Jupyter Notebook yang Anda buat sebelumnya. Dalam modul sebelumnya, kami menamai file Jupyter Notebook kami ClassifySpaceRockProgram.ipynb. 3. Mulai kernel Jupyter Python myenv. Di sudut kanan atas dan kiri bawah Visual Studio, ubah ke lingkungan Anaconda ('myenv') yang Anda buat di modul terakhir. e) Menjalankan ulang sel dalam file Jupyter Notebook Anda Jika Anda me-refresh lingkungan Anaconda atau menghidupkan ulang Visual Studio Code, Anda perlu menjalankan sel yang ada di file Jupyter Notebook Anda sebelum Anda bisa menambahkan sel kode baru.
207 Artificial Intelligence 1. Untuk menjalankan ulang sel dalam file Jupyter Notebook Anda, mulai dari sel pertama dalam file Notebook. 2. Jalankan setiap sel dalam Buku Catatan secara berurutan, dari sel pertama dalam file hingga yang terakhir. 3. Jika tidak ada kesalahan, lanjutkan ke bagian berikutnya, Membuat jaringan neural. f) Memecahkan masalah kesalahan lingkungan Berikut adalah beberapa tips untuk membantu memecahkan masalah kesalahan dalam proses penyiapan: 1. Jika Anda menerima kesalahan saat menjalankan sel yang sudah ada di file Jupyter Notebook Anda, pastikan Anda mengikuti semua langkah di bagian ini: a) Hidupkan ulang lingkungan Anaconda Anda. Aktifkan myenv. Periksa penginstalan torchvision. b) Hidupkan ulang Visual Studio Code. Hidupkan ulang kernel Jupyter myenv Python. c) Jalankan sel yang sudah ada di file Jupyter Notebook Anda, dari sel pertama hingga yang terakhir. 2. Jika Anda menerima kesalahan tentang perintah atau pustaka tertentu, Anda mungkin perlu me-refresh pustaka melalui lingkungan prompt Anaconda Anda. Pastikan lingkungan prompt Anaconda menunjukkan bahwa semua pustaka telah diunduh dan diinstal. Ikuti langkah untuk Mengunduh pustaka AI Python seperti yang dijelaskan dalam modul sebelumnya. 3. Jika Anda melihat kesalahan dalam Visual Studio Code, coba hidupkan ulang aplikasi, hidupkan ulang kernel myenv, dan jalankan sel yang ada di file Jupyter Notebook. 4. Jika memungkinkan, coba selesaikan latihan untuk semua modul di jalur Pembelajaran dalam satu sesi. Cobalah untuk tidak menutup lingkungan prompt Anaconda atau Visual Studio Code Anda. g) Membuat jaringan neural
208 Artificial Intelligence Setelah mengkonfirmasi bahwa lingkungan Anda aktif, Anda siap untuk membuat jaringan neural untuk model AI Anda. h) Mendeteksi jenis perangkat Kami perlu membantu komputer Anda menentukan cara paling efisien untuk membuat jaringan pemelajaran mendalam. Pertama, kita perlu menemukan jenis perangkat yang Anda gunakan: CPU atau GPU. API PyTorch menawarkan dukungan untuk membentuk jaringan neural sesuai dengan jenis perangkat. Tambahkan kode berikut dalam sel baru, lalu jalankan sel. # Determine if you're using a CPU or a GPU device to build the deep learning network device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model = models.resnet50(pretrained=True) Setelah sistem mendeteksi perangkat Anda, sistem akan mengunduh struktur model yang sesuai ke lokasi penginstalan PyTorch di komputer Anda. i) Membangun neuron dan menyambungkan jaringan Mari kita tambahkan kode ke file Jupyter Notebook Anda untuk membangun neuron dan menyambungkan jaringan. Tambahkan kode berikut dalam sel baru, lalu jalankan sel. # Build all the neurons for param in model.parameters(): param.requires_grad = False # Wire the neurons together to create the neural network model.fc = nn.Sequential(nn.Linear(2048, 512), nn.ReLU(), nn.Dropout(0.2), nn.Linear(512, 2), nn.LogSoftmax(dim=1))
209 Artificial Intelligence criterion = nn.NLLLoss() optimizer = optim.Adam(model.fc.parameters(), lr=0.003) # Add the neural network to the device model.to(device) print('done') Ketika build selesai, output untuk perintah menunjukkan bahwa proses selesai: Output done Jaringan neural akan bolak-balik berkali-kali sampai jaringan tersebut mempelajari asosiasi terbaik (kabel) antara fitur dan jenis batuan. 5. Melatih jaringan neural untuk mengklasifikasikan batuan ruang angkasa dalam foto secara akurat Kita sekarang memiliki model AI yang menggabungkan jaringan neural. Kami memberikan beberapa data ke program kami untuk mengajarkannya berbagai fitur
210 Artificial Intelligence batuan ruang angkasa. Program ini memiliki banyak neuron dan mereka terhubung bersama dalam jaringan pembelajaran mendalam. Sekarang saatnya untuk melatih program kita. Kami akan menggunakan data pelatihan kami dari NASA. Kami akan menambahkan kode untuk membantu program kami menjadi akurat dalam mengklasifikasikan batuan ruang angkasa. 1) Iterasi pada data dan tingkatkan akurasi Di bagian kode ini, cari epochs variabel. Variabel ini memberi tahu program berapa kali untuk mencari asosiasi dalam fitur. Dalam contoh kami, kami akan mengatur jumlah awal perulangan menjadi 5. Catatan Anda dapat meningkatkan jumlah iterasi untuk lebih meningkatkan akurasi model. Perlu diingat bahwa meningkatkan jumlah iterasi membuat kode berjalan lebih lambat. Untuk melatih model, kami memuat input gambar dari trainloader variabel yang kami bangun dalam analisis gambar batuan dengan modul AI. Data disimpan ke perangkat yang sudah dipilih. Kami memanggil optimizer.zero_grad() fungsi untuk nol gradien dan menghindari akumulasi gradien di seluruh iterasi pelatihan. Input gambar diteruskan melalui model dengan menggunakan model.forward(inputs) fungsi, yang mengembalikan probabilitas log dari setiap label. Fungsi ini criterion(logps, labels) menjalankan probabilitas log melalui kriteria untuk mendapatkan grafik output. Fungsi ini loss.backward() menggunakan grafik kerugian untuk menghitung gradien. Fungsi ini optimizer.step() kemudian memperbarui parameter berdasarkan gradien saat ini. Selama pelatihan dan pengujian, kami melacak nilai kerugian untuk setiap iterasi dan batch penuh. Setiap lima epochs, kami mengevaluasi model. Kami menggunakan model.eval() fungsi dengan torch.no_grad() fungsi untuk menonaktifkan bagian model yang ber perilaku berbeda selama pelatihan versus evaluasi. Kami menggunakan sepasang fungsi ini untuk menyempurnakan akurasi prediksi tanpa memperbarui gradien.
211 Artificial Intelligence Fungsi ini torch.exp(logps) digunakan untuk mendapatkan tensor baru dengan probabilitas sejati. Probabilitas terbesar dan kelas tensor baru di sepanjang dimensi tertentu dikembalikan dari ps.topk(1, dim=1) fungsi. Tensor dibentuk ulang agar sesuai dengan bentuk yang sama dengan kelas atas. Akhirnya, kita menghitung akurasi keseluruhan. 2) Latih jaringan neural Ikuti langkah-langkah ini untuk melatih jaringan neural dalam model AI Anda. 1. Kembali ke Visual Studio Code, dan buka file Jupyter Notebook Anda. Dalam contoh kami, kami menggunakan file ClassifySpaceRockProgram.ipynb. 2. Pastikan Anda menjalankan kernel Jupyter yang benar. Di sudut kanan atas dan kiri bawah Visual Studio, ubah ke lingkungan Anaconda ('myenv') yang Anda buat di modul terakhir. 3. Tambahkan kode berikut dalam sel baru, lalu jalankan sel. # Set the initial number of iterations to search for associations epochs = 5 print_every = 5 # Initialize the loss variables running_loss = 0 train_losses, test_losses = [], [] # Track the current training step, start at 0 steps = 0 # Search for associations in the features
212 Artificial Intelligence for epoch in range(epochs): # Count each epoch epoch += 1 # Load in all of the image inputs and labels from the TRAIN loader for inputs, labels in trainloader: # Count each training step steps += 1 print('Training step ', steps) # Load the inputs and labels to the already selected device inputs, labels = inputs.to(device), labels.to(device) # Zero out gradients to avoid accumulations of gradiants across training iterations optimizer.zero_grad() # Pass the images through the model, return the log probabilities of each label logps = model.forward(inputs) # Run the log probabilities through the criterion to get the output graph loss = criterion(logps, labels) # Use the loss graph to compute gradients
213 Artificial Intelligence loss.backward() # Update the parameters based on the current gradient optimizer.step() # Add the actual loss number to the running loss total running_loss += loss.item() # Every 5 steps, evaluate the model if steps % print_every == 0: # Initialize loss and accuracy test_loss = 0 accuracy = 0 # Start the model evaluation model.eval() # Refine the accuracy of the prediction without updating the gradients with torch.no_grad(): # Load in all of the image inputs and labels from the TEST loader for inputs, labels in testloader:
214 Artificial Intelligence # Load the inputs and labels to the already selected device inputs, labels = inputs.to(device), labels.to(device) # Pass the images through the model, return the log probabilities of each label logps = model.forward(inputs) # Run the log probabilities through the criterion to get the output graph batch_loss = criterion(logps, labels) # Add the actual loss number to the running loss total for the test batch test_loss += batch_loss.item() # Return a new tensor with the true probabilities ps = torch.exp(logps) # Return the largest probability and class of the new tensor along a given dimension top_p, top_class = ps.topk(1, dim=1) # Reshape the tensor to match the same shape as the top class equals = top_class == labels.view(*top_class.shape)
215 Artificial Intelligence # Compute the accuracy and add it to the running accuracy count for the test batch accuracy += torch.mean(equals.type(torch.FloatTensor)).item() # Append the training and testing losses train_losses.append(running_loss/len(trainloader)) test_losses.append(test_loss/len(testloader)) # Display the accuracy of the prediction with 3 digits in the fractional part of the decimal print(f"\n Epoch {epoch}/{epochs}: " f"Train loss: {running_loss/print_every:.3f}.. " f"Test loss: {test_loss/len(testloader):.3f}.. " f"Test accuracy: {accuracy/len(testloader):.3f}\n") # Train the model running_loss = 0 model.train() # After 5 training steps, start the next epoch # Break here in case the trainloader has remaining data break Saat build berlangsung, output menunjukkan setiap langkah pelatihan dan epoch selesai:
216 Artificial Intelligence Output Training step 1 Training step 2 Training step 3 Training step 4 Training step 5 Epoch 1/5: Train loss: 0.550.. Test loss: 0.282.. Test accuracy: 0.902 Training step 6 Training step 7 Training step 8 Training step 9 Training step 10 Epoch 2/5: Train loss: 0.451.. Test loss: 0.311.. Test accuracy: 0.842 Training step 11 Training step 12 Training step 13 ... Apakah Anda melihat output untuk setiap epoch berturut-turut membutuhkan waktu sedikit lebih lama untuk ditampilkan daripada yang sebelumnya? 3) Analisa output pelatihan Setelah lima epoch selesai, sistem mencapai batas kami epoch.
217 Artificial Intelligence Output ... Training step 19 Training step 20 Epoch 4/5: Train loss: 0.216.. Test loss: 0.189.. Test accuracy: 0.906 Training step 21 Training step 22 Training step 23 Training step 24 Training step 25 Epoch 5/5: Train loss: 0.234.. Test loss: 0.175.. Test accuracy: 0.935 Output menunjukkan akurasi prediksi untuk setiap iterasi epoch dengan pelatihan dan pengujian kerugian, dan akurasi pengujian. Berikut adalah hasil dari tes kami dengan lima epoch. Hasil spesifik Anda akan berbeda karena komputer memilih sekumpulan gambar acak untuk setiap eksekusi pengujian. Hasilnya mengungkapkan kehilangan pelatihan, kehilangan pengujian, dan akurasi, semua tergantung pada gambar yang dipilih.
218 Artificial Intelligence 6. Menentukan akurasi jaringan neural dalam mengklasifikasikan batuan ruang angkasa Alasan kami menggunakan AI untuk membantu penelitian batu ruang angkasa adalah untuk meningkatkan prediksi. Ketika model melihat gambar baru batuan, model harus memprediksi jenis batuan yang benar berdasarkan gambar yang sudah terlihat. Kami ingin prediksi sedekat mungkin dengan 100% akurat. Model AI yang dilatih dengan baik harus lebih akurat memprediksi hasilnya daripada manusia. 1) Menampilkan akurasi model Dalam contoh kami, perintah accuracy mengungkapkan seberapa besar kemungkinan komputer dapat mengidentifikasi jenis batuan dengan benar dalam gambar berdasarkan definisi ilmiah. Nilai akurasi 0,96 berarti 96% jenis batuan diprediksi dengan benar dan 4% salah diklasifikasikan. Kode berikut menghitung dan menampilkan akurasi model AI kami untuk mengklasifikasikan jenis batuan. Anda mungkin mengenali pernyataan ini dari kode terakhir yang kami tambahkan ke file Notebook Jupyter Anda. Tambahkan kode ini di sel baru di file Notebook Jupyter Anda, lalu jalankan sel: print(accuracy/len(testloader)) Output menampilkan akurasi dengan 16 digit di bagian pecahan desimal: Output 0.9354166686534882
219 Artificial Intelligence Output menunjukkan model kami memiliki akurasi 93,5% dalam membuat prediksi. Kami ingin nilai tinggi. Semakin tinggi akurasi berarti model melakukan pekerjaan yang baik untuk membuat prediksi. Meskipun 93,5% tinggi, Anda dapat melakukan beberapa hal untuk meningkatkan akurasi lebih banyak lagi: 1. Tambahkan lebih banyak gambar dan lanjutkan pelatihan model AI. 2. Tingkatkan jumlah perulangan pelatihan epoch untuk pembelajaran mendalam. 2) Menyimpan model Sekarang setelah Anda membuat jaringan neural dan menguji akurasi, simpan model Anda. Tambahkan kode berikut dalam sel baru di file Notebook Jupyter Anda, lalu jalankan sel: torch.save(model, 'aerialmodel.pth') 7. Memprediksi jenis batu ruang angkasa pada foto acak Mari kita gunakan model kita untuk memprediksi jenis batu. Untuk memprediksi jenis batuan dalam gambar baru, kita harus menyelesaikan langkah-langkah ini: Langkah 1 Mengonversi gambar baru menjadi angka. Gunakan fungsi test_transforms yang Anda buat untuk mengubah gambar ke model. Langkah 2 Ubah gambar. Pangkas dan ubah ukuran gambar menjadi 224 × 224 piksel dengan fungsi unsqueeze dan Variable. Langkah 3 Ekstrak fitur dan karakteristik gambar tersebut. Teruskan gambar ke dalam model untuk melakukan ekstraksi. Langkah 4 Prediksi jenis batuan yang ditampilkan pada gambar. Gunakan asosiasi yang kita pelajari di Langkah 2 dengan menemukan prediksi probabilitas tertinggi dari hasil model.
220 Artificial Intelligence 1) Menggunakan model untuk membuat prediksi Ikuti langkah-langkah ini untuk membuat prediksi dengan jaringan neural dalam model AI Anda. 1. Pertama, kita memuat jaringan neural. Tambahkan kode berikut pada sel baru di file Notebook Jupyter Anda, lalu jalankan sel: device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model=torch.load('aerialmodel.pth') 2. Selanjutnya, kita membuat fungsi untuk memprediksi jenis batuan dalam gambar baru dengan membandingkannya dengan pola matriks model kita. Tambahkan kode berikut pada sel baru di file Notebook Jupyter Anda, lalu jalankan sel: def predict_image(image): image_tensor = test_transforms(image).float() image_tensor = image_tensor.unsqueeze_(0) input = Variable(image_tensor) input = input.to(device) output = model(input) index = output.data.cpu().numpy().argmax() return index Anda telah menentukan fungsi prediksi gambar. Kini Anda dapat melanjutkan ke latihan akhir dan memanggil fungsi ini untuk memprediksi jenis batuan dalam gambar. 8. Menguji jaringan neural yang mengklasifikasikan foto batu ruang angkasa Anda akhirnya siap untuk menguji model AI Anda yang sudah selesai! Mari kita lihat sebaik apa model Anda untuk memprediksi jenis batuan dengan benar. Kita mulai dengan memberi tahu komputer untuk memilih lima gambar secara acak untuk pengujian pertama. Anda dapat memilih sejumlah gambar untuk diuji. Setelah pengujian pertama, kita akan menjalankan kode lagi dengan gambar lebih banyak.
221 Artificial Intelligence Kita menggunakan data dari variabel trainloader lagi, dan meneruskan setiap gambar ke fungsi untuk mengekstrak fitur batuan dari foto. Komputer lalu membandingkan fitur tersebut dengan pola yang dikenali oleh model. Dengan informasi tersebut, model bisa memprediksi jenis batuan dalam foto. Langkah terakhir adalah menggunakan fungsi plt untuk memplot grafik hasil prediksi. 1) Memprediksi jenis batuan dalam gambar acak Ikuti langkah-langkah ini untuk menguji akurasi prediksi jaringan neural dalam model AI Anda. 1. Tambahkan kode berikut dalam sel baru di file Notebook Jupyter Anda, lalu jalankan sel tersebut: # Get five random images and display them in a figure with their labels to_pil = transforms.ToPILImage() images, labels = get_random_images(5) fig=plt.figure(figsize=(20,10)) # Load all of the classes from the training loader classes=trainloader.dataset.classes # Loop through the 5 randomly selected images for ii in range(len(images)): # Predict the class of each image image = to_pil(images[ii]) index = predict_image(image) # Add the class to the plot graph to display beneath the image sub = fig.add_subplot(1, len(images), ii+1) res = int(labels[ii]) == index sub.set_title(str(classes[index]) + ":" + str(res))
222 Artificial Intelligence plt.axis('off') plt.imshow(image) # Reshow the plot with the predicted labels beneath the images plt.show() Kode ini membuat visual gambar dengan label untuk menunjukkan jenis batuan aktual dan prediksi model: Benar atau Salah. Prediksi menunjukkan apakah sistem AI Anda mengklasifikasikan jenis batuan dengan benar. 2. Coba tes lain. Di sel yang Anda tambahkan di langkah sebelumnya, ubah jumlah gambar untuk diuji menjadi 10, lalu jalankan sel lagi: ... images, labels = get_random_images(10) ... Apakah Anda melihat ada peningkatan dalam akurasinya? 3. Klik Ctrl + S untuk menyimpan perubahan ke file Jupyter Notebook Anda.
223 Artificial Intelligence Selamat! Anda telah berhasil membangun jaringan neural yang berfungsi untuk memprediksi jenis objek dalam gambar. Anda memiliki model AI yang mengklasifikasikan jenis batuan Bulan yang dikumpulkan oleh NASA. Kecerdasan buatan menggabungkan data dalam jumlah besar dengan cara kreatif untuk memahami, mengklasifikasikan, dan mengkontekstualisasikan. Para ilmuwan menggunakan AI untuk membantu meningkatkan analisis mereka dan mencapai kesimpulan yang benar. Jika Anda memiliki kesempatan untuk menjadi ahli batuan ruang angkasa, nantinya Anda dapat mempelajari cara mengklasifikasikan gambar batuan. Ketika Anda menggunakan AI dalam penelitian Anda, Anda mendapatkan keahlian para ilmuwan yang telah ke Bulan, dan pulang!
224 Artificial Intelligence DAFTAR PUSTAKA Jamaaluddin, & Indah, S. (2021). Buku Ajar Kecerdasan Buatan. Umsida Press, 121. Mubarak, M. (1991). Pengantar Kecerdasan Buatan ( Artificial Intelligence). In Pengantar Kecerdasan Buatan (Vol. 5, Issue 2). https://doi.org/10.1002/1521- 3773(20010316)40:6<9823::AID-ANIE9823>3.3.CO;2-C Munarto, R. (2018). Sistem Pakar Diagnosis. Raissa, 14(1), 75–86. Ratnawati, D and Liliana, D and Regasari, R and Muflikhah, L. (2012). Modul Bahan Ajar Kecerdasan Buatan. Program Teknologi Innformasi Dan Ilmmu Komputer Universitas Brawijaya, 12. Susatyono, J. D. (2021). Sistem Pakar : Kajian Konsep & Penerapannya. Suyanto. (2021). Intelijensia Buatan. Cognitive Science, 1–316. https://learn.microsoft.com/id-id/training/paths/classify-space-rocks-artificial-intelligencenasa/
225 Artificial Intelligence