<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://yihao.one//feed.xml" rel="self" type="application/atom+xml" /><link href="https://yihao.one//" rel="alternate" type="text/html" /><updated>2026-03-01T03:39:37+00:00</updated><id>https://yihao.one//feed.xml</id><title type="html">Yihao Liu</title><subtitle>This is the personal webpage for Yihao Liu</subtitle><entry><title type="html">ISMAR</title><link href="https://yihao.one//2024/08/01/ismar.html" rel="alternate" type="text/html" title="ISMAR" /><published>2024-08-01T00:00:00+00:00</published><updated>2024-08-01T00:00:00+00:00</updated><id>https://yihao.one//2024/08/01/ismar</id><content type="html" xml:base="https://yihao.one//2024/08/01/ismar.html"><![CDATA[<h1 id="1-paper-accepted-to-ismar-2024">1 paper accepted to ISMAR 2024!</h1>

<p>We have 1 paper accepted to ISMAR 2024. Thank you and congratulations to the all coauthors!</p>
<ul>
  <li>Calibration of augmented reality headset with external tracking system using ax=yb</li>
</ul>]]></content><author><name>Yihao Liu</name></author><summary type="html"><![CDATA[1 paper accepted to ISMAR 2024!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://yihao.one//myimages/blogimgs/ISMAR.png" /><media:content medium="image" url="https://yihao.one//myimages/blogimgs/ISMAR.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Authorship</title><link href="https://yihao.one//2024/07/30/authorship.html" rel="alternate" type="text/html" title="Authorship" /><published>2024-07-30T00:00:00+00:00</published><updated>2024-07-30T00:00:00+00:00</updated><id>https://yihao.one//2024/07/30/authorship</id><content type="html" xml:base="https://yihao.one//2024/07/30/authorship.html"><![CDATA[<h1 id="notes-on-authorship">Notes on Authorship</h1>

<p>The past few years as a PhD student have been an incredible journey. As I began mentoring young graduate students, I felt a strong need to share carefully chosen advice and ideas to help pass on meaningful experience. At the core of this guidance is to encourage students to take full ownership and become champions of their projects. But an important question arises in this context—one that’s often on everyone’s mind: how to properly assign credit in research papers.</p>

<p>While I adhere to established conventions within the research community, I also follow some personal principles:</p>

<ul>
  <li>If I initiated the idea, significantly contributed, and remained actively involved throughout the project, I take on the role of corresponding author. As long as the work is completed successfully, I focus less on my position in the author list, understanding that ranking often matters more to my mentees.</li>
  <li>If I initiated the idea, contributed over 50% of the work, I take the first author position, and most of the time also corresponding author.</li>
</ul>

<p>I frequently get asked about my approach to authorship in interviews, so I thought it would be useful to share these principles openly here. Generally, I highlight on my resume only those papers where I played an active role, usually as the first or corresponding author.</p>]]></content><author><name>Yihao Liu</name></author><summary type="html"><![CDATA[Notes on Authorship]]></summary></entry><entry><title type="html">ICRA</title><link href="https://yihao.one//2024/01/29/icra.html" rel="alternate" type="text/html" title="ICRA" /><published>2024-01-29T00:00:00+00:00</published><updated>2024-01-29T00:00:00+00:00</updated><id>https://yihao.one//2024/01/29/icra</id><content type="html" xml:base="https://yihao.one//2024/01/29/icra.html"><![CDATA[<h1 id="3-papers-accepted-to-icra2024">3 papers accepted to ICRA2024!</h1>

<p>We have 3 papers accepted to ICRA2024. Thank you and congratulations to the all coauthors!</p>
<ul>
  <li>Realtime Robust Shape Estimation of Deformable Linear Object</li>
  <li>GBEC: Geometry-Based Hand-Eye Calibration</li>
  <li>On the Fly Robotic-Assisted Medical Instrument Planning and Execution using Mixed Reality</li>
