## MEMECAHKAN CAPTCHA-TEXT TERDISTORSI DENGAN CONVOLUTIONAL NEURAL NETWORK
Muhammad Akbar Yasin 1*
1 Program Studi Sistem dan Teknologi Informasi, Universitas Muhammadiyah Kendari email : akbar.yasin@umkendari.ac.id 1*
Abstrak : Di awal kemunculanya, CAPTCHA- text menggunakan teks terdistorsi yang sulit dipecahkan oleh teknologi OCR. Seiring  dengan  perkembangan  teknologi AI , machine  learning dan  pengolahan  citra  untuk  membedakan  antara  interaksi manusia dan “ bot ” terhadap suatu program menjadi lebih menantang. CAPTCHA jenis terbaru yang lebih canggih saat ini pun sudah tersedia untuk menghindari resiko dari penggunaan CAPTCHgamA- text yang bisa dianggap tidak  relevan lagi untuk mengamakan  suatu  website.  Namun,  sampai  saat  ini  masih  dapat  dijumpai  beberapa  website  yang  masih  menggunakan CAPTCHA- text .  Paper  ini  berisi  tentang  hasil  eksperimen  membangun  “ bot ”  cerdas  untuk  memecahkan  CAPTCHA  teks terdistorsi. Convolutional Neural Network dipilih sebagai pendekatan untuk studi ini karena performanya terbukti sangat baik untuk aplikasi pengenalan objek ( object recognition ). Arsitektur CNN yang digunakan untuk penelitian ini terdiri dari tiga convolutional laye r, tiga pooling layer dan dua fully-connected layer . Dari hasil percobaan yang dilakukan, sistem berhasil mencapai tingkat akurasi 75% dalam ±29 jam eksekusi program.
Kata Kunci : CAPTCHA, software security, CNN, deep learning, machine learning
Abstract: At the early stage of the development, CAPTCHA-text used distorted which difficult to solve by OCR. Development of AI technology, machine learning and image processing makes the task to distinguish between human interaction and "bot " more challenging. Recently, more advanced CAPTCHA types are available to avoid the risk of using CAPTCHA-text that can be considered irrelevant anymore to secure a website. However, until now many websites still use CAPTCHA-text. This paper contains the experimental results of developing an intelligent "bot" to solve distorted text CAPTCHA. Convolutional Neural Network  was  chosen  as  an  approach  for  this  study  because  its  performance  has  proved  excellent  for  object  recognition applications. CNN architecture used for this research consists of three convolutional layers, three pooling layers and two fully- connected layers. Based on the experiment result, the system managed to achieve a level of accuracy of 75% in ± 29 hours of program execution.
Keywords : CAPTCHA, software security, CNN, deep learning, machine learning

