Week 10: July 26-July 31

Number Ten

I get to go home this week! I can't wait to see my family and friends, take many warm baths, and enjoy the thin Colorado air.

Most of this week was spent writing the paper and making small modifications. We decided to use write our paper in laTeX, a mathematical typesetting system (like HTML for things with lots of math). However, it needs to be compiled into PDF's, so we decided to use an online compiler, MonkeyTeX. It was a bad plan. MonkeyTeX gives horrible error messages and has a tendancy to overwrite your changes. On the other hand, it's completely free, so you get what you pay for... We also gave our presentation on Tuesday. It went well--we didn't even have any technical difficulties! Prof. Bajcsy stopped us every once in a while to make things clear to the psycologists in our audience. This lab is very big on interdisciplary stuff, and there was also a presentation on the results of a psych experiment about virtual reality performed in our lab. We also have a dancer working with some people on accurately recording breath, which is an important part of dancers' expression.

The food is getting less interesting than I would have thought. Breakfasts are kinda weird, as I'm out of milk and sick of oatmeal, so I've been eating random food (like yams) and dry cereal. Grape nuts are really crunchy and drying without milk. Still, I've been able to eat good dinners (like beans & rice or pasta with sauce, chicken, and green pepper), and lunches (like peanut butter and honey sandwiches.

Week 9: July 19-July 25

Number Nine