</ul>]]></content><author><name>Yihao Liu</name></author><summary type="html"><![CDATA[3 papers accepted to ICRA2024!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://yihao.one//myimages/ICRA_2024.jpg" /><media:content medium="image" url="https://yihao.one//myimages/ICRA_2024.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">SAMM updates</title><link href="https://yihao.one//news/2024/01/14/samme.html" rel="alternate" type="text/html" title="SAMM updates" /><published>2024-01-14T00:00:00+00:00</published><updated>2024-01-14T00:00:00+00:00</updated><id>https://yihao.one//news/2024/01/14/samme</id><content type="html" xml:base="https://yihao.one//news/2024/01/14/samme.html"><![CDATA[<p style="text-align:center">
<iframe width="420" height="315" src="https://www.youtube.com/embed/tZRG7JljEBU">
</iframe>
</p>

<h1 id="new-video-demo-for-samm">New video demo for SAMM</h1>
<p>Check out <a href="https://github.com/bingogome/samm">here</a>.</p>

<p><img src="https://github.com/bingogome/samm/blob/main/thumbnail.png" alt="demo1" />
<img src="https://github.com/bingogome/samm/blob/main/thumbnail2.png" alt="demo2" /></p>]]></content><author><name>Yihao Liu</name></author><category term="news" /><summary type="html"><![CDATA[Development Post]]></summary></entry><entry><title type="html">Updates in the Research Page</title><link href="https://yihao.one//2023/12/07/updatesinresearchpage.html" rel="alternate" type="text/html" title="Updates in the Research Page" /><published>2023-12-07T00:00:00+00:00</published><updated>2023-12-07T00:00:00+00:00</updated><id>https://yihao.one//2023/12/07/updatesinresearchpage</id><content type="html" xml:base="https://yihao.one//2023/12/07/updatesinresearchpage.html"><![CDATA[<h1 id="research-page-was-updated">Research page was updated</h1>

<p>After a long procrastination, I finally put most of the things I did so far in my PhD on the <a href="/research">research</a> page.</p>]]></content><author><name>Yihao Liu</name></author><summary type="html"><![CDATA[Research page was updated]]></summary></entry><entry><title type="html">Some subtle stuff in hFSM</title><link href="https://yihao.one//2023/11/24/pcmrs.html" rel="alternate" type="text/html" title="Some subtle stuff in hFSM" /><published>2023-11-24T00:00:00+00:00</published><updated>2023-11-24T00:00:00+00:00</updated><id>https://yihao.one//2023/11/24/pcmrs</id><content type="html" xml:base="https://yihao.one//2023/11/24/pcmrs.html"><![CDATA[<h1 id="difference-between-hfsm-and-the-hfsm-proposed-in-the-paper-toward-process-controlled-medical-robotic-system">Difference between hFSM and the hFSM proposed in the paper “Toward Process Controlled Medical Robotic System”</h1>

<p>If you are not interested in some stories, go straight to the last 4 paragraphs, that’s the real stuff of this long blog.</p>

<p>In the first few of my PhD group meetings in 2021, a very respected (I mean <em>very</em> respected) professor was quite nervous about our ways of directly using a collaborative robot (Kuka iiwa, they have a medical version now) to place something to people’s head. I started my PhD with projects focusing on robotic Transcranial Magnetic Stimulation, which does exactly that.</p>

<p>Truth to be told, not long after I realized the systems built by PhD students and the code base in those systems, with the primary goal to do research but not to start an FDA vetted, multimillion dollar medical device company, can sometimes be pretty flimsy. Even though most of us try our best to build maintainable and trustable systems, sometimes they may end up being just slightly better than a toy. I mean, you get it. Prototyping a proof-of-concept is very different from building a commercialized product with a bunch of highly paid product managers and engineers.</p>

<p>I started to think about how to make it <em>absolutely safe</em> even in the prototyping of a research project.</p>

<p>An image guided robotic system is usually very large and complex. In the prototyping of a research project, different components are not always connected seamlessly. You will see some PhD students perform experiments awkwardly because they need to calibrate the robot, plan some targets in the navigation system, start medical image registration, command the robot to go there, and repeat. Many of the time, these are not done in the same computer workspace. If any of the steps was messed up, you need to start over. This created some space for risky moves. So, I thought, can we put these steps together and make the pipeline to be controlled.</p>