## PENDAHULUAN
CAPTCHA  ( Completely  Automated  Public Turing  test  to  tell  Computers  and  Humans  Apart ) adalah program yang digunakan untuk menghasilkan tes: (A) mudah diselesaikan oleh manusia, namun (B) sulit dipecahkan dengan program komputer yang ada saat  ini.  CAPTCHA  digunakan  untuk  membedakan apakah  suatu  interaksi  (klik,  ketik    dan  sebagainya) dilakukan oleh seseorang atau program lain dalam hal ini biasa disebut “ bot ” sehingga program semacam ini bisa  diimplementasikan  untuk  tujuan  mengamankan suatu  sistem  (contoh:  website)  dari  tindakan penyalahgunaan [1]. Contoh pertama dari Tes Turing Terotomasi  ( Automated  Turing  Test )  adalah  sistem yang  dikembangkan  oleh  Altavista  [2]  untuk mencegah " bot " melakukan registrasi secara otomatis pada  suatu  halaman  web.  Sistem  bertumpu  pada kesulitan  membaca  karakter  dari  teks  yang  sedikit terdistorsi  dan  hal  tersebut  ternyata  bekerja  dengan baik  untuk  mengantisipasi  teknologi Optical Character Recognition (OCR).
CAPTCHA  jenis  terbaru  yang  ada  saat  ini sudah  lebih  canggih,  mudah  digunakan  serta  tidak lagi berbasiskan teks. Contohnya Google reCAPTCHA v3 Beta yang kadang hanya membutuhkan  satu  klikan  saja  [3].  Namun  terlepas dari  itu  masih  ditemui  sejumlah  website  yang menggunakan  jenis  CAPTCHA- text terdistorsi.  Hal tersebut  tentu  tergantung  dari  tiap web  developer
dalam memilih komponen apa yang mereka inginkan dan  apa  yang  mereka  bisa  lakukan  untuk website mereka masing-masing.
Dengan  berkembangnya  teknologi machine learning saat  ini,  ada  beragam  metode machine learning yang  tersedia. Deep  learning menjadi bintang  di  antara  metode-metode machine  learning lainnya  karena  terbukti  memberikan  performa  yang sangat baik dalam memecahkan berbagai permasalahan [4]. Deep learning memungkinkan kita untuk  membuat  model  komputasi  yang  terdiri  dari banyak lapisan proses untuk mempelajari representasi  dari  suatu  data  dengan  level  abstraksi yang berlapis-lapis. Metode ini secara dramatis telah meningkatkan pencapaian sebelumnya dalam penganalan  suara,  pengenalan  objek,  visi  komputer dan banyak domain lainnya [5].
CAPTCHA teks terdistorsi jika kita hubungkan dengan pembahasan sebelumnya mengenai  perkembangan machine  learning bisa dikatakan  bahwa  penggunaan  CAPTCHA  jenis  ini mungkin sudah tidak relevan lagi dalam mengamankan sebuah web dari  “ bot ”  [6]. Diasumsikan  bahwa attacker bisa  membuat  aplikasi machine learning khusus untuk
membaca/memecahkan  CAPTCHA- text terdistorsi untuk  suatu website .  Beranjak  dari  pemikiran  itu maka  penelitian  ini  dilakukan.  Bersikap  seperti  Si penyerang, penelitian ini dilakukan dengan
ekperimen  membangun  sebuah  program  yang menggunakan machine learning untuk  memecahkan CAPTCHA- text terdistorsi.
Deep  learning dipilih  sebagai  pendekatan yang  digunakan  untuk  penelitian  ini  karena disamping  ketersediaan framework untuk deep learning saat ini begitu populer (contoh aplikasi dan dokumentasi  melimpah)  sehingga  untuk  membuat aplikasinya akan menjadi mudah – yang lebih penting lagi, jika menggunakan pendekatan metode machine learning lain maka akan dihadapkan dengan problem dalam memilih teknik data preprocessing dan feature engineering ( image  preprocessing dan  ektrasi  fitur) yang tepat [4] dan kemungkinan hanya bekerja untuk satu contoh CAPTCHA saja. Sedangkan dengan deep learning hal  tersebut  tidak  perlu  dilakukan  yang menjadi keuntungan dari pendekatan ini dibandingkan  metode  lain.  Namun,  satu  hal  yang menjadi  penghambat  bagi deep  learning yakni metode ini membutuhkan dataset latih dalam jumlah yang  jauh  lebih  banyak  dibandingkan  pendekatan dengan metode lain agar dapat bekerja dengan baik.
Deep learning terbagi menjadi 3 cabang utama yaitu Multi Layer Perceptron (MLP), Convolutional Neural  Netowork (CNN)  dan Deep  Belief  Network (DBN)  (Aljalbout  dkk,  2018).  Untuk  penelitian  ini dipilih  pendekatan Convolutional  Neural  Networks (CNNs)  yang telah  terbukti  sebagai  kerangka mesin pembelajaran  yang  sangat  sukses  untuk  pengenalan objek [7].
Dalam  beberapa  tahun  terakhir,  beberapa varian  model  CNN  berhasil  mencapai  kinerja  yang baik  seperti AlexNet , OverFeat , GoogLeNet dan model terbaru oleh He dkk dengan akurasi klasifikasi yang melampaui tingkat kinerja yang dapat dilakukan oleh  manusia  pada  umumnya  [8][9][10][11].  Selain itu,  beberapa  penelitian  tentang  membangun  model CNN  yang  spesifik  untuk  sistem  pengenalan CAPTCHA  teks  telah  terbukti  dengan  penelitian Stark dkk  [12],  penelitian oleh  Wang dkk [13] serta penelitian oleh Noury dkk [14].