This weeks I made the code better (aren't I specific?) and started writing a final paper and a presentation. When we detect feature points, a lot of them aren't very good at all. For example, it will choose a point in the middle of the cheek. However, you can't tell where it matches in subsequent frames because the whole cheek looks pretty much the same. Because of the bad points, I came up with a 'filter' to apply to the features from one frame to the next. Pretty much, it looks at all the features and figures out how much they moved. Then, features that moved differently than the rest were probably mis-matched, and so probably are bad to follow, so we throw them out. It was very nice, friendly code to write somehow, despite being in C.

Martijn and I went to Golden Gate park again this weekend. As we were walking around, we suddenly found a Hare Krishna event. There was music, chanting, booths, and free food (but the line was really long so we didn't get any). Later, we found a group of 8 old men in white clothing lawn bowling. There are actually special lawn bowling courts in the park. They seem cheap to me-- when I Bocce (which I think is the same thing), it's in my backyard. The uneven soil and slope add a degree of uncertainty and excitement. The perfectly flat, well-manicured lawn bowling courts just seem too predictable and easy.

I don't have much longer here. I'm not going to buy any more food, but I think near the end of next weeks my meals might get a little...interesting. I have a bunch of cream, so I tried to use some up by making a bread-y thing with cream instead of oil & water. I don't know quite what to call it, but it was moist and kinda crumbly, sort of a mix between banana bread and a scone. In any case, it was tasty, especially since it had butter, cinnamon, and sugar on top.

Week 8: July 12-July 18

Number Eight

We have to start writing soon, so I'm starting to do improvements on what I already have, instead of trying new awesome things. Still, to be honest, I think the Kalman filter idea is cool: it's just super hard to implement, and there are a lot of equations, and I need to make stuff really work for the end of the summer. Anyways, my time has been filled with exciting things like figuring out optimal parameters for Lucas-Kanade (a way to track features) and using information about both frames to improve the face tracking

Not that much is happening. Ashley, my flatmate, is gone for 3 weeks, and Kevin (the new subletter) doesn't ever leave his room, so it's practically just Kat & me.

I finally got around to making Dulce de Leche. It's a tasty carmeley substance. All you do is cut holes in the top of a can of sweetened condensed milk and put it in boiling water (which goes most of the way up the can) for 3 hours. It was very tasty. Well, I still have a bunch of it, and it still is very tasty.

Week 7: July 5-July 11

Number Seven

It turns out the whole Kalman filter thing was unnecessary. Solving for the pose is already done. There's even a function in OpenCV that solves for it! Actually, it solves for the position of the camera related to a known object position, but that is the same as solving for an unknown object position related to a known camera position. Anyways, that was a fruitless path. Now, I need to retrofit my feature tracking. I've worked on feature tracking (following points such as the corners of the eyes) some, and have some working code, so I just need to massage it to do what I want (I hope!).

A new guy moved into my apartment. There's been an empty room all summer, and they finally found someone to fill it. His name is Kevin, and he doesn't know how to cook. About an hour after I met him, I sliced my thumb cutting some onions, so he got to help me find a Band-Aid (this involved knocking on 5 of my neighbors' doors). Certainly an interesting way to meet someone... He seems like a nice guy.

Week 6: June 28-July 4

Number Six

I've been chugging away trying to use a Kalman filter for pose estimation. Pretty much, if you know where a set of points are on the face, and you know where they are in the image you see, you can tell where the face is and how it's turned. The face can only move 6 ways (left/right, up/down, in/out, and 3 rotations), so you have a set of equations to solve. The Kalman filter only works with linear systems, though, so you have to linearize the equations each frame. Of course, near the end of the week I discovered one reason it wasn't working was that my linearization was bad. The sets of equations I was trying to solve were not appropriately linearizeable. I was trying to solve for x,y, and z (temporarily ignoring rotations). It turns out that the equations are only appropriately linearizeable if I solve for x/z, y/z and 1/z. I don't want to think about what I'll have to do when I add in rotations...

This weekend there was a barbeque at Prof. Bajcsy's house (for 4th of july). It was fun to hang out with people, although I had to leave before the fireworks. We watched some of the celebration in D.C., and it was fun. At one point, they had Big Bird conduct the band, which was hilarious. Kat and I brought a bunch of deserts (Kat also brought taboule), so we now have a jello/pudding/marshmallow dish, banana bread, and brownies.

Only four weeks left! Prof. Bajcsy suggests that we finish most our code with 2 weeks to spare for writing a paper. I'm not sure we'll actually have anything to write about, though...

Week 5: June 21-27

Number Five

I felt pretty lazy this weekend, so I mostly just sat around. There's not much to say about it.

Prof. Bajcsy, Kat, and I have weekly meeting on Mondays at 9. This week, we mostly just checked in with her--nothing super exciting to discuss. I've been trying to make the tracking system track using two color spaces, choosing whichever seems to provide better results. A color space is just a way to represent colors--we usually represent them in terms of Red, Green, and Blue but they can also be represented in other things. I'm looking at HSV, which stands for Hue, Saturation, Value. The hue is what color it is (red, purple,...), the saturation is how strongly it is that color (from gray to bright), and the value is how light it is. Hopefully, changes in lighting will just change the value, and I can make it ignore the value of each pixel. Unfortunately, I'm running into some performance issues.

This Tuesday I went to a cookie-baking thing for soldiers (with Circle K, a community service organization). Some soldier somewhere is about to recieve 4 batches of cookes. I hope he shares with his friends, because otherwise a bunch will go bad or he'll gain a lot of weight. The cookie baking was super fun--I organized the effort, at least initially (by virtue of being someone who knows how to cook), and it was interesting to see what people did. The guy I told to butter the baking sheets, for example, really buttered them--he thickly covered the entire bottom of the pan was in butter without missing a single tiny spot. I also ended out using the work 'homogenous' in casual conversation.

I decorated an altoids tin and my phone. The tin is o.k., although I overdid it with some semi-transparent gold stuff. My phone is rockin'-awesome (well, it's ok), but the glue I got was low-quality enough that the stuff won't actually stick.

Week 4: June 14-20

Number Four

Not a super exciting weekend. I saw Spirited Away on a patio at a chocolate store (with my boyfriend and a bunch of strangers), which was fun. The chocolate was overpriced, but I bought some anyways because the movie was free, and it was pretty tasty. Saturday, we really explored Golden Gate Park. Among other things, we discovered it contains a golf course, an archery range, and an oddly secluded giant fenced-off field with 8 soccer goals but no lines. Sunday I just sat around (I was lazy, and also had a slight headache).

I finally saw Prof. Bajcsy! She's been travelling, but she's back now. Kat and I met with her Monday, just to get back on the same page. Tuesday, we had a lab meeting and heard what everyone's doing. Wow. There was some miscommunication that took a really long time to figure out. There was an argument that lasted about 10 minutes about whether someone was using a hidden conditional random field or a normal conditional random field. They thought about giving us a new task having to do with triangulations of an image, but after about 3-4 hours of discussion, realized it wasn't the best idea. There's a really cool problem related to that--finding the similarity between two triangulations. The guy who knows stuff about triangulations, Ram, says that finding the similarity is NP-Hard for most useful metrics. Apparently the best approximations so far involve PDE's.

I've been kinda bored, so I've decided to decorate some matchboxes/toothpick boxes. I bought some pretty paper, ribbon, and stickers, but haven't yet gotten glue, scissors, or even boxes to decorate. I also bought Sims 3, which looks like a kinda cool game. I think it's the first piece of software I've ever bought--every other game I've had has been a gift from my parents.

Week 3: June 7-13

Number Three

I made it work! I now have working code that uses color distribution/mean shift to track a face. When I first implemented it, I missed something, so it was really funky for a while. Now, it works ok, although it has problems with changes in lighting (if the light's coming from above and the person tilts their face up, it gets lighter and throws the whole thing off). I made some speed improvements--instead of looking at the entire face, it samples it uniformly, and deals with the sampled points (right now, a 30x30 grid). I also generally improved my code, and tried some normalization that made the thing completely fail. There was a lot of temporary failure followed by debugging that made it work. In general, lots of ups and downs, although I'm moderately pleased with my sucess. I also want to try changing what I'm optimizing, weighting colors not found in the background more, but I need to understand the theoretical underpinnings more, so I'm reading up on things. It's nice to get to do some math, and think on a more theoretical level--it's a great break from coding.

On Friday, I talked with some people in the lab, so I now have another paper to read and about 5000 ideas of things to investigate, including:

  • Mean-shift
  • Particle Filters
  • Different Color Spaces
  • Active Contours

Of course, I have no clue what any of this means, but that's what I get to figure out :).

Sadly, I still can't figure out how to get a Cal Card (a student ID) so I can get in building after hours, use the gym, or take advantage of any other student services. Apparently there's a $200 fee anyways, so I don't know if I'd even get one if I could. I don't know why the fee's so high--my top guess is that's the fee for bureaucracy.

I made really tasty banana bread, and moderately tasty soup. The two aren't related. I do wish I had more people to eat my food--I have craptons of leftovers, and I want someone to eat them so I can make more dishes. I have most of the ingredients for a Thai curry, but I need to finish my old food first. I also want to make sausage/red pepper calzones and sweet&sour chicken.

Week 2: May 31-June 6

Number Two

This Sunday, I went to the Maker's fair. Pretty cool fair--pretty much just a giant convention of people who make stuff. Everything from knitting to a giant tesla coil. After a couple hours, though, I had enough and went back to the apartment.

This week, I really figured out what I'm doing (kinda)! Our task is face detection and tracking. There are a lot of pre-existing algorithms, but a lot of them are kinda slow, and we want to be able to do it in real-time. OpenCV has an ok one--it's kinda inaccurate, though. I found a really cool paper on face tracking by color distribution. I'm really excited about it, and there are tons of cool improvements that can be made, like letting the face change sizes.

I'm also getting used to C. It's weird--output parameters and doing EVERYTHING by hand seem kinda natural to me now. Every once in a while, though I catch myself thinking `man, this would be easy in Python'. Sigh. At least I finally get to use all the cool optimization tricks I learned at school (after I get it working).

I'm really enjoying making my food. I'm sure I'd eventually get tired of it, but there are so many opportunities for creativity. When I'm cooking for a group, or just for other people in general, I'm obliged to make something edible. When I'm just cooking for myself, I can try crazy things that might not work out. I have already learned you can use curry powder in couscous burritos, but under no circumstances should you put a lot of vanilla flavoring in a rhubarb cobbler.

I also discovered this website called Meetup (in fairness, my boyfriend's sister works for it). It helps people meet people and arrange social events. I found a couple cool-sounding clubs, and some events I'd like to go to.

Week 1: May 24-30

Number One

Sunday, I moved into my apartment. I came to Berkeley knowing how to get to the BART (train), which station to get off, and how to get to my apartment's street. Of course, I don't always plan things that well, so I didn't write down my building number (but I remembered it) or my apartment number (I didn't remember it). I also didn't write down the phone number of anybody in Berkeley. After knocking on the doors of half the apartments, and ringing the doorbells on the rest (which mostly don't work), I broke down and got my parents to search through my email to find the number. My roomie was there, and I got my key and the grand tour. Luckily, Monday was memorial day. I got a little oriented with Berkeley, went to the bank and the grocery store, cooked some food, and so on. I was all rested up and ready to go to research on...

Tuesday. I met Prof. Bajcsy and the tele-immersion team. Learned that Immersecom was coming up, so overybody's busy with that. Apparently Gregori is the guy who really runs the tele-immersion lab, and he didn't know we (my research partner and I) were coming, so we didn't have anything to do that day. I read a couple papers on vision-ey things, but after a while my brain refused to absorb any more. I wished I had something to do, and played solitaire.

On Wednesday, Prof Bajcsy went to a doctoral review in Denmark. I went to Immerscom, where I went to some talks (I mostly didn't understand) and helped at the front desk of the conference. I did pretty much the same thing on Thursday, and part of Friday, with much boredom. On Friday, Gregori showed me OpenCV and gave me some introductory tasks. The lab uses C, which makes sense because OpenCV (a computer vision library) is in C, and because they need things fast enough to run in real time. I fooled around with C and OpenCV a bit, and left extremely frustrated.

On Friday night, I finally visited by boyfriend, who has an internship in San Francisco. I took the BART (the big San Francisco area train/subway system). BART is amazing. Trains come about every 10 minutes, and it only costs $2-$4 to get most places. From BART, you can catch a local bus to get anywhere in the city. We went to a really tasty Thai place and ate yummy noodle soup.