<p>The first thing came to mind is an FSM. That seems easy. I just need to attach a changing mode to the controller. Well, as we all know, everything you thought would be easy, will go against your expectation and bite you so hard. I drew a bunch of diagrams trying to model only 4 different states. They really didn’t look pretty. The programming was in C++ so it made the thing even worse. Long story short, I was able to simplify it a little, and in the end, you see this figure from my <a href="https://arxiv.org/abs/2308.05809">PCMRS paper</a>.</p>

<div class="center">
<img src="/myimages/blogimgs/state_machine_v2.png" alt="figure1" width="512" />
Figure 1.
</div>

<p>How I did it was this: I use a digit, 0 or 1, to represent if a procedure has been done or not. It is essentially a flag (which I really dislike if it is not in the context of FSM. I actually talked about this in the PCMRS paper). Then, if you had a pipeline that has 5 steps, then you get 5 pairs of 0/1’s. Now you combine the states of all steps into one single string: 00000, 00001, 00010, and so on. That becomes your state in the FSM. That was obviously not simplified enough. Can I simplify it more? You will realize, some of the steps are dependent to each other. Say, step 3 can only happen if step 2 has been done. Then, 00100 is not valid, because it translates to “step 1 not finished, step 2 not finished, step 3 finished, step 4 not finished, step 5 not finished”. You can really trim down a bunch of the states.</p>

<p>Can I do better?</p>

<p>I thought some of the steps really can be done in parallel, is it worth it to put them in the same state string? Maybe not. How about I separate those and make them smaller pieces. (It was funny to mention that on that day of the year of 2021, I thought I discovered something groundbreaking. Little did I know: ) Someone in 1984 already did it. And he named it Hierarchical Graph Schemes.</p>

<p>You can also call it Hierarchical Finite State Machine (hFSM), a method to divide a complex state machine formulation of a system into manageable pieces. Applying this to the original figure, I got this. That was so much better.</p>

<div class="center">
<img src="/myimages/blogimgs/state_machine_v4.png" alt="figure2" width="512" />
Figure 2.
</div>

<p>From this setup, I came up some pretty interesting future directions that was hinted in the PCMRS paper. I will probably cover them in some more blogs once they are out of my self-imposed secrecy stage. I have been thinking about the setup since last year when I finished the coding for my own system. With some more inspection, I had discovered some subtle differences of the OG hFSM and the hFSM in the PCMRS paper.</p>

<p>The major two differences are the dependency between micro- and macro- states, and the meaning of a “state”.</p>

<p>Firstly, the dependency between micro- and macro- states. Say you modeled some states like in this Figure 3. It has the transitions between State1, State2, and State3, and the micro-transitions between State2.1, State2.2, and State2.3. Note in the figure I connected OperationA, C, D to State2.1, which may not be the same in other people’s work. Some work will only connect the operations to State2 (like in Figure 4, which I got from the Internet), not those micro-states. In that case, it implies transitions of State2.x are independent of State1 and State3. This is not always the case. In Figure 2 again, you can observe the micro-states (I defined them to be states in a state branch of level “N+1” in the paper) to be dependent on macro-states (“N” level state branch). For example, I wrote this in the caption of the Figure 2: “The registration state branch has a level 2 branch (digitization) at 100 to 110. Any incoming operation to 100 with no direct lower state transition (dash lines) should call the reinitialization state of the digitization branch. Any level 2 state change (from one state to another) must emit a signal to the corresponding level 1 state”. This is the reason I tried to formulate the Rule1-3 in the paper, even though they are in my opinion, after a year or so, not the most elegant solution and there is space to improve, but that is another day’s work.</p>

<div class="center">
<img src="/myimages/blogimgs/simpleFSM.png" alt="figure3" width="512" />
Figure 3.
</div>