## TINJAUAN PUSTAKA CAPTCHA
CAPTCHA  ( Completely  Automated  Public Turing  test  to  tell  Computers  and  Humans  Apart ) adalah program yang digunakan untuk menghasilkan tes  yang  [1]:  (A)  mudah  diselesaikan  oleh  manusia, namun  (B)  sulit  dipecahkan  dengan  program komputer  yang  ada  saat  ini.  CAPTCHA  dibuat dengan tujuan agar dapat membedakan apakah suatu interaksi  (klik,  ketik,  dsb)  benar  dilakukan  oleh seseorang atau malah dari program lain (“ bot ”) yang terotomasi  [6].  Program  semacam  ini  dapat dimanfaatkan  untuk  mengamankan  suatu  sistem (contoh: website )  dari  tindakan  penyalahgunaan dengan  “ bot ”  [3].  Contoh  pertama  dari  tes  turing terotomasi ( automated turing test ) adalah sistem yang dikembangkan  oleh Altavista untuk mencegah " bot " melakukan  registrasi  secara  otomatis  pada  suatu
halaman  web.  Sistem  bertumpu  pada  kesulitan membaca  karakter  dari  teks  yang  sedikit  terdistorsi dan  hal  tersebut  ternyata  bekerja  dengan  baik  tetapi pada  awalnya  memang  hanya  dimaksudkan  untuk mengantisipasi teknologi Optical Character Recognition (OCR) yang ada pada saat itu.
Jenis-jenis  CAPTCHA  yang  tersedia  saat  ini sangat  beragam. Berdasarkan representasinya, jenis- jenis CAPTCHA secara umum terbagi menjadi text- based , graphic-based , image-based , audio-based , video-based , dan puzzle . Sedangkan berdasarkan cara menyelesaikannya CAPTCHA terbagi menjadi logic- based CAPTCHA dan identification-based CAPTCHA.  Selain  dari  jenis-jenis  tersebut,  masih ada  lagi  jenis  CAPTCHA  lain  dan  teknologi CAPTCHA  masih  terus  berkembang  dari  waktu  ke waktu untuk mengantisipasi perkembangan teknologi OCR  [15]  dan  AI.  Saat  ini,  Google  menawarkan reCAPTCHA  v3  Beta  yang  berbasis  klikan mouse pada aplikasi browser.

## Pola dan Pengenalan Pola
Pola  dapat  didefinisikan  sebagai  deskripsi kuantitatif  atau  struktural  dari  suatu  objek  atau beberapa entitas lain (yaitu bukan hanya objek visual tetapi  juga  data  sistem).  Kelas  pola  ( pattern  class ) dapat  didefinisikan  sebagai  seperangkat  pola  yang berbagi beberapa sifat yang sama. Karena pola dalam kelas  yang  sama  berbagi  beberapa  sifat  yang  sama maka  dapat  dengan  mudah  dibedakan  walaupun memiliki  model  yang  berbeda  [3][5].  Contoh,  tidak akan sulit untuk mengidentifikasi karakter alfanumerik bahkan ketika font dan dengan orientasi dan ukuran yang berbeda, membedakan laki-laki dan perempuan,  membedakan  orang-orang  yang  berasal dari belahan bumi bagian barat dan orang-orang dari belahan  bumi  bagian  timur,  membedakan  truk  dan mobil bahkan dengan model yang berbeda-beda.

## Jaringan Saraf Tiruan
Jaringan  saraf  tiruan  (JST)  atau artificial neural  network adalah  prosesor  paralel  tersebar ( massively  parallel  distributed  processor )  yang memiliki kecenderungan untuk menyimpan pengetahuan yang bersifat pengalaman dan membuatnya siap untuk digunakan [8][9].
JST  merupakan  salah  satu  teknik  (dalam machine learning) yang digunakan untuk membangun  program  yang  mampu  belajar  dengan membentuk  pemodelan  yang  mensimulasikan  cara kerja  jaringan  saraf  pada  otak  manusia.  JST menggunakan  konsep  kerja  dari  saraf  otak  manusia untuk  menyelesaikan  perhitungan  di  komputer.  JST menyerupai otak manusia dalam dua hal, yaitu [9]:
1. Pengetahuan  diperoleh  jaringan  melalui proses belajar.
2. Kekuatan hubungan antar sel saraf ( neuron ) yang  dikenal  sebagai  bobot-bobot  sinaptik digunakan untuk menyimpan pengetahuan.
Seperti  otak  manusia,  fungsi  dari  jaringan ditentukan  oleh  hubungan  antar  neuron.  Hubungan antar neuron ini  disebut  bobot  ( weight ).  Untuk mendapatkan fungsi tertentu dapat dilakukan dengan melakukan pelatihan ( training )
dengan menyesuaikan  nilai  bobot  dari  masing-masing neuron .
JST  adalah  salah  satu  pendekatan  yang  dapat digunakan  untuk  mengenali  atau  mengklasifikasi pola  [10].  Pada  umumnya  JST  dilatih  ( train )  agar input  mengarah  ke output target  yang  spesifik. Jaringan  dilatih  terus  menerus  hingga  mencapai kondisi dimana input sesuai dengan target yang telah ditentukan. Pelatihan dimana setiap input diasosiasikan  dengan  target  yang  telah  ditentukan disebut pelatihan terarah ( supervised learning) .
Satu  sel  saraf  terdiri  dari  tiga  bagian,  yaitu:  fungsi penjumlahan  ( summing  function ),  fungsi  aktivasi ( activation function ), dan keluaran ( output ).

