My “Real” Internship as an AI Engineer at Nodeflux

Syahrul Hamdani
5 min readSep 19, 2018

Kebanyakan orang saat ini mungkin akan setuju bahwa pendidikan formal bukanlah satu-satunya jalan untuk memperoleh ilmu. Di dunia yang serba digital, semua tersedia secara gratis dan bisa diakses kapan saja dan di mana saja. Sebagai contoh, banyak MOOC yang layak untuk diikuti selain pendidikan formal. Bahkan, banyak juga perusahaan yang lebih memilih lulusan MOOC dibanding lulusan pendidikan formal karena alasan ilmu yang lebih praktis dan penerapannya. My choice, is to have an internship in a startup!

An opportunity to do internship as AI Engineer

Selama 8 minggu sejak Agustus 2018 kemarin, saya berkesempatan untuk “mencicipi” bagaimana rasanya bekerja di sebuah startup, Nodeflux, sebagai AI Engineer Intern.

Why AI Engineer?

Sejujurnya, lowongan pada saat itu berjudul Software Engineer. Meski begitu, Alhamdulillah, saya diberi kesempatan untuk magang sebagai Data Science (sesuai judul yang tertera di email konfirmasi waktu itu). Although, people in Nodeflux name “that kind of person” as AI Research Scientist. Ya, hanya judul saja.

Well, alasan utama mengikuti program internship ini adalah karena saya sangat tertarik dengan dunia AI, lebih spesifiknya Data Science dan Machine Learning. Mulai mengenal dan belajar secara intens sejak 2017 kemarin, lalu kemudian diberi kesempatan untuk belajar secara nyata sebagai AI Engineer, that feeling is just amazing!

You know you did great when you got the appreciation, although the small one, but it will boost you 10x!

Sekarang, saya ingin bercerita tentang pengalaman selama 2 bulan magang. Mulai dari ekspektasi, challenge, pencapaian, dan hal lainnya.

Induction

Minggu pertama dimulai dengan perkenalan apa itu Nodeflux dan bagaimana mereka memberikan value melalui AI dan Computer Vision. Sedikit company profile, Nodeflux adalah sebuah startup yang menawarkan Platform Intelligence Video Analytics berbasis AI, seperti Face Recognition, License Plate Recognition, Traffic Measurement, dan sebagainya.

Di minggu pertama ini saya belajar tentang pentingnya project environment. Bagi kebanyakan orang yang terbiasa menggunakan Python, salah satu cara tuntuk membuat project environment adalah dengan menggunakan Anaconda Environment ataupun venv. Di sini, saya belajar tentang Docker dan bagaimana mengkonfigurasi semua requirements yang diperlukan dalam sebuah Docker Container. Mulai dari konfigurasi awal seperti instalasi, konfigurasi Caffe dan Protobuf dalam Docker Container melalui Dockerfile, dan Dockerfile lainnya dengan spesifikasi requirements dan library tertentu yang dibutuhkan project kita. Awesome, right? Dari saat itu, sampai saat ini, saya mulai menggunakan Docker untuk kebanyakan project saya, terutama untuk tesis nanti.

Caffe in Docker

Karena background saya yang lebih ke matematik dan sedikit bersentuhan dengan computer science, memang ada sedikit kesulitan dalam membiasakan diri dengan Docker, seperti mencari dependencies, cara kerja Dockerfile, compatibility antar dependencies, dan sebagainya. Tapi ini semua memang proses yang harus dilalui, karena mungkin seperti inilah yang akan saya lakukan nanti ketika bekerja. 80% of our time is not to do our exact work, instead we try to configure it so that it can works in any platform as company real products or features.

The Internship

Setelah minggu pertama, saya mendapat tugas untuk membantu salah seorang AI Research Scientist di Nodeflux, Indra, untuk melakukan riset tentang Anomaly Detection pada Surveillance Videos and here’s the truth.

My Deep Learning skills is still at its foundation

Ada sedikit rasa khawatir sebenarnya. Baru sekitar setahun saya mempelajari Machine Learning, tapi saya harus sudah berkutat dengan Deep Learning. Like something is still missing in the beginning. Dengan pengalaman yang masih minim ini, saya sudah harus mengaplikasikan dalam riset Anomaly Detection. Jadinya, saya harus belajar 2 kali lebih banyak, belajar tentang Anomaly Detection sambil belajar ulang teori-teori Deep Learning, terutama Computer Vision dan CNN.