<p>Secondly, the meaning of a “state”. This is more or less a design choice. If you look up online you will see some tutorials about modeling the states in examples such as “running”, “jumping”, and “static”. Using hFSM you get “moving” to include both “running” and “jumping”. In my case, I wanted a result-oriented design. I care more about whether a step is finished or not, while you can still add processing like running and jumping in the bigger model. Thus, I chose to have those “state digits” like 01110 or 10001. This way, each state essentially means multiple results – a combination of the facts in the world. I found it very useful in my case.</p>

<div class="center">
<img src="/myimages/blogimgs/hfsm_jumprun.webp" alt="figure4" width="256" />
Figure 4.
</div>

<p>Now you will understand that Figure 2 should separate the “state branches”. Merging the “state branches” into one single diagram like Figure 3 might be harder than expected, because each macro-state (registration) contains a description of the micro-state (digitization). In other words, regular hFSM can have a state to be another FSM, while the hFSM in PCMRS, can have a “state digit (a digit in the 10001 string) to be another FSM”. You need to cram the corresponding states in level “N+1” to each corresponding state digit in level “N”. It is still theoretically doable, but separating them is probably the easiest. The pitfall is to handle the Direct Incoming Operation (DIO) and Indirect Incoming Operation (IIO) well, as defined in the paper.</p>

<p>In conclusion, FSM is certainly not a new concept, but you can play with it to tailor to your need. I am still trying to make some improvements to the system described in the PCMRS paper and in this blog. It is the infrastructure of some more interesting stuff I will cover later, so please stay tuned.</p>]]></content><author><name>Yihao Liu</name></author><summary type="html"><![CDATA[Difference between hFSM and the hFSM proposed in the paper “Toward Process Controlled Medical Robotic System”]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://yihao.one//myimages/blogimgs/state_machine_v4.png" /><media:content medium="image" url="https://yihao.one//myimages/blogimgs/state_machine_v4.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">“First in the World”</title><link href="https://yihao.one//news/2023/04/12/firstintheworld.html" rel="alternate" type="text/html" title="“First in the World”" /><published>2023-04-12T10:50:07+00:00</published><updated>2023-04-12T10:50:07+00:00</updated><id>https://yihao.one//news/2023/04/12/firstintheworld</id><content type="html" xml:base="https://yihao.one//news/2023/04/12/firstintheworld.html"><![CDATA[<p style="text-align:center">
<iframe width="420" height="315" src="https://www.youtube.com/embed/vZK45noZVIA">
</iframe>
</p>

<p>Posted on <a href="https://www.linkedin.com/posts/yliu333_samm-segment-any-medical-model-a-3d-slicer-activity-7052070895170842624-MiOf?utm_source=share&amp;utm_medium=member_desktop">LinkedIn</a></p>

<h1 id="first-in-the-world---introducing-samm-segment-any-medical-model-a-3d-slicer-integration-to-sam-segment-anything-model">“First in the World” - Introducing SAMM (Segment Any Medical Model), A 3D Slicer Integration to SAM (Segment Anything Model)</h1>

<p>“Three developers, two nights, first in the world, we made segmenting any medical image possible.” I would use this line if we were a startup to get our angel investors. However, we are some graduate students, humble ones, so we will not use it; instead, I am here to say why we should be careful to make early statements on the performance of LLMs such as SAM on medical images. (As a side note, I know we used a “big name” for our tiny extension - it just sounded very nice.)</p>

<p>Based on the conversations I saw recently, the performance of SAM on medical images is still in the debate, a one-sided one. Under a LinkedIn post, Dr. Andras Lasso, one of the leading engineers who developed 3D Slicer (the go-to software if you are doing anything medical image processing related), commented: “SAM works better than PowerPoint’s ‘Remove background’ tool, but the demo application’s performance on medical images is nothing to be excited about.” He backed it with an example <a href="https://global.discourse-cdn.com/business7/uploads/slicer/original/3X/2/1/21479481e68c11e815715606906633eeb5f7eeeb.mp4">demo</a> comparing a 20 years old method, “Watershed” against SAM. A more complete discussion is <a href="https://discourse.slicer.org/t/integration-of-segment-anything-model/28787">here</a>.</p>

<p>This statement aligns with our tests. I work on brain images. Using SAM, the valleys and peaks are ignored. Instead, the output is more like a smooth surface around the brain. We suspect this is because of the domain gap between the SAM database and medical images.</p>

<p>There have already been papers in Arxiv testing on medical images. The first is a <a href="https://arxiv.org/abs/2304.04155">research</a> from Vanderbilt and Nvidia. They tried SAM on skin cancer tissues from Cancer Genome Atlas <a href="https://www.cancer.gov/ccg/research/genome-sequencing/tcga">(TCGA) datasets</a>. It showed promising results on large connected objects but poor results on dense instance segmentations.</p>

<p>On the other side of the debate, most people are excited because, first, it’s a new model, and people tend to get hyped. Second, it’s easy and effective. You can have a nice mask over the anatomy with simple prompts.</p>

<p>It seems like the consensus on the medical image is that the technology is just not for it yet. Entering SAMM, we understand there is a potential gap (or benefit) between LLM and fine medical image segmentation, that’s why we call the community to try it and improve the paradigm wherever possible. The good thing about using Slicer for this is that it already has all the existing methods with its 20 years span. This made comparison and optimization easier. There are many additional modules that can be integrated to SAM, that potentially improve its performance on medical images.</p>

<p>We are all looking forward to a ChatGPT moment in computer vision. SAM tackles segmentation very nicely. For now, the scene of use is very important. Expert knowledge or some sort of prior is still needed for SAM to really “segment anything.”</p>]]></content><author><name>Yihao Liu</name></author><category term="news" /><summary type="html"><![CDATA[Development Post]]></summary></entry><entry><title type="html">Updates in the Open Sourced Tools Page</title><link href="https://yihao.one//2022/10/13/updatesinopensource.html" rel="alternate" type="text/html" title="Updates in the Open Sourced Tools Page" /><published>2022-10-13T00:00:00+00:00</published><updated>2022-10-13T00:00:00+00:00</updated><id>https://yihao.one//2022/10/13/updatesinopensource</id><content type="html" xml:base="https://yihao.one//2022/10/13/updatesinopensource.html"><![CDATA[<h1 id="open-sourced-tools-page-was-updated">Open-sourced Tools Page was Updated</h1>