## Deep Learning
Dalam  buku  oleh  Deng  &  Yu  (2013) disebutkan bahwa sejak tahun 2006, deep structured learning atau yang lebih sering disebut deep learning atau  pembelajaran  secara  hierarki  ( hierarchical learning )  telah  muncul  sebagai  lingkup  baru  dari penelitian machine learning . Selama beberapa tahun terakhir,  teknik  yang  dikembangkan  dari  penelitian deep learning telah mempengaruhi berbagai penelitian  bidang  pemrosesan  informasi  sinyal  dan informasi  dalam  lingkup  tradisional  dan  baru; menawarkan aspek baru untuk machine learning dan AI [2][4][5].
Deep  learning ada  di  persimpangan  antara area  penelitian  jaringan  saraf  tiruan,  kecerdasan buatan, pemodelan grafis, optimasi, pengenalan pola dan  pemrosesan  sinyal.  Tiga  alasan  penting  untuk popularitas deep learning saat ini adalah kemampuan pemrosesan  chip  yang  meningkat  drastis  (misalnya unit  pemrosesan  grafis  tujuan  umum  atau  GPGPU), ukuran  data  yang  meningkat  secara  signifikan  yang digunakan  untuk  pelatihan  dan  kemajuan  terbaru dalam  penelitian  tentang machine  learning dan pengolahan sinyal dan informasi. Kemajuan tersebut telah  memungkinkan  metode deep  learning untuk secara efektif mengeksploitasi kompleksitas, komposisi  fungsi non-linear untuk  mempelajari representasi fitur terdistribusi dan hierarkis dan untuk memanfaatkan secara efektif data berlabel  dan tidak berlabel.

## Convolutional Neural Network (CNN)
Convolutional Neural Network (CNN) adalah pengembangan  dari Multilayer  Perceptron (MLP) yang  didesain  khusus  untuk  mengolah  data  dua dimensi seperti pada citra. CNN termasuk dalam jenis Deep  Neural  Network (DNN)  karena  arsitekturnya terdiri dari lapisan jaringan yang banyak [8][9]. CNN telah terbukti sangat  efektif untuk  pengenalan objek
dan  klasifikasi.  Pada  tahun  2012,  Alex  Krizhevsky menggunakan CNN umtuk memenangkan kompetisi ImageNet  yang  akhirnya  membuat  CNN  menjadi populer.
CNN  terinspirasi  oleh  penelitian  yang dilakukan oleh Hubel dan Wiesel (1950-an, 1960-an) yang  mengemukakan  teori  bagaimana  cara  kerja sistem  penglihatan  yang  dimiliki  oleh  hewan mamalia. Mereka mengemukakan bahwa penglihatan mamalia bekerja secara heirarki berdasarkan lapisan suatu  kelompok  sel  saraf  (neuron)  dari  sistem penglihatan  yang  tiap  lapisan  tersebut  mempunyai tugas  masing-masing  dalam  memproses  informasi visual  [9].  Kemudian  pada  tahun  1980,  Fukushima memperkenalkan hierarchical neural network model atau  yang  disebutnya  dengan  istilah neocognitron . Model  tersebut  terinspirasi  dari  konsep Simple  Cell dan Complex Cell . Neocognitron mampu mengenali suatu pola berdasarkan bentuk dari suatu objek. Lalu pada  tahun  1998,  gagasan  lain  diperkenalkan  oleh Yann  LeCunn  yang  mengadaptasi  bagaimana lapisan-lapisan  dari  kelompok  sel  pada  sistem penglihatan bekerja seperti pada mamalia ke bidang ilmu  komputer  visi  menjadi  suatu  model  yang dinamakan LeNet-5 [5][10][11].
Arsitektur  CNN  terdiri  dari  5  jenis  lapisan yang  memiliki  fungsi  masing-masing  yakni input layer , convolution layer , ReLu ( rectified linear unit ) layer , pooling  layer dan fully-connected  layer . Arsitektur  CNN  yang  paling  sederhana  setidaknya memiliki satu dari tiap 5 jenis lapisan tersebut seperti yang terlihat pada gambar 2. Pada CNN, input layer diatur dalam 3 dimensi: lebar, tinggi dan kedalaman. Perbedaan lainnya adalah neuron dalam satu lapisan tidak  terhubung  ke  semua neuron di  lapisan berikutnya  tetapi  hanya  ke  sebagian  kecilnya  saja. Hasil akhir dari proses komputasi melalui tumpukan lapisan  yang  dibuat  adalah  matriks  bobot  yang kemudian  dipipihkan  menjadi  satu  vektor  ( flatten ) yang  merupakan  bobot/skor  probabilitas  untuk  tiap kelas.