But, it turns out that this is the most exciting time to be proud of.

Saya memang sangat senang belajar, membaca hal-hal baru, mengkoneksikan dengan hal-hal yang sudah dipelajari sebelumnya, lalu membuat generalisasi.

Mulai dari membaca paper tentang C3D, bagaimana ia berbeda dengan CNN 2D, arsitektur seperti apa yang digunakan untuk mengekstrak fitur generik dari sebuah video, sampai bagaimana hasil yang didapat dibandingkan dengan model lain yang telah dikembangkan. Paper yang dimaksud adalah “C3D: Generic Features for Video Analysis” dan “Learning Spatiotemporal Features with 3D Convolutional Networks”. Meski pemahaman yang saya dapat tidak terlalu dalam karena faktor “something is still missing” itu tadi, paling tidak saya mendapatkan benang merah apa dan bagaimana C3D berbeda dengan model lain.

C3D merupakan model yang digunakan dalam paper Anomaly Detection on Surveillance Videos. Jadi, selama minggu ke-2 sampai minggu terakhir, saya sebenarnya berkutat dan mencoba memahami topik ini melalui paper tersebut serta GitHub Repo-nya, terutama Matlab script untuk mengkonversi hasil ekstraksi fitur C3D menjadi 32 segments sesuai workflow dalam paper, lalu mengkonversi script tersebut ke dalam versi Python.

My favorite one

Mungkin ini adalah bagian favorit saya selama internship 2 bulan di Nodeflux. Bagian di mana saya bisa saling bertukar pikiran dengan AI Research Scientist Nodeflux, berbagi ide, mengalami masalah yang serupa, sampai menemukan solusinya. Romantis. Bukan, bukan itu maksudnya. Ada saat di mana hasil yang didapat tidak sesuai dengan apa yang dicontohkan dalam repository, kami pun cemas. Tapi ternyata, alasannya cukup sederhana, yaitu karena dalam Matlab script pola pemanggilan file yang digunakan berbeda dengan pemanggilan file dalam Python. Dalam Python, file dipanggil secara acak, sedangkan Matlab terurut sesuai abjad. Pastinya ini menghasilkan konversi yang berbeda.

Selain itu, dari pengalaman ini juga saya belajar satu hal yang tidak pernah diajarkan selama kuliah, membaca code orang lain. Bahkan tidak masuk kurikulum. Padahal, dari sini saya belajar untuk menganalisis logika dari script yang ditulis orang lain, sehingga kemudian dapat diadaptasi sesuai kebutuhan.

Lesson to Learn

Dari 2 bulan magang sebagai AI Engineer di Nodeflux, ini adalah the real internship jika dibandingkan dengan pengalaman magang pertama saya. Ya, memang internship pertama saya dilatarbelakangi untuk memenuhi mata kuliah wajib saja saat itu. Jadi, ini memang internship yang lebih baik dari sebelumnya.

Dari 8 minggu magang ini juga saya belajar banyak terutama dalam bidang AI dan Deep Learning. Tidak hanya itu, dari 2 bulan magang ini juga saya mendapat pengalaman tambahan bahwa meskipun kita tertarik dan fokus pada bidang AI atau Deep Learning, apapun title kita (Data Science, Machine Learning/Deep Learning Engineer), sebenarnya hampir 80% pekerjaan kita bukanlah pada bidang itu. Tetapi bagaimana caranya agar hasil “kerjaan” kita dapat digunakan dalam produk company tersebut dan siap untuk digunakan oleh partner ataupun user.

Dari 40 hari ataupun kurang ini, the most important lesson to learn, for me, is how to do practical research. Mungkin ini hanya istilah yang saya pakai atau memang benar ada sebutan “Practical Research”. Bagi saya, practical research adalah riset yang tujuan utamanya adalah lebih pada produk yang akan di-deliver. Umumnya, bagi akademisi, riset-riset dilakukan karena untuk keperluan jurnal atau kepentingan akademik lainnya. Tapi practical research dilakukan memiliki tujuan akhir yang siap pakai, dalam bentuk dan platform apapun, with agile and fast workflows, and full of repetition.

“I’ll be back” — Arnold Schwarzenegger

One day, I hope I can return to this company as a “real” AI Research Scientist and together with people in it deliver impactful values and goodness through AI

Thank you so much for the opportunity to be part of the family and for the unforgettable memories.

--

--