<p>I put three of my previously developed tools in the page. Check it out and I hope they will be of help to you.</p>]]></content><author><name>Yihao Liu</name></author><summary type="html"><![CDATA[Open-sourced Tools Page was Updated]]></summary></entry><entry><title type="html">Updates in the Research Page</title><link href="https://yihao.one//2022/10/12/updatesinresearchpage.html" rel="alternate" type="text/html" title="Updates in the Research Page" /><published>2022-10-12T00:00:00+00:00</published><updated>2022-10-12T00:00:00+00:00</updated><id>https://yihao.one//2022/10/12/updatesinresearchpage</id><content type="html" xml:base="https://yihao.one//2022/10/12/updatesinresearchpage.html"><![CDATA[<h1 id="research-page-was-updated">Research page was updated</h1>

<p>I have put some contents in the research page. More projects and repositories will show up!</p>]]></content><author><name>Yihao Liu</name></author><summary type="html"><![CDATA[Research page was updated]]></summary></entry><entry><title type="html">Welcome</title><link href="https://yihao.one//2022/09/24/welcome.html" rel="alternate" type="text/html" title="Welcome" /><published>2022-09-24T00:00:00+00:00</published><updated>2022-09-24T00:00:00+00:00</updated><id>https://yihao.one//2022/09/24/welcome</id><content type="html" xml:base="https://yihao.one//2022/09/24/welcome.html"><![CDATA[<h1 id="welcome-to-my-page-webpage-is-under-construction">Welcome to my page. Webpage is under construction.</h1>

<p>Webpage is under construction. I will update contents so please stay tuned.</p>]]></content><author><name>Yihao Liu</name></author><summary type="html"><![CDATA[Welcome to my page. Webpage is under construction.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://yihao.one//myimages/construction.avif" /><media:content medium="image" url="https://yihao.one//myimages/construction.avif" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>