## Gambar 2. Ilustrasi arsitektur CNN sederhana

## METODE Desain Sistem
Seperti yang terlihat pada gambar 3, secara umum  yang  dilakukan  oleh  sistem  adalah  akuisisi data  ( data  acquisition ),  pelatihan  ( training )  dan validasi  ( validation ).  Yang  menjadi  ide  utama  dari desain sistem yang ditawarkan adalah melatih model dengan  memberikan dataset latih  dengan  jumlah yang sedikit lalu divalidasi [12]. Pada tahap validasi akan  diketahui  hasil  prediksi  lalu  dataset  validasi akan  dibagi  menjadi  dua  berdasarkan  ketepatan prediksi  yaitu  dataset  yang  benar  diprediksi  dan
dataset  yang  salah  diprediksi.  Akurasi  adalah persentase jumlah dataset yang benar diprediksi dari total  jumlat  dataset  validasi  yang  dibentuk.  Jika tingkat akurasi belum mencapai level yang ditentukan (75%)  maka  proses  pelatihan  dilanjutkan  kembali dengan menggunakan dataset yang salah diprediksi.
Gambar 3. Diagram use case sistem pengenalan CAPTCHA yang ditawarkan
Dengan rancangan tersebut sistem diharapkan dapat membentuk model yang baik tanpa perlu  mengetahui  berapa  jumlah dataset yang diperlukan  sebenarnya  dengan  membiarkan  model dilatih  dengan dataset sedikit  demi  sedikit  lalu berhenti  saat  tingkat  akurasi  yang  ditentukan  telah dicapai. Hal ini bisa bermanfaat  melihat ada banyak jenis CAPTCHA- text yang tersedia (perbedaan jenis font ,  distorsi,  komposisi  warna,  dll)  sehingga kebutuhan jumlah dataset latih untuk mengenali satu jenis  CAPTCHA- text sangat  mungkin  akan  berbeda untuk jenis yang lain [11][12].
Seperti  yang  telah  disebutkan,  prosedur training memerlukan  sejumlah  data  latih  dari  objek yang  ingin  dapat  dikenali.  Pada  penelitian  ini ditentukan batch size atau jumlah sampel citra untuk satu  kali training adalah  maksimal  10.010  citra  dan untuk satu citra maksimal iterasi learning -nya adalah 6  kali.  Proses training dan validation akan  terus diulangi  sampai  sistem  berhasil  mencapai  tingkat akurasi 75%.

## IMPLEMENTASI Pemilihan Dataset
Sistem  membuat  10.010  berkas  citra CAPTCHA  baru  pada  tahap  pelatihan  awal  ( intial training )  dan  setiap  kali  memasuki  tahap  validasi. Pembentukan  dataset  baru  untuk  tiap training dan validasi  tentunya  adalah  usaha  untuk  membangun model  yang  memiliki  generalisasi  yang  baik  dan untuk  menghindari  bias.  Pada  penelitian  ini  tidak digunakan dataset uji  ( test  data )  secara  eksklusif karena menganggap bahwa dengan data validasi yang dibentuk saat tiap kali memasuki tahap validasi dapat mewakili  hasil  uji  secara  general  ( dataset tidak digunakan  berulang  kali).  Setelah  tahap  validasi,
dataset  validasi  akan  terbagi  menjadi  dua  kelompok yaitu dataset yang berhasil dikenali dan dataset yang salah  dikenali  oleh  sistem.  Gambar  4  menunjukkan alokasi dataset/sample yang digunakan [15].
Berkas  citra  yang  diperlukan  baik  pada tahap initial  training maupun  validasi  di- generate berdasarkan daftar teks terpilih. Teks terpilih tersebut dihasilkan dengan fungsi pemilihan data sampel yang menggunakan  pendekatan simple  stratified  random sampling . Stratified  random  sampling memastikan setiap anggota himpunan dalam hal ini karakter teks yang  ditentukan  (a-z)  memenuhi  strata  minimum. Dengan  pendekatan  tersebut,  setiap  karakter  dapat dipastikan terikutsertakan dalam sampel yang dipilih dan memenuhi jumlah minimum yang merata. Dalam kasus kali ini 10.000 sampel yang dipilih berarti ada 385  kali  jumlah  minimal  kemunculan  untuk  tiap karakter a-z.
Gambar 4. Diagram alir alokasi dataset latih dan validasi
Gambar 5. Pseudo-code algoritma pemilihan teks CAPTCHA
Pseudo-code untuk  fungsi  pemilihan  teks anggota  himpunan  CAPTCHA  yang  digunakan tampak  pada  Gambar  5.  Panjang  karakter  yang ditentukan  untuk  tiap  sampel  CAPTCHA  adalah
enam  (6). TotalNumText adalah  jumlah  anggota yang  dingiinkan  namun  fungsi  hanya  akan menghasilkan  jumlah  anggota  teks  sejumlah captexListNum ×  panjang alphabet –  selalu bernilai kelipatan dari 26 (jumlah anggota alphabet ) yang bertujuan menghasilkan teks yang mencakup  seluruh  anggota alphabet (perhatikan bari  ke-5  dari pseudo-code ).  Jika totalNumText yang ditentukan adalah 10.000 maka nilai captexListNum adalah 384 maka jumlah anggota teks yang dihasilkan adalah 384 × 26 = 9.984.

