DEV Community

Hardik
Hardik

Posted on

Research about CV research

This is a bit of advice for lucky students who get to do research with a professor.

Take this opportunity seriously. Either you make it your top priority, or you don't do it at all. That's the message. Read the rest of the page if you want to know why and how.

Opportunity Cost

I heard once that your boyfriend or girlfriend will ask increasingly tough questions as your relationship ages:

  1. “Am I getting something out of it?”
  2. “Am I getting back as much as I'm putting in?”
  3. “Am I getting as much as I'm worth?”

Your advisor may also ask these questions. At first, he'll be happy that he attracted a smart student to work on a problem that needed working on. But he may sour if he comes to feel that he's wasting his time on you, or would have been wiser to assign the project to someone else.


What You Can Do to Succeed

Here's some basic advice targeted at new research students. There are also many webpages about how to be a “good grad student,” which should also be useful to undergrads doing research.

Time Commitment
Make plenty of room. In order to make research your first priority, you may need to reduce your courseload or extracurriculars. This is worth discussing with both your academic advisor and your research advisor.
Find out what the deadlines are. For example, there may be a target for submitting a paper to a particular conference. When planning for deadlines, bear in mind that everything will take twice as long as you expect—or four times as long if you've never done it before. Often a paper takes roughly a year of work for a grad student (if it includes experiments), although they may be working on other things during that year as well.
Be honest. If you suspect that you may not have time to do justice to the project after all, don't string your advisor along. Take a deep breath, apologize, and explain the situation. Then your advisor can make an informed decision about whether to suspend the project, give it to someone else, get a grad student involved, etc. This is better than a slow burn of agitation on both sides.

Time Management
Prepare for meetings. Establish a fixed time for weekly meetings with your advisor (and perhaps with senior students). Bring results, questions, and an agenda to your weekly meeting.
Make weekly progress. Set goalposts, and be sure you make real progress from week to week. Use your meeting time or email each week to make sure that you agree on what the goal for next week is.
Take the initiative. Be somewhat self-directed—find readings, play around with code, do mini-experiments. But do keep your advisor posted by email.

Writing

Writing is a form of thinking, a form of memory, and a form of communication. You should keep well-organized notes of several kinds. It is often useful to date your entries in such files and to keep them under version control.

  • Write the paper first. The evolving paper is a way of organizing and sharing your thoughts and hammering out details. New ideas (including future plans) can go into that document, or appendices to it.
  • Experimental logbook. This is a file recording the questions you asked, the experiments you ran to answer them (including the command-line details needed to reproduce them perfectly), the results, and your analysis of the results.
  • Notes on your reading, including reading you plan to do. This should be organized by paper and/or by topic, aimed at helping you quickly recover the important points.
  • Planning. Keep some kind of to-do list and time planning system that helps you set and discharge goals and track your effectiveness (see the LifeHacker website for some options).

Working With Others

  • Again, be honest. Be very clear at all times about what you do and don't understand. Don't fake it. It's okay to say you're confused or don't know something; you need to ask questions to get unconfused. Also be clear about what you have and haven't done.
  • Pick a topic of mutual interest that you can handle. This is a matter for careful discussion at the start of the relationship.Be explicit about what you need from your advisor. You can take some initiative in shaping the kind of advising relationship that will work best for you. Every advisor has a typical advising style, which is some compromise between his advising philosophy, his personality, your personality, and the realities of limited time. But if you need a different kind of guidance or a different way of organizing your relationship, ask for it. Most advisors will appreciate the initiative and can adapt to some extent.
  • Know how to ask for help. If you feel you would benefit from closer guidance, say: “Please tell me exactly what you want me to do by next Wednesday and I will have it done.” If you get stuck technically, ask your advisor to help you get unstuck! He can write out a more detailed plan for you, give you things to read, ask a senior grad student to work with you, point you to software libraries, etc. Asking the right person can be 100 times faster than doing it yourself. Your value to the project lies in how much you get done—it doesn't matter whether you invented it all yourself. This is not homework and getting help is not cheating. Anything that is already known in the field is fair game to reuse (with citations). And people can also help you invent the new stuff, as long as you acknowledge their help appropriately (possibly with co-authorship). Getting them to help you is part of the research.
  • Get right as much as you can. Before you hand off a piece of code or writing to someone else -- including another student, your advisor, or a reviewer -- you ought to catch all the problems you can catch by yourself. For a problem that you intend to fix later, include a note to this effect. This allows the other person to focus their limited time on spotting the problems that were beyond your own horizon.
  • Be a team player. If there are other people on the project, find out what they're working on. Ask plenty of questions. Get a broader sense of the project beyond your own little corner. Help out where you can.
  • Share what you do. Back up your work, comment your code, log your experiments, and be ready to hand off your code and notes at any time. The project may live on after you. It's not necessary to keep private files. The best plan is to keep everything valuable in a shared version control repository that you, your advisor, and any other collaborators can browse and edit at any time. (A README file in the repository can describe the layout and list any additional resources, e.g., the URLs of a wiki, a Google Doc, etc.) An issue tracker is also useful. Discuss with your advisor how to set up this kind of project infrastructure, e.g., on github.
  • Avoid diffusion. As a matter of etiquette, try not to spread your work over many different local directories, repositories, email threads, chat logs, Google documents, etc. For example, when sending email, try to continue on an existing thread where appropriate, rather than starting a new one. Your advisor is juggling more email and projects than you, so will find it helpful to keep related things together.
  • Keep track of what you've done. You may want to keep some notes on your contributions. You can give these to your advisor when it is time for a letter of recommendation.

  • Use git version control and github regularly on your codebase - this is a must, if you are not familiar with git (I suppose all of you are), please spend some time reading through https://git-scm.com/book/en/v2 - totally worth in the long run. Even reading the first 2-3 chapters will be enough for most common things
  • Think of ways to log and track experiments carefully. Ideally, every experiment you run should be associated with a git commit, so you can always replicate things. Creating spreadsheets, etc. is a good way of maintaining sanity of what was run and how. Config files help a lot too for knowing what changed, or at least keep a file where you store all the commands that you ran, python main.py --arg1 val1 --arg2 val2, etc.

- For visualization of losses, metrics, etc. you should look into locally hosted tools like tensorboard, or even very nice platforms such as https://wandb.ai/.

The above points and advices were made from a lot of articles which were suggested by my own article which I liked a lot and also helped me to understand how research works. Some of the links which I refered to are

Top comments (0)