## Pelatihan (training)
Pelatihan  model  dimulai  dengan initial training yakni  saat  sistem  belum  menghasilkan  satu pun trained  model .  Seperti  yang  disebutkan sebelumnya,  sistem  menghasilkan  sampel  citra sebanyak 10.010 sampel sebagai data latih pada tahap ini. Initial training menghasilkan trained model awal yang kemudian akan diuji pada tahap validation . Jika validation telah  selesai  dilaksanakan  dan  sistem belum  mencapai  tingkat  akurasi  yang  ditetapkan maka training akan dilanjutkan di epoch selanjutnya dan trained  model yang  sebelumnya  diuji  akan diperbarui  dengan  data  latih  sebagai  bahan  bakunya merupakan  sampel  citra  yang  salah  dikenali  oleh sistem pada saat validation sebelumnya.
Pelatihan dengan Caffe framework dijalankan pada mode GPU dengan jumlah iterasi pembelajaran sebanyak jumlah data latih  dikalikan dengan 6 (jadi misal ada 10.010 data latih maka iterasi maksimalnyanya  adalah  60.060).  Seperti  yang  telah disebutkan sebelumnya, output dari pelatihan trained model akan  disimpan  dalam  berkas  dengan  ektensi .caffemodel . Selain itu Caffe juga menghasilkan berkas  dengan  ekstensi .solverstate yang menyimpan state akhir  dari trained  model .  Berkas tersebut  memungkinkan  proses  pelatihan  dapat dilanjutkan di epoch selanjutnya.

## Validasi (validation)
Validasi adalah tahap untuk mengetahui atau mengevaluasi  kemampuan ( skill ) dari trained model dalam  mengenali  objek  yang  diinginkan.  Validasi dilakukan  dengan  mengujikan  sejumlah dataset terhadap trained  model untuk  memprediksi  tiap dataset tersebut.  Prediksi  yang  tepat  ( correct prediction )  adalah  jika  hasil  inferensi  atau  prediksi tepat  sama dengan jawaban yang benar (ilustrasinya ditunjukkan  pada  gambar  6).  Tingkat  akurasi didefinisikan  sebagai  persentase  jumlah  kejadian prediksi  yang  benar  dari  jumlah  dataset/sampel validasi.

## Gambar 5. Ilustrasi hasil inferensi/prediksi
Untuk  setiap  kali  validasi,  sistem  kembali membuat  10.010  citra  uji  berdasarkan  daftar  teks yang  dibentuk  dengan  fungsi  pemilihan  teks  seperti saat initial  training .  Citra  CAPTCHA  uji  yang teksnya diprediksi dengan benar dipisahkan dari data uji  yang  salah  diprediksi.  Data  uji  yang  salah diprediksi  kemudian  menjadi  data  latih  pada pelatihan di epoch selanjutnya.
Sebagai contoh, misalkan pada tahap validasi ( validation )  di epoch ke-1,  sistem  berhasil memprediksi  1.000  citra  dari  10.010  citra  uji  yang dibuat  maka  tingkat  akurasi  prediksi  yang  dicapai pada epoch ke-1  adalah  9.99%.  Kemudian,  9.010 (10.010  –  1.000)  berkas  citra  yang  salah  prediksi menjadi  data  latih  di epoch selanjutnya.  Prosedur penentuan dataset latih ini telah divisualisasikan pada gambar 4 diagram alokasi dataset latih dan validasi.
Pengujian  dilakukan  secara  paralel  dengan menggunakan  Celery.  Sistem  menjalankan  4  proses paralel  sehingga  dalam  waktu  yang  sama  dapat dilakukan  pengujian  4  citra  uji  sekaligus  sampai setiap citra uji selesai diujikan secara keseluruhan.

## HASIL DAN PEMBAHASAN
Setelah  menjalankan  sistem  sesuai  desain dan  implementasi  yang  dibahas  sebelumnya,  hasil dari percobaan dipaparkan pada Tabel 1. Berdsarkan hasil  tersebut,  sistem  berhasil  mencapai  tingkat akurasi 75.30% pada epoch ke-18 (walaupun tercatat pada epoch ke-19  turun  ke  74.99%).  Eksekusi aplikasi berjalan selama ±29 jam.
Tabel 1. Hasil Percobaan epoch sampel citra latih latih (jam) uji (jam) persentasi akurasi 1 10010 1.65 0.96 23.64% 2 7644 1.15 0.96 36.57% 3 6349 0.95 0.96 44.16% 4 5590 0.82 0.95 50.20% 5 4985 0.74 0.95 56.19% 6 4385 0.65 0.94 58.25% 7 4179 0.62 0.94 61.48% 8 3856 0.57 0.95 63.90% 9 3614 0.54 0.94 66.94% 10 3309 0.49 0.94 67.10% 11 3293 0.48 0.92 69.45% 12 3058 0.45 0.91 70.49%
13 2954 0.44 0.91 68.84% 14 3119 0.46 0.9 72.26% 15 2777 0.41 0.89 72.95% 16 2708 0.4 0.9 74.20% 17 2583 0.38 0.91 73.34% 18 2669 0.4 0.88 75.30% Total: 77082 11.6 16.71 training + testing = 28.31 hours
Jika  kita  pertimbangkan  adanya  toleransi kesalahan  yang  dapat  diterima  oleh  sistem CAPTCHA  maka  pendekatan  yang  digunakan  ini masih  dapat  dianggap  layak  untuk  digunakan  pada kasus sebenarnya walaupun pada kenyataannya untuk mendapatkan  sampel  citra  CAPTCHA  yang  telah dilabeli  sebanyak  180.180  (10010  *  18  iterasi)  atau sekitar  angka  itu  tidak  akan  mudah.  Pertimbangan lainnya  seperti  jenis  CAPTCHA- text yang  berbeda (level  distorsi  yang  lebih  tinggi,  jenis  huruf, komposisi warna, dsb) kemungkinan akan memberikan hasil yang berbeda.
Jika  kita  perhatikan  kembali  tabel  hasil percobaan  (Tabel  1),  jumlah dataset latih  dari  awal hingga  akhir  di  tiap epoch -nya  menurun  seiring dengan kenaikan tingkat  akurasi  prediksi  yang tepat yang berbanding lurus dengan waktu pelatihan sistem yang  juga  akan  terus  berkurang  di  tiap epoch . Akibatnya  kenaikan  tingkat  akurasi  di epoch selanjutnya cenderung melambat yang pada akhirnya sistem  lebih  banyak  menghabiskan  waktu  untuk pengujian.  Sebagai  contoh,  perhatikan  pada epoch s awal  (baris  2-5)  dari  tabel  hasil,  waktu  pelatihan berjalan  sekitar  0.82  –  1.15  jam  dengan  kenaikan tingkat akurasi sebesar 6% – 13%. Lalu pada epochs selanjutnya  waktu  pelatihan  berjalan  sekitar  0.38  – 0.65  jam  untuk  kenaikan  tingkat  akurasi  hanya sebesar 1% – 3% saja.

## KESIMPULAN DAN SARAN
Setelah membangun sistem yang mengimplementasi  pendekatan  yang  dipilih  dan berdasarkan  hasil  pengujian  yang  diperoleh  dapat disimpulkan  bahwa  sistem  berhasil  mencapai  75% akurasi prediksi (7.538 dari 10.010 CAPTCHA citra tes)  pada epoch ke-18.  Hasil  tersebut  diperoleh setelah  aplikasi  berjalan  selama  ±29  jam.  Sehingga dapat disimpulkan bahwa jenis CAPTCHA- text yang serupa  dengan  CAPTCHA  yang  digunakan  pada penelitian ini dapat dianggap beresiko.
Kekurangan dari  pendekatan yang digunakan pada  penelitian  ini  yakni  seiring  dengan  kenaikan tingkat  akurasi  prediksi,  jumlah dataset latih  akan terus  berkurang  yang  pada  akhirnya  sistem melakukan pelatihan dalam waktu yang lebih singkat lagi di epoch selanjutnya sedangkan waktu pengujian cenderung tetap pada tiap epoch .
Adapun  saran  untuk  pekerjaan  selanjutnya, perlu  adanya  pemutakhiran  pendekatan  dalam menentukan dataset untuk  tiap  iterasi.  Seperti  yang dibahas  sebelumnya  bahwa  seiring  kenaikan  tingkat akurasi  prediksi,  sistem  akan  lebih  banyak menghabiskan  waktu  untuk testing dibandingkan learning akibat pengurangan jumlah data latih di tiap epoch sementara testing sendiri  tidak  berpengaruh langsung pada pertumbuhan tingkat akurasi prediksi. Oleh  karena  itu,  kekurangan  tersebut  perlu ditanggulangi  agar  aplikasi  tidak  lebih  banyak menggunakan  waktu  untuk testing saja  melainkan untuk learning dengan  harapan  tingkat  kenaikan akurasi predisksi dapat berkembang lebih optimal.

## DAFTAR PUSTAKA
[1] Von Ahn, L., Blum, M., Hopper, N. J., & Langford, J. (2003). CAPTCHA:  Using  Hard  AI  Problems  for Security. In E. Biham (Ed.), Advances in Cryptology - -- EUROCRYPT 2003 (pp. 294–311). Springer Berlin Heidelberg.
[2] Lillibridge, M., Abadi, M., Bharat, K., & Broder, A. (2001). Method  for  selectively  restricting  access  to computer systems . [US Patent No. 6,195,698].
[3] Brown,  S.  S.,  DiBari,  N.,  &  Bhatia,  S.  (2017). I  Am 'Totally'  Human:  Bypassing  the  reCaptcha .  In:  13th International Conference on Signal-Image Technology & Internet-Based Systems (SITIS), pp. 9-12.
[4] Chollet,  F.  (2018). Deep  Learning  with  Python [Online] . Manning Publications. Available: https://www.manning.com/books/deep-learning-with- python . [Accessed 25 January 2024]
[5] LeCun,  Y.,  Bengio,  Y.,  &  Hinton,  G.  (2015). Deep
learning . Nature, 521(7553), 436-444.
doi:10.1038/nature14539
[6] Sharma,  S.,  &  Seth,  N.  (2015).  Survey  of  Text CAPTCHA  Techniques  and  Attacks. International Journal  of  Engineering  Trends  and  Technology (IJETT) , 22(6), 240–245.
[7] Athiwaratkun,  B.,  &  Kang,  K.  (2015). Feature Representation  in  Convolutional  Neural  Networks . CoRR , abs/1507.02313.
[8] Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet  Classification  with  Deep  Convolutional Neural  Networks .  In  F.  Pereira,  C.J.C.  Burges,  L. Bottou,  &  K.Q.  Weinberger  (Eds.), Advances  in Neural Information Processing Systems 25 (pp. 1097– 1105)
[9] Sermanet,  P.,  Eigen,  D.,  Zhang,  X.,  Mathieu,  M., Fergus, R., & LeCun, Y. (2013). OverFeat: Integrated Recognition,  Localization  and  Detection  using Convolutional Networks . CoRR , abs/1312.6229
[10] Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S.E., Anguelov,  D.,  Erhan,  D.,  Vanhoucke,  V.,  & Rabinovich,  A.  (2014). Going  Deeper  with Convolutions . CoRR , abs/1409.4842
[11] He, K., Zhang, X., Ren, S., & Sun, J. (2015). Delving Deep  into  Rectifiers:  Surpassing  Human-Level Performance  on  ImageNet  Classification .  CoRR, abs/1502.01852
[12] Stark,  F.,  Hazirbas,  C.,  Triebel,  R.,  &  Cremers,  D. (2015). Captcha  recognition  with  active  deep learning. In GCPR Workshop on New Challenges in Neural Computation .
[13] Wang, J., Qin, J., Xiang, X., Tan, Y., & Pan, N. (2019). CAPTCHA  recognition  based  on  deep  convolutional neural network . Math. Biosci. Eng , 16 (5), 5851-5861.
[14] Noury, Z., & Rezaei, M. (2020). Deep-CAPTCHA: a deep learning based CAPTCHA solver for vulnerability assessment . arXiv
preprint
arXiv:2006.08296 .
[15] Azad, S., & Jain, K. (2013). CAPTCHA: Attacks and Weaknesses against OCR Technology , 